ODT
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | Private Member Functions | List of all members
solver Class Reference

#include <solver.h>

Public Member Functions

virtual void calculateSolution ()
 
 solver ()
 
virtual void init (domain *p_domn)
 
virtual ~solver ()
 

Public Attributes

domaindomn
 pointer to domain object
 
eddyed3
 pointer to eddy object for thirds
 
domaineddl3
 pointer to eddy line object
 
double time
 odt time (during sampling)
 
double t0
 time of last eddy event; diffusion left off here.
 
double dtSmean
 initial mean eddy sample time
 
double dtCUmax
 max time before catch up diff/eddy
 
bool LeddyAccepted
 flag for accepted eddy
 
int iEtrials
 number of eddy trials
 
double PaSum
 sum of Pa of eddies
 
int nPaSum
 number going into PaSum
 
int neddies
 number of eddies accepted
 
double PaSumC
 sum of Pa of eddies
 
int nPaSumC
 number going into PaSum
 

Private Member Functions

bool sampleEddyAndImplementIfAccepted ()
 
void computeDtSmean ()
 
void computeDtCUmax ()
 
double sampleDt ()
 
void diffusionCatchUpIfNeeded (bool Ldoit=false)
 
void raiseDtSmean ()
 
void lowerDtSmean ()
 
bool testLES_elapsedTime (const double time, const double tauEddy)
 
bool testLES_fracDomain (const double eSize)
 
bool testLES_integralLength (const double time, const double eSize)
 
bool testLES_thirds ()
 

Detailed Description

Class implementing solver object

Author
David O. Lignell

Definition at line 21 of file solver.h.

Constructor & Destructor Documentation

◆ solver()

solver::solver ( )
inline

Definition at line 72 of file solver.h.

◆ ~solver()

solver::~solver ( )
virtual

destructor

Definition at line 36 of file solver.cc.

Member Function Documentation

◆ calculateSolution()

void solver::calculateSolution ( )
virtual

The actual solver

Advance in time only sampling eddies till get one (EE). Then diffuse the system until you catch up to the eddy time:

    last EE    this EE       diffuse to catch up
.....|..........|           ---------------------->  ................|
     t0         time                                                t0,time
                         (last EE)   this EE         next EE
Then advance some more ......;.........|................|         etc.
                                       t0              time

Eddy timesteps are smaller than required diffusive steps, so if we were to lock-step the two processes we would do too much diffusive work (i.e., take more diffusive steps than needed)

< time of last diffusive mesh adaption

< for adaption

Definition at line 60 of file solver.cc.

◆ computeDtCUmax()

void solver::computeDtCUmax ( )
private

Computes dtCUmax (as the name suggests). This variable is the time increment of eddy trial time advancement before we diffuse to catch up to that time in the event of no eddy before that time.

Definition at line 196 of file solver.cc.

◆ computeDtSmean()

void solver::computeDtSmean ( )
private

dtSmean is computed, which is the mean eddy sample time. The Poisson process draws dt's with this mean.

Definition at line 169 of file solver.cc.

◆ diffusionCatchUpIfNeeded()

void solver::diffusionCatchUpIfNeeded ( bool Ldoit = false)
private

Diffuse the domain to catch up t0 to time if we have not had eddies for a while.

Parameters
Ldoitinput: Flag with default false

Definition at line 217 of file solver.cc.

◆ init()

void solver::init ( domain * p_domn)
virtual

solver initialization function

Parameters
p_domninput: set domain pointer with.

Definition at line 19 of file solver.cc.

◆ lowerDtSmean()

void solver::lowerDtSmean ( )
private

Reduce dtSmean if it is resulting in too high an acceptance probability.

Definition at line 478 of file solver.cc.

◆ raiseDtSmean()

void solver::raiseDtSmean ( )
private

Every once in a while (nDtSmeanWait) test the mean acceptance probability. Increase dtSmean if its too small.

Definition at line 237 of file solver.cc.

◆ sampleDt()

double solver::sampleDt ( )
private

Sample the eddy trial time step with mean dtSmean.

Returns
Poisson sampled timestep.

Definition at line 184 of file solver.cc.

◆ sampleEddyAndImplementIfAccepted()

bool solver::sampleEddyAndImplementIfAccepted ( )
private

Sample an eddy size and position. Fill the eddl from domn. Then triplet map the eddy, compute the eddy timescale, then the acceptance probability. Roll the dice and if you win (rand # < prob) then accept the eddy. This means, apply velocity kernels, then insert the eddl into the domn. Note, this function may be better as a member of eddy

Returns
true if the sampled eddy was implemented.

Definition at line 278 of file solver.cc.

◆ testLES_elapsedTime()

bool solver::testLES_elapsedTime ( const double time,
const double tauEddy )
private

Apply a large eddy suppression test based on elapsed time (Echekki 2001)

Parameters
timeinput: current time.
tauEddyinput: eddy timescale, or in spatial cases, the eddy size Note, this function may be better as a member of eddy

Definition at line 382 of file solver.cc.

◆ testLES_fracDomain()

bool solver::testLES_fracDomain ( const double eSize)
private

Large eddy suppression test on fraction of domain size

Parameters
eSizeinput: eddy size Note, this function may be better as a member of eddy

Definition at line 398 of file solver.cc.

◆ testLES_integralLength()

bool solver::testLES_integralLength ( const double time,
const double eSize )
private

Apply a large eddy suppression test based on integral length scale integral length scale L = L0 * (t/t0)^(1-n/2) t is elapsed time; n is between 1.15 and 1.45, usually 1.3

Parameters
timeinput: current time.
eSizeinput: eddy size Guangyuan Sun 06/2013 Note, this function may be better as a member of eddy

Definition at line 417 of file solver.cc.

◆ testLES_thirds()

bool solver::testLES_thirds ( )
private

Apply the large-eddy suppression test. Note, this function may be better as a member of eddy

Definition at line 437 of file solver.cc.

Member Data Documentation

◆ domn

domain* solver::domn

pointer to domain object

Definition at line 28 of file solver.h.

◆ dtCUmax

double solver::dtCUmax

max time before catch up diff/eddy

Definition at line 36 of file solver.h.

◆ dtSmean

double solver::dtSmean

initial mean eddy sample time

Definition at line 35 of file solver.h.

◆ ed3

eddy* solver::ed3

pointer to eddy object for thirds

Definition at line 30 of file solver.h.

◆ eddl3

domain* solver::eddl3

pointer to eddy line object

Definition at line 31 of file solver.h.

◆ iEtrials

int solver::iEtrials

number of eddy trials

Definition at line 39 of file solver.h.

◆ LeddyAccepted

bool solver::LeddyAccepted

flag for accepted eddy

Definition at line 38 of file solver.h.

◆ neddies

int solver::neddies

number of eddies accepted

Definition at line 43 of file solver.h.

◆ nPaSum

int solver::nPaSum

number going into PaSum

Definition at line 42 of file solver.h.

◆ nPaSumC

int solver::nPaSumC

number going into PaSum

Definition at line 45 of file solver.h.

◆ PaSum

double solver::PaSum

sum of Pa of eddies

Definition at line 41 of file solver.h.

◆ PaSumC

double solver::PaSumC

sum of Pa of eddies

Definition at line 44 of file solver.h.

◆ t0

double solver::t0

time of last eddy event; diffusion left off here.

Definition at line 34 of file solver.h.

◆ time

double solver::time

odt time (during sampling)

Definition at line 33 of file solver.h.


The documentation for this class was generated from the following files: