module; #include export module mean_field:integrators.viscosity; import :mapping.domain_mapper; export namespace mean_field::integrators { class ViscosityIntegrator : public mfem::BlockNonlinearFormIntegrator { public: ViscosityIntegrator( const mapping::DomainMapper &mapper, const mfem::GridFunction &displacement, const mfem::GridFunction &compactification_coordinate, double mu, int quad_boost ); void SetMu(const double mu); void AssembleElementVector( const mfem::Array &el, mfem::ElementTransformation &Tr, const mfem::Array &elfun, const mfem::Array &elvec ) override; void AssembleElementGrad( const mfem::Array &el, mfem::ElementTransformation &Tr, const mfem::Array &elfun, const mfem::Array2D &elmats ) override; private: mapping::GridFunctionMappingEvaluator m_mapping; double m_mu; int m_quad_boost; }; } // namespace mean_field::integrators