Cantera  3.1.0b1
Loading...
Searching...
No Matches
Sim1D Class Reference

One-dimensional simulations. More...

#include <Sim1D.h>

Inheritance diagram for Sim1D:
[legend]

Detailed Description

One-dimensional simulations.

Class Sim1D extends class OneDim by storing the solution vector, and by adding a hybrid Newton/time-stepping solver.

Definition at line 21 of file Sim1D.h.

Public Member Functions

 Sim1D ()
 Default constructor.
 
 Sim1D (vector< shared_ptr< Domain1D > > &domains)
 Standard constructor.
 
void setTimeStep (double stepsize, size_t n, const int *tsteps)
 Set the number of time steps to try when the steady Newton solver is unsuccessful.
 
void solve (int loglevel=0, bool refine_grid=true)
 Performs the hybrid Newton steady/time-stepping solution.
 
void eval (double rdt=-1.0, int count=1)
 
void getResidual (double rdt, double *resid)
 Evaluate the governing equations and return the vector of residuals.
 
int refine (int loglevel=0)
 Refine the grid in all domains.
 
int setFixedTemperature (double t)
 Add node for fixed temperature point of freely propagating flame.
 
double fixedTemperature ()
 Return temperature at the point used to fix the flame location.
 
double fixedTemperatureLocation ()
 Return location of the point where temperature is fixed.
 
void setLeftControlPoint (double temperature)
 Set the left control point location using the specified temperature.
 
void setRightControlPoint (double temperature)
 Set the right control point location using the specified temperature.
 
void setRefineCriteria (int dom=-1, double ratio=10.0, double slope=0.8, double curve=0.8, double prune=-0.1)
 Set grid refinement criteria.
 
vector< double > getRefineCriteria (int dom)
 Get the grid refinement criteria.
 
void setMaxGridPoints (int dom, int npoints)
 Set the maximum number of grid points in the domain.
 
size_t maxGridPoints (size_t dom)
 Get the maximum number of grid points in this domain.
 
void setGridMin (int dom, double gridmin)
 Set the minimum grid spacing in the specified domain(s).
 
void restoreTimeSteppingSolution ()
 Set the current solution vector to the last successful time-stepping solution.
 
void restoreSteadySolution ()
 Set the current solution vector and grid to the last successful steady- state solution.
 
void getInitialSoln ()
 Get the initial value of the system state from each domain in the simulation.
 
double jacobian (int i, int j)
 Get the Jacobian element \( J_{ij} = \partial f_i / \partial x_j \).
 
void evalSSJacobian ()
 Evaluate the Jacobian in steady-state mode.
 
void solveAdjoint (const double *b, double *lambda)
 Solve the equation \( J^T \lambda = b \).
 
void resize () override
 Call after one or more grids has changed size, for example after being refined.
 
void setSteadyCallback (Func1 *callback)
 Set a function that will be called after each successful steady-state solve, before regridding.
 
Setting initial values

These methods are used to set the initial values of solution components.

void setInitialGuess (const string &component, vector< double > &locs, vector< double > &vals)
 Set initial guess for one component for all domains.
 
void setValue (size_t dom, size_t comp, size_t localPoint, double value)
 Set a single value in the solution vector.
 
double value (size_t dom, size_t comp, size_t localPoint) const
 Get one entry in the solution vector.
 
double workValue (size_t dom, size_t comp, size_t localPoint) const
 Get an entry in the work vector, which may contain either a new system state or the current residual of the system.
 
void setProfile (size_t dom, size_t comp, const vector< double > &pos, const vector< double > &values)
 Specify a profile for one component of one domain.
 
void setFlatProfile (size_t dom, size_t comp, double v)
 Set component 'comp' of domain 'dom' to value 'v' at all points.
 
Logging, saving and restoring of solutions
void show (std::ostream &s)
 Output information on current solution for all domains to stream.
 
void show ()
 Show logging information on current solution for all domains.
 
