module; #include export module mean_field:operators.gravity_field_jacobian; export import :fem; export import :mapping.domain_mapper; export import :operators.context.gravity_field; export namespace mean_field::operators { class GravityFieldJacobianOperator final : public mfem::Operator { public: GravityFieldJacobianOperator( fem::FEM &f, const mapping::DomainMapperStateless &domain_mapper, const context::gravity_field::GravityFieldLinearizationContext &linearization_context, const mfem::Array &state_offsets, const mfem::Array &residual_offsets ); void Mult( const mfem::Vector &direction, mfem::Vector &action ) const override; [[nodiscard]] const context::gravity_field::GravityFieldLinearizationContext & GetLinearizationContext() const noexcept; private: fem::FEM &m_fem; const mapping::DomainMapperStateless &m_domain_mapper; const context::gravity_field::GravityFieldLinearizationContext &m_linearization_context; mfem::Array m_state_offsets; mfem::Array m_residual_offsets; }; } // namespace mean_field::operators