21 template <
int spatial_dim,
typename LumpedFieldSpace,
typename DensitySpace,
typename... parameter_space>
25 static constexpr
int lumped_dim = LumpedFieldSpace::components;
28 auto weak_form = std::make_shared<WeakFormT>(physics_name, mesh, lumped_field.
space(),
29 typename WeakFormT::SpacesT{&density.space()});
30 weak_form->addBodyIntegral(
smith::DependsOn<0>{}, mesh->entireBodyName(), [](
double ,
auto ,
auto Rho) {
31 if constexpr (lumped_dim == 1) {
34 auto ones = make_tensor<lumped_dim>([](
int) {
return 1.0; });
Class for encapsulating the critical MFEM components of a primal finite element field.
mfem::ParFiniteElementSpace & space()
Returns a non-owning reference to the internal FESpace.
Smith mesh class which assists in constructing the appropriate parallel mfem meshes and registering a...
Accelerator functionality.
auto createSolidMassWeakForm(const std::string &physics_name, std::shared_ptr< smith::Mesh > &mesh, const FiniteElementState &lumped_field, const FiniteElementState &density)
creates a lumped mass weak form
Arbitrary-rank tensor class.
This is a class that mimics most of std::tuple's interface, except that it is usable in CUDA kernels ...