void save (const string &fname, const string &name, const string &desc, bool overwrite=false, int compression=0, const string &basis="")
 Save current simulation data to a container file or CSV format.
 
void saveResidual (const string &fname, const string &name, const string &desc, bool overwrite=false, int compression=0)
 Save the residual of the current solution to a container file.
 
AnyMap restore (const string &fname, const string &name)
 Retrieve data and settings from a previously saved simulation.
 
void clearDebugFile ()
 Deletes a debug_sim1d.yaml file if it exists.
 
void writeDebugInfo (const string &header_suffix, const string &message, int loglevel, int attempt_counter)
 Write solver debugging information to a YAML file based on the specified log level.
 
- Public Member Functions inherited from OneDim
 OneDim ()
 Default constructor.
 
 OneDim (vector< shared_ptr< Domain1D > > &domains)
 Construct a OneDim container for the domains in the list domains.
 
 OneDim (const OneDim &)=delete
 
OneDimoperator= (const OneDim &)=delete
 
void addDomain (shared_ptr< Domain1D > d)
 Add a domain. Domains are added left-to-right.
 
MultiJacjacobian ()
 Return a reference to the Jacobian evaluator of an OneDim object.
 
MultiNewtonnewton ()
 Return a reference to the Newton iterator.
 
int solve (double *x0, double *x1, int loglevel)
 Solve F(x) = 0, where F(x) is the multi-domain residual function.
 
size_t nDomains () const
 Number of domains.
 
Domain1Ddomain (size_t i) const
 Return a reference to domain i.
 
size_t domainIndex (const string &name)
 Get the index of the domain named name.
 
void checkDomainIndex (size_t n) const
 Check that the specified domain index is in range.
 
void checkDomainArraySize (size_t nn) const
 Check that an array size is at least nDomains().
 
size_t start (size_t i) const
 The index of the start of domain i in the solution vector.
 
size_t size () const
 Total solution vector length;.
 
Domain1Dleft ()
 Pointer to left-most domain (first added).
 
Domain1Dright ()
 Pointer to right-most domain (last added).
 
size_t nVars (size_t jg)
 Number of solution components at global point jg.
 
size_t loc (size_t jg)
 Location in the solution vector of the first component of global point jg.
 
std::tuple< string, size_t, string > component (size_t i)
 Return the domain, local point index, and component name for the i-th component of the global solution vector.
 
size_t bandwidth () const
 Jacobian bandwidth.
 
void init ()
 Initialize all domains.
 
size_t points ()
 Total number of points.
 
double ssnorm (double *x, double *r)
 Steady-state max norm (infinity norm) of the residual evaluated using solution x.
 
double rdt () const
 Reciprocal of the time step.
 
void initTimeInteg (double dt, double *x)
 Prepare for time stepping beginning with solution x and timestep dt.
 
bool transient () const
 True if transient mode.
 
bool steady () const
 True if steady mode.
 
void setSteadyMode ()
 Prepare to solve the steady-state problem.
 
void eval (size_t j, double *x, double *r, double rdt=-1.0, int count=1)
 Evaluate the multi-domain residual function.
 
Domain1DpointDomain (size_t i)
 Return a pointer to the domain global point i belongs to.
 
virtual void resize ()
 Call after one or more grids has changed size, for example after being refined.
 
vector< int > & transientMask ()
 Access the vector indicating which equations contain a transient term.
 
double timeStep (int nsteps, double dt, double *x, double *r, int loglevel)
 Take time steps using Backward Euler.
 
void resetBadValues (double *x)
 Reset values such as negative species concentrations in each domain.
 
void writeStats (int printTime=1)
 Write statistics about the number of iterations and Jacobians at each grid level.
 
void setJacAge (int ss_age, int ts_age=-1)
 Set the maximum number of steps that can be taken using the same Jacobian before it must be re-evaluated.
 
void saveStats ()
 Save statistics on function and Jacobian evaluation, and reset the counters.
 
void clearStats ()
 Clear saved statistics.
 
const vector< size_t > & gridSizeStats ()
 Return total grid size in each call to solve()
 
