Moved implementation from fem/bilininteg_ext.cpp into
fem/bilininteg_diffusion.cpp and fem/bilininteg_mass.cpp
Update the layouts used in the shared memory kernels.
Rename class ElemRestriction to ElementRestriction and integrate
it with class FiniteElementSpace; it is accessible with the method
FiniteElementSpace::GetElementRestriction().
Rename class XTMesh to GeometricFactors and remove invJ from the
possible geometric factors.
Introduce class QuadratureInterpolator (created and owned by class
FiniteElementSpace) that interpolates E-vectors to quadrature points,
see FiniteElementSpace::GetQuadratureInterpolator().
Switch the layouts of the E-vectors and Q-vectors to have the
local (element) DOFs and quadrature points, respectively, as the
fastest changing index.
and transfers.
The Memory class is now used by some MFEM classes (like Array and
Vector) which can be used on the Device. Such classes now provide
methods to access the underlying Memory object, e.g. GetMemory.
Updated ex1/ex1p and ex6/ex6p to not need to enable/disable the
Device at specific points -- the Device is now enabled just at the
start. Also, the same examples can now run on Device (e.g. -d cuda)
without the partial assembly option (-pa) -- full assembly will
be still done on CPU but the sparse matrix action and vector
operations will be done using the Device.
Reverted changes in class DenseMatrix related to using the Device.
At this point, DenseMatrix operations are only used for small matrices
and using the Device in this case is not a good option.
For all public integrators, make coefficients usage consistent and store a pointer instead of a reference
This affected Convection, Derivative and *ProductInterpolator integrators
Enhanced class VectorMassIntegrator to support user specified
number of components using the new method SetVDim().
Tweaked the function L2ZZErrorEstimator() to support flux spaces
with any number of components; this is only supported when the
smooth flux space is a Cartesian power of a scalar space.
Updated and tested all sample runs in ex22/ex22p.
and ComputeFluxEnergy to work with flux (stress) that stores just the
symmetric part of the stress, i.e. dim*(dim+1)/2 components instead
of dim*dim components. Also, update ComputeFluxEnergy to compute the
element integral of the strain energy density, instead of the
Frobenius norm of the stress squared.
Several small additions and tweaks in ex22_proposed.cpp.