LCOV - code coverage report
Current view: top level - include/splits - Split.h (source / functions) Hit Total Coverage
Test: idaholab/moose framework: 2bf808 Lines: 1 1 100.0 %
Date: 2025-07-17 01:28:37 Functions: 2 2 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             : // MOOSE includes
      13             : #include "MooseEnum.h"
      14             : #include "MooseObject.h"
      15             : #include "PetscSupport.h"
      16             : #include "Restartable.h"
      17             : 
      18             : // Forward declarations
      19             : class FEProblemBase;
      20             : class NonlinearSystemBase;
      21             : 
      22             : /**
      23             :  * Base class for split-based preconditioners.
      24             :  */
      25             : class Split : public MooseObject, public Restartable
      26             : {
      27             : public:
      28             :   static InputParameters validParams();
      29             : 
      30             :   Split(const InputParameters & parameters);
      31         672 :   virtual ~Split() = default;
      32             : 
      33             :   virtual void setup(NonlinearSystemBase & nl, const std::string & prefix = "-");
      34             : 
      35             : protected:
      36             :   /// Which splitting to use
      37             :   enum SplittingType
      38             :   {
      39             :     SplittingTypeAdditive,
      40             :     SplittingTypeMultiplicative,
      41             :     SplittingTypeSymmetricMultiplicative,
      42             :     SplittingTypeSchur
      43             :   };
      44             : 
      45             :   FEProblemBase & _fe_problem;
      46             : 
      47             :   /// "Variables Split operates on
      48             :   std::vector<NonlinearVariableName> _vars;
      49             : 
      50             :   ///@{
      51             :   /// Block and bounrdary restrictions for the split
      52             :   std::vector<SubdomainName> _blocks;
      53             :   std::vector<BoundaryName> _sides;
      54             :   std::vector<BoundaryName> _unsides;
      55             :   ///@}
      56             : 
      57             :   /// Split subsystem list
      58             :   std::vector<std::string> _splitting;
      59             : 
      60             :   ///@{
      61             :   /// Splitting type and (in case of Schur split) options
      62             :   MooseEnum _splitting_type;
      63             :   MooseEnum _schur_type;
      64             :   MooseEnum _schur_pre;
      65             :   ///@}
      66             : };

Generated by: LCOV version 1.14