Snapshot optimized solver and audit diagnostics before numerical experiments
This commit is contained in:
@@ -82,6 +82,20 @@ export namespace mean_field::operators {
|
||||
mfem::Vector &action
|
||||
) const override;
|
||||
|
||||
// Supported-coordinate coupling actions; omit identically absent blocks.
|
||||
void ApplyEnthalpyJacobianAction(const mfem::Vector &enthalpyVariation, mfem::Vector &action,
|
||||
bool useTensorPath = true) const;
|
||||
void ApplyDisplacementJacobianAction(const mfem::Vector &displacementVariation, mfem::Vector &action,
|
||||
bool useTensorPath = true) const;
|
||||
// Retained complete action for isolation/reference comparisons.
|
||||
void MultReference(const mfem::Vector &densityVariation, const mfem::Vector &enthalpyVariation,
|
||||
const mfem::Vector &displacementVariation, mfem::Vector &action) const;
|
||||
|
||||
// Previous optimized pointwise actions, sharing exactly the same state.
|
||||
void MultCachedReference(const mfem::Vector &densityVariation, const mfem::Vector &enthalpyVariation,
|
||||
const mfem::Vector &displacementVariation, mfem::Vector &action) const;
|
||||
[[nodiscard]] int GetTensorElementCount() const noexcept;
|
||||
|
||||
void BuildResidual(mfem::Vector &residual) const;
|
||||
|
||||
// Exact diagonal of the prepared density-to-closure block, expressed
|
||||
@@ -118,15 +132,19 @@ export namespace mean_field::operators {
|
||||
|
||||
void VerifyPrepared() const;
|
||||
|
||||
void MultImpl(const mfem::Vector &densityVariation, const mfem::Vector &enthalpyVariation,
|
||||
const mfem::Vector &displacementVariation, mfem::Vector &action, bool useFastPath, bool useTensorPath) const;
|
||||
|
||||
void ApplyThermodynamicActionFull(
|
||||
const mfem::Vector &densityVariationTrue,
|
||||
const mfem::Vector *densityVariationTrue,
|
||||
const mfem::Vector &enthalpyVariationTrue,
|
||||
mfem::Vector &actionTrue
|
||||
mfem::Vector &actionTrue, bool useTensorPath = true
|
||||
) const;
|
||||
|
||||
void ApplyDisplacementActionFull(
|
||||
const mfem::Vector &displacementVariationTrue,
|
||||
mfem::Vector &actionTrue
|
||||
mfem::Vector &actionTrue,
|
||||
bool useFastPath = true, bool useTensorPath = true
|
||||
) const;
|
||||
|
||||
struct ElementPAData {
|
||||
@@ -180,6 +198,8 @@ export namespace mean_field::operators {
|
||||
mutable mfem::Vector m_quadratureDisplacementAction;
|
||||
mutable mfem::Vector m_elementDisplacementAction;
|
||||
mutable mfem::DenseMatrix m_referenceDisplacementJacobian;
|
||||
mutable mfem::DenseMatrix m_tensorDisplacement;
|
||||
mutable mfem::Vector m_tensorWorkspace;
|
||||
|
||||
std::uint64_t m_preparationCount{0};
|
||||
bool m_isPrepared{false};
|
||||
|
||||
Reference in New Issue
Block a user