finite.hpp cmath mfem/linalg/vector.hpp mfem/linalg/densemat.hpp serif/utils/misc/concepts/numeric.hpp src/include/serif/geometry/surface/backend/mfem/boundary_computations.hpp src/include/serif/geometry/surface/backend/mfem/boundary_rows.hpp src/include/serif/model/backend/mfem/equilibrium.hpp src/include/serif/utils/checks/invertible.hpp src/lib/serif/geometry/deformation/backend/mfem/geometry_inspection.cpp src/lib/serif/geometry/deformation/backend/mfem/geometry_step.cpp src/lib/serif/mapping/compactification/kelvin.cpp src/lib/serif/mapping/domain_mapper.cpp src/lib/serif/mapping/transformations.cpp src/lib/serif/model/backend/mfem/actions.cpp src/lib/serif/utils/projection/radial.cpp serif serif::utils serif::utils::checks #pragmaonce #include<cmath> #include"mfem/linalg/vector.hpp" #include"mfem/linalg/densemat.hpp" #include"serif/utils/misc/concepts/numeric.hpp" namespaceserif::utils::checks{ //Ifwehaveanewbackend/newvectorandmatrixtypeinthefuturewecanaddnewoverloads inlineboolis_finite(constmfem::Vector&vector){ for(inti=0;i<vector.Size();++i){ if(!std::isfinite(vector(i))){ returnfalse; } } returntrue; } inlineboolis_finite(constmfem::DenseMatrix&matrix){ for(inti=0;i<matrix.Height();++i){ for(intj=0;j<matrix.Width();++j){ if(!std::isfinite(matrix(i,j))){ returnfalse; } } } returntrue; } template<typenameScalar> requiresrequires(Scalarx){{std::isfinite(x)}->std::convertible_to<bool>;} boolis_finite(constScalarscalar){ returnstd::isfinite(scalar); } }