const vector< double > & jacobianTimeStats ()
 Return CPU time spent evaluating Jacobians in each call to solve()
 
const vector< double > & evalTimeStats ()
 Return CPU time spent on non-Jacobian function evaluations in each call to solve()
 
const vector< int > & jacobianCountStats ()
 Return number of Jacobian evaluations made in each call to solve()
 
const vector< int > & evalCountStats ()
 Return number of non-Jacobian function evaluations made in each call to solve()
 
const vector< int > & timeStepStats ()
 Return number of time steps taken in each call to solve()
 
void setInterrupt (Func1 *interrupt)
 Set a function that will be called every time eval is called.
 
void setTimeStepCallback (Func1 *callback)
 Set a function that will be called after each successful timestep.
 
void setMinTimeStep (double tmin)
 Set the minimum time step allowed during time stepping.
 
void setMaxTimeStep (double tmax)
 Set the maximum time step allowed during time stepping.
 
void setTimeStepFactor (double tfactor)
 Sets a factor by which the time step is reduced if the time stepping fails.
 
void setMaxTimeStepCount (int nmax)
 Set the maximum number of timeteps allowed before successful steady-state solve.
 
int maxTimeStepCount () const
 Return the maximum number of timeteps allowed before successful steady-state solve.
 

Protected Attributes

vector< double > m_xlast_ts
 the solution vector after the last successful timestepping
 
vector< double > m_xlast_ss
 the solution vector after the last successful steady-state solve (stored before grid refinement)
 
vector< vector< double > > m_grid_last_ss
 the grids for each domain after the last successful steady-state solve (stored before grid refinement)
 
vector< double > m_xnew
 a work array used to hold the residual or the new solution
 
double m_tstep
 timestep
 
vector< int > m_steps
 array of number of steps to take before re-attempting the steady-state solution
 
Func1m_steady_callback
 User-supplied function called after a successful steady-state solve.
 
- Protected Attributes inherited from OneDim
double m_tmin = 1e-16
 minimum timestep size
 
double m_tmax = 1e+08
 maximum timestep size
 
double m_tfactor = 0.5
 factor time step is multiplied by if time stepping fails ( < 1 )
 
shared_ptr< vector< double > > m_state
 Solution vector.
 
unique_ptr< MultiJacm_jac
 Jacobian evaluator.
 
unique_ptr< MultiNewtonm_newt
 Newton iterator.
 
double m_rdt = 0.0
 reciprocal of time step
 
bool m_jac_ok = false
 if true, Jacobian is current
 
size_t m_bw = 0
 Jacobian bandwidth.
 
size_t m_size = 0
 solution vector size
 
vector< shared_ptr< Domain1D > > m_dom
 All domains comprising the system.
 
vector< shared_ptr< Domain1D > > m_connect
 All connector and boundary domains.
 
vector< shared_ptr< Domain1D > > m_bulk
 All bulk/flow domains.
 
bool m_init = false
 Indicates whether one-time initialization for each domain has been completed.
 
vector< size_t > m_nvars
 Number of variables at each point, across all domains.
 
vector< size_t > m_loc
 Location in the state vector of the first component of each point, across all domains.
 
vector< int > m_mask
 Transient mask. See transientMask().
 
size_t m_pts = 0
 Total number of points.
 
int m_ss_jac_age = 20
 Maximum age of the Jacobian in steady-state mode.
 
int m_ts_jac_age = 20
 Maximum age of the Jacobian in time-stepping mode.
 
Func1m_interrupt = nullptr
 Function called at the start of every call to eval.
 
Func1m_time_step_callback = nullptr
 User-supplied function called after each successful timestep.
 
int m_nsteps = 0
 Number of time steps taken in the current call to solve()
 
int m_nsteps_max = 500
 Maximum number of timesteps allowed per call to solve()
 

Private Member Functions

void finalize ()
 Calls method _finalize in each domain.
 
int newtonSolve (int loglevel)
 Wrapper around the Newton solver.
 

