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 17 of file DOFTableUtil.cpp.

20{
21#ifdef USE_PETSC
22 x.setLocalAccessibleVector();
23#endif
24
25 double res = 0.0;
26 auto const& ms = dof_table.getMeshSubset(global_component);
27
28 for (auto const l :
30 {
31 auto const value =
32 getNonGhostNodalValue(x, l, dof_table, global_component);
33 res = calculate_norm(res, value);
34 }
35 return res;
36}
auto meshLocations(Mesh const &mesh, MeshItemType const item_type)
Definition Mesh.h:227
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 38 of file DOFTableUtil.cpp.

40{
41 double const res =
42 norm(x, global_component, dof_table,
43 [](double res, double value) { return res + std::abs(value); });
44
45#ifdef USE_PETSC
46 return BaseLib::MPI::allreduce(res, MPI_SUM, BaseLib::MPI::Mpi{});
47#endif
48 return res;
49}
static T allreduce(T const &value, MPI_Op const &mpi_op, Mpi const &mpi)
Definition MPI.h:122
double norm(GlobalVector const &x, unsigned const global_component, LocalToGlobalIndexMap const &dof_table, CalculateNorm calculate_norm)

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

Referenced by norm1().

◆ norm2()

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

Definition at line 51 of file DOFTableUtil.cpp.

53{
54 double const res =
55 norm(x, global_component, dof_table,
56 [](double res, double value) { return res + value * value; });
57
58#ifdef USE_PETSC
59 return std::sqrt(
61#endif
62 return std::sqrt(res);
63}

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

Referenced by norm2().

◆ normInfinity()

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

Definition at line 65 of file DOFTableUtil.cpp.

67{
68 double const res =
69 norm(x, global_component, dof_table, [](double res, double value)
70 { return std::max(res, std::abs(value)); });
71
72#ifdef USE_PETSC
73 return BaseLib::MPI::allreduce(res, MPI_MAX, BaseLib::MPI::Mpi{});
74#endif
75 return res;
76}

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

Referenced by normInfinity().