|
| template<typename ElementT, typename MakeT> |
| std::expected< ElementBatch< ElementT >, PreparationRejection > | serif::operators::backend::mfem::detail::build_element_batch (const int count, Workspace &workspace, MakeT &&make) |
| | Build one immutable batch entry per index, concurrently, with one Workspace per worker.
|
| |
| template<VolumeEquation EquationT, typename SchemaT, typename ContributionT> |
| std::expected< ElementBatch< ElementBasis< EquationPlan< EquationT >::operand_count > >, PreparationRejection > | serif::operators::backend::mfem::sample_contribution_basis (const VolumeConfiguration< EquationT, SchemaT > &configuration, const ContributionBinding< ContributionT > &contribution, const BasisBindings< EquationPlan< EquationT >::column_count > &bindings, TensorBasisCache &cache) |
| | Sample the reference discretization once for each supported element of this contribution.
|
| |
| template<VolumeEquation EquationT, typename OperandT, typename BindingT> |
| OperandSamples | serif::operators::backend::mfem::sample_contribution_operand (const ElementBatch< ElementBasis< EquationPlan< EquationT >::operand_count > > &basis, const CoefficientView< BindingT > &input, Workspace &workspace) |
| | Only this operand's coefficients and reference basis determine its reference samples.
|
| |
| template<VolumeEquation EquationT, typename SchemaT, typename ContributionT> |
| std::expected< ElementBatch< ElementGeometry< EquationPlan< EquationT >::operand_count > >, PreparationRejection > | serif::operators::backend::mfem::map_contribution_geometry (const VolumeConfiguration< EquationT, SchemaT > &configuration, const ElementBatch< ElementBasis< EquationPlan< EquationT >::operand_count > > &basis, const CoefficientView< typename VolumeConfiguration< EquationT, SchemaT >::DisplacementBinding > &displacement, const MappingCoefficients &compactification, Workspace &workspace) |
| | Freeze mapping data and mapped bases independently of the equation's coefficient inputs.
|
| |
| template<typename OperandT, std::size_t OperandCount> |
| OperandSamples | serif::operators::backend::mfem::map_contribution_operand (const OperandSamples &samples, const ElementBatch< ElementGeometry< OperandCount > > &geometry, Workspace &workspace) |
| | Map only operands whose physical representation depends on deformation.
|
| |
| template<VolumeEquation Equation, typename Schema, typename Contribution> |
| std::expected< ElementBatch<::mfem::DenseMatrix >, PreparationRejection > | serif::operators::backend::mfem::differentiate_contribution_geometry (const VolumeConfiguration< Equation, Schema > &configuration, const ContributionData< EquationPlan< Equation >::operand_count > &contribution, Workspace &workspace) |
| | Compute local displacement derivatives as an immutable graph result for this contribution.
|
| |
| template<VolumeEquation EquationT, typename ContributionT, typename... Operands> |
| std::expected< ContributionData< EquationPlan< EquationT >::operand_count >, PreparationRejection > | serif::operators::backend::mfem::evaluate_contribution_equation (const ContributionBinding< ContributionT > &contribution, const ElementBatch< ElementBasis< EquationPlan< EquationT >::operand_count > > &basis, const ElementBatch< ElementGeometry< EquationPlan< EquationT >::operand_count > > &geometry, Workspace &workspace, const SamplesFor< Operands > &... samples) |
| | Evaluate one equation contribution; its basis, mapping and individual operand samples are already prepared.
|
| |
| template<VolumeEquation EquationT, typename SchemaT, typename... Contributions> |
| std::expected< VolumeData< EquationT, SchemaT >, PreparationRejection > | serif::operators::backend::mfem::collect_volume_results (const std::shared_ptr< const VolumeConfiguration< EquationT, SchemaT > > &configuration, const BasisBindings< EquationPlan< EquationT >::column_count > &bindings, Workspace &workspace, const Contributions &... contributions) |
| | Collect the results of all contributions into a single VolumeData. This contains the residuals due to each contribution for all degrees of freedom as well as data needed for subsequent jacobian calculations.
|
| |