Additional Inherited Members

- Protected Member Functions inherited from OneDim
void evalSSJacobian (double *x, double *rsd)
 Evaluate the steady-state Jacobian, accessible via jacobian()
 

Constructor & Destructor Documentation

◆ Sim1D() [1/2]

Sim1D ( )
inline

Default constructor.

This constructor is provided to make the class default-constructible, but is not meant to be used in most applications. Use the next constructor

Definition at line 29 of file Sim1D.h.

◆ Sim1D() [2/2]

Sim1D ( vector< shared_ptr< Domain1D > > &  domains)

Standard constructor.

Parameters
domainsA vector of shared pointers to the domains to be linked together. The domain pointers must be entered in left-to-right order — that is, the pointer to the leftmost domain is domain[0], the pointer to the domain to its right is domain[1], etc.

Definition at line 25 of file Sim1D.cpp.

Member Function Documentation

◆ setInitialGuess()

void setInitialGuess ( const string &  component,
vector< double > &  locs,
vector< double > &  vals 
)

Set initial guess for one component for all domains.

Parameters
componentcomponent name
locsA vector of relative positions, beginning with 0.0 at the left of the domain, and ending with 1.0 at the right of the domain.
valsA vector of values corresponding to the relative position locations.

Definition at line 41 of file Sim1D.cpp.

◆ setValue()

void setValue ( size_t  dom,
size_t  comp,
size_t  localPoint,
double  value 
)

Set a single value in the solution vector.

Parameters
domdomain number, beginning with 0 for the leftmost domain.
compcomponent number
localPointgrid point within the domain, beginning with 0 for the leftmost grid point in the domain.
valuethe value.

Definition at line 55 of file Sim1D.cpp.

◆ value()

double value ( size_t  dom,
size_t  comp,
size_t  localPoint 
) const

Get one entry in the solution vector.

Parameters
domdomain number, beginning with 0 for the leftmost domain.
compcomponent number
localPointgrid point within the domain, beginning with 0 for the leftmost grid point in the domain.

Definition at line 63 of file Sim1D.cpp.

◆ workValue()

double workValue ( size_t  dom,
size_t  comp,
size_t  localPoint 
) const

Get an entry in the work vector, which may contain either a new system state or the current residual of the system.

Parameters
domdomain index
compcomponent index
localPointgrid point within the domain

Definition at line 71 of file Sim1D.cpp.

◆ setProfile()

void setProfile ( size_t  dom,
size_t  comp,
const vector< double > &  pos,
const vector< double > &  values 
)

Specify a profile for one component of one domain.

Parameters
domdomain number, beginning with 0 for the leftmost domain.
compcomponent number
posA vector of relative positions, beginning with 0.0 at the left of the domain, and ending with 1.0 at the right of the domain.
valuesA vector of values corresponding to the relative position locations.

Note that the vector pos and values can have lengths different than the number of grid points, but their lengths must be equal. The values at the grid points will be linearly interpolated based on the (pos, values) specification.

Definition at line 79 of file Sim1D.cpp.

◆ setFlatProfile()

void setFlatProfile ( size_t  dom,
size_t  comp,
double  v 
)

Set component 'comp' of domain 'dom' to value 'v' at all points.

Definition at line 323 of file Sim1D.cpp.

◆ show() [1/2]

void show ( std::ostream &  s)

Output information on current solution for all domains to stream.

Parameters
sOutput stream
Since
New in Cantera 3.0.
Deprecated:
To be removed after Cantera 3.1.

Definition at line 331 of file Sim1D.cpp.

◆ show() [2/2]

void show ( )

Show logging information on current solution for all domains.

Since
New in Cantera 3.0.

Definition at line 341 of file Sim1D.cpp.

◆ save()

void save ( const string &  fname,
const string &  name,
const string &  desc,
bool  overwrite = false,
int  compression = 0,
const string &  basis = "" 
)

Save current simulation data to a container file or CSV format.

