Compiler options such as '-Wl,-z,rlero' were incorrectly being split into
multiple options by SCons. Compiler options must now be separated by spaces when
specified on the SCons command line.
Fixes#320
Increasing the density of grid points is more likely to lead to a non-extinct
solution, but takes longer to solve. To give good average-case performance,
first try solving on a grid with few points, then increase the number of points
until a reacting solution is found, if possible.
For most problems, these new default tolerances for both time stepping and
steady state solves are more likely to converge than tighter tolerances, but
still give well-resolved results. Tighter tolerances are required in some cases,
e.g. when evaluating sensitivity coefficients by finite difference.
These values were selected for optimal performance across a large set of flames
in each configuration and using mechanisms of various sizes to give good average
performance. It should not generally be necessary for users to change these
values.
The new formula is based on a set of test flames where the density ratio of the
fuel and oxidizer streams was varied by changing temperature and fuel
composition and the flame position was calculated as the centroid of the H2O
mass fraction profile.
The solver could previously get left in transient mode if an exception occurred
during time stepping, making it impossible to make a new attempt at solving the
steady-state problem.
Specifying this option allows the user to automatically execute the efficient
sequence of solving on the initial grid, enabling the energy equation, refining,
tightening tolerances, and enabling multicomponent transport in a single call to
Sim1D.solve.
The existing functions for getting tolerances are difficult to use because
they return the tolerances based on the steady/unsteady mode of the solver
which the user shouldn't have to care about (and can't easily set).
Boundaries do not necessarily have species variables, so setting species
tolerances will now raise an exception. This approach also avoids making
the assumption that the index of the first species equation is 4 in flow
domains.
Previously, the first species was always used, which could cause problems with
negative mass fractions in cases where the first species has a mass fraction
near zero.
This improves convergence in cases where the domain is too short to achieve full
oxidation and the maximum temperature within the domain is significantly lower
than the flame temperature computed from equilibrium.
Preserve the sign of elements of the solution vector when perturbing them in
order to avoid triggering discontinuous behavior as the cross zero (which is
caused by the way rate evaluation is handled for negative species
concentrations).
The transient mask should only be zeroed when doing a full evaluation of the
residual function, since the partial evaluations done while evaluating the
Jacobian will not fill in all elements of the mask. This error was causing
Jacobian update in MultiNewton::solve to always effectively generate the
steady-state Jacobian, even when in time-stepping mode.
This initial grid is designed to work well with how the initial profile and
temperature fixed point are set. The only parameter that needs to be
user-specified is the width of the domain.
The previous method for setting the fixed temperature point could add a point
very close to an existing grid point, which could then make convergence on the
initial grid difficult.