Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Important bug fix on
TopologyHandler::GetInterfaceTransformations
TopologyHandler::GetInterfaceTransformations
does not return properFaceElementTransformations
s, if two input meshes are an identical object. Previously it was not explicitly known where this is happening, and onlyInterfaceForm::AssembleInterfaceMatrixAtPort
implicitly handled it.TopologyHandler::GetInterfaceTransformations
now enforces the input meshes to be not identical, and all routines using this function ensure to pass a copied object if two meshes are identical.NOTE: currently copying a mesh only happens at matrix assembly/EQP training and does not impact the performance of the ROM solve.
EQPSample
This class is essentially a quadrature point for EQP scheme. It contains:
SampleInfo
EQPElement
This class is essentially a finite element for EQP scheme. Actually, it serves as a container for array of
EQPSample
, supporting file I/O for them.Changes in HyperreductionIntegrator
Fast integration routines taking
EQPSample
Instead of passing sample point and weight individually, now an
EQPSample
is passed as an input. ThisEQPSample
contains precomputed shape functions and their gradients.Removed precomputation
HyperreductionIntegrator
to decide what type of coefficients it would use, but now allHyperreductionIntegrator
s are regulated to use the shape functions and their gradients.HyperreductionIntegrator
used to have a member variablebool precomputable
, in order to specify the integrators that support precomputed EQP scheme. Now that all EQP shape functions are moved out of the integrator, this member variableprecomputable
is removed and all integrators should be able to support precomputed EQP scheme.Changes in ROMNonlinearForm and ROMInterfaceForm
SampleInfo
, now arrays ofEQPElement
s are stored.PrecomputeCoefficients
routines compute the shape functions and their gradients.Mult
(InterfaceAddMult
) andGetGradient
(InterfaceGradient
) now iterate overEQPSample
s.Changes in ROMNonlinearForm
There are now two ways of changing the
EQPElement
arrays, depending on the use ofROMNonlinearForm
:Update...IntegratorSampling
assumes the ownership ofEQPElement
arrays. It deletes the existing array and creates a new one to contain the input samples.Set...EQPElems
assumes the non-ownership ofEQPElement
arrays. It only changes the pointer to theEQPElement
array.It is determined by a member variable
const bool reference
, which denotes whether the object is a reference to create/train EQP samples:reference=true
is set for componentROMNonlinearForm
.TrainEQP
, and updated viaUpdate...IntegratorSampling
.Set...EQPElems
routines are forbidden, which store pointers toEQPElement
of other (reference)ROMNonlinearForm
.reference=false
is set for subdomainROMNonlinearForm
.ROMNonlinearForm
is supposed to only use the pre-trainedEQPSample
s. The use ofTrainEQP
andUpdate...IntegratorSampling
is forbidden.Set...EQPElems
routines, in order to useEQPElement
from other (reference)ROMNonlinearForm
.Some datatypes moved to
include/hdf5_utils.hpp
BasisTag
SampleInfo
We may want a separate header file for datatypes.