Unify various assembly optimizations/features

The motivation for this MR is to enable submesh residuum assembly for the component transport process.

To achieve this, various assembly features had to be unified, e.g. submesh residuum assembly, <linear> assembly, OpenMP parallelized assembly, separate soil/bhe element assembly in TBHE.

All of these generic features should work now with any of the processes that supported either of them already (ComponentTransport HeatConduction HeatTransportBHE HydroMechanics RichardsMechanics SmallDeformation TH2M ThermoHydroMechanics ThermoRichardsFlow ThermoRichardsMechanics). However, beware that not all of these combinations have been tested, yet!

Overview over code changes

The interesting code changes are in ProcessLib/Assembly/ and ProcessLib/AssemblyMixin.*:

  • ProcessLib/Assembly/AssembledMatrixCache.cpp → deleted
  • ProcessLib/Assembly/AssembledMatrixCache.h
    • struct AssembledMatrixCache was totally rewritten. only stores matrices M, K and vector b for later reuse, now.
    • struct CachedOrNewMatrix was added, which unifies the handling of cached global matrices/vectors and temporary ones during assembly.
  • ProcessLib/Assembly/AssemblyData.* → newly added
    • contains data structures handling active elements, bulk node and bulk element IDs
  • ProcessLib/Assembly/MatrixAssemblyStats.h
    • stats struct for assembly of M, K and b was added to enable Picard assembly
  • ProcessLib/Assembly/MatrixElementCache.h
    • cache for elements of M, K and b was added to enable Picard assembly
  • ProcessLib/Assembly/ParallelVectorMatrixAssembler.*
    • Picard assembly was implemented
  • ProcessLib/AssemblyMixin.*
    • Picard assembly was implemented, including <linear> assembly optimization
    • support for separate soil/BHE element assembly was added to support HeatTransportBHE.
    • assembleWithJacobian() method was split into smaller parts.

Check list

  1. Feature description was added to the changelog
  2. Tests covering your feature were added?
  3. Any new feature or behaviour change was documented?
Edited by Christoph Lehmann

Merge request reports

Loading