#include "serif/equations/mass_normalization.hpp" #include "serif/backend/mfem/model/computations/scalar_row.hpp" namespace { namespace blocks = serif::discretization::blocks; namespace computations = serif::model::computations; namespace dependencies = serif::utils::dependencies; using Density = blocks::density::mass; using MassRow = blocks::barotropic_constant::mass_normalization; using Shape = blocks::surface_deformation::coefficients; using Volume = serif::operators::backend::mfem::volume_keys::Scoped::Linearization; /** @brief Spatial equations must retain their ordinary volume representation. */ template concept CacheableRow = requires { typename computations::ScalarResidualRow; }; static_assert(CacheableRow); static_assert(!CacheableRow); using FixedLayout = blocks::SystemLayout, dependencies::KeyList>; using MovingLayout = blocks::SystemLayout, dependencies::KeyList>; using Fixed = decltype(computations::scalar_residual_row(std::declval())); using Moving = decltype(computations::scalar_residual_row(std::declval())); static_assert(std::same_as>); static_assert(std::same_as>); }