Commit graph

1232 commits

Author SHA1 Message Date
Ray Speth
1ba5f6b879 [Kinetics] Allow adding species after reactions for homogeneous kinetics
This enables incremental mechanism construction for gas phase kinetics. For
surface kinetics, adding new species changes the kinetics species index of
existing species in other phases, so this feature is disabled.
2016-04-16 11:52:08 -04:00
Ray Speth
9c4a0baa55 [Thermo] Simplify adding species for most phase types
Where possible, extend arrays as species are added rather than requiring a
later call to initThermo(). For phases that do not require any data except
that which is included in the Species objects themselves (notably, this
includes IdealGasPhase), species can now be added dynamically without
affecting the phase state.
2016-04-15 20:56:24 -04:00
Ray Speth
1f231d1dd0 [Kinetics] Eliminate need for 'finalize' method
All reaction-sized arrays are now allocated as reactions are added, which means
that the finalize() method is unnecessary and reactions can be continuously
added, even after the Kinetics object has been used for rate calculations.
2016-04-15 17:05:10 -04:00
Ray Speth
4428a62f3c [Thermo] Add ability to modify species data for existing Phase objects 2016-04-15 15:32:38 -04:00
Ray Speth
13fa0c7a4f Add invalidateCache() function to ThermoPhase and Kinetics
This can be used to invalidate cached data after a change to underlying data
such as species thermo coefficients or reaction rate coefficients. Needs to be
user-accessible so that dependent objects can be updated manually.
2016-04-15 15:32:38 -04:00
Ray Speth
eda9fc8f23 [Equil] Add vcs_VolPhase::eos_name; deprecate string16_EOSType 2016-04-15 15:31:23 -04:00
Ray Speth
7124385292 [Test] Make deprecation warnings fatal in test suites
This ensures that deprecated methods aren't being called anywhere in the test
suite, without having to manually scan the test output for warning messages.
2016-04-15 12:04:08 -04:00
Ray Speth
9a848fbd0e [Equil] Deprecate unused internal VCS functions 2016-04-14 23:29:33 -04:00
Ray Speth
ef441e4182 [CTML] Deprecate getFloatDefaultUnits
This function is unnecessarily complicated and rarely needed.
2016-04-14 19:41:44 -04:00
Ray Speth
a288d5c6f7 [1D] Make Jacobian atol independent of compiler optimizations
If compiling with -funsafe-math-optimizations, this method of attempting to
calculate the floating point epsilon value would fail.
2016-04-14 19:00:00 -04:00
Ray Speth
7af1b4b60f [Numerics] Fix invalid memory access in DenseMatrix increment
This method now works for rectangular matrices
2016-04-13 21:11:05 -04:00
Ray Speth
bd24aeb926 [Numerics] Fix DenseMatrix::mult to work for rectangular matrices 2016-04-13 21:11:05 -04:00
Ray Speth
b94e272291 [Numerics] Fix invalid memory access in DenseMatrix::mult
Results were incorrect for rectangular matrices
2016-04-13 21:11:04 -04:00
Ray Speth
9ed23a57ab Move non-trivial functions out of header files 2016-04-08 19:13:09 -04:00
Ray Speth
d1a58e1b25 [Equil] Fix formatting of some VCS debug output
The lack of space between adjacent fields would cause test failures when
comparing output files when using some versions of MinGW (due to 3-digit
exponents).
2016-04-08 16:27:27 -04:00
Ray Speth
b7f9f230a7 [Equil] Replace (vcs_)print_stringTrunc with usage of cppformat 2016-04-06 23:08:37 -04:00
Ray Speth
ee1b07ac6b Fix some compiler warnings regarding unused variables 2016-04-05 12:52:01 -04:00
Ray Speth
511a39fc73 [Equil] Standardize VCS solver to always use MKS units 2016-04-05 12:52:01 -04:00
Ray Speth
a60217cfc6 [Equil] Make better use of local variables 2016-04-05 12:52:01 -04:00
Ray Speth
05198ddcfb Fix get_modified_time to avoid race condition on Windows
If multiple processes tried to read the same input file simultaneously,
get_modified_time would fail. With this change, get_modified_time
does not need to actually open the file in order to read the metadata.
2016-03-30 20:35:15 -04:00
Ray Speth
4c5301d6cd [1D] Initialize number-of-steps counter at start of solve
Fixes the enforcement of the maximum number of steps constraint if solve() is
called again after an exception.
2016-03-28 17:13:24 -04:00
Ray Speth
bec0c88e32 [Thermo] Remove unnecessary overloads of getElectrochemPotentials 2016-03-27 23:18:26 -04:00
Ray Speth
881fcbaf6f Improve use of local variables in src/numerics 2016-03-27 22:52:49 -04:00
Ray Speth
0995725a13 [1D] Deprecate unused methods of Domain1D 2016-03-27 22:19:38 -04:00
Ray Speth
1aa28f9310 Let the constructor for std::string do its job 2016-03-27 22:19:38 -04:00
Ray Speth
9c632cf123 [1D] Remove unused / unimplemented methods from StFlow 2016-03-27 22:19:37 -04:00
Ray Speth
d52a0fdbcb [1D] Eliminate redundant parts of StFlow::showSolution 2016-03-27 21:19:45 -04:00
Ray Speth
b56094b183 [1D/Examples] eliminate unnecessary setting of tolerances
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.
2016-03-27 17:07:36 -04:00
Ray Speth
059e657fe4 [1D/Examples] Use new default values for Jacobian and time stepping settings
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.
2016-03-27 17:07:36 -04:00
Ray Speth
5e35ca5486 [1D] Allow replacing flow domain grid after creating Sim1D
This makes it possible to try solving on a different grid if the initial
solution attempt fails without needing to recreate the Sim1D object.
2016-03-27 17:07:36 -04:00
Ray Speth
9353a79da2 [1D] Switch to "steady mode" before attempting steady-state solve
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.
2016-03-27 17:07:36 -04:00
Ray Speth
80b8cd7e2b [1D] Remove Bdry1D::m_nv which shadowed Domain1D::m_nv 2016-03-27 17:07:36 -04:00
Ray Speth
9f3821db82 [1D] Use most prevalent species to impose sum-of-mass-fractions constraint
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.
2016-03-27 17:07:36 -04:00
Ray Speth
b99ba44f13 Fix SurfPhase::setCoveragesNoNorm to retain negative coverages
This prevents Jacobian singularities due to (trivial) negative coverages,
e.g. in ReactingSurf1D.
2016-03-27 17:07:36 -04:00
Ray Speth
af5bbf74a4 [1D] Improve Jacobian evaluation for ReactingSurf1D
Don't normalize coverages when evaluating the residual normally -- only as part
of recovering from a failed timestep, like what is done in StFlow.
2016-03-27 17:07:36 -04:00
Ray Speth
1f3e8dd0d7 [1D] Raise exception if previous solution does not exist 2016-03-27 17:07:36 -04:00
Ray Speth
7ba668109e [1D] Increase default value for maximum timestep
This accelerates convergence of the solver in some cases.
2016-03-27 17:07:36 -04:00
Ray Speth
81074b2b4a [1D] Add function for restoring last successful steady-state solution 2016-03-27 17:07:36 -04:00
Ray Speth
29b704916c [1D] Set limit on number of timesteps without reaching steady state 2016-03-27 17:07:36 -04:00
Ray Speth
11b665b00a [1D] Keep track of number of time steps taken before each steady-state solve 2016-03-27 17:07:35 -04:00
Ray Speth
318fa04cf7 [1D] Reset negative species concentrations after a failed time step 2016-03-27 17:07:35 -04:00
Ray Speth
832ee88692 [1D] Add ability to access last successful timestepped solution
This can be helpful when debugging 1D solver failures.
2016-03-25 12:21:19 -04:00
Ray Speth
5a576a7c75 [1D] Tighten default negative species bounds 2016-03-25 12:21:19 -04:00
Ray Speth
011c9cb6c3 [1D] Improve finite-difference Jacobian
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).
2016-03-25 12:21:19 -04:00
Ray Speth
d76704912b [1D] Fix transient mask after Jacobian update
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.
2016-03-25 12:21:19 -04:00
Ray Speth
d20ab891e8 [1D] add function for getting info about a solution component 2016-03-25 12:21:19 -04:00
Ray Speth
39a6819bf3 [1D] Only reset Jacobian age after successful *steady-state* solve 2016-03-25 12:21:19 -04:00
Ray Speth
60efb22b87 [Kinetics] Always initialize FalloffReaction.falloff
Fixes #326
2016-03-23 11:42:32 -04:00
imitrichev
7e71645efb [CTI/CTML] Add 'nonreactant_orders' option to allow non-reactant orders
The flag 'allow_nonreactant_orders' in class Reaction is set to 'true' when
using this option in cti/ctml.

Resolves #317
Resolves #321
2016-02-27 14:10:35 -05:00
Ray Speth
f0e6d090dc [Fortran] Fix for multiple definitions of '_xml' function
This was causing linker errors when trying to link with the Fortran library.
2016-02-24 18:59:23 -05:00