Acceleration of T process assembly
-
Feature description was added to the changelog -
Tests covering your feature were added? -
Any new feature or behavior change was documented?
This MR does the same for the T process as !4713 (merged) and !4730 (merged) did for the ComponentTransport process:
adding the options <linear>
and <linear_solver_compute_only_upon_timestep_change>
to speed up the assembly.
The implementation is mostly copy & paste from ComponentTransport, the test cases are variations of an existing test case.
This MR also contains a bugfix
-
TimeLoop
now calls the processespreOutput()
hook always for the last timestep, even if no output is requested explicitely in the output config since the last timestep will always be output. - I also had to update the references for a 1D heat conduction test: There, the HeatFlowRates were strange (non-zero in the interior of the domain).
Verify effectiveness of the optimizations
$ cd <BUILDDIR>
$ ctest -R ogs-1D_HeatConduction_dirichlet
$ cd logs
$ grep -cF "Assembly took" ogs-1D_HeatConduction_dirichlet*.txt
ogs-1D_HeatConduction_dirichlet_linear_dt_change.txt:500
ogs-1D_HeatConduction_dirichlet_linear.txt:500
ogs-1D_HeatConduction_dirichlet.txt:1000 <-- not optimized, two non-linear iterations per timestep
ogs-1D_HeatConduction_dirichlet_varying_dt_linear_compute_only_on_dt_change.txt:600 <-- second test case with varying time step size
ogs-1D_HeatConduction_dirichlet_varying_dt_linear.txt:600
ogs-1D_HeatConduction_dirichlet_varying_dt.txt:1200
$ grep -cF "Eigen solver compute()" ogs-1D_HeatConduction_dirichlet*.txt
ogs-1D_HeatConduction_dirichlet_linear_dt_change.txt:1 <-- only one linear solver compute() call
ogs-1D_HeatConduction_dirichlet_linear.txt:500 <-- one iteration per timestep and one compute() per iteration
ogs-1D_HeatConduction_dirichlet.txt:1000 <-- two iterations per timestep and one compute() per iteration
ogs-1D_HeatConduction_dirichlet_varying_dt_linear_compute_only_on_dt_change.txt:2 <-- one change in time step size = two compute() calls
ogs-1D_HeatConduction_dirichlet_varying_dt_linear.txt:600
ogs-1D_HeatConduction_dirichlet_varying_dt.txt:1200
Edited by Christoph Lehmann