In order to save the content of a Sim1D object, individual domains are converted to SolutionArray objects and saved using the SolutionArray::save() method. For HDF and YAML output, all domains are written to a single container file with shared header information. Simulation settings of individual domains are preserved as meta data of the corresponding SolutionArray objects. For CSV files, only state and auxiliary data of the main 1D domain are saved.

The complete state of the current object can be restored from HDF and YAML container files using the restore() method, while individual domains can be loaded using SolutionArray::restore() for further analysis. While CSV do not contain complete information, they can still be used for setting initial states of individual simulation objects for some Cantera API's.

Parameters
fnameName of output file (CSV, YAML or HDF)
nameIdentifier of storage location within the container file; this node/group contains header information and multiple subgroups holding domain-specific SolutionArray data (YAML/HDF only)
descCustom comment describing the dataset to be stored (YAML/HDF only)
overwriteForce overwrite if file/name exists; optional (default=false)
compressionCompression level (0-9); optional (default=0; HDF only)
basisOutput mass ("Y"/"mass") or mole ("X"/"mole") fractions; if not specified (default=""), the native basis of the underlying ThermoPhase manager is used -
See also
nativeState (CSV only)

Definition at line 98 of file Sim1D.cpp.

◆ saveResidual()

void saveResidual ( const string &  fname,
const string &  name,
const string &  desc,
bool  overwrite = false,
int  compression = 0 
)

Save the residual of the current solution to a container file.

Parameters
fnameName of output container file
nameIdentifier of solution within the container file
descDescription of the solution
overwriteForce overwrite if name exists; optional (default=false)
compressionCompression level (optional; HDF only)

Definition at line 147 of file Sim1D.cpp.

◆ restore()

AnyMap restore ( const string &  fname,
const string &  name 
)

Retrieve data and settings from a previously saved simulation.

This method restores a simulation object from YAML or HDF data previously saved using the save() method.

Parameters
fnameName of container file (YAML or HDF)
nameIdentifier of location within the container file; this node/group contains header information and subgroups with domain-specific SolutionArray data
Returns
AnyMap containing header information

Definition at line 246 of file Sim1D.cpp.

◆ clearDebugFile()

void clearDebugFile ( )

Deletes a debug_sim1d.yaml file if it exists.

Used to clear the file for successive calls to the solve() method.

Definition at line 608 of file Sim1D.cpp.

◆ writeDebugInfo()

void writeDebugInfo ( const string &  header_suffix,
const string &  message,
int  loglevel,
int  attempt_counter 
)

Write solver debugging information to a YAML file based on the specified log level.

This method writes solver debug information to a specified YAML file (debug_sim1d.yaml). The section headers are formatted according to the provided header_suffix and attempt_counter arguments. Depending on the log level, the method will save either the solution information or the residual information for each attempted solution.

Parameters
header_suffixHeader used to construct a unique section in the YAML file where the information will be written to.
messageA string that is written to the description tag in the YAML file.
loglevelControls the type of output that will be written. A loglevel greater than 6 saves the solution, and a loglevel greater than 7 saves the residual additionally.
attempt_counterAn integer counter used to uniquely identify the attempt which is included in the file header to differentiate between multiple solution attempts.

Definition at line 613 of file Sim1D.cpp.

◆ setTimeStep()

void setTimeStep ( double  stepsize,
size_t  n,
const int *  tsteps 
)

Set the number of time steps to try when the steady Newton solver is unsuccessful.

Parameters
stepsizeInitial time step size [s]
nLength of tsteps array
tstepsA sequence of time step counts to take after subsequent failures of the steady-state solver. The last value in tsteps will be used again after further unsuccessful solution attempts.

Definition at line 388 of file Sim1D.cpp.

◆ solve()

void solve ( int  loglevel = 0,
bool  refine_grid = true 
)

Performs the hybrid Newton steady/time-stepping solution.

The solver attempts to solve the steady-state problem first. If the steady-state solver fails, the time-stepping solver is used to take multiple time steps to move the solution closer to the steady-state solution. The steady-state solver is called again after the timesteps to make further progress towards the steady-state solution. This process is repeated until the steady-state solver converges or the maximum number of timesteps is reached.

