Line data Source code
1 : #ifdef MOOSE_MFEM_ENABLED 2 : 3 : #pragma once 4 : 5 : #include "MFEMFESpace.h" 6 : #include "MFEMObject.h" 7 : 8 : /** 9 : * Constructs and stores an mfem::ParComplexGridFunction object. 10 : */ 11 : class MFEMComplexVariable : public MFEMObject 12 : { 13 : public: 14 : static InputParameters validParams(); 15 : 16 : MFEMComplexVariable(const InputParameters & parameters); 17 : 18 : /// Returns a shared pointer to the constructed gridfunction. 19 310 : inline std::shared_ptr<mfem::ParComplexGridFunction> getComplexGridFunction() const 20 : { 21 310 : return _cmplx_gridfunction; 22 : } 23 : 24 : /// Returns a reference to the fespace used by the gridfunction. 25 62 : inline const MFEMFESpace & getFESpace() const { return _fespace; } 26 : 27 : // Declare default coefficients associated with this complex gridfunction. 28 : void declareCoefficients(); 29 : 30 : protected: 31 : const MFEMFESpace & _fespace; 32 : 33 : private: 34 : /// Constructs the gridfunction. 35 : const std::shared_ptr<mfem::ParComplexGridFunction> buildComplexGridFunction(); 36 : 37 : /// Stores the constructed gridfunction. 38 : const std::shared_ptr<mfem::ParComplexGridFunction> _cmplx_gridfunction{nullptr}; 39 : }; 40 : 41 : #endif