Skip to content

Resolve "Add steady state as initial condition"

Lukas Riedel requested to merge 156-add-steady-state-as-initial-condition into master

What does this MR do?

Add option to compute the initial condition in the Richards model from the stationary Richards problem (i.e., the flux law). The option is selected by choosing initial.type = stationary. DORiE now technically includes a stationary Richards solver, which is enabled by setting initial.type = stationary and choosing the same start and end times. The solver will then only compute the stationary problem and exit.

This change entailed a bit of work on the boundary conditions, because the option is only really useful if the boundary conditions applied to the initial condition are different ones than applied in the simulation. My solution is to specify boundary conditions that overlap right at the simulation start time, see the docs.

Finally, I updated the unit test to check this new simulation start behavior in the BoundaryConditionManager and I added the stationary cases to the system tests. The precision of their solutions with respect to the ODE solution is lower than in the transient case, which I found a bit confusing. The errors usually are only slightly larger than for the transient cases, but the flux reconstruction is far worse. Not sure what's happening here exactly, but the errors are still reasonable. I fixed the tests by introducing "tolerance multipliers" for the respective stationary tests.

Is there something that needs to be double checked?

  • If boundary conditions do not change, computing the stationary solution should lead to a steady state which does not require any further computations when the system is propagated in time. If I execute the simulation like that, the residuals are indeed very small. However, the solver still solves a problem (which typically only takes one quick Newton iteration per time step). I would not have expected that and I cannot find any change in the output VTK files over time. I don't know why that's happening.

  • I would have expected that the stationary solution has a higher precision than the transient steady-state solution. Might the residual increase because the ODE solution is actually less precise?

Can this MR be accepted?

  • Implemented stationary initial condition
    • Updated BC management to apply certain BCs only to the initial condition
  • Added/Updated tests:
    • test-boundary-condition-manager unit test
    • Stationary cases to ODE system tests
  • Added/Updated documentation
  • Pipeline passing
  • Squash option set
  • Delete branch option set
  • Added entry to CHANGELOG.md

Assignee: If the Squash option is set, check/update the commit message right before merging!

Related issues

Closes #156 (closed)

Edited by Lukas Riedel

Merge request reports