At the end of a successful solve, if the refine_grid flag is set, the grid will be analyzed and refined if necessary. If the grid is refined, the solution process described above is repeated with the new grid. This process is repeated until the grid no longer needs refinement based on the refine criteria.

Parameters
loglevelControls the amount of diagnostic output.
refine_gridIf true, the grid will be refined

Definition at line 411 of file Sim1D.cpp.

◆ eval()

void eval ( double  rdt = -1.0,
int  count = 1 
)
inline

Definition at line 239 of file Sim1D.h.

◆ getResidual()

void getResidual ( double  rdt,
double *  resid 
)
inline

Evaluate the governing equations and return the vector of residuals.

Definition at line 244 of file Sim1D.h.

◆ refine()

int refine ( int  loglevel = 0)

Refine the grid in all domains.

Returns
If positive, the number of new grid points added. If negative, the number of grid points removed. If zero, the grid is unchanged.
Since
Changed in Cantera 3.1. Previously, the return value was zero if points were removed but not added.

Definition at line 521 of file Sim1D.cpp.

◆ setFixedTemperature()

int setFixedTemperature ( double  t)

Add node for fixed temperature point of freely propagating flame.

Definition at line 627 of file Sim1D.cpp.

◆ fixedTemperature()

double fixedTemperature ( )

Return temperature at the point used to fix the flame location.

Definition at line 717 of file Sim1D.cpp.

◆ fixedTemperatureLocation()

double fixedTemperatureLocation ( )

Return location of the point where temperature is fixed.

Definition at line 730 of file Sim1D.cpp.

◆ setLeftControlPoint()

void setLeftControlPoint ( double  temperature)

Set the left control point location using the specified temperature.

This is used when two-point flame control is active.

The provided temperature will be used to locate the closest grid point to that temperature, which will serve to locate the left control point's coordinate. Starting from the left boundary, the first grid point that is equal to or exceeds the specified temperature will be used to locate the left control point's coordinate.

Definition at line 743 of file Sim1D.cpp.

◆ setRightControlPoint()

void setRightControlPoint ( double  temperature)

Set the right control point location using the specified temperature.

This is used when two-point flame control is active.

The provided temperature will be used to locate the closest grid point to that temperature, which will serve to locate the right control point's coordinate. Starting from the right boundary, the first grid point that is equal to or exceeds the specified temperature will be used to locate the right control point's coordinate.

Definition at line 794 of file Sim1D.cpp.

◆ setRefineCriteria()

void setRefineCriteria ( int  dom = -1,
double  ratio = 10.0,
double  slope = 0.8,
double  curve = 0.8,
double  prune = -0.1 
)

Set grid refinement criteria.

If dom >= 0, then the settings apply only to the specified domain. If dom < 0, the settings are applied to each domain.

See also
Refiner::setCriteria.

Definition at line 846 of file Sim1D.cpp.

◆ getRefineCriteria()

vector< double > getRefineCriteria ( int  dom)

Get the grid refinement criteria.

dom must be greater than or equal to zero (that is, the domain must be specified).

See also
Refiner::getCriteria

Definition at line 860 of file Sim1D.cpp.

◆ setMaxGridPoints()

void setMaxGridPoints ( int  dom,
int  npoints 
)

Set the maximum number of grid points in the domain.

If dom >= 0, then the settings apply only to the specified domain. If dom < 0, the settings are applied to each domain.

See also
Refiner::setMaxPoints.

Definition at line 884 of file Sim1D.cpp.

◆ maxGridPoints()

size_t maxGridPoints ( size_t  dom)

Get the maximum number of grid points in this domain.

See also
Refiner::maxPoints
Parameters
domdomain number, beginning with 0 for the leftmost domain.

Definition at line 897 of file Sim1D.cpp.

◆ setGridMin()

void setGridMin ( int  dom,
double  gridmin 
)

