OGS
NumLib::anonymous_namespace{DOFTableUtil.cpp} Namespace Reference

Functions

template<typename CalculateNorm >
double norm (GlobalVector const &x, unsigned const global_component, LocalToGlobalIndexMap const &dof_table, CalculateNorm calculate_norm)
 
double norm1 (GlobalVector const &x, unsigned const global_component, LocalToGlobalIndexMap const &dof_table)
 
double norm2 (GlobalVector const &x, unsigned const global_component, LocalToGlobalIndexMap const &dof_table)
 
double normInfinity (GlobalVector const &x, unsigned const global_component, LocalToGlobalIndexMap const &dof_table)
 

Function Documentation

◆ norm()

template<typename CalculateNorm >
double NumLib::anonymous_namespace{DOFTableUtil.cpp}::norm ( GlobalVector const & x,
unsigned const global_component,
LocalToGlobalIndexMap const & dof_table,
CalculateNorm calculate_norm )

Definition at line 24 of file DOFTableUtil.cpp.

27{
28#ifdef USE_PETSC
29 x.setLocalAccessibleVector();
30#endif
31
32 double res = 0.0;
33 auto const& ms = dof_table.getMeshSubset(global_component);
34
35 for (auto const l :
37 {
38 auto const value =
39 getNonGhostNodalValue(x, l, dof_table, global_component);
40 res = calculate_norm(res, value);
41 }
42 return res;
43}
auto meshLocations(Mesh const &mesh, MeshItemType const item_type)
Definition Mesh.h:238
double getNonGhostNodalValue(GlobalVector const &x, MeshLib::Location const &location, NumLib::LocalToGlobalIndexMap const &dof_table, std::size_t const global_component_id)

References NumLib::LocalToGlobalIndexMap::getMeshSubset(), NumLib::getNonGhostNodalValue(), MeshLib::views::meshLocations(), and MeshLib::Node.

◆ norm1()

double NumLib::anonymous_namespace{DOFTableUtil.cpp}::norm1 ( GlobalVector const & x,
unsigned const global_component,
LocalToGlobalIndexMap const & dof_table )

Definition at line 45 of file DOFTableUtil.cpp.

47{
48 double const res =
49 norm(x, global_component, dof_table,
50 [](double res, double value) { return res + std::abs(value); });
51
52#ifdef USE_PETSC
53 return BaseLib::MPI::allreduce(res, MPI_SUM, BaseLib::MPI::Mpi{});
54#endif
55 return res;
56}
static T allreduce(T const &value, MPI_Op const &mpi_op, Mpi const &mpi)
Definition MPI.h:124

References BaseLib::MPI::allreduce(), and NumLib::norm().

◆ norm2()

double NumLib::anonymous_namespace{DOFTableUtil.cpp}::norm2 ( GlobalVector const & x,
unsigned const global_component,
LocalToGlobalIndexMap const & dof_table )

Definition at line 58 of file DOFTableUtil.cpp.

60{
61 double const res =
62 norm(x, global_component, dof_table,
63 [](double res, double value) { return res + value * value; });
64
65#ifdef USE_PETSC
66 return std::sqrt(
68#endif
69 return std::sqrt(res);
70}

References BaseLib::MPI::allreduce(), and NumLib::norm().

◆ normInfinity()

double NumLib::anonymous_namespace{DOFTableUtil.cpp}::normInfinity ( GlobalVector const & x,
unsigned const global_component,
LocalToGlobalIndexMap const & dof_table )

Definition at line 72 of file DOFTableUtil.cpp.

74{
75 double const res =
76 norm(x, global_component, dof_table, [](double res, double value)
77 { return std::max(res, std::abs(value)); });
78
79#ifdef USE_PETSC
80 return BaseLib::MPI::allreduce(res, MPI_MAX, BaseLib::MPI::Mpi{});
81#endif
82 return res;
83}

References BaseLib::MPI::allreduce(), NumLib::norm(), and normInfinity().

Referenced by normInfinity().