Skip to content

Move up linear solver

This is one step (of many following) to separate process specific functionality (like for the GroundwaterFlowProcess) from common parts of all monolithic processes. This is required for introduction of non-linear solver loop which will control the linear solver solve calls.

In this PR there is no functionality change nor their is any (but unavoidable) generalization, for example to handle multiple DOF per node. It's just moving some of the GroundwaterFlowProcess variables up into the Process class. Following the variables there are some functions.

Major changes in functions are:

  • Process::solve() is split into two parts: GroundwaterFlowProcess::assemble() followed common linear solver solve call.
  • Process::initialize() is split into two parts: Common process initialization and specific GroundwaterFlowProcess::init() part.

There is one thing I like to point out: because the GroundwaterFlow class is derived from a template Process this pointer is used to access Process's protected variables; I'll reduce their numbers in following PRs when more interfaces will be introduced.

Update: I'v just seen that diff for the review look like a mess, so maybe commit-wise review is easier...

Merge request reports