Set the minimum grid spacing in the specified domain(s).

Parameters
domDomain index. If dom == -1, the specified spacing is applied to all domains.
gridminThe minimum allowable grid spacing [m]

Definition at line 871 of file Sim1D.cpp.

◆ restoreTimeSteppingSolution()

void restoreTimeSteppingSolution ( )

Set the current solution vector to the last successful time-stepping solution.

This can be used to examine the solver progress after a failed integration.

Definition at line 352 of file Sim1D.cpp.

◆ restoreSteadySolution()

void restoreSteadySolution ( )

Set the current solution vector and grid to the last successful steady- state solution.

This can be used to examine the solver progress after a failure during grid refinement.

Definition at line 361 of file Sim1D.cpp.

◆ getInitialSoln()

void getInitialSoln ( )

Get the initial value of the system state from each domain in the simulation.

Definition at line 374 of file Sim1D.cpp.

◆ jacobian()

double jacobian ( int  i,
int  j 
)

Get the Jacobian element \( J_{ij} = \partial f_i / \partial x_j \).

Definition at line 903 of file Sim1D.cpp.

◆ evalSSJacobian()

void evalSSJacobian ( )

Evaluate the Jacobian in steady-state mode.

Definition at line 908 of file Sim1D.cpp.

◆ solveAdjoint()

void solveAdjoint ( const double *  b,
double *  lambda 
)

Solve the equation \( J^T \lambda = b \).

Here, \( J = \partial f/\partial x \) is the Jacobian matrix of the system of equations \( f(x,p)=0 \). This can be used to efficiently solve for the sensitivities of a scalar objective function \( g(x,p) \) to a vector of parameters \( p \) by solving:

\[ J^T \lambda = \left( \frac{\partial g}{\partial x} \right)^T \]

for \( \lambda \) and then computing:

\[ \left.\frac{dg}{dp}\right|_{f=0} = \frac{\partial g}{\partial p} - \lambda^T \frac{\partial f}{\partial p} \]

Definition at line 913 of file Sim1D.cpp.

◆ resize()

void resize ( )
overridevirtual

Call after one or more grids has changed size, for example after being refined.

Reimplemented from OneDim.

Definition at line 937 of file Sim1D.cpp.

◆ setSteadyCallback()

void setSteadyCallback ( Func1 callback)
inline

Set a function that will be called after each successful steady-state solve, before regridding.

Intended to be used for observing solver progress for debugging purposes.

Definition at line 367 of file Sim1D.h.

◆ finalize()

void finalize ( )
private

Calls method _finalize in each domain.

Definition at line 381 of file Sim1D.cpp.

◆ newtonSolve()

int newtonSolve ( int  loglevel)
private

Wrapper around the Newton solver.

Returns
0 if successful, -1 on failure

Definition at line 397 of file Sim1D.cpp.

Member Data Documentation

◆ m_xlast_ts

vector<double> m_xlast_ts
protected

the solution vector after the last successful timestepping

Definition at line 373 of file Sim1D.h.

◆ m_xlast_ss

vector<double> m_xlast_ss
protected

the solution vector after the last successful steady-state solve (stored before grid refinement)

Definition at line 377 of file Sim1D.h.

◆ m_grid_last_ss

vector<vector<double> > m_grid_last_ss
protected

the grids for each domain after the last successful steady-state solve (stored before grid refinement)

Definition at line 381 of file Sim1D.h.

◆ m_xnew

vector<double> m_xnew
protected

a work array used to hold the residual or the new solution

Definition at line 384 of file Sim1D.h.

◆ m_tstep

double m_tstep
protected

timestep

Definition at line 387 of file Sim1D.h.

◆ m_steps

vector<int> m_steps
protected

array of number of steps to take before re-attempting the steady-state solution

Definition at line 391 of file Sim1D.h.

◆ m_steady_callback

Func1* m_steady_callback
protected

User-supplied function called after a successful steady-state solve.

Definition at line 394 of file Sim1D.h.


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