Skip to content

Commit b38b4c2

Browse files
authored
[GeoMechanicsApplication] Added CheckDomainSize (#13305)
* added check utility for DomainSize * corrected error message * removed accidentally added space * used nullopt to remove a code smell * used value_or * split check_utilities.hpp into header and body * added unit test * removed pragma from cpp file
1 parent 31b4fec commit b38b4c2

15 files changed

+129
-40
lines changed

applications/GeoMechanicsApplication/custom_elements/U_Pw_small_strain_element.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
// Application includes
1515
#include "custom_elements/U_Pw_small_strain_element.hpp"
16+
#include "custom_utilities/check_utilities.h"
1617
#include "custom_utilities/constitutive_law_utilities.h"
1718
#include "custom_utilities/equation_of_motion_utilities.h"
1819
#include "custom_utilities/linear_nodal_extrapolator.h"
@@ -57,8 +58,7 @@ int UPwSmallStrainElement<TDim, TNumNodes>::Check(const ProcessInfo& rCurrentPro
5758
const PropertiesType& r_properties = this->GetProperties();
5859
const GeometryType& r_geometry = this->GetGeometry();
5960

60-
KRATOS_ERROR_IF(r_geometry.DomainSize() < 1.0e-15)
61-
<< "DomainSize < 1.0e-15 for the element " << this->Id() << std::endl;
61+
CheckUtilities::CheckDomainSize(r_geometry.DomainSize(), this->Id());
6262

6363
// Verify specific properties
6464
KRATOS_ERROR_IF_NOT(r_properties.Has(IGNORE_UNDRAINED))

applications/GeoMechanicsApplication/custom_elements/drained_U_Pw_small_strain_element.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
// Application includes
1414
#include "custom_elements/drained_U_Pw_small_strain_element.hpp"
15+
#include "custom_utilities/check_utilities.h"
1516

1617
namespace Kratos
1718
{
@@ -56,8 +57,7 @@ int DrainedUPwSmallStrainElement<TDim, TNumNodes>::Check(const ProcessInfo& rCur
5657
const PropertiesType& Prop = this->GetProperties();
5758
const GeometryType& Geom = this->GetGeometry();
5859

59-
if (Geom.DomainSize() < 1.0e-15)
60-
KRATOS_ERROR << "DomainSize < 1.0e-15 for the element " << this->Id() << std::endl;
60+
CheckUtilities::CheckDomainSize(Geom.DomainSize(), this->Id());
6161

6262
// Verify specific properties
6363

applications/GeoMechanicsApplication/custom_elements/geo_steady_state_Pw_piping_element.h

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
#include <numeric>
1616

17+
#include "custom_utilities/check_utilities.h"
1718
#include "custom_utilities/dof_utilities.h"
1819
#include "custom_utilities/element_utilities.hpp"
1920
#include "custom_utilities/math_utilities.h"
@@ -99,7 +100,7 @@ class KRATOS_API(GEO_MECHANICS_APPLICATION) GeoSteadyStatePwPipingElement : publ
99100
int Check(const ProcessInfo&) const override
100101
{
101102
KRATOS_TRY
102-
CheckDomainSize();
103+
CheckUtilities::CheckDomainSize(GetGeometry().DomainSize(), Id());
103104
CheckHasSolutionStepsDataFor(WATER_PRESSURE);
104105
CheckHasDofsFor(WATER_PRESSURE);
105106
CheckProperties();
@@ -225,14 +226,6 @@ class KRATOS_API(GEO_MECHANICS_APPLICATION) GeoSteadyStatePwPipingElement : publ
225226
std::string Info() const override { return "GeoSteadyStatePwPipingElement"; }
226227

227228
private:
228-
void CheckDomainSize() const
229-
{
230-
constexpr auto min_domain_size = 1.0e-15;
231-
KRATOS_ERROR_IF(GetGeometry().DomainSize() < min_domain_size)
232-
<< "DomainSize (" << GetGeometry().DomainSize() << ") is smaller than "
233-
<< min_domain_size << " for element " << Id() << std::endl;
234-
}
235-
236229
void CheckHasSolutionStepsDataFor(const Variable<double>& rVariable) const
237230
{
238231
for (const auto& node : GetGeometry()) {

applications/GeoMechanicsApplication/custom_elements/small_strain_U_Pw_diff_order_element.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
// Application includes
2626
#include "custom_elements/small_strain_U_Pw_diff_order_element.hpp"
27+
#include "custom_utilities/check_utilities.h"
2728
#include "custom_utilities/constitutive_law_utilities.h"
2829
#include "custom_utilities/dof_utilities.h"
2930
#include "custom_utilities/element_utilities.hpp"
@@ -61,8 +62,7 @@ int SmallStrainUPwDiffOrderElement::Check(const ProcessInfo& rCurrentProcessInfo
6162

6263
const auto& r_geom = GetGeometry();
6364

64-
if (r_geom.DomainSize() < 1.0e-15)
65-
KRATOS_ERROR << "DomainSize < 1.0e-15 for the element " << this->Id() << std::endl;
65+
CheckUtilities::CheckDomainSize(r_geom.DomainSize(), this->Id());
6666

6767
// check pressure geometry pointer
6868
KRATOS_DEBUG_ERROR_IF_NOT(mpPressureGeometry) << "Pressure Geometry is not defined\n";

applications/GeoMechanicsApplication/custom_elements/steady_state_Pw_element.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
// Application includes
1414
#include "custom_elements/steady_state_Pw_element.hpp"
15+
#include "custom_utilities/check_utilities.h"
1516
#include "custom_utilities/transport_equation_utilities.hpp"
1617
#include "includes/cfd_variables.h"
1718

@@ -44,8 +45,7 @@ int SteadyStatePwElement<TDim, TNumNodes>::Check(const ProcessInfo& rCurrentProc
4445
const PropertiesType& Prop = this->GetProperties();
4546
const GeometryType& Geom = this->GetGeometry();
4647

47-
if (Geom.DomainSize() < 1.0e-15)
48-
KRATOS_ERROR << "DomainSize < 1.0e-15 for the element " << this->Id() << std::endl;
48+
CheckUtilities::CheckDomainSize(Geom.DomainSize(), this->Id());
4949

5050
for (unsigned int i = 0; i < TNumNodes; ++i) {
5151
if (Geom[i].SolutionStepsDataHas(WATER_PRESSURE) == false)

applications/GeoMechanicsApplication/custom_elements/transient_Pw_element.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
// Application includes
1414
#include "custom_elements/transient_Pw_element.hpp"
15+
#include "custom_utilities/check_utilities.h"
1516
#include "custom_utilities/dof_utilities.h"
1617
#include "custom_utilities/transport_equation_utilities.hpp"
1718
#include "includes/cfd_variables.h"
@@ -151,8 +152,7 @@ int TransientPwElement<TDim, TNumNodes>::Check(const ProcessInfo& rCurrentProces
151152
const PropertiesType& r_properties = this->GetProperties();
152153
const GeometryType& r_geom = this->GetGeometry();
153154

154-
if (r_geom.DomainSize() < 1.0e-15)
155-
KRATOS_ERROR << "DomainSize < 1.0e-15 for the element " << this->Id() << std::endl;
155+
CheckUtilities::CheckDomainSize(r_geom.DomainSize(), this->Id());
156156

157157
for (unsigned int i = 0; i < TNumNodes; ++i) {
158158
if (r_geom[i].SolutionStepsDataHas(WATER_PRESSURE) == false)

applications/GeoMechanicsApplication/custom_elements/transient_Pw_line_element.h

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#include "calculation_contribution.h"
1717
#include "compressibility_calculator.h"
1818
#include "custom_retention/retention_law_factory.h"
19+
#include "custom_utilities/check_utilities.h"
1920
#include "custom_utilities/dof_utilities.h"
2021
#include "custom_utilities/element_utilities.hpp"
2122
#include "filter_compressibility_calculator.h"
@@ -138,7 +139,7 @@ class KRATOS_API(GEO_MECHANICS_APPLICATION) TransientPwLineElement : public Elem
138139
{
139140
KRATOS_TRY
140141

141-
CheckElementLength();
142+
CheckUtilities::CheckDomainSize(GetGeometry().DomainSize(), Id(), "Length");
142143
CheckHasSolutionStepsDataFor(WATER_PRESSURE);
143144
CheckHasSolutionStepsDataFor(DT_WATER_PRESSURE);
144145
CheckHasSolutionStepsDataFor(VOLUME_ACCELERATION);
@@ -156,13 +157,6 @@ class KRATOS_API(GEO_MECHANICS_APPLICATION) TransientPwLineElement : public Elem
156157
std::vector<RetentionLaw::Pointer> mRetentionLawVector;
157158
std::vector<CalculationContribution> mContributions;
158159

159-
void CheckElementLength() const
160-
{
161-
constexpr auto min_domain_size = 1.0e-15;
162-
KRATOS_ERROR_IF(GetGeometry().DomainSize() < min_domain_size)
163-
<< "Length smaller than " << min_domain_size << " for element " << Id() << std::endl;
164-
}
165-
166160
void CheckHasSolutionStepsDataFor(const VariableData& rVariable) const
167161
{
168162
for (const auto& node : GetGeometry()) {

applications/GeoMechanicsApplication/custom_elements/transient_thermal_element.h

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include "custom_constitutive/thermal_dispersion_law.h"
1818
#include "custom_constitutive/thermal_filter_law.h"
1919
#include "custom_retention/retention_law_factory.h"
20+
#include "custom_utilities/check_utilities.h"
2021
#include "custom_utilities/dof_utilities.h"
2122
#include "geo_mechanics_application_variables.h"
2223
#include "includes/element.h"
@@ -114,7 +115,7 @@ class KRATOS_API(GEO_MECHANICS_APPLICATION) TransientThermalElement : public Ele
114115
{
115116
KRATOS_TRY
116117

117-
CheckDomainSize();
118+
CheckUtilities::CheckDomainSize(GetGeometry().DomainSize(), Id());
118119
CheckHasSolutionStepsDataFor(TEMPERATURE);
119120
CheckHasSolutionStepsDataFor(DT_TEMPERATURE);
120121
CheckHasDofsFor(TEMPERATURE);
@@ -127,13 +128,6 @@ class KRATOS_API(GEO_MECHANICS_APPLICATION) TransientThermalElement : public Ele
127128
}
128129

129130
private:
130-
void CheckDomainSize() const
131-
{
132-
constexpr auto min_domain_size = 1.0e-15;
133-
KRATOS_ERROR_IF(GetGeometry().DomainSize() < min_domain_size)
134-
<< "DomainSize smaller than " << min_domain_size << " for element " << Id() << std::endl;
135-
}
136-
137131
void CheckHasSolutionStepsDataFor(const Variable<double>& rVariable) const
138132
{
139133
for (const auto& node : GetGeometry()) {

applications/GeoMechanicsApplication/custom_elements/undrained_U_Pw_small_strain_element.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
// Application includes
1414
#include "custom_elements/undrained_U_Pw_small_strain_element.hpp"
15+
#include "custom_utilities/check_utilities.h"
1516

1617
namespace Kratos
1718
{
@@ -46,8 +47,7 @@ int UndrainedUPwSmallStrainElement<TDim, TNumNodes>::Check(const ProcessInfo& rC
4647
int ierr = Element::Check(rCurrentProcessInfo);
4748
if (ierr != 0) return ierr;
4849

49-
if (Geom.DomainSize() < 1.0e-15)
50-
KRATOS_ERROR << "DomainSize < 1.0e-15 for the element " << this->Id() << std::endl;
50+
CheckUtilities::CheckDomainSize(Geom.DomainSize(), this->Id());
5151

5252
// Verify generic variables
5353
ierr = UPwBaseElement::Check(rCurrentProcessInfo);
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// KRATOS___
2+
// // ) )
3+
// // ___ ___
4+
// // ____ //___) ) // ) )
5+
// // / / // // / /
6+
// ((____/ / ((____ ((___/ / MECHANICS
7+
//
8+
// License: geo_mechanics_application/license.txt
9+
//
10+
// Main authors: Gennady Markelov
11+
//
12+
13+
// Project includes
14+
#include "check_utilities.h"
15+
#include "includes/exception.h"
16+
17+
namespace Kratos
18+
{
19+
20+
void CheckUtilities::CheckDomainSize(double DomainSize, std::size_t Id, const std::optional<std::string>& PrintName)
21+
{
22+
constexpr auto min_domain_size = 1.0e-15;
23+
KRATOS_ERROR_IF(DomainSize < min_domain_size)
24+
<< PrintName.value_or("DomainSize") << " (" << DomainSize << ") is smaller than "
25+
<< min_domain_size << " for element " << Id << std::endl;
26+
}
27+
28+
} /* namespace Kratos.*/

0 commit comments

Comments
 (0)