LCOV - code coverage report
Current view: top level - include/preconditioners - MooseStaticCondensationPreconditioner.h (source / functions) Hit Total Coverage
Test: idaholab/moose framework: 1f9d31 Lines: 6 6 100.0 %
Date: 2025-09-02 20:01:20 Functions: 3 3 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : //* This file is part of the MOOSE framework
       2             : //* https://mooseframework.inl.gov
       3             : //*
       4             : //* All rights reserved, see COPYRIGHT for full restrictions
       5             : //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
       6             : //*
       7             : //* Licensed under LGPL 2.1, please see LICENSE for details
       8             : //* https://www.gnu.org/licenses/lgpl-2.1.html
       9             : 
      10             : #pragma once
      11             : 
      12             : #include "SingleMatrixPreconditioner.h"
      13             : 
      14             : namespace libMesh
      15             : {
      16             : class StaticCondensation;
      17             : class StaticCondensationDofMap;
      18             : }
      19             : 
      20             : /**
      21             :  * Static condensation preconditioner
      22             :  */
      23             : class MooseStaticCondensationPreconditioner : public SingleMatrixPreconditioner
      24             : {
      25             : public:
      26             :   static InputParameters validParams();
      27             : 
      28             :   MooseStaticCondensationPreconditioner(const InputParameters & params);
      29             : 
      30             :   virtual void initialSetup() override;
      31             : 
      32             : protected:
      33             :   libMesh::StaticCondensationDofMap & scDofMap();
      34             :   const libMesh::StaticCondensationDofMap & scDofMap() const;
      35             : 
      36             :   libMesh::StaticCondensation & scSysMat();
      37             :   const libMesh::StaticCondensation & scSysMat() const;
      38             : 
      39             :   std::string prefix() const;
      40             : 
      41             : private:
      42             :   /// Pointer to the libMesh static condensation dof map object
      43             :   libMesh::StaticCondensationDofMap * _sc_dof_map;
      44             : 
      45             :   /// Pointer to the libMesh static condensation system matrix object
      46             :   libMesh::StaticCondensation * _sc_system_matrix;
      47             : };
      48             : 
      49             : inline libMesh::StaticCondensationDofMap &
      50          24 : MooseStaticCondensationPreconditioner::scDofMap()
      51             : {
      52             :   libmesh_assert(_sc_dof_map);
      53          24 :   return *_sc_dof_map;
      54             : }
      55             : 
      56             : inline const libMesh::StaticCondensationDofMap &
      57          24 : MooseStaticCondensationPreconditioner::scDofMap() const
      58             : {
      59          24 :   return const_cast<MooseStaticCondensationPreconditioner *>(this)->scDofMap();
      60             : }
      61             : 
      62             : inline libMesh::StaticCondensation &
      63          12 : MooseStaticCondensationPreconditioner::scSysMat()
      64             : {
      65             :   libmesh_assert(_sc_system_matrix);
      66          12 :   return *_sc_system_matrix;
      67             : }
      68             : 
      69             : inline const libMesh::StaticCondensation &
      70             : MooseStaticCondensationPreconditioner::scSysMat() const
      71             : {
      72             :   return const_cast<MooseStaticCondensationPreconditioner *>(this)->scSysMat();
      73             : }

Generated by: LCOV version 1.14