LCOV - code coverage report
Current view: top level - include/userobjects - PorousFlowDictator.h (source / functions) Hit Total Coverage
Test: porous_flow Test Coverage Lines: 4 4 100.0 %
Date: 2017-11-21 14:47:27 Functions: 5 5 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /****************************************************************/
       2             : /* MOOSE - Multiphysics Object Oriented Simulation Environment  */
       3             : /*                                                              */
       4             : /*          All contents are licensed under LGPL V2.1           */
       5             : /*             See LICENSE for full restrictions                */
       6             : /****************************************************************/
       7             : 
       8             : #ifndef POROUSFLOWDICTATOR_H
       9             : #define POROUSFLOWDICTATOR_H
      10             : 
      11             : #include "GeneralUserObject.h"
      12             : #include "Coupleable.h"
      13             : #include "ZeroInterface.h"
      14             : 
      15             : class PorousFlowDictator;
      16             : 
      17             : template <>
      18             : InputParameters validParams<PorousFlowDictator>();
      19             : 
      20             : /**
      21             :  * This holds maps between the nonlinear variables
      22             :  * used in a PorousFlow simulation and the
      23             :  * variable number used internally by MOOSE, as
      24             :  * well as the number of fluid phases and
      25             :  * the number of fluid components.
      26             :  *
      27             :  * The Dictator performs sanity checks on all
      28             :  * PorousFlow simulations and helps users
      29             :  * rectify errors (for instance if parts of
      30             :  * the input file suggest it is a 2-phase
      31             :  * simulation, while other parts suggest it
      32             :  * is 1-phase).
      33             :  *
      34             :  * All PorousFlow Materials and Kernels calculate
      35             :  * and use derivatives with respect to all the variables
      36             :  * mentioned in this Object, at least in principal
      37             :  * (in practice they may be lazy and not compute
      38             :  * all derivatives).
      39             :  */
      40             : 
      41             : /**
      42             :                                   `  `:;@;:.:::#@@@'.`
      43             :                            `    ,@;@@@@@@@@@@@@@@@@@@@@'';''``
      44             :                      ,;@@@@@@@@@@@@T@@@@@H@@@@@E@@@@@@@@++@@@+:.:.`
      45             :             '@@'@@@@@@@D@@@@@I@@@@@C@@@@@T@@@@@A@@@@@T@@@@@O@@@@@R@@@@@@..`
      46             :      `..,;@@@@@@@@@@@@@@@@@@@@@@@@@@@@I@@@@@S@@@@@@@@@@@@@@@@@@@@@@@@@@@;.
      47             :  .:@@@@@@@@@@@@@@@@@@@@W@@@@@A@@@@@T@@@@@C@@@@@H@@@@@I@@@@@N@@@@@G@@@@@@@@@#;:.`
      48             :  .:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:,@@@@@@@@@@+` ``
      49             :  ,@@@@@@@@@@@';'@@@@@@@@@@:@@@@+@+:;@@@@@@@;:#';::'@@@@@@.  `::;,..`::+:,;@@@@@@:.``
      50             : `'@@@@@@'..```.,,....```  ``                    `                      ..:;@@@@@@@@+.
      51             : @;;;;@;,,`` ``                                                             `:@@@@@@:`
      52             : @@++';:,.```                                                                ``;+@#:,.
      53             : @@@@#+:.`         `,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'@@@@@+:.                    `.:'::,
      54             : @@@@@@:,`...`,@@@@@@@@@@,    +@@@@@@@@@@@@@@@@@@@@@@@@`  `;'@@@@#               .,,,,
      55             : @@@@@@':::@@@@@@@@.`   `@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.    ``,@@@`           `.::,
      56             : @@@@@@#@@@@@';.    `@@@@@@@@;,@`@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`   .,@@@@         ``..,
      57             : @@@@@@@@@:..    @@@@@,         ;@@@@@@@@@@@@@@@@@@  ,@@@@@:@@@@@   `,'@@@        ```.
      58             : @@@@@':,,`   @@@@:`            @@@@@@@@@@@@@@@@@@     ,@@: `:@@@@@; ..:@@@`       ```
      59             : @@@@;:`   @@@@@@..             '@@@@@@@@@@@@@@@@@@    `@@`    .@@@@@,`:'@@@.        `
      60             : @@@@;:.`@@@@@,   ``             @@@@@@@@@@@@@@@@@@@@@@@@@      ,@@@@@@.'@@@@,`
      61             : @@@+':''`  ;@@@@@@,,`            @@@@@@@@@@@@@@@@@@@@@@'       `.:@@@#@:@@@@':.
      62             : :;;;:@@,,.`  `@@@+,   `+.         @@@@@@@@@@@@@@@@@@@@`       ```.     @@:';,,,.`
      63             : .,,,,,,;;+;:.`..;,.,      ,,`       @@@@@@@@@@@@@@@@`       ```     ,@@,    ``` `
      64             : `......,,;+++#';@@@@@@.                  '@@@@@@;      ```     .;@@@@.
      65             :  ```` `,;'+@@+;:'@@@'@@@@@:.                `             ,#@@@@+,
      66             :         .:+'@';::'@+':,;,#@@@@@@@@@@@@@@@@@@:      .@@@@@@@:
      67             :          `:,,::,.`...,,`..,,,,...,,,,,...`:;@@@@@@@@;
      68             :            `.....```` `,.`````````..,,,,,.....``````
      69             : */
      70             : 
      71         483 : class PorousFlowDictator : public GeneralUserObject, public Coupleable, public ZeroInterface
      72             : {
      73             : public:
      74             :   PorousFlowDictator(const InputParameters & parameters);
      75             : 
      76        2291 :   virtual void initialize() override{};
      77        2291 :   virtual void execute() override{};
      78        2291 :   virtual void finalize() override{};
      79             : 
      80             :   /**
      81             :    * The number of PorousFlow variables.  Materials
      82             :    * and Kernels will calculate and use derivatives
      83             :    * with respect to these variables in the Jacobian
      84             :    */
      85             :   unsigned int numVariables() const;
      86             : 
      87             :   /// the number of fluid phases
      88             :   unsigned int numPhases() const;
      89             : 
      90             :   /// the number of fluid components
      91             :   unsigned int numComponents() const;
      92             : 
      93             :   /**
      94             :    * the PorousFlow variable number
      95             :    * @param moose_var_num the MOOSE variable number
      96             :    * eg if porous_flow_vars = 'pwater pgas', and the variables in
      97             :    * the simulation are 'energy pwater pgas shape'
      98             :    * then porousFlowVariableNum(2) = 1
      99             :    */
     100             :   unsigned int porousFlowVariableNum(unsigned int moose_var_num) const;
     101             : 
     102             :   /**
     103             :    * returns true if moose_var_num is a porous flow variable
     104             :    * @param moose_var_num the MOOSE variable number
     105             :    * eg if porous_flow_vars = 'pwater pgas', and the variables in
     106             :    * the simulation are 'energy pwater pgas shape'
     107             :    * then isPorousFlowVariable(0) = false, isPorousFlowVariable(1) = true
     108             :    */
     109             :   bool isPorousFlowVariable(unsigned int moose_var_num) const;
     110             : 
     111             :   /**
     112             :    * returns true if moose_var_num is not a porous flow variabe
     113             :    * @param moose_var_num the MOOSE variable number
     114             :    * eg if porous_flow_vars = 'pwater pgas', and the variables in
     115             :    * the simulation are 'energy pwater pgas shape'
     116             :    * then notPorousFlowVariable(0) = true, notPorousFlowVariable(1) = false
     117             :    */
     118             :   bool notPorousFlowVariable(unsigned int moose_var_num) const;
     119             : 
     120             :   /**
     121             :    * Dummy pressure variable name for use in derivatives using the
     122             :    * DerivativeMaterialInterface
     123             :    */
     124             :   const VariableName pressureVariableNameDummy() const;
     125             : 
     126             :   /**
     127             :    * Dummy saturation variable name for use in derivatives using the
     128             :    * DerivativeMaterialInterface
     129             :    */
     130             :   const VariableName saturationVariableNameDummy() const;
     131             : 
     132             :   /**
     133             :    * Dummy temperature variable name for use in derivatives using the
     134             :    * DerivativeMaterialInterface
     135             :    */
     136             :   const VariableName temperatureVariableNameDummy() const;
     137             : 
     138             :   /**
     139             :    * Dummy mass fraction variable name for use in derivatives using the
     140             :    * DerivativeMaterialInterface
     141             :    */
     142             :   const VariableName massFractionVariableNameDummy() const;
     143             : 
     144             : protected:
     145             :   /// number of porousflow variables
     146             :   const unsigned int _num_variables;
     147             : 
     148             :   /// number of fluid phases
     149             :   const unsigned int _num_phases;
     150             : 
     151             :   /// number of fluid components
     152             :   const unsigned int _num_components;
     153             : 
     154             : private:
     155             :   /// _moose_var_num[i] = the moose variable number corresponding to porous flow variable i
     156             :   std::vector<unsigned int> _moose_var_num;
     157             : 
     158             :   /// _pf_var_num[i] = the porous flow variable corresponding to moose variable i
     159             :   std::vector<unsigned int> _pf_var_num;
     160             : };
     161             : 
     162             : #endif // POROUSFLOWDICTATOR_H

Generated by: LCOV version 1.11