centering.hpp array string_view serif/equations/contributions.hpp serif/equations/point.hpp src/compile_time_checks/serif/operators/computation_owners.cpp src/compile_time_checks/serif/operators/serial_backend.cpp src/include/serif/equations/equations.hpp serif::equations::CenteringConstraint serif serif::equations File containing the CenteringConstraint equation, which fixes the material point at the computational origin. Emily M. Boudreaux This is probably the simplest equation we have right now and therefore may serve as a useful example to learn from. #pragmaonce #include<array> #include<string_view> #include"serif/equations/contributions.hpp" #include"serif/equations/point.hpp" namespaceserif::equations{ structCenteringConstraintfinal:Contribution<discretization::forms::Operand<discretization::blocks::displacement::vector>>{ usingOperands=utils::types::TypeList<TestOperand>; staticconstexprstd::string_viewname="centeringconstraint"; staticconstexprboolposition_independent=true; staticconstexprstd::array<double,3>reference_position{}; [[nodiscard]]staticPointLinearization<Operands, discretization::forms::VectorValue>evaluate(constEquationPoint<Operands>&point){ PointLinearization<Operands, discretization::forms::VectorValue>result; result.residual=point.fields.get<Test>(); for(intaxis=0;axis<3;++axis){ result.field_derivatives.get<Test>()[axis][axis]=1.0; } returnresult; } }; }//namespaceserif::equations