diff --git a/applications/GeoMechanicsApplication/custom_elements/transient_Pw_line_element.cpp b/applications/GeoMechanicsApplication/custom_elements/transient_Pw_line_element.cpp new file mode 100644 index 000000000000..dd2742f4a34e --- /dev/null +++ b/applications/GeoMechanicsApplication/custom_elements/transient_Pw_line_element.cpp @@ -0,0 +1,27 @@ +// KRATOS___ +// // ) ) +// // ___ ___ +// // ____ //___) ) // ) ) +// // / / // // / / +// ((____/ / ((____ ((___/ / MECHANICS +// +// License: geo_mechanics_application/license.txt +// +// Main authors: Mohamed Nabi +// John van Esch +// Gennady Markelov +// + +#include "custom_elements/transient_Pw_line_element.h" + +namespace Kratos +{ + +template class TransientPwLineElement<2, 2>; +template class TransientPwLineElement<2, 3>; +template class TransientPwLineElement<2, 4>; +template class TransientPwLineElement<2, 5>; +template class TransientPwLineElement<3, 2>; +template class TransientPwLineElement<3, 3>; + +} // Namespace Kratos diff --git a/applications/GeoMechanicsApplication/custom_elements/transient_Pw_line_element.h b/applications/GeoMechanicsApplication/custom_elements/transient_Pw_line_element.h new file mode 100644 index 000000000000..40bf60984470 --- /dev/null +++ b/applications/GeoMechanicsApplication/custom_elements/transient_Pw_line_element.h @@ -0,0 +1,393 @@ +// KRATOS___ +// // ) ) +// // ___ ___ +// // ____ //___) ) // ) ) +// // / / // // / / +// ((____/ / ((____ ((___/ / MECHANICS +// +// License: geo_mechanics_application/license.txt +// +// Main authors: Mohamed Nabi +// John van Esch +// + +#pragma once + +#include "custom_retention/retention_law_factory.h" +#include "custom_utilities/dof_utilities.h" +#include "geo_mechanics_application_variables.h" +#include "includes/element.h" +#include "includes/serializer.h" +#include "custom_utilities/element_utilities.hpp" +#include "custom_utilities/transport_equation_utilities.hpp" + +namespace Kratos +{ + +template +class KRATOS_API(GEO_MECHANICS_APPLICATION) TransientPwLineElement : public Element +{ +public: + KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION(TransientPwLineElement); + + explicit TransientPwLineElement(IndexType NewId = 0) : Element(NewId) {} + + TransientPwLineElement(IndexType NewId, GeometryType::Pointer pGeometry) + : Element(NewId, pGeometry) + { + } + + TransientPwLineElement(IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties) + : Element(NewId, pGeometry, pProperties) + { + } + + Element::Pointer Create(IndexType NewId, const NodesArrayType& rThisNodes, PropertiesType::Pointer pProperties) const override + { + return make_intrusive(NewId, GetGeometry().Create(rThisNodes), pProperties); + } + + Element::Pointer Create(IndexType NewId, GeometryType::Pointer pGeom, PropertiesType::Pointer pProperties) const override + { + return make_intrusive(NewId, pGeom, pProperties); + } + + void GetDofList(DofsVectorType& rElementalDofList, const ProcessInfo&) const override + { + rElementalDofList = GetDofs(); + } + + void EquationIdVector(EquationIdVectorType& rResult, const ProcessInfo&) const override + { + rResult = Geo::DofUtilities::ExtractEquationIdsFrom(GetDofs()); + } + + void CalculateLocalSystem(MatrixType& rLeftHandSideMatrix, + VectorType& rRightHandSideVector, + const ProcessInfo& rCurrentProcessInfo) override + { + KRATOS_TRY + + Vector det_J_container; + GetGeometry().DeterminantOfJacobian(det_J_container, this->GetIntegrationMethod()); + GeometryType::ShapeFunctionsGradientsType dN_dX_container = GetGeometry().ShapeFunctionsLocalGradients(this->GetIntegrationMethod()); + const Matrix& r_N_container = GetGeometry().ShapeFunctionsValues(GetIntegrationMethod()); + + const auto integration_coefficients = CalculateIntegrationCoefficients(det_J_container); + const auto permeability_matrix = CalculatePermeabilityMatrix(dN_dX_container, integration_coefficients, rCurrentProcessInfo); + const auto compressibility_matrix = CalculateCompressibilityMatrix(r_N_container, integration_coefficients, rCurrentProcessInfo); + + const auto fluid_body_vector = CalculateFluidBodyVector(r_N_container, dN_dX_container, rCurrentProcessInfo, integration_coefficients); + + AddContributionsToLhsMatrix(rLeftHandSideMatrix, permeability_matrix, compressibility_matrix, rCurrentProcessInfo[DT_PRESSURE_COEFFICIENT]); + AddContributionsToRhsVector(rRightHandSideVector, permeability_matrix, compressibility_matrix, fluid_body_vector); + + KRATOS_CATCH("") + } + + GeometryData::IntegrationMethod GetIntegrationMethod() const override + { + switch (TNumNodes) { + case 2: + case 3: + return GeometryData::IntegrationMethod::GI_GAUSS_2; + case 4: + return GeometryData::IntegrationMethod::GI_GAUSS_3; + case 5: + return GeometryData::IntegrationMethod::GI_GAUSS_5; + default: + KRATOS_ERROR << "Can't return integration method: unexpected number of nodes: " << TNumNodes + << std::endl; + } + } + + int Check(const ProcessInfo&) const override + { + KRATOS_TRY + + CheckDomainSize(); + CheckHasSolutionStepsDataFor(WATER_PRESSURE); + CheckHasSolutionStepsDataFor(DT_WATER_PRESSURE); + CheckHasDofsFor(WATER_PRESSURE); + CheckProperties(); + CheckForNonZeroZCoordinateIn2D(); + + KRATOS_CATCH("") + + return 0; + } + +private: + + std::vector mRetentionLawVector; + + void CheckDomainSize() const + { + constexpr auto min_domain_size = 1.0e-15; + KRATOS_ERROR_IF(GetGeometry().DomainSize() < min_domain_size) + << "DomainSize smaller than " << min_domain_size << " for element " << Id() << std::endl; + } + + void CheckHasSolutionStepsDataFor(const Variable& rVariable) const + { + for (const auto& node : GetGeometry()) { + KRATOS_ERROR_IF_NOT(node.SolutionStepsDataHas(rVariable)) + << "Missing variable " << rVariable.Name() << " on node " << node.Id() << std::endl; + } + } + + void CheckHasDofsFor(const Variable& rVariable) const + { + for (const auto& node : GetGeometry()) { + KRATOS_ERROR_IF_NOT(node.HasDofFor(rVariable)) + << "Missing degree of freedom for " << rVariable.Name() << " on node " << node.Id() + << std::endl; + } + } + + void CheckProperties() const + { + CheckProperty(DENSITY_WATER); + CheckProperty(DENSITY_SOLID); + CheckProperty(POROSITY); + CheckProperty(BULK_MODULUS_SOLID); + CheckProperty(BULK_MODULUS_FLUID); + CheckProperty(DYNAMIC_VISCOSITY); + CheckProperty(BIOT_COEFFICIENT); + CheckProperty(PERMEABILITY_XX); + } + + void CheckProperty(const Kratos::Variable& rVariable) const + { + KRATOS_ERROR_IF_NOT(GetProperties().Has(rVariable)) + << rVariable.Name() << " does not exist in the pressure element's properties" << std::endl; + KRATOS_ERROR_IF(GetProperties()[rVariable] < 0.0) + << rVariable.Name() << " has an invalid value at element " << Id() << std::endl; + } + + void CheckProperty(const Kratos::Variable& rVariable, const std::string& rName) const + { + KRATOS_ERROR_IF_NOT(GetProperties().Has(rVariable)) + << rVariable.Name() << " does not exist in the pressure element's properties" << std::endl; + KRATOS_ERROR_IF_NOT(GetProperties()[rVariable] == rName) + << rVariable.Name() << " has a value of (" << GetProperties()[rVariable] + << ") instead of (" << rName << ") at element " << Id() << std::endl; + } + + void CheckForNonZeroZCoordinateIn2D() const + { + if constexpr (TDim == 2) { + const auto& r_geometry = GetGeometry(); + auto pos = std::find_if(r_geometry.begin(), r_geometry.end(), + [](const auto& node) { return node.Z() != 0.0; }); + KRATOS_ERROR_IF_NOT(pos == r_geometry.end()) + << " Node with non-zero Z coordinate found. Id: " << pos->Id() << std::endl; + } + } + + static void AddContributionsToLhsMatrix(MatrixType& rLeftHandSideMatrix, + const BoundedMatrix& rPermeabilityMatrix, + const BoundedMatrix& rCompressibilityMatrix, + double DtPressureCoefficient) + { + rLeftHandSideMatrix = rPermeabilityMatrix + DtPressureCoefficient * rCompressibilityMatrix; + } + + void AddContributionsToRhsVector(VectorType& rRightHandSideVector, + const BoundedMatrix& rPermeabilityMatrix, + const BoundedMatrix& rCompressibilityMatrix, + const array_1d& rFluidBodyVector) const + { + const auto compressibility_vector = + array_1d{-prod(rCompressibilityMatrix, GetNodalValuesOf(DT_WATER_PRESSURE))}; + const auto permeability_vector = + array_1d{-prod(rPermeabilityMatrix, GetNodalValuesOf(WATER_PRESSURE))}; + rRightHandSideVector = compressibility_vector + permeability_vector + rFluidBodyVector; + } + + Vector CalculateIntegrationCoefficients(const Vector& rDetJContainer) const + { + const auto& r_integration_points = GetGeometry().IntegrationPoints(GetIntegrationMethod()); + + auto result = Vector{r_integration_points.size()}; + std::transform(r_integration_points.begin(), r_integration_points.end(), rDetJContainer.begin(), + result.begin(), [](const auto& rIntegrationPoint, const auto& rDetJ) { + return rIntegrationPoint.Weight() * rDetJ; + }); + return result; + } + + BoundedMatrix CalculatePermeabilityMatrix( + const GeometryType::ShapeFunctionsGradientsType& rShapeFunctionGradients, + const Vector& rIntegrationCoefficients, + const ProcessInfo& rCurrentProcessInfo) const + { + RetentionLaw::Parameters RetentionParameters(GetProperties(), rCurrentProcessInfo); + BoundedMatrix constitutive_matrix; + const auto& r_properties = GetProperties(); + GeoElementUtilities::FillPermeabilityMatrix(constitutive_matrix, r_properties); + + auto result = BoundedMatrix{ZeroMatrix{TNumNodes, TNumNodes}}; + for (unsigned int integration_point_index = 0; + integration_point_index < GetGeometry().IntegrationPointsNumber(GetIntegrationMethod()); + ++integration_point_index) { + const double RelativePermeability = mRetentionLawVector[integration_point_index]->CalculateRelativePermeability(RetentionParameters); + double dynamic_viscosity_inverse = 1.0 / r_properties[DYNAMIC_VISCOSITY]; + result += GeoTransportEquationUtilities::CalculatePermeabilityMatrix( + rShapeFunctionGradients[integration_point_index], dynamic_viscosity_inverse, constitutive_matrix, + RelativePermeability, 1.0, rIntegrationCoefficients[integration_point_index]); + } + return result; + } + + BoundedMatrix CalculateCompressibilityMatrix( + const Matrix& rNContainer, + const Vector& rIntegrationCoefficients, + const ProcessInfo& rCurrentProcessInfo) const + { + const auto& r_properties = GetProperties(); + RetentionLaw::Parameters parameters(r_properties, rCurrentProcessInfo); + auto retention_law = RetentionLawFactory::Clone(r_properties); + + auto result = BoundedMatrix{ZeroMatrix{TNumNodes, TNumNodes}}; + for (unsigned int integration_point_index = 0; + integration_point_index < GetGeometry().IntegrationPointsNumber(GetIntegrationMethod()); + ++integration_point_index) { + const auto N = Vector{row(rNContainer, integration_point_index)}; + const double BiotModulusInverse = CalculateBiotModulusInverse(rCurrentProcessInfo, integration_point_index); + result += GeoTransportEquationUtilities::CalculateCompressibilityMatrix( + N, BiotModulusInverse, rIntegrationCoefficients[integration_point_index]); + } + return result; + } + + array_1d GetNodalValuesOf(const Variable& rNodalVariable) const + { + auto result = array_1d{}; + const auto& r_geometry = GetGeometry(); + std::transform(r_geometry.begin(), r_geometry.end(), result.begin(), [&rNodalVariable](const auto& node) { + return node.FastGetSolutionStepValue(rNodalVariable); + }); + return result; + } + + + void Initialize(const ProcessInfo& rCurrentProcessInfo) override + { + if (const std::size_t number_integration_points = GetGeometry().IntegrationPointsNumber(GetIntegrationMethod()); + mRetentionLawVector.size() != number_integration_points) { + mRetentionLawVector.resize(number_integration_points); + } + for (unsigned int i = 0; i < mRetentionLawVector.size(); ++i) { + mRetentionLawVector[i] = RetentionLawFactory::Clone(GetProperties()); + mRetentionLawVector[i]->InitializeMaterial( + GetProperties(), GetGeometry(), row(GetGeometry().ShapeFunctionsValues(GetIntegrationMethod()), i)); + } + } + + + double CalculateBiotModulusInverse(const ProcessInfo& rCurrentProcessInfo, + const unsigned int integrationPointIndex) const + { + const auto& r_properties = GetProperties(); + const double biot_coefficient = r_properties[BIOT_COEFFICIENT]; + + double bulk_fluid = TINY; + if (!r_properties[IGNORE_UNDRAINED]) { + bulk_fluid = r_properties[BULK_MODULUS_FLUID]; + } + double result = (biot_coefficient - r_properties[POROSITY]) / r_properties[BULK_MODULUS_SOLID] + + r_properties[POROSITY] / bulk_fluid; + + RetentionLaw::Parameters RetentionParameters(GetProperties(), rCurrentProcessInfo); + const double degree_of_saturation = mRetentionLawVector[integrationPointIndex]->CalculateSaturation(RetentionParameters); + const double derivative_of_saturation = mRetentionLawVector[integrationPointIndex]->CalculateDerivativeOfSaturation(RetentionParameters); + + result *= degree_of_saturation; + result -= derivative_of_saturation * r_properties[POROSITY]; + return result; + } + + + void InitializeSolutionStep(const ProcessInfo& rCurrentProcessInfo) override + { + RetentionLaw::Parameters RetentionParameters(this->GetProperties(), rCurrentProcessInfo); + for (auto retention_law : mRetentionLawVector) { + retention_law->InitializeSolutionStep(RetentionParameters); + } + } + + + void FinalizeSolutionStep(const ProcessInfo& rCurrentProcessInfo) override + { + RetentionLaw::Parameters RetentionParameters(this->GetProperties(), rCurrentProcessInfo); + for (auto retention_law : mRetentionLawVector) { + retention_law->FinalizeSolutionStep(RetentionParameters); + } + } + + + array_1d CalculateFluidBodyVector( + const Matrix& rNContainer, + const GeometryType::ShapeFunctionsGradientsType& rShapeFunctionGradients, + const ProcessInfo& rCurrentProcessInfo, + const Vector& rIntegrationCoefficients) const + { + const std::size_t number_integration_points = GetGeometry().IntegrationPointsNumber(GetIntegrationMethod()); + GeometryType::JacobiansType J_container; + J_container.resize(number_integration_points, false); + for (std::size_t i = 0; i < number_integration_points; ++i) { + J_container[i].resize(GetGeometry().WorkingSpaceDimension(), GetGeometry().LocalSpaceDimension(), false); + } + GetGeometry().Jacobian(J_container, this->GetIntegrationMethod()); + + const auto& r_properties = GetProperties(); + BoundedMatrix constitutive_matrix; + GeoElementUtilities::FillPermeabilityMatrix(constitutive_matrix, r_properties); + + RetentionLaw::Parameters RetentionParameters(GetProperties(), rCurrentProcessInfo); + + array_1d volume_acceleration; + GeoElementUtilities::GetNodalVariableVector(volume_acceleration, GetGeometry(), VOLUME_ACCELERATION); + array_1d body_acceleration; + + array_1d fluid_body_vector = ZeroVector(TNumNodes); + for (unsigned int integration_point_index = 0; + integration_point_index < GetGeometry().IntegrationPointsNumber(GetIntegrationMethod()); + ++integration_point_index) { + GeoElementUtilities::InterpolateVariableWithComponents( + body_acceleration, rNContainer, volume_acceleration, integration_point_index); + + array_1d tangent_vector = column(J_container[integration_point_index], 0); + array_1d projected_gravity = ZeroVector(1); + projected_gravity(0) = MathUtils::Dot(tangent_vector, body_acceleration); + const auto N = Vector{row(rNContainer, integration_point_index)}; + double RelativePermeability = mRetentionLawVector[integration_point_index]->CalculateRelativePermeability(RetentionParameters); + fluid_body_vector += r_properties[DENSITY_WATER] * RelativePermeability + * prod(prod(rShapeFunctionGradients[integration_point_index], constitutive_matrix), projected_gravity) * + rIntegrationCoefficients[integration_point_index] / r_properties[DYNAMIC_VISCOSITY]; + } + return fluid_body_vector; + } + + + [[nodiscard]] DofsVectorType GetDofs() const + { + return Geo::DofUtilities::ExtractDofsFromNodes(GetGeometry(), WATER_PRESSURE); + } + + friend class Serializer; + + void save(Serializer& rSerializer) const override + { + KRATOS_SERIALIZE_SAVE_BASE_CLASS(rSerializer, Element) + rSerializer.save("RetentionlawVector", mRetentionLawVector); + } + + void load(Serializer& rSerializer) override + { + KRATOS_SERIALIZE_LOAD_BASE_CLASS(rSerializer, Element) + } +}; + +} // namespace Kratos diff --git a/applications/GeoMechanicsApplication/custom_utilities/element_utilities.hpp b/applications/GeoMechanicsApplication/custom_utilities/element_utilities.hpp index 792faa6b507b..fb8088aa3f97 100644 --- a/applications/GeoMechanicsApplication/custom_utilities/element_utilities.hpp +++ b/applications/GeoMechanicsApplication/custom_utilities/element_utilities.hpp @@ -44,7 +44,6 @@ class GeoElementUtilities } } -//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- template< unsigned int TDim, unsigned int TNumNodes > static inline void InterpolateVariableWithComponents(array_1d& rVector, const Matrix& NContainer, @@ -56,12 +55,12 @@ class GeoElementUtilities unsigned int index = 0; for (unsigned int i=0; i static inline void InterpolateVariableWithComponents(Vector& rVector, const Matrix& NContainer, @@ -81,7 +80,6 @@ class GeoElementUtilities } } -//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- static inline void FillArray1dOutput(array_1d& rOutputValue, const array_1d& ComputedValue) { @@ -90,7 +88,7 @@ class GeoElementUtilities rOutputValue[2] = 0.0; } -//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + static inline void FillArray1dOutput(array_1d& rOutputValue, const array_1d& ComputedValue) { @@ -99,7 +97,6 @@ class GeoElementUtilities rOutputValue[2] = ComputedValue[2]; } -//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- template< unsigned int TDim, unsigned int TNumNodes > static inline void GetNodalVariableVector(array_1d& rNodalVariableVector, const Element::GeometryType& Geom, @@ -111,12 +108,12 @@ class GeoElementUtilities for (unsigned int i=0; i < TNumNodes; ++i) { noalias(NodalVariableAux) = Geom[i].FastGetSolutionStepValue(Variable, SolutionStepIndex); for (unsigned int j=0; j < TDim; ++j) { - rNodalVariableVector[index++] = NodalVariableAux[j]; + rNodalVariableVector[index] = NodalVariableAux[j]; + index++; } } } -//---------------------------------------------------------------------------------------- template< unsigned int TDim, unsigned int TNumNodes > static inline void GetNodalVariableMatrix(Matrix& rNodalVariableMatrix, const Element::GeometryType& rGeom, @@ -133,7 +130,14 @@ class GeoElementUtilities } } -//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + static inline void FillPermeabilityMatrix(BoundedMatrix& rPermeabilityMatrix, + const Element::PropertiesType& Prop) + { + // 1D + rPermeabilityMatrix(0, 0) = Prop[PERMEABILITY_XX]; + } + + static inline void FillPermeabilityMatrix(BoundedMatrix& rPermeabilityMatrix, const Element::PropertiesType& Prop) { @@ -145,7 +149,6 @@ class GeoElementUtilities rPermeabilityMatrix(1,0) = rPermeabilityMatrix(0,1); } -//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- static inline void FillPermeabilityMatrix(BoundedMatrix& rPermeabilityMatrix, const Element::PropertiesType& Prop) { @@ -164,8 +167,6 @@ class GeoElementUtilities rPermeabilityMatrix(0,2) = rPermeabilityMatrix(2,0); } - -//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- static inline void InvertMatrix2(BoundedMatrix& rInvertedMatrix, const BoundedMatrix& InputMatrix, double &InputMatrixDet) @@ -188,7 +189,6 @@ class GeoElementUtilities KRATOS_CATCH("") } -//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- static inline void InvertMatrix2(BoundedMatrix& rInvertedMatrix, const BoundedMatrix& InputMatrix) { @@ -201,7 +201,6 @@ class GeoElementUtilities KRATOS_CATCH("") } -//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- template< unsigned int TDim> static inline void AssembleDensityMatrix(BoundedMatrix &DensityMatrix, double Density) @@ -269,7 +268,6 @@ class GeoElementUtilities AddVectorAtPosition(rPBlockVector, rRightHandSideVector, offset); } -//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- static inline void CalculateNewtonCotesLocalShapeFunctionsGradients(BoundedMatrix& DN_DeContainer) { //Line 2-noded @@ -286,7 +284,6 @@ class GeoElementUtilities } } -//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- static inline void CalculateNewtonCotesLocalShapeFunctionsGradients(BoundedMatrix& DN_DeContainer) { //Line 3-noded @@ -304,7 +301,6 @@ class GeoElementUtilities } } -//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- static inline void CalculateNewtonCotesShapeFunctions(BoundedMatrix& NContainer) { //Line 3-noded @@ -319,7 +315,6 @@ class GeoElementUtilities } } -//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- static inline void CalculateEquallyDistributedPointsLineShapeFunctions3N(Matrix& NContainer) { //Line 3-noded @@ -339,7 +334,6 @@ class GeoElementUtilities } } -//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- static inline void CalculateEquallyDistributedPointsLineGradientShapeFunctions3N(GeometryData::ShapeFunctionsGradientsType& DN_DeContainer) { //Line 3-noded @@ -388,8 +382,6 @@ class GeoElementUtilities return Circumference; } - - //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- static inline void CalculateExtrapolationMatrixTriangle(Matrix& rExtrapolationMatrix, const GeometryData::IntegrationMethod& rIntegrationMethod) { /// The matrix contains the shape functions at each GP evaluated at each node. @@ -427,7 +419,6 @@ class GeoElementUtilities } - //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- static inline void CalculateExtrapolationMatrixQuad(Matrix& rExtrapolationMatrix, const GeometryData::IntegrationMethod& rIntegrationMethod) { if (rIntegrationMethod == GeometryData::IntegrationMethod::GI_GAUSS_1) @@ -462,7 +453,6 @@ class GeoElementUtilities } } - static inline void CalculateExtrapolationMatrixTetra(Matrix& rExtrapolationMatrix, const GeometryData::IntegrationMethod& rIntegrationMethod) { if (rIntegrationMethod == GeometryData::IntegrationMethod::GI_GAUSS_1) @@ -498,8 +488,6 @@ class GeoElementUtilities } - - //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- static inline void CalculateExtrapolationMatrixHexa(Matrix& rExtrapolationMatrix, const GeometryData::IntegrationMethod& rIntegrationMethod) { if (rIntegrationMethod == GeometryData::IntegrationMethod::GI_GAUSS_1) @@ -557,9 +545,6 @@ class GeoElementUtilities } } - - //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - static Vector CalculateNodalHydraulicHeadFromWaterPressures(const GeometryType& rGeom, const Properties& rProp) { const auto NumericalLimit = std::numeric_limits::epsilon(); diff --git a/applications/GeoMechanicsApplication/geo_mechanics_application.cpp b/applications/GeoMechanicsApplication/geo_mechanics_application.cpp index 5b3f8056c4af..75f64f174147 100644 --- a/applications/GeoMechanicsApplication/geo_mechanics_application.cpp +++ b/applications/GeoMechanicsApplication/geo_mechanics_application.cpp @@ -49,6 +49,13 @@ void KratosGeoMechanicsApplication::Register() { KRATOS_REGISTER_ELEMENT("TransientPwElement3D20N", mTransientPwElement3D20N) KRATOS_REGISTER_ELEMENT("TransientPwElement3D27N", mTransientPwElement3D27N) + KRATOS_REGISTER_ELEMENT("TransientPwLineElement2D2N", mTransientPwLineElement2D2N) + KRATOS_REGISTER_ELEMENT("TransientPwLineElement2D3N", mTransientPwLineElement2D3N) + KRATOS_REGISTER_ELEMENT("TransientPwLineElement2D4N", mTransientPwLineElement2D4N) + KRATOS_REGISTER_ELEMENT("TransientPwLineElement2D5N", mTransientPwLineElement2D5N) + KRATOS_REGISTER_ELEMENT("TransientPwLineElement3D2N", mTransientPwLineElement3D2N) + KRATOS_REGISTER_ELEMENT("TransientPwLineElement3D3N", mTransientPwLineElement3D3N) + KRATOS_REGISTER_ELEMENT("TransientPwInterfaceElement2D4N", mTransientPwInterfaceElement2D4N) KRATOS_REGISTER_ELEMENT("TransientPwInterfaceElement3D6N", mTransientPwInterfaceElement3D6N) KRATOS_REGISTER_ELEMENT("TransientPwInterfaceElement3D8N", mTransientPwInterfaceElement3D8N) diff --git a/applications/GeoMechanicsApplication/geo_mechanics_application.h b/applications/GeoMechanicsApplication/geo_mechanics_application.h index 90af6ba11217..679096bd969e 100644 --- a/applications/GeoMechanicsApplication/geo_mechanics_application.h +++ b/applications/GeoMechanicsApplication/geo_mechanics_application.h @@ -94,6 +94,7 @@ #include "custom_elements/transient_Pw_interface_element.hpp" #include "custom_elements/undrained_U_Pw_small_strain_element.hpp" #include "custom_elements/updated_lagrangian_U_Pw_diff_order_element.hpp" +#include "custom_elements/transient_Pw_line_element.h" // Element policies #include "custom_elements/axisymmetric_stress_state.h" @@ -288,6 +289,13 @@ class KRATOS_API(GEO_MECHANICS_APPLICATION) KratosGeoMechanicsApplication : publ const TransientPwElement<3,20> mTransientPwElement3D20N{ 0, Kratos::make_shared< Hexahedra3D20 >(Element::GeometryType::PointsArrayType(20)), std::make_unique() }; const TransientPwElement<3,27> mTransientPwElement3D27N{ 0, Kratos::make_shared< Hexahedra3D27 >(Element::GeometryType::PointsArrayType(27)), std::make_unique() }; + const TransientPwLineElement<2, 2> mTransientPwLineElement2D2N{ 0, Kratos::make_shared>(Element::GeometryType::PointsArrayType(2)) }; + const TransientPwLineElement<2, 3> mTransientPwLineElement2D3N{ 0, Kratos::make_shared>(Element::GeometryType::PointsArrayType(3)) }; + const TransientPwLineElement<2, 4> mTransientPwLineElement2D4N{ 0, Kratos::make_shared>(Element::GeometryType::PointsArrayType(4)) }; + const TransientPwLineElement<2, 5> mTransientPwLineElement2D5N{ 0, Kratos::make_shared>(Element::GeometryType::PointsArrayType(5)) }; + const TransientPwLineElement<3, 2> mTransientPwLineElement3D2N{ 0, Kratos::make_shared>(Element::GeometryType::PointsArrayType(2))}; + const TransientPwLineElement<3, 3> mTransientPwLineElement3D3N{ 0, Kratos::make_shared>(Element::GeometryType::PointsArrayType(3))}; + const TransientPwInterfaceElement<2,4> mTransientPwInterfaceElement2D4N{ 0, Kratos::make_shared< QuadrilateralInterface2D4 >(Element::GeometryType::PointsArrayType(4)), std::make_unique() }; const TransientPwInterfaceElement<3,6> mTransientPwInterfaceElement3D6N{ 0, Kratos::make_shared< PrismInterface3D6 >(Element::GeometryType::PointsArrayType(6)), std::make_unique() }; const TransientPwInterfaceElement<3,8> mTransientPwInterfaceElement3D8N{ 0, Kratos::make_shared< HexahedraInterface3D8 >(Element::GeometryType::PointsArrayType(8)), std::make_unique() }; diff --git a/applications/GeoMechanicsApplication/tests/test_GeoMechanicsApplication.py b/applications/GeoMechanicsApplication/tests/test_GeoMechanicsApplication.py index 9b6fb7b7fafd..47044ce3a9d9 100644 --- a/applications/GeoMechanicsApplication/tests/test_GeoMechanicsApplication.py +++ b/applications/GeoMechanicsApplication/tests/test_GeoMechanicsApplication.py @@ -46,6 +46,7 @@ from test_prescribed_derivatives import KratosGeoMechanicsPrescribedDerivatives from test_dirichlet_u import KratosGeoMechanicsDirichletUTests from test_normal_load_on_hexa_element import KratosGeoMechanicsNormalLoadHexaTests +from test_pressure_line_element import KratosGeoMechanicsTransientPressureLineElementTests def AssembleTestSuites(): ''' Populates the test suites to run. @@ -104,7 +105,8 @@ def AssembleTestSuites(): TestSellmeijersRule, TestElementaryGroundWaterFlow, KratosGeoMechanicsTransientThermalTests, - KratosGeoMechanicsTimeIntegrationTests + KratosGeoMechanicsTimeIntegrationTests, + KratosGeoMechanicsTransientPressureLineElementTests ] night_test_cases.extend(small_test_cases) diff --git a/applications/GeoMechanicsApplication/tests/test_pressure_line_element.py b/applications/GeoMechanicsApplication/tests/test_pressure_line_element.py new file mode 100644 index 000000000000..f9d612cea560 --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_pressure_line_element.py @@ -0,0 +1,63 @@ +import os + +import KratosMultiphysics.KratosUnittest as KratosUnittest +import test_helper + +class KratosGeoMechanicsTransientPressureLineElementTests(KratosUnittest.TestCase): + """ + This class contains benchmark tests which are checked with the regression on a previously obtained value. + """ + etalon_value1 = -20000.0 + + def setUp(self): + # Code here will be placed BEFORE every test in this TestCase. + pass + + def tearDown(self): + # Code here will be placed AFTER every test in this TestCase. + pass + + def check_water_pressure(self, test_name, etalon_value): + file_path = test_helper.get_file_path(os.path.join('test_pressure_line_element', test_name)) + simulation = test_helper.run_kratos(file_path) + pressure = test_helper.get_water_pressure(simulation) + self.assertAlmostEqual(etalon_value, pressure[2]) + + def test_oblique_line_element2D2N(self): + self.check_water_pressure("test_oblique_line_element2D2N", self.etalon_value1) + + def test_oblique_line_element2D3N(self): + self.check_water_pressure("test_oblique_line_element2D3N", self.etalon_value1) + + def test_oblique_line_element2D4N(self): + self.check_water_pressure("test_oblique_line_element2D4N", self.etalon_value1) + + def test_oblique_line_element2D5N(self): + self.check_water_pressure("test_oblique_line_element2D5N", self.etalon_value1) + + def test_vertical_line_element2D2N(self): + self.check_water_pressure("test_vertical_line_element2D2N", self.etalon_value1) + + def test_vertical_line_element2D3N(self): + self.check_water_pressure("test_vertical_line_element2D3N", self.etalon_value1) + + def test_vertical_line_element2D4N(self): + self.check_water_pressure("test_vertical_line_element2D4N", self.etalon_value1) + + def test_vertical_line_element2D5N(self): + self.check_water_pressure("test_vertical_line_element2D5N", self.etalon_value1) + + def test_oblique_line_element3D2N(self): + self.check_water_pressure("test_oblique_line_element3D2N", self.etalon_value1) + + def test_oblique_line_element3D3N(self): + self.check_water_pressure("test_oblique_line_element3D3N", self.etalon_value1) + + def test_vertical_line_element3D2N(self): + self.check_water_pressure("test_vertical_line_element3D2N", self.etalon_value1) + + def test_vertical_line_element3D3N(self): + self.check_water_pressure("test_vertical_line_element3D3N", self.etalon_value1) + +if __name__ == '__main__': + KratosUnittest.main() diff --git a/applications/GeoMechanicsApplication/tests/test_pressure_line_element/Common/MaterialParameters2D.json b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/Common/MaterialParameters2D.json new file mode 100644 index 000000000000..a13c44d19d08 --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/Common/MaterialParameters2D.json @@ -0,0 +1,29 @@ +{ + "properties": [{ + "model_part_name" : "PorousDomain.filter", + "properties_id" : 1, + "Material" : { + "constitutive_law" : { + "name" : "GeoLinearElasticPlaneStrain2DLaw" + }, + "Variables" : { + "IGNORE_UNDRAINED" : false, + "YOUNG_MODULUS" : 1.000000e+07, + "POISSON_RATIO" : 0.000000e+00, + "DENSITY_SOLID" : 2.650000e+03, + "DENSITY_WATER" : 1.000000e+03, + "POROSITY" : 1.000000e-01, + "BULK_MODULUS_SOLID" : 9.000000e+19, + "BULK_MODULUS_FLUID" : 1.000000e+20, + "PERMEABILITY_XX" : 9.084000e-06, + "DYNAMIC_VISCOSITY" : 1.000000e-03, + "BIOT_COEFFICIENT" : 1.000000e+00, + "RETENTION_LAW" : "SaturatedLaw", + "SATURATED_SATURATION" : 1.000000e+00, + "RESIDUAL_SATURATION" : 0.000000e+00 + }, + "Tables": { + } + } + }] +} diff --git a/applications/GeoMechanicsApplication/tests/test_pressure_line_element/Common/MaterialParameters3D.json b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/Common/MaterialParameters3D.json new file mode 100644 index 000000000000..a8406a1d098d --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/Common/MaterialParameters3D.json @@ -0,0 +1,28 @@ +{ + "properties": [{ + "model_part_name" : "PorousDomain.filter", + "properties_id" : 1, + "Material" : { + "constitutive_law" : { + "name" : "LinearElasticK03DLaw" + }, + "Variables" : { + "IGNORE_UNDRAINED" : false, + "YOUNG_MODULUS" : 1.000000e+07, + "POISSON_RATIO" : 0.000000e+00, + "DENSITY_SOLID" : 2.650000e+03, + "DENSITY_WATER" : 1.000000e+03, + "POROSITY" : 1.000000e-01, + "BULK_MODULUS_SOLID" : 9.000000e+19, + "BULK_MODULUS_FLUID" : 1.000000e+20, + "PERMEABILITY_XX" : 9.084000e-06, + "DYNAMIC_VISCOSITY" : 1.000000e-03, + "BIOT_COEFFICIENT" : 1.000000e+00, + "RETENTION_LAW" : "SaturatedLaw", + "SATURATED_SATURATION" : 1.000000e+00 + }, + "Tables": { + } + } + }] +} diff --git a/applications/GeoMechanicsApplication/tests/test_pressure_line_element/README.md b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/README.md new file mode 100644 index 000000000000..505573b2c043 --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/README.md @@ -0,0 +1,26 @@ +# Test Cases for Water Pore Pressure Line Element + +**Author:** [Mohamed Nabi](https://github.com/mnabideltares) + +**Source files:** [Water pore pressure line element](https://github.com/KratosMultiphysics/Kratos/tree/master/applications/GeoMechanicsApplication/tests/test_pressure_line_element) + +## Case Specification +In this water-pressure test case, a 3 [m] deep soil is considered, with everywhere set to 10 $\mathrm{[Pa]}$ as initial condition. Then the top boundary is set to 0 $\mathrm{[Pa]}$ and the bottom boundary is left free (it automatically becomes Neumann boundary with zero flux). The simulation spans 50 hours to allow for a transition from an exponential to a linear pressure profile along the depth. This test is conducted for various configurations, including 2D2N, 2D3N, 2D4N, 2D5N, 3D2N and 3D3N line elements. The pressure distribution along the depth is then evaluated with its own result. + +As the water pressure is influenced by gravity force in the vertical direction (here Y-direction), the gravity then needs to be projected in the direction of the element. Therefor here we tested two configurations, namely a case with vertically-oriented elements, and a case with elements with a slope of 45 degrees. The gravity is considered to be 10 $\mathrm{[m/s^2]}$ + +The boundary conditions are shown below: + +Visualization of the Boundary conditions + +## Results + +The picture below illustrates the pressure profile resulting from the simulation (as an example the 2D3N test is shown below). + +Pressure along depth at the last time step + +These results are associated with the final time step after the solution reaches a steady state. The results for both test configurations are identical. The analytical solution is: + +$P = 10000 y$ + +In this test case, the result at node number 3 at location $y = -2 \mathrm{[m]}$ is compared with the analytical solution. The value of the pressure at node 3 is -20,000 $\mathrm{[Pa]}$ \ No newline at end of file diff --git a/applications/GeoMechanicsApplication/tests/test_pressure_line_element/documentation_data/test_pressure_line_element.svg b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/documentation_data/test_pressure_line_element.svg new file mode 100644 index 000000000000..b365ef86e34a --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/documentation_data/test_pressure_line_element.svg @@ -0,0 +1 @@ +0 PaClosed0 PaClosed \ No newline at end of file diff --git a/applications/GeoMechanicsApplication/tests/test_pressure_line_element/documentation_data/test_pressure_line_element_2d3n_result.png b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/documentation_data/test_pressure_line_element_2d3n_result.png new file mode 100644 index 000000000000..62f2bc85c3d5 Binary files /dev/null and b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/documentation_data/test_pressure_line_element_2d3n_result.png differ diff --git a/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_oblique_line_element2D2N/ProjectParameters.json b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_oblique_line_element2D2N/ProjectParameters.json new file mode 100644 index 000000000000..6574c3c4dab4 --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_oblique_line_element2D2N/ProjectParameters.json @@ -0,0 +1,147 @@ +{ + "problem_data": { + "problem_name" : "test_oblique_line_element2D2N", + "start_time" : 0.000000e+00, + "end_time" : 1.800000e+05, + "echo_level" : 0, + "parallel_type" : "OpenMP", + "number_of_threads" : 1 + }, + "solver_settings" : { + "solver_type" : "Pw", + "model_part_name" : "PorousDomain", + "domain_size" : 2, + "model_import_settings" : { + "input_type" : "mdpa", + "input_filename" : "test_oblique_line_element2D2N" + }, + "material_import_settings" : { + "materials_filename" : "../Common/MaterialParameters2D.json" + }, + "time_stepping" : { + "time_step" : 3.600, + "max_delta_time_factor" : 1000 + }, + "buffer_size" : 2, + "echo_level" : 0, + "clear_storage" : false, + "compute_reactions" : false, + "move_mesh_flag" : false, + "reform_dofs_at_each_step" : false, + "nodal_smoothing" : false, + "block_builder" : true, + "solution_type" : "Transient_Groundwater_Flow", + "scheme_type" : "Backward_Euler", + "reset_displacements" : false, + "newmark_beta" : 0.25, + "newmark_gamma" : 0.5, + "newmark_theta" : 0.5, + "rayleigh_m" : 0.0, + "rayleigh_k" : 0.0, + "strategy_type" : "newton_raphson", + "convergence_criterion" : "water_pressure_criterion", + "displacement_relative_tolerance" : 1.0E-4, + "displacement_absolute_tolerance" : 1.0E-9, + "residual_relative_tolerance" : 1.0E-4, + "residual_absolute_tolerance" : 1.0E-9, + "water_pressure_relative_tolerance" : 1.0E-4, + "water_pressure_absolute_tolerance" : 1.0E-9, + "min_iterations" : 2, + "max_iterations" : 15, + "number_cycles" : 2, + "reduction_factor" : 0.5, + "increase_factor" : 2.0, + "desired_iterations" : 2, + "max_radius_factor" : 10.0, + "min_radius_factor" : 0.1, + "calculate_reactions" : true, + "max_line_search_iterations" : 5, + "first_alpha_value" : 0.5, + "second_alpha_value" : 1.0, + "min_alpha" : 0.1, + "max_alpha" : 2.0, + "line_search_tolerance" : 0.5, + "rotation_dofs" : true, + "linear_solver_settings" : { + "solver_type" : "bicgstab", + "tolerance" : 1.0e-6, + "max_iteration" : 1000, + "scaling" : true, + "preconditioner_type" : "ilu0" + }, + "problem_domain_sub_model_part_list" : ["filter"], + "processes_sub_model_part_list" : ["Start","Gravity","top"], + "body_domain_sub_model_part_list" : ["filter"] + }, + "output_processes" : { + "gid_output" : [{ + "python_module" : "gid_output_process", + "kratos_module" : "KratosMultiphysics", + "process_name" : "GiDOutputProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.filter", + "output_name" : "test_oblique_line_element2D2N", + "postprocess_parameters" : { + "result_file_configuration": { + "gidpost_flags" : { + "WriteDeformedMeshFlag" : "WriteUndeformed", + "WriteConditionsFlag" : "WriteElementsOnly", + "GiDPostMode" : "GiD_PostAscii", + "MultiFileFlag" : "SingleFile" + }, + "file_label" : "step", + "output_control_type" : "step", + "output_interval" : 1, + "body_output" : true, + "node_output" : false, + "skin_output" : false, + "plane_output" : [], + "nodal_results" : ["WATER_PRESSURE"], + "gauss_point_results" : [] + }, + "point_data_configuration" : [] + } + } + }] + }, + "processes": { + "constraints_process_list" : [{ + "python_module" : "apply_scalar_constraint_table_process", + "kratos_module" : "KratosMultiphysics.GeoMechanicsApplication", + "process_name" : "ApplyScalarConstraintTableProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.Start", + "variable_name" : "WATER_PRESSURE", + "is_fixed" : false, + "fluid_pressure_type" : "Uniform", + "value" : 10.0, + "table" : 0 + } + },{ + "python_module" : "apply_scalar_constraint_table_process", + "kratos_module" : "KratosMultiphysics.GeoMechanicsApplication", + "process_name" : "ApplyScalarConstraintTableProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.top", + "variable_name" : "WATER_PRESSURE", + "is_fixed" : true, + "fluid_pressure_type" : "Uniform", + "value" : 0.0, + "table" : 0 + } + }], + "loads_process_list" : [{ + "python_module" : "apply_vector_constraint_table_process", + "kratos_module" : "KratosMultiphysics.GeoMechanicsApplication", + "process_name" : "ApplyVectorConstraintTableProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.Gravity", + "variable_name" : "VOLUME_ACCELERATION", + "active" : [false, true, false], + "value" : [0.0, -10.0, 0.0], + "table" : [0, 0, 0] + } + }], + "auxiliar_process_list" : [] + } +} diff --git a/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_oblique_line_element2D2N/test_oblique_line_element2D2N.mdpa b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_oblique_line_element2D2N/test_oblique_line_element2D2N.mdpa new file mode 100644 index 000000000000..8b0371beafa9 --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_oblique_line_element2D2N/test_oblique_line_element2D2N.mdpa @@ -0,0 +1,87 @@ +Begin Properties 1 +End Properties + + +Begin Nodes + 1 0.000000e+00 0.000000e+00 0.000000e+00 + 2 1.000000e+00 -1.000000e+00 0.000000e+00 + 3 2.000000e+00 -2.000000e+00 0.000000e+00 + 4 3.000000e+00 -3.000000e+00 0.000000e+00 +End Nodes + + +Begin Elements TransientPwLineElement2D2N + 1 1 1 2 + 2 1 2 3 + 3 1 3 4 +End Elements + + +Begin SubModelPart Start + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + + +Begin SubModelPart filter + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions + End SubModelPart + + +Begin SubModelPart top + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + End SubModelPartNodes + Begin SubModelPartElements + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + + +Begin SubModelPart Gravity + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart \ No newline at end of file diff --git a/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_oblique_line_element2D3N/ProjectParameters.json b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_oblique_line_element2D3N/ProjectParameters.json new file mode 100644 index 000000000000..4c5a9e447fc9 --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_oblique_line_element2D3N/ProjectParameters.json @@ -0,0 +1,147 @@ +{ + "problem_data": { + "problem_name" : "test_oblique_line_element2D3N", + "start_time" : 0.000000e+00, + "end_time" : 1.800000e+05, + "echo_level" : 0, + "parallel_type" : "OpenMP", + "number_of_threads" : 1 + }, + "solver_settings" : { + "solver_type" : "Pw", + "model_part_name" : "PorousDomain", + "domain_size" : 2, + "model_import_settings" : { + "input_type" : "mdpa", + "input_filename" : "test_oblique_line_element2D3N" + }, + "material_import_settings" : { + "materials_filename" : "../Common/MaterialParameters2D.json" + }, + "time_stepping" : { + "time_step" : 3.600, + "max_delta_time_factor" : 1000 + }, + "buffer_size" : 2, + "echo_level" : 0, + "clear_storage" : false, + "compute_reactions" : false, + "move_mesh_flag" : false, + "reform_dofs_at_each_step" : false, + "nodal_smoothing" : false, + "block_builder" : true, + "solution_type" : "Transient_Groundwater_Flow", + "scheme_type" : "Backward_Euler", + "reset_displacements" : false, + "newmark_beta" : 0.25, + "newmark_gamma" : 0.5, + "newmark_theta" : 0.5, + "rayleigh_m" : 0.0, + "rayleigh_k" : 0.0, + "strategy_type" : "newton_raphson", + "convergence_criterion" : "water_pressure_criterion", + "displacement_relative_tolerance" : 1.0E-4, + "displacement_absolute_tolerance" : 1.0E-9, + "residual_relative_tolerance" : 1.0E-4, + "residual_absolute_tolerance" : 1.0E-9, + "water_pressure_relative_tolerance" : 1.0E-4, + "water_pressure_absolute_tolerance" : 1.0E-9, + "min_iterations" : 2, + "max_iterations" : 15, + "number_cycles" : 2, + "reduction_factor" : 0.5, + "increase_factor" : 2.0, + "desired_iterations" : 2, + "max_radius_factor" : 10.0, + "min_radius_factor" : 0.1, + "calculate_reactions" : true, + "max_line_search_iterations" : 5, + "first_alpha_value" : 0.5, + "second_alpha_value" : 1.0, + "min_alpha" : 0.1, + "max_alpha" : 2.0, + "line_search_tolerance" : 0.5, + "rotation_dofs" : true, + "linear_solver_settings" : { + "solver_type" : "bicgstab", + "tolerance" : 1.0e-6, + "max_iteration" : 1000, + "scaling" : true, + "preconditioner_type" : "ilu0" + }, + "problem_domain_sub_model_part_list" : ["filter"], + "processes_sub_model_part_list" : ["Start","Gravity","top"], + "body_domain_sub_model_part_list" : ["filter"] + }, + "output_processes" : { + "gid_output" : [{ + "python_module" : "gid_output_process", + "kratos_module" : "KratosMultiphysics", + "process_name" : "GiDOutputProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.filter", + "output_name" : "test_oblique_line_element2D3N", + "postprocess_parameters" : { + "result_file_configuration": { + "gidpost_flags" : { + "WriteDeformedMeshFlag" : "WriteUndeformed", + "WriteConditionsFlag" : "WriteElementsOnly", + "GiDPostMode" : "GiD_PostAscii", + "MultiFileFlag" : "SingleFile" + }, + "file_label" : "step", + "output_control_type" : "step", + "output_interval" : 1, + "body_output" : true, + "node_output" : false, + "skin_output" : false, + "plane_output" : [], + "nodal_results" : ["WATER_PRESSURE"], + "gauss_point_results" : [] + }, + "point_data_configuration" : [] + } + } + }] + }, + "processes": { + "constraints_process_list" : [{ + "python_module" : "apply_scalar_constraint_table_process", + "kratos_module" : "KratosMultiphysics.GeoMechanicsApplication", + "process_name" : "ApplyScalarConstraintTableProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.Start", + "variable_name" : "WATER_PRESSURE", + "is_fixed" : false, + "fluid_pressure_type" : "Uniform", + "value" : 10.0, + "table" : 0 + } + },{ + "python_module" : "apply_scalar_constraint_table_process", + "kratos_module" : "KratosMultiphysics.GeoMechanicsApplication", + "process_name" : "ApplyScalarConstraintTableProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.top", + "variable_name" : "WATER_PRESSURE", + "is_fixed" : true, + "fluid_pressure_type" : "Uniform", + "value" : 0.0, + "table" : 0 + } + }], + "loads_process_list" : [{ + "python_module" : "apply_vector_constraint_table_process", + "kratos_module" : "KratosMultiphysics.GeoMechanicsApplication", + "process_name" : "ApplyVectorConstraintTableProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.Gravity", + "variable_name" : "VOLUME_ACCELERATION", + "active" : [false, true, false], + "value" : [0.0, -10.0, 0.0], + "table" : [0, 0, 0] + } + }], + "auxiliar_process_list" : [] + } +} diff --git a/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_oblique_line_element2D3N/test_oblique_line_element2D3N.mdpa b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_oblique_line_element2D3N/test_oblique_line_element2D3N.mdpa new file mode 100644 index 000000000000..f5835a64277e --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_oblique_line_element2D3N/test_oblique_line_element2D3N.mdpa @@ -0,0 +1,99 @@ +Begin Properties 1 +End Properties + + +Begin Nodes + 1 0.000000e+00 0.000000e+00 0.000000e+00 + 2 1.000000e+00 -1.000000e+00 0.000000e+00 + 3 2.000000e+00 -2.000000e+00 0.000000e+00 + 4 3.000000e+00 -3.000000e+00 0.000000e+00 + 5 0.500000e+00 -0.500000e+00 0.000000e+00 + 6 1.500000e+00 -1.500000e+00 0.000000e+00 + 7 2.500000e+00 -2.500000e+00 0.000000e+00 +End Nodes + + +Begin Elements TransientPwLineElement2D3N + 1 1 1 2 5 + 2 1 2 3 6 + 3 1 3 4 7 +End Elements + + +Begin SubModelPart Start + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + + +Begin SubModelPart filter + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions + End SubModelPart + + +Begin SubModelPart top + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + End SubModelPartNodes + Begin SubModelPartElements + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + + +Begin SubModelPart Gravity + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart \ No newline at end of file diff --git a/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_oblique_line_element2D4N/ProjectParameters.json b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_oblique_line_element2D4N/ProjectParameters.json new file mode 100644 index 000000000000..4d054efd318c --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_oblique_line_element2D4N/ProjectParameters.json @@ -0,0 +1,147 @@ +{ + "problem_data": { + "problem_name" : "test_oblique_line_element2D4N", + "start_time" : 0.000000e+00, + "end_time" : 1.800000e+05, + "echo_level" : 0, + "parallel_type" : "OpenMP", + "number_of_threads" : 1 + }, + "solver_settings" : { + "solver_type" : "Pw", + "model_part_name" : "PorousDomain", + "domain_size" : 2, + "model_import_settings" : { + "input_type" : "mdpa", + "input_filename" : "test_oblique_line_element2D4N" + }, + "material_import_settings" : { + "materials_filename" : "../Common/MaterialParameters2D.json" + }, + "time_stepping" : { + "time_step" : 3.600, + "max_delta_time_factor" : 1000 + }, + "buffer_size" : 2, + "echo_level" : 0, + "clear_storage" : false, + "compute_reactions" : false, + "move_mesh_flag" : false, + "reform_dofs_at_each_step" : false, + "nodal_smoothing" : false, + "block_builder" : true, + "solution_type" : "Transient_Groundwater_Flow", + "scheme_type" : "Backward_Euler", + "reset_displacements" : false, + "newmark_beta" : 0.25, + "newmark_gamma" : 0.5, + "newmark_theta" : 0.5, + "rayleigh_m" : 0.0, + "rayleigh_k" : 0.0, + "strategy_type" : "newton_raphson", + "convergence_criterion" : "water_pressure_criterion", + "displacement_relative_tolerance" : 1.0E-4, + "displacement_absolute_tolerance" : 1.0E-9, + "residual_relative_tolerance" : 1.0E-4, + "residual_absolute_tolerance" : 1.0E-9, + "water_pressure_relative_tolerance" : 1.0E-4, + "water_pressure_absolute_tolerance" : 1.0E-9, + "min_iterations" : 2, + "max_iterations" : 15, + "number_cycles" : 2, + "reduction_factor" : 0.5, + "increase_factor" : 2.0, + "desired_iterations" : 2, + "max_radius_factor" : 10.0, + "min_radius_factor" : 0.1, + "calculate_reactions" : true, + "max_line_search_iterations" : 5, + "first_alpha_value" : 0.5, + "second_alpha_value" : 1.0, + "min_alpha" : 0.1, + "max_alpha" : 2.0, + "line_search_tolerance" : 0.5, + "rotation_dofs" : true, + "linear_solver_settings" : { + "solver_type" : "bicgstab", + "tolerance" : 1.0e-6, + "max_iteration" : 1000, + "scaling" : true, + "preconditioner_type" : "ilu0" + }, + "problem_domain_sub_model_part_list" : ["filter"], + "processes_sub_model_part_list" : ["Start","Gravity","top"], + "body_domain_sub_model_part_list" : ["filter"] + }, + "output_processes" : { + "gid_output" : [{ + "python_module" : "gid_output_process", + "kratos_module" : "KratosMultiphysics", + "process_name" : "GiDOutputProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.filter", + "output_name" : "test_oblique_line_element2D4N", + "postprocess_parameters" : { + "result_file_configuration": { + "gidpost_flags" : { + "WriteDeformedMeshFlag" : "WriteUndeformed", + "WriteConditionsFlag" : "WriteElementsOnly", + "GiDPostMode" : "GiD_PostAscii", + "MultiFileFlag" : "SingleFile" + }, + "file_label" : "step", + "output_control_type" : "step", + "output_interval" : 1, + "body_output" : true, + "node_output" : false, + "skin_output" : false, + "plane_output" : [], + "nodal_results" : ["WATER_PRESSURE"], + "gauss_point_results" : [] + }, + "point_data_configuration" : [] + } + } + }] + }, + "processes": { + "constraints_process_list" : [{ + "python_module" : "apply_scalar_constraint_table_process", + "kratos_module" : "KratosMultiphysics.GeoMechanicsApplication", + "process_name" : "ApplyScalarConstraintTableProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.Start", + "variable_name" : "WATER_PRESSURE", + "is_fixed" : false, + "fluid_pressure_type" : "Uniform", + "value" : 10.0, + "table" : 0 + } + },{ + "python_module" : "apply_scalar_constraint_table_process", + "kratos_module" : "KratosMultiphysics.GeoMechanicsApplication", + "process_name" : "ApplyScalarConstraintTableProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.top", + "variable_name" : "WATER_PRESSURE", + "is_fixed" : true, + "fluid_pressure_type" : "Uniform", + "value" : 0.0, + "table" : 0 + } + }], + "loads_process_list" : [{ + "python_module" : "apply_vector_constraint_table_process", + "kratos_module" : "KratosMultiphysics.GeoMechanicsApplication", + "process_name" : "ApplyVectorConstraintTableProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.Gravity", + "variable_name" : "VOLUME_ACCELERATION", + "active" : [false, true, false], + "value" : [0.0, -10.0, 0.0], + "table" : [0, 0, 0] + } + }], + "auxiliar_process_list" : [] + } +} diff --git a/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_oblique_line_element2D4N/test_oblique_line_element2D4N.mdpa b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_oblique_line_element2D4N/test_oblique_line_element2D4N.mdpa new file mode 100644 index 000000000000..33451df369d4 --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_oblique_line_element2D4N/test_oblique_line_element2D4N.mdpa @@ -0,0 +1,111 @@ +Begin Properties 1 +End Properties + + +Begin Nodes + 1 0.000000e+00 0.000000e+00 0.000000e+00 + 2 1.000000e+00 -1.000000e+00 0.000000e+00 + 3 2.000000e+00 -2.000000e+00 0.000000e+00 + 4 3.000000e+00 -3.000000e+00 0.000000e+00 + 5 0.333333e+00 -0.333333e+00 0.000000e+00 + 6 0.666667e+00 -0.666667e+00 0.000000e+00 + 7 1.333333e+00 -1.333333e+00 0.000000e+00 + 8 1.666667e+00 -1.666667e+00 0.000000e+00 + 9 2.333333e+00 -2.333333e+00 0.000000e+00 +10 2.666667e+00 -2.666667e+00 0.000000e+00 +End Nodes + + +Begin Elements TransientPwLineElement2D4N + 1 1 1 2 5 6 + 2 1 2 3 7 8 + 3 1 3 4 9 10 +End Elements + + +Begin SubModelPart Start + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + + +Begin SubModelPart filter + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions + End SubModelPart + + +Begin SubModelPart top + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + End SubModelPartNodes + Begin SubModelPartElements + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + + +Begin SubModelPart Gravity + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart \ No newline at end of file diff --git a/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_oblique_line_element2D5N/ProjectParameters.json b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_oblique_line_element2D5N/ProjectParameters.json new file mode 100644 index 000000000000..2d8f3c435cbd --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_oblique_line_element2D5N/ProjectParameters.json @@ -0,0 +1,147 @@ +{ + "problem_data": { + "problem_name" : "test_oblique_line_element2D5N", + "start_time" : 0.000000e+00, + "end_time" : 1.800000e+05, + "echo_level" : 0, + "parallel_type" : "OpenMP", + "number_of_threads" : 1 + }, + "solver_settings" : { + "solver_type" : "Pw", + "model_part_name" : "PorousDomain", + "domain_size" : 2, + "model_import_settings" : { + "input_type" : "mdpa", + "input_filename" : "test_oblique_line_element2D5N" + }, + "material_import_settings" : { + "materials_filename" : "../Common/MaterialParameters2D.json" + }, + "time_stepping" : { + "time_step" : 3.600, + "max_delta_time_factor" : 1000 + }, + "buffer_size" : 2, + "echo_level" : 0, + "clear_storage" : false, + "compute_reactions" : false, + "move_mesh_flag" : false, + "reform_dofs_at_each_step" : false, + "nodal_smoothing" : false, + "block_builder" : true, + "solution_type" : "Transient_Groundwater_Flow", + "scheme_type" : "Backward_Euler", + "reset_displacements" : false, + "newmark_beta" : 0.25, + "newmark_gamma" : 0.5, + "newmark_theta" : 0.5, + "rayleigh_m" : 0.0, + "rayleigh_k" : 0.0, + "strategy_type" : "newton_raphson", + "convergence_criterion" : "water_pressure_criterion", + "displacement_relative_tolerance" : 1.0E-4, + "displacement_absolute_tolerance" : 1.0E-9, + "residual_relative_tolerance" : 1.0E-4, + "residual_absolute_tolerance" : 1.0E-9, + "water_pressure_relative_tolerance" : 1.0E-4, + "water_pressure_absolute_tolerance" : 1.0E-9, + "min_iterations" : 2, + "max_iterations" : 15, + "number_cycles" : 2, + "reduction_factor" : 0.5, + "increase_factor" : 2.0, + "desired_iterations" : 2, + "max_radius_factor" : 10.0, + "min_radius_factor" : 0.1, + "calculate_reactions" : true, + "max_line_search_iterations" : 5, + "first_alpha_value" : 0.5, + "second_alpha_value" : 1.0, + "min_alpha" : 0.1, + "max_alpha" : 2.0, + "line_search_tolerance" : 0.5, + "rotation_dofs" : true, + "linear_solver_settings" : { + "solver_type" : "bicgstab", + "tolerance" : 1.0e-6, + "max_iteration" : 1000, + "scaling" : true, + "preconditioner_type" : "ilu0" + }, + "problem_domain_sub_model_part_list" : ["filter"], + "processes_sub_model_part_list" : ["Start","Gravity","top"], + "body_domain_sub_model_part_list" : ["filter"] + }, + "output_processes" : { + "gid_output" : [{ + "python_module" : "gid_output_process", + "kratos_module" : "KratosMultiphysics", + "process_name" : "GiDOutputProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.filter", + "output_name" : "test_oblique_line_element2D5N", + "postprocess_parameters" : { + "result_file_configuration": { + "gidpost_flags" : { + "WriteDeformedMeshFlag" : "WriteUndeformed", + "WriteConditionsFlag" : "WriteElementsOnly", + "GiDPostMode" : "GiD_PostAscii", + "MultiFileFlag" : "SingleFile" + }, + "file_label" : "step", + "output_control_type" : "step", + "output_interval" : 1, + "body_output" : true, + "node_output" : false, + "skin_output" : false, + "plane_output" : [], + "nodal_results" : ["WATER_PRESSURE"], + "gauss_point_results" : [] + }, + "point_data_configuration" : [] + } + } + }] + }, + "processes": { + "constraints_process_list" : [{ + "python_module" : "apply_scalar_constraint_table_process", + "kratos_module" : "KratosMultiphysics.GeoMechanicsApplication", + "process_name" : "ApplyScalarConstraintTableProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.Start", + "variable_name" : "WATER_PRESSURE", + "is_fixed" : false, + "fluid_pressure_type" : "Uniform", + "value" : 10.0, + "table" : 0 + } + },{ + "python_module" : "apply_scalar_constraint_table_process", + "kratos_module" : "KratosMultiphysics.GeoMechanicsApplication", + "process_name" : "ApplyScalarConstraintTableProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.top", + "variable_name" : "WATER_PRESSURE", + "is_fixed" : true, + "fluid_pressure_type" : "Uniform", + "value" : 0.0, + "table" : 0 + } + }], + "loads_process_list" : [{ + "python_module" : "apply_vector_constraint_table_process", + "kratos_module" : "KratosMultiphysics.GeoMechanicsApplication", + "process_name" : "ApplyVectorConstraintTableProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.Gravity", + "variable_name" : "VOLUME_ACCELERATION", + "active" : [false, true, false], + "value" : [0.0, -10.0, 0.0], + "table" : [0, 0, 0] + } + }], + "auxiliar_process_list" : [] + } +} diff --git a/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_oblique_line_element2D5N/test_oblique_line_element2D5N.mdpa b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_oblique_line_element2D5N/test_oblique_line_element2D5N.mdpa new file mode 100644 index 000000000000..64016d1124aa --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_oblique_line_element2D5N/test_oblique_line_element2D5N.mdpa @@ -0,0 +1,123 @@ +Begin Properties 1 +End Properties + + +Begin Nodes + 1 0.000000e+00 0.000000e+00 0.000000e+00 + 2 1.000000e+00 -1.000000e+00 0.000000e+00 + 3 2.000000e+00 -2.000000e+00 0.000000e+00 + 4 3.000000e+00 -3.000000e+00 0.000000e+00 + 5 0.500000e+00 -0.500000e+00 0.000000e+00 + 6 1.500000e+00 -1.500000e+00 0.000000e+00 + 7 2.500000e+00 -2.500000e+00 0.000000e+00 + 8 0.250000e+00 -0.250000e+00 0.000000e+00 + 9 0.750000e+00 -0.750000e+00 0.000000e+00 +10 1.250000e+00 -1.250000e+00 0.000000e+00 +11 1.750000e+00 -1.750000e+00 0.000000e+00 +12 2.250000e+00 -2.250000e+00 0.000000e+00 +13 2.750000e+00 -2.750000e+00 0.000000e+00 +End Nodes + + +Begin Elements TransientPwLineElement2D5N + 1 1 1 2 8 5 9 + 2 1 2 3 10 6 11 + 3 1 3 4 12 7 13 +End Elements + + +Begin SubModelPart Start + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + + +Begin SubModelPart filter + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions + End SubModelPart + + +Begin SubModelPart top + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + End SubModelPartNodes + Begin SubModelPartElements + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + + +Begin SubModelPart Gravity + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart \ No newline at end of file diff --git a/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_oblique_line_element3D2N/ProjectParameters.json b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_oblique_line_element3D2N/ProjectParameters.json new file mode 100644 index 000000000000..6cd74b685c85 --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_oblique_line_element3D2N/ProjectParameters.json @@ -0,0 +1,147 @@ +{ + "problem_data": { + "problem_name" : "test_oblique_line_element3D2N", + "start_time" : 0.000000e+00, + "end_time" : 1.800000e+05, + "echo_level" : 0, + "parallel_type" : "OpenMP", + "number_of_threads" : 1 + }, + "solver_settings" : { + "solver_type" : "Pw", + "model_part_name" : "PorousDomain", + "domain_size" : 3, + "model_import_settings" : { + "input_type" : "mdpa", + "input_filename" : "test_oblique_line_element3D2N" + }, + "material_import_settings" : { + "materials_filename" : "../Common/MaterialParameters3D.json" + }, + "time_stepping" : { + "time_step" : 3.600, + "max_delta_time_factor" : 1000 + }, + "buffer_size" : 2, + "echo_level" : 0, + "clear_storage" : false, + "compute_reactions" : false, + "move_mesh_flag" : false, + "reform_dofs_at_each_step" : false, + "nodal_smoothing" : false, + "block_builder" : true, + "solution_type" : "Transient_Groundwater_Flow", + "scheme_type" : "Backward_Euler", + "reset_displacements" : false, + "newmark_beta" : 0.25, + "newmark_gamma" : 0.5, + "newmark_theta" : 0.5, + "rayleigh_m" : 0.0, + "rayleigh_k" : 0.0, + "strategy_type" : "newton_raphson", + "convergence_criterion" : "water_pressure_criterion", + "displacement_relative_tolerance" : 1.0E-4, + "displacement_absolute_tolerance" : 1.0E-9, + "residual_relative_tolerance" : 1.0E-4, + "residual_absolute_tolerance" : 1.0E-9, + "water_pressure_relative_tolerance" : 1.0E-4, + "water_pressure_absolute_tolerance" : 1.0E-9, + "min_iterations" : 2, + "max_iterations" : 15, + "number_cycles" : 2, + "reduction_factor" : 0.5, + "increase_factor" : 2.0, + "desired_iterations" : 2, + "max_radius_factor" : 10.0, + "min_radius_factor" : 0.1, + "calculate_reactions" : true, + "max_line_search_iterations" : 5, + "first_alpha_value" : 0.5, + "second_alpha_value" : 1.0, + "min_alpha" : 0.1, + "max_alpha" : 2.0, + "line_search_tolerance" : 0.5, + "rotation_dofs" : true, + "linear_solver_settings" : { + "solver_type" : "bicgstab", + "tolerance" : 1.0e-6, + "max_iteration" : 1000, + "scaling" : true, + "preconditioner_type" : "ilu0" + }, + "problem_domain_sub_model_part_list" : ["filter"], + "processes_sub_model_part_list" : ["Start","Gravity","top"], + "body_domain_sub_model_part_list" : ["filter"] + }, + "output_processes" : { + "gid_output" : [{ + "python_module" : "gid_output_process", + "kratos_module" : "KratosMultiphysics", + "process_name" : "GiDOutputProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.filter", + "output_name" : "test_oblique_line_element3D2N", + "postprocess_parameters" : { + "result_file_configuration": { + "gidpost_flags" : { + "WriteDeformedMeshFlag" : "WriteUndeformed", + "WriteConditionsFlag" : "WriteElementsOnly", + "GiDPostMode" : "GiD_PostAscii", + "MultiFileFlag" : "SingleFile" + }, + "file_label" : "step", + "output_control_type" : "step", + "output_interval" : 1, + "body_output" : true, + "node_output" : false, + "skin_output" : false, + "plane_output" : [], + "nodal_results" : ["WATER_PRESSURE"], + "gauss_point_results" : [] + }, + "point_data_configuration" : [] + } + } + }] + }, + "processes": { + "constraints_process_list" : [{ + "python_module" : "apply_scalar_constraint_table_process", + "kratos_module" : "KratosMultiphysics.GeoMechanicsApplication", + "process_name" : "ApplyScalarConstraintTableProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.Start", + "variable_name" : "WATER_PRESSURE", + "is_fixed" : false, + "fluid_pressure_type" : "Uniform", + "value" : 10.0, + "table" : 0 + } + },{ + "python_module" : "apply_scalar_constraint_table_process", + "kratos_module" : "KratosMultiphysics.GeoMechanicsApplication", + "process_name" : "ApplyScalarConstraintTableProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.top", + "variable_name" : "WATER_PRESSURE", + "is_fixed" : true, + "fluid_pressure_type" : "Uniform", + "value" : 0.0, + "table" : 0 + } + }], + "loads_process_list" : [{ + "python_module" : "apply_vector_constraint_table_process", + "kratos_module" : "KratosMultiphysics.GeoMechanicsApplication", + "process_name" : "ApplyVectorConstraintTableProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.Gravity", + "variable_name" : "VOLUME_ACCELERATION", + "active" : [false, true, false], + "value" : [0.0, -10.0, 0.0], + "table" : [0, 0, 0] + } + }], + "auxiliar_process_list" : [] + } +} diff --git a/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_oblique_line_element3D2N/test_oblique_line_element3D2N.mdpa b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_oblique_line_element3D2N/test_oblique_line_element3D2N.mdpa new file mode 100644 index 000000000000..70c87d6c9209 --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_oblique_line_element3D2N/test_oblique_line_element3D2N.mdpa @@ -0,0 +1,87 @@ +Begin Properties 1 +End Properties + + +Begin Nodes + 1 0.000000e+00 0.000000e+00 0.000000e+00 + 2 1.000000e+00 -1.000000e+00 0.000000e+00 + 3 2.000000e+00 -2.000000e+00 0.000000e+00 + 4 3.000000e+00 -3.000000e+00 0.000000e+00 +End Nodes + + +Begin Elements TransientPwLineElement3D2N + 1 1 1 2 + 2 1 2 3 + 3 1 3 4 +End Elements + + +Begin SubModelPart Start + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + + +Begin SubModelPart filter + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions + End SubModelPart + + +Begin SubModelPart top + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + End SubModelPartNodes + Begin SubModelPartElements + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + + +Begin SubModelPart Gravity + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart \ No newline at end of file diff --git a/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_oblique_line_element3D3N/ProjectParameters.json b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_oblique_line_element3D3N/ProjectParameters.json new file mode 100644 index 000000000000..9b44ae48c29c --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_oblique_line_element3D3N/ProjectParameters.json @@ -0,0 +1,147 @@ +{ + "problem_data": { + "problem_name" : "test_oblique_line_element3D3N", + "start_time" : 0.000000e+00, + "end_time" : 1.800000e+05, + "echo_level" : 0, + "parallel_type" : "OpenMP", + "number_of_threads" : 1 + }, + "solver_settings" : { + "solver_type" : "Pw", + "model_part_name" : "PorousDomain", + "domain_size" : 3, + "model_import_settings" : { + "input_type" : "mdpa", + "input_filename" : "test_oblique_line_element3D3N" + }, + "material_import_settings" : { + "materials_filename" : "../Common/MaterialParameters3D.json" + }, + "time_stepping" : { + "time_step" : 3.600, + "max_delta_time_factor" : 1000 + }, + "buffer_size" : 2, + "echo_level" : 0, + "clear_storage" : false, + "compute_reactions" : false, + "move_mesh_flag" : false, + "reform_dofs_at_each_step" : false, + "nodal_smoothing" : false, + "block_builder" : true, + "solution_type" : "Transient_Groundwater_Flow", + "scheme_type" : "Backward_Euler", + "reset_displacements" : false, + "newmark_beta" : 0.25, + "newmark_gamma" : 0.5, + "newmark_theta" : 0.5, + "rayleigh_m" : 0.0, + "rayleigh_k" : 0.0, + "strategy_type" : "newton_raphson", + "convergence_criterion" : "water_pressure_criterion", + "displacement_relative_tolerance" : 1.0E-4, + "displacement_absolute_tolerance" : 1.0E-9, + "residual_relative_tolerance" : 1.0E-4, + "residual_absolute_tolerance" : 1.0E-9, + "water_pressure_relative_tolerance" : 1.0E-4, + "water_pressure_absolute_tolerance" : 1.0E-9, + "min_iterations" : 2, + "max_iterations" : 15, + "number_cycles" : 2, + "reduction_factor" : 0.5, + "increase_factor" : 2.0, + "desired_iterations" : 2, + "max_radius_factor" : 10.0, + "min_radius_factor" : 0.1, + "calculate_reactions" : true, + "max_line_search_iterations" : 5, + "first_alpha_value" : 0.5, + "second_alpha_value" : 1.0, + "min_alpha" : 0.1, + "max_alpha" : 2.0, + "line_search_tolerance" : 0.5, + "rotation_dofs" : true, + "linear_solver_settings" : { + "solver_type" : "bicgstab", + "tolerance" : 1.0e-6, + "max_iteration" : 1000, + "scaling" : true, + "preconditioner_type" : "ilu0" + }, + "problem_domain_sub_model_part_list" : ["filter"], + "processes_sub_model_part_list" : ["Start","Gravity","top"], + "body_domain_sub_model_part_list" : ["filter"] + }, + "output_processes" : { + "gid_output" : [{ + "python_module" : "gid_output_process", + "kratos_module" : "KratosMultiphysics", + "process_name" : "GiDOutputProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.filter", + "output_name" : "test_oblique_line_element3D3N", + "postprocess_parameters" : { + "result_file_configuration": { + "gidpost_flags" : { + "WriteDeformedMeshFlag" : "WriteUndeformed", + "WriteConditionsFlag" : "WriteElementsOnly", + "GiDPostMode" : "GiD_PostAscii", + "MultiFileFlag" : "SingleFile" + }, + "file_label" : "step", + "output_control_type" : "step", + "output_interval" : 1, + "body_output" : true, + "node_output" : false, + "skin_output" : false, + "plane_output" : [], + "nodal_results" : ["WATER_PRESSURE"], + "gauss_point_results" : [] + }, + "point_data_configuration" : [] + } + } + }] + }, + "processes": { + "constraints_process_list" : [{ + "python_module" : "apply_scalar_constraint_table_process", + "kratos_module" : "KratosMultiphysics.GeoMechanicsApplication", + "process_name" : "ApplyScalarConstraintTableProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.Start", + "variable_name" : "WATER_PRESSURE", + "is_fixed" : false, + "fluid_pressure_type" : "Uniform", + "value" : 10.0, + "table" : 0 + } + },{ + "python_module" : "apply_scalar_constraint_table_process", + "kratos_module" : "KratosMultiphysics.GeoMechanicsApplication", + "process_name" : "ApplyScalarConstraintTableProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.top", + "variable_name" : "WATER_PRESSURE", + "is_fixed" : true, + "fluid_pressure_type" : "Uniform", + "value" : 0.0, + "table" : 0 + } + }], + "loads_process_list" : [{ + "python_module" : "apply_vector_constraint_table_process", + "kratos_module" : "KratosMultiphysics.GeoMechanicsApplication", + "process_name" : "ApplyVectorConstraintTableProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.Gravity", + "variable_name" : "VOLUME_ACCELERATION", + "active" : [false, true, false], + "value" : [0.0, -10.0, 0.0], + "table" : [0, 0, 0] + } + }], + "auxiliar_process_list" : [] + } +} diff --git a/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_oblique_line_element3D3N/test_oblique_line_element3D3N.mdpa b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_oblique_line_element3D3N/test_oblique_line_element3D3N.mdpa new file mode 100644 index 000000000000..9c5f28883d73 --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_oblique_line_element3D3N/test_oblique_line_element3D3N.mdpa @@ -0,0 +1,99 @@ +Begin Properties 1 +End Properties + + +Begin Nodes + 1 0.000000e+00 0.000000e+00 0.000000e+00 + 2 1.000000e+00 -1.000000e+00 0.000000e+00 + 3 2.000000e+00 -2.000000e+00 0.000000e+00 + 4 3.000000e+00 -3.000000e+00 0.000000e+00 + 5 0.500000e+00 -0.500000e+00 0.000000e+00 + 6 1.500000e+00 -1.500000e+00 0.000000e+00 + 7 2.500000e+00 -2.500000e+00 0.000000e+00 +End Nodes + + +Begin Elements TransientPwLineElement3D3N + 1 1 1 2 5 + 2 1 2 3 6 + 3 1 3 4 7 +End Elements + + +Begin SubModelPart Start + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + + +Begin SubModelPart filter + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions + End SubModelPart + + +Begin SubModelPart top + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + End SubModelPartNodes + Begin SubModelPartElements + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + + +Begin SubModelPart Gravity + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart \ No newline at end of file diff --git a/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_vertical_line_element2D2N/ProjectParameters.json b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_vertical_line_element2D2N/ProjectParameters.json new file mode 100644 index 000000000000..e63a8e80ca54 --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_vertical_line_element2D2N/ProjectParameters.json @@ -0,0 +1,147 @@ +{ + "problem_data": { + "problem_name" : "test_vertical_line_element2D2N", + "start_time" : 0.000000e+00, + "end_time" : 1.800000e+05, + "echo_level" : 0, + "parallel_type" : "OpenMP", + "number_of_threads" : 1 + }, + "solver_settings" : { + "solver_type" : "Pw", + "model_part_name" : "PorousDomain", + "domain_size" : 2, + "model_import_settings" : { + "input_type" : "mdpa", + "input_filename" : "test_vertical_line_element2D2N" + }, + "material_import_settings" : { + "materials_filename" : "../Common/MaterialParameters2D.json" + }, + "time_stepping" : { + "time_step" : 3.600, + "max_delta_time_factor" : 1000 + }, + "buffer_size" : 2, + "echo_level" : 0, + "clear_storage" : false, + "compute_reactions" : false, + "move_mesh_flag" : false, + "reform_dofs_at_each_step" : false, + "nodal_smoothing" : false, + "block_builder" : true, + "solution_type" : "Transient_Groundwater_Flow", + "scheme_type" : "Backward_Euler", + "reset_displacements" : false, + "newmark_beta" : 0.25, + "newmark_gamma" : 0.5, + "newmark_theta" : 0.5, + "rayleigh_m" : 0.0, + "rayleigh_k" : 0.0, + "strategy_type" : "newton_raphson", + "convergence_criterion" : "water_pressure_criterion", + "displacement_relative_tolerance" : 1.0E-4, + "displacement_absolute_tolerance" : 1.0E-9, + "residual_relative_tolerance" : 1.0E-4, + "residual_absolute_tolerance" : 1.0E-9, + "water_pressure_relative_tolerance" : 1.0E-4, + "water_pressure_absolute_tolerance" : 1.0E-9, + "min_iterations" : 2, + "max_iterations" : 15, + "number_cycles" : 2, + "reduction_factor" : 0.5, + "increase_factor" : 2.0, + "desired_iterations" : 2, + "max_radius_factor" : 10.0, + "min_radius_factor" : 0.1, + "calculate_reactions" : true, + "max_line_search_iterations" : 5, + "first_alpha_value" : 0.5, + "second_alpha_value" : 1.0, + "min_alpha" : 0.1, + "max_alpha" : 2.0, + "line_search_tolerance" : 0.5, + "rotation_dofs" : true, + "linear_solver_settings" : { + "solver_type" : "bicgstab", + "tolerance" : 1.0e-6, + "max_iteration" : 1000, + "scaling" : true, + "preconditioner_type" : "ilu0" + }, + "problem_domain_sub_model_part_list" : ["filter"], + "processes_sub_model_part_list" : ["Start","Gravity","top"], + "body_domain_sub_model_part_list" : ["filter"] + }, + "output_processes" : { + "gid_output" : [{ + "python_module" : "gid_output_process", + "kratos_module" : "KratosMultiphysics", + "process_name" : "GiDOutputProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.filter", + "output_name" : "test_vertical_line_element2D2N", + "postprocess_parameters" : { + "result_file_configuration": { + "gidpost_flags" : { + "WriteDeformedMeshFlag" : "WriteUndeformed", + "WriteConditionsFlag" : "WriteElementsOnly", + "GiDPostMode" : "GiD_PostAscii", + "MultiFileFlag" : "SingleFile" + }, + "file_label" : "step", + "output_control_type" : "step", + "output_interval" : 1, + "body_output" : true, + "node_output" : false, + "skin_output" : false, + "plane_output" : [], + "nodal_results" : ["WATER_PRESSURE"], + "gauss_point_results" : [] + }, + "point_data_configuration" : [] + } + } + }] + }, + "processes": { + "constraints_process_list" : [{ + "python_module" : "apply_scalar_constraint_table_process", + "kratos_module" : "KratosMultiphysics.GeoMechanicsApplication", + "process_name" : "ApplyScalarConstraintTableProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.Start", + "variable_name" : "WATER_PRESSURE", + "is_fixed" : false, + "fluid_pressure_type" : "Uniform", + "value" : 10.0, + "table" : 0 + } + },{ + "python_module" : "apply_scalar_constraint_table_process", + "kratos_module" : "KratosMultiphysics.GeoMechanicsApplication", + "process_name" : "ApplyScalarConstraintTableProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.top", + "variable_name" : "WATER_PRESSURE", + "is_fixed" : true, + "fluid_pressure_type" : "Uniform", + "value" : 0.0, + "table" : 0 + } + }], + "loads_process_list" : [{ + "python_module" : "apply_vector_constraint_table_process", + "kratos_module" : "KratosMultiphysics.GeoMechanicsApplication", + "process_name" : "ApplyVectorConstraintTableProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.Gravity", + "variable_name" : "VOLUME_ACCELERATION", + "active" : [false, true, false], + "value" : [0.0, -10.0, 0.0], + "table" : [0, 0, 0] + } + }], + "auxiliar_process_list" : [] + } +} diff --git a/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_vertical_line_element2D2N/test_vertical_line_element2D2N.mdpa b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_vertical_line_element2D2N/test_vertical_line_element2D2N.mdpa new file mode 100644 index 000000000000..ae6cc22fdea3 --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_vertical_line_element2D2N/test_vertical_line_element2D2N.mdpa @@ -0,0 +1,87 @@ +Begin Properties 1 +End Properties + + +Begin Nodes + 1 0.000000e+00 0.000000e+00 0.000000e+00 + 2 0.000000e+00 -1.000000e+00 0.000000e+00 + 3 0.000000e+00 -2.000000e+00 0.000000e+00 + 4 0.000000e+00 -3.000000e+00 0.000000e+00 +End Nodes + + +Begin Elements TransientPwLineElement2D2N + 1 1 1 2 + 2 1 2 3 + 3 1 3 4 +End Elements + + +Begin SubModelPart Start + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + + +Begin SubModelPart filter + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions + End SubModelPart + + +Begin SubModelPart top + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + End SubModelPartNodes + Begin SubModelPartElements + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + + +Begin SubModelPart Gravity + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart \ No newline at end of file diff --git a/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_vertical_line_element2D3N/ProjectParameters.json b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_vertical_line_element2D3N/ProjectParameters.json new file mode 100644 index 000000000000..2775f64076ef --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_vertical_line_element2D3N/ProjectParameters.json @@ -0,0 +1,147 @@ +{ + "problem_data": { + "problem_name" : "test_vertical_line_element2D3N", + "start_time" : 0.000000e+00, + "end_time" : 1.800000e+05, + "echo_level" : 0, + "parallel_type" : "OpenMP", + "number_of_threads" : 1 + }, + "solver_settings" : { + "solver_type" : "Pw", + "model_part_name" : "PorousDomain", + "domain_size" : 2, + "model_import_settings" : { + "input_type" : "mdpa", + "input_filename" : "test_vertical_line_element2D3N" + }, + "material_import_settings" : { + "materials_filename" : "../Common/MaterialParameters2D.json" + }, + "time_stepping" : { + "time_step" : 3.600, + "max_delta_time_factor" : 1000 + }, + "buffer_size" : 2, + "echo_level" : 0, + "clear_storage" : false, + "compute_reactions" : false, + "move_mesh_flag" : false, + "reform_dofs_at_each_step" : false, + "nodal_smoothing" : false, + "block_builder" : true, + "solution_type" : "Transient_Groundwater_Flow", + "scheme_type" : "Backward_Euler", + "reset_displacements" : false, + "newmark_beta" : 0.25, + "newmark_gamma" : 0.5, + "newmark_theta" : 0.5, + "rayleigh_m" : 0.0, + "rayleigh_k" : 0.0, + "strategy_type" : "newton_raphson", + "convergence_criterion" : "water_pressure_criterion", + "displacement_relative_tolerance" : 1.0E-4, + "displacement_absolute_tolerance" : 1.0E-9, + "residual_relative_tolerance" : 1.0E-4, + "residual_absolute_tolerance" : 1.0E-9, + "water_pressure_relative_tolerance" : 1.0E-4, + "water_pressure_absolute_tolerance" : 1.0E-9, + "min_iterations" : 2, + "max_iterations" : 15, + "number_cycles" : 2, + "reduction_factor" : 0.5, + "increase_factor" : 2.0, + "desired_iterations" : 2, + "max_radius_factor" : 10.0, + "min_radius_factor" : 0.1, + "calculate_reactions" : true, + "max_line_search_iterations" : 5, + "first_alpha_value" : 0.5, + "second_alpha_value" : 1.0, + "min_alpha" : 0.1, + "max_alpha" : 2.0, + "line_search_tolerance" : 0.5, + "rotation_dofs" : true, + "linear_solver_settings" : { + "solver_type" : "bicgstab", + "tolerance" : 1.0e-6, + "max_iteration" : 1000, + "scaling" : true, + "preconditioner_type" : "ilu0" + }, + "problem_domain_sub_model_part_list" : ["filter"], + "processes_sub_model_part_list" : ["Start","Gravity","top"], + "body_domain_sub_model_part_list" : ["filter"] + }, + "output_processes" : { + "gid_output" : [{ + "python_module" : "gid_output_process", + "kratos_module" : "KratosMultiphysics", + "process_name" : "GiDOutputProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.filter", + "output_name" : "test_vertical_line_element2D3N", + "postprocess_parameters" : { + "result_file_configuration": { + "gidpost_flags" : { + "WriteDeformedMeshFlag" : "WriteUndeformed", + "WriteConditionsFlag" : "WriteElementsOnly", + "GiDPostMode" : "GiD_PostAscii", + "MultiFileFlag" : "SingleFile" + }, + "file_label" : "step", + "output_control_type" : "step", + "output_interval" : 1, + "body_output" : true, + "node_output" : false, + "skin_output" : false, + "plane_output" : [], + "nodal_results" : ["WATER_PRESSURE"], + "gauss_point_results" : [] + }, + "point_data_configuration" : [] + } + } + }] + }, + "processes": { + "constraints_process_list" : [{ + "python_module" : "apply_scalar_constraint_table_process", + "kratos_module" : "KratosMultiphysics.GeoMechanicsApplication", + "process_name" : "ApplyScalarConstraintTableProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.Start", + "variable_name" : "WATER_PRESSURE", + "is_fixed" : false, + "fluid_pressure_type" : "Uniform", + "value" : 10.0, + "table" : 0 + } + },{ + "python_module" : "apply_scalar_constraint_table_process", + "kratos_module" : "KratosMultiphysics.GeoMechanicsApplication", + "process_name" : "ApplyScalarConstraintTableProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.top", + "variable_name" : "WATER_PRESSURE", + "is_fixed" : true, + "fluid_pressure_type" : "Uniform", + "value" : 0.0, + "table" : 0 + } + }], + "loads_process_list" : [{ + "python_module" : "apply_vector_constraint_table_process", + "kratos_module" : "KratosMultiphysics.GeoMechanicsApplication", + "process_name" : "ApplyVectorConstraintTableProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.Gravity", + "variable_name" : "VOLUME_ACCELERATION", + "active" : [false, true, false], + "value" : [0.0, -10.0, 0.0], + "table" : [0, 0, 0] + } + }], + "auxiliar_process_list" : [] + } +} diff --git a/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_vertical_line_element2D3N/test_vertical_line_element2D3N.mdpa b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_vertical_line_element2D3N/test_vertical_line_element2D3N.mdpa new file mode 100644 index 000000000000..23cee579d075 --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_vertical_line_element2D3N/test_vertical_line_element2D3N.mdpa @@ -0,0 +1,99 @@ +Begin Properties 1 +End Properties + + +Begin Nodes + 1 0.000000e+00 0.000000e+00 0.000000e+00 + 2 0.000000e+00 -1.000000e+00 0.000000e+00 + 3 0.000000e+00 -2.000000e+00 0.000000e+00 + 4 0.000000e+00 -3.000000e+00 0.000000e+00 + 5 0.000000e+00 -0.500000e+00 0.000000e+00 + 6 0.000000e+00 -1.500000e+00 0.000000e+00 + 7 0.000000e+00 -2.500000e+00 0.000000e+00 +End Nodes + + +Begin Elements TransientPwLineElement2D3N + 1 1 1 2 5 + 2 1 2 3 6 + 3 1 3 4 7 +End Elements + + +Begin SubModelPart Start + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + + +Begin SubModelPart filter + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions + End SubModelPart + + +Begin SubModelPart top + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + End SubModelPartNodes + Begin SubModelPartElements + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + + +Begin SubModelPart Gravity + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart \ No newline at end of file diff --git a/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_vertical_line_element2D4N/ProjectParameters.json b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_vertical_line_element2D4N/ProjectParameters.json new file mode 100644 index 000000000000..eddb5bb8cc64 --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_vertical_line_element2D4N/ProjectParameters.json @@ -0,0 +1,147 @@ +{ + "problem_data": { + "problem_name" : "test_vertical_line_element2D4N", + "start_time" : 0.000000e+00, + "end_time" : 1.800000e+05, + "echo_level" : 0, + "parallel_type" : "OpenMP", + "number_of_threads" : 1 + }, + "solver_settings" : { + "solver_type" : "Pw", + "model_part_name" : "PorousDomain", + "domain_size" : 2, + "model_import_settings" : { + "input_type" : "mdpa", + "input_filename" : "test_vertical_line_element2D4N" + }, + "material_import_settings" : { + "materials_filename" : "../Common/MaterialParameters2D.json" + }, + "time_stepping" : { + "time_step" : 3.600, + "max_delta_time_factor" : 1000 + }, + "buffer_size" : 2, + "echo_level" : 0, + "clear_storage" : false, + "compute_reactions" : false, + "move_mesh_flag" : false, + "reform_dofs_at_each_step" : false, + "nodal_smoothing" : false, + "block_builder" : true, + "solution_type" : "Transient_Groundwater_Flow", + "scheme_type" : "Backward_Euler", + "reset_displacements" : false, + "newmark_beta" : 0.25, + "newmark_gamma" : 0.5, + "newmark_theta" : 0.5, + "rayleigh_m" : 0.0, + "rayleigh_k" : 0.0, + "strategy_type" : "newton_raphson", + "convergence_criterion" : "water_pressure_criterion", + "displacement_relative_tolerance" : 1.0E-4, + "displacement_absolute_tolerance" : 1.0E-9, + "residual_relative_tolerance" : 1.0E-4, + "residual_absolute_tolerance" : 1.0E-9, + "water_pressure_relative_tolerance" : 1.0E-4, + "water_pressure_absolute_tolerance" : 1.0E-9, + "min_iterations" : 2, + "max_iterations" : 15, + "number_cycles" : 2, + "reduction_factor" : 0.5, + "increase_factor" : 2.0, + "desired_iterations" : 2, + "max_radius_factor" : 10.0, + "min_radius_factor" : 0.1, + "calculate_reactions" : true, + "max_line_search_iterations" : 5, + "first_alpha_value" : 0.5, + "second_alpha_value" : 1.0, + "min_alpha" : 0.1, + "max_alpha" : 2.0, + "line_search_tolerance" : 0.5, + "rotation_dofs" : true, + "linear_solver_settings" : { + "solver_type" : "bicgstab", + "tolerance" : 1.0e-6, + "max_iteration" : 1000, + "scaling" : true, + "preconditioner_type" : "ilu0" + }, + "problem_domain_sub_model_part_list" : ["filter"], + "processes_sub_model_part_list" : ["Start","Gravity","top"], + "body_domain_sub_model_part_list" : ["filter"] + }, + "output_processes" : { + "gid_output" : [{ + "python_module" : "gid_output_process", + "kratos_module" : "KratosMultiphysics", + "process_name" : "GiDOutputProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.filter", + "output_name" : "test_vertical_line_element2D4N", + "postprocess_parameters" : { + "result_file_configuration": { + "gidpost_flags" : { + "WriteDeformedMeshFlag" : "WriteUndeformed", + "WriteConditionsFlag" : "WriteElementsOnly", + "GiDPostMode" : "GiD_PostAscii", + "MultiFileFlag" : "SingleFile" + }, + "file_label" : "step", + "output_control_type" : "step", + "output_interval" : 1, + "body_output" : true, + "node_output" : false, + "skin_output" : false, + "plane_output" : [], + "nodal_results" : ["WATER_PRESSURE"], + "gauss_point_results" : [] + }, + "point_data_configuration" : [] + } + } + }] + }, + "processes": { + "constraints_process_list" : [{ + "python_module" : "apply_scalar_constraint_table_process", + "kratos_module" : "KratosMultiphysics.GeoMechanicsApplication", + "process_name" : "ApplyScalarConstraintTableProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.Start", + "variable_name" : "WATER_PRESSURE", + "is_fixed" : false, + "fluid_pressure_type" : "Uniform", + "value" : 10.0, + "table" : 0 + } + },{ + "python_module" : "apply_scalar_constraint_table_process", + "kratos_module" : "KratosMultiphysics.GeoMechanicsApplication", + "process_name" : "ApplyScalarConstraintTableProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.top", + "variable_name" : "WATER_PRESSURE", + "is_fixed" : true, + "fluid_pressure_type" : "Uniform", + "value" : 0.0, + "table" : 0 + } + }], + "loads_process_list" : [{ + "python_module" : "apply_vector_constraint_table_process", + "kratos_module" : "KratosMultiphysics.GeoMechanicsApplication", + "process_name" : "ApplyVectorConstraintTableProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.Gravity", + "variable_name" : "VOLUME_ACCELERATION", + "active" : [false, true, false], + "value" : [0.0, -10.0, 0.0], + "table" : [0, 0, 0] + } + }], + "auxiliar_process_list" : [] + } +} diff --git a/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_vertical_line_element2D4N/test_vertical_line_element2D4N.mdpa b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_vertical_line_element2D4N/test_vertical_line_element2D4N.mdpa new file mode 100644 index 000000000000..08f3d66f4239 --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_vertical_line_element2D4N/test_vertical_line_element2D4N.mdpa @@ -0,0 +1,111 @@ +Begin Properties 1 +End Properties + + +Begin Nodes + 1 0.000000e+00 0.000000e+00 0.000000e+00 + 2 0.000000e+00 -1.000000e+00 0.000000e+00 + 3 0.000000e+00 -2.000000e+00 0.000000e+00 + 4 0.000000e+00 -3.000000e+00 0.000000e+00 + 5 0.000000e+00 -0.333333e+00 0.000000e+00 + 6 0.000000e+00 -0.666667e+00 0.000000e+00 + 7 0.000000e+00 -1.333333e+00 0.000000e+00 + 8 0.000000e+00 -1.666667e+00 0.000000e+00 + 9 0.000000e+00 -2.333333e+00 0.000000e+00 +10 0.000000e+00 -2.666667e+00 0.000000e+00 +End Nodes + + +Begin Elements TransientPwLineElement2D4N + 1 1 1 2 5 6 + 2 1 2 3 7 8 + 3 1 3 4 9 10 +End Elements + + +Begin SubModelPart Start + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + + +Begin SubModelPart filter + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions + End SubModelPart + + +Begin SubModelPart top + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + End SubModelPartNodes + Begin SubModelPartElements + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + + +Begin SubModelPart Gravity + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart \ No newline at end of file diff --git a/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_vertical_line_element2D5N/ProjectParameters.json b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_vertical_line_element2D5N/ProjectParameters.json new file mode 100644 index 000000000000..0f81a55bd4d2 --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_vertical_line_element2D5N/ProjectParameters.json @@ -0,0 +1,147 @@ +{ + "problem_data": { + "problem_name" : "test_vertical_line_element2D5N", + "start_time" : 0.000000e+00, + "end_time" : 1.800000e+05, + "echo_level" : 0, + "parallel_type" : "OpenMP", + "number_of_threads" : 1 + }, + "solver_settings" : { + "solver_type" : "Pw", + "model_part_name" : "PorousDomain", + "domain_size" : 2, + "model_import_settings" : { + "input_type" : "mdpa", + "input_filename" : "test_vertical_line_element2D5N" + }, + "material_import_settings" : { + "materials_filename" : "../Common/MaterialParameters2D.json" + }, + "time_stepping" : { + "time_step" : 3.600, + "max_delta_time_factor" : 1000 + }, + "buffer_size" : 2, + "echo_level" : 0, + "clear_storage" : false, + "compute_reactions" : false, + "move_mesh_flag" : false, + "reform_dofs_at_each_step" : false, + "nodal_smoothing" : false, + "block_builder" : true, + "solution_type" : "Transient_Groundwater_Flow", + "scheme_type" : "Backward_Euler", + "reset_displacements" : false, + "newmark_beta" : 0.25, + "newmark_gamma" : 0.5, + "newmark_theta" : 0.5, + "rayleigh_m" : 0.0, + "rayleigh_k" : 0.0, + "strategy_type" : "newton_raphson", + "convergence_criterion" : "water_pressure_criterion", + "displacement_relative_tolerance" : 1.0E-4, + "displacement_absolute_tolerance" : 1.0E-9, + "residual_relative_tolerance" : 1.0E-4, + "residual_absolute_tolerance" : 1.0E-9, + "water_pressure_relative_tolerance" : 1.0E-4, + "water_pressure_absolute_tolerance" : 1.0E-9, + "min_iterations" : 2, + "max_iterations" : 15, + "number_cycles" : 2, + "reduction_factor" : 0.5, + "increase_factor" : 2.0, + "desired_iterations" : 2, + "max_radius_factor" : 10.0, + "min_radius_factor" : 0.1, + "calculate_reactions" : true, + "max_line_search_iterations" : 5, + "first_alpha_value" : 0.5, + "second_alpha_value" : 1.0, + "min_alpha" : 0.1, + "max_alpha" : 2.0, + "line_search_tolerance" : 0.5, + "rotation_dofs" : true, + "linear_solver_settings" : { + "solver_type" : "bicgstab", + "tolerance" : 1.0e-6, + "max_iteration" : 1000, + "scaling" : true, + "preconditioner_type" : "ilu0" + }, + "problem_domain_sub_model_part_list" : ["filter"], + "processes_sub_model_part_list" : ["Start","Gravity","top"], + "body_domain_sub_model_part_list" : ["filter"] + }, + "output_processes" : { + "gid_output" : [{ + "python_module" : "gid_output_process", + "kratos_module" : "KratosMultiphysics", + "process_name" : "GiDOutputProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.filter", + "output_name" : "test_vertical_line_element2D5N", + "postprocess_parameters" : { + "result_file_configuration": { + "gidpost_flags" : { + "WriteDeformedMeshFlag" : "WriteUndeformed", + "WriteConditionsFlag" : "WriteElementsOnly", + "GiDPostMode" : "GiD_PostAscii", + "MultiFileFlag" : "SingleFile" + }, + "file_label" : "step", + "output_control_type" : "step", + "output_interval" : 1, + "body_output" : true, + "node_output" : false, + "skin_output" : false, + "plane_output" : [], + "nodal_results" : ["WATER_PRESSURE"], + "gauss_point_results" : [] + }, + "point_data_configuration" : [] + } + } + }] + }, + "processes": { + "constraints_process_list" : [{ + "python_module" : "apply_scalar_constraint_table_process", + "kratos_module" : "KratosMultiphysics.GeoMechanicsApplication", + "process_name" : "ApplyScalarConstraintTableProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.Start", + "variable_name" : "WATER_PRESSURE", + "is_fixed" : false, + "fluid_pressure_type" : "Uniform", + "value" : 10.0, + "table" : 0 + } + },{ + "python_module" : "apply_scalar_constraint_table_process", + "kratos_module" : "KratosMultiphysics.GeoMechanicsApplication", + "process_name" : "ApplyScalarConstraintTableProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.top", + "variable_name" : "WATER_PRESSURE", + "is_fixed" : true, + "fluid_pressure_type" : "Uniform", + "value" : 0.0, + "table" : 0 + } + }], + "loads_process_list" : [{ + "python_module" : "apply_vector_constraint_table_process", + "kratos_module" : "KratosMultiphysics.GeoMechanicsApplication", + "process_name" : "ApplyVectorConstraintTableProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.Gravity", + "variable_name" : "VOLUME_ACCELERATION", + "active" : [false, true, false], + "value" : [0.0, -10.0, 0.0], + "table" : [0, 0, 0] + } + }], + "auxiliar_process_list" : [] + } +} diff --git a/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_vertical_line_element2D5N/test_vertical_line_element2D5N.mdpa b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_vertical_line_element2D5N/test_vertical_line_element2D5N.mdpa new file mode 100644 index 000000000000..08cf81e99a45 --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_vertical_line_element2D5N/test_vertical_line_element2D5N.mdpa @@ -0,0 +1,123 @@ +Begin Properties 1 +End Properties + + +Begin Nodes + 1 0.000000e+00 0.000000e+00 0.000000e+00 + 2 0.000000e+00 -1.000000e+00 0.000000e+00 + 3 0.000000e+00 -2.000000e+00 0.000000e+00 + 4 0.000000e+00 -3.000000e+00 0.000000e+00 + 5 0.000000e+00 -0.500000e+00 0.000000e+00 + 6 0.000000e+00 -1.500000e+00 0.000000e+00 + 7 0.000000e+00 -2.500000e+00 0.000000e+00 + 8 0.000000e+00 -0.250000e+00 0.000000e+00 + 9 0.000000e+00 -0.750000e+00 0.000000e+00 +10 0.000000e+00 -1.250000e+00 0.000000e+00 +11 0.000000e+00 -1.750000e+00 0.000000e+00 +12 0.000000e+00 -2.250000e+00 0.000000e+00 +13 0.000000e+00 -2.750000e+00 0.000000e+00 +End Nodes + + +Begin Elements TransientPwLineElement2D5N + 1 1 1 2 8 5 9 + 2 1 2 3 10 6 11 + 3 1 3 4 12 7 13 +End Elements + + +Begin SubModelPart Start + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + + +Begin SubModelPart filter + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions + End SubModelPart + + +Begin SubModelPart top + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + End SubModelPartNodes + Begin SubModelPartElements + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + + +Begin SubModelPart Gravity + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart \ No newline at end of file diff --git a/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_vertical_line_element3D2N/ProjectParameters.json b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_vertical_line_element3D2N/ProjectParameters.json new file mode 100644 index 000000000000..32344ab30534 --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_vertical_line_element3D2N/ProjectParameters.json @@ -0,0 +1,147 @@ +{ + "problem_data": { + "problem_name" : "test_vertical_line_element3D2N", + "start_time" : 0.000000e+00, + "end_time" : 1.800000e+05, + "echo_level" : 0, + "parallel_type" : "OpenMP", + "number_of_threads" : 1 + }, + "solver_settings" : { + "solver_type" : "Pw", + "model_part_name" : "PorousDomain", + "domain_size" : 3, + "model_import_settings" : { + "input_type" : "mdpa", + "input_filename" : "test_vertical_line_element3D2N" + }, + "material_import_settings" : { + "materials_filename" : "../Common/MaterialParameters3D.json" + }, + "time_stepping" : { + "time_step" : 3.600, + "max_delta_time_factor" : 1000 + }, + "buffer_size" : 2, + "echo_level" : 0, + "clear_storage" : false, + "compute_reactions" : false, + "move_mesh_flag" : false, + "reform_dofs_at_each_step" : false, + "nodal_smoothing" : false, + "block_builder" : true, + "solution_type" : "Transient_Groundwater_Flow", + "scheme_type" : "Backward_Euler", + "reset_displacements" : false, + "newmark_beta" : 0.25, + "newmark_gamma" : 0.5, + "newmark_theta" : 0.5, + "rayleigh_m" : 0.0, + "rayleigh_k" : 0.0, + "strategy_type" : "newton_raphson", + "convergence_criterion" : "water_pressure_criterion", + "displacement_relative_tolerance" : 1.0E-4, + "displacement_absolute_tolerance" : 1.0E-9, + "residual_relative_tolerance" : 1.0E-4, + "residual_absolute_tolerance" : 1.0E-9, + "water_pressure_relative_tolerance" : 1.0E-4, + "water_pressure_absolute_tolerance" : 1.0E-9, + "min_iterations" : 2, + "max_iterations" : 15, + "number_cycles" : 2, + "reduction_factor" : 0.5, + "increase_factor" : 2.0, + "desired_iterations" : 2, + "max_radius_factor" : 10.0, + "min_radius_factor" : 0.1, + "calculate_reactions" : true, + "max_line_search_iterations" : 5, + "first_alpha_value" : 0.5, + "second_alpha_value" : 1.0, + "min_alpha" : 0.1, + "max_alpha" : 2.0, + "line_search_tolerance" : 0.5, + "rotation_dofs" : true, + "linear_solver_settings" : { + "solver_type" : "bicgstab", + "tolerance" : 1.0e-6, + "max_iteration" : 1000, + "scaling" : true, + "preconditioner_type" : "ilu0" + }, + "problem_domain_sub_model_part_list" : ["filter"], + "processes_sub_model_part_list" : ["Start","Gravity","top"], + "body_domain_sub_model_part_list" : ["filter"] + }, + "output_processes" : { + "gid_output" : [{ + "python_module" : "gid_output_process", + "kratos_module" : "KratosMultiphysics", + "process_name" : "GiDOutputProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.filter", + "output_name" : "test_vertical_line_element3D2N", + "postprocess_parameters" : { + "result_file_configuration": { + "gidpost_flags" : { + "WriteDeformedMeshFlag" : "WriteUndeformed", + "WriteConditionsFlag" : "WriteElementsOnly", + "GiDPostMode" : "GiD_PostAscii", + "MultiFileFlag" : "SingleFile" + }, + "file_label" : "step", + "output_control_type" : "step", + "output_interval" : 1, + "body_output" : true, + "node_output" : false, + "skin_output" : false, + "plane_output" : [], + "nodal_results" : ["WATER_PRESSURE"], + "gauss_point_results" : [] + }, + "point_data_configuration" : [] + } + } + }] + }, + "processes": { + "constraints_process_list" : [{ + "python_module" : "apply_scalar_constraint_table_process", + "kratos_module" : "KratosMultiphysics.GeoMechanicsApplication", + "process_name" : "ApplyScalarConstraintTableProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.Start", + "variable_name" : "WATER_PRESSURE", + "is_fixed" : false, + "fluid_pressure_type" : "Uniform", + "value" : 10.0, + "table" : 0 + } + },{ + "python_module" : "apply_scalar_constraint_table_process", + "kratos_module" : "KratosMultiphysics.GeoMechanicsApplication", + "process_name" : "ApplyScalarConstraintTableProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.top", + "variable_name" : "WATER_PRESSURE", + "is_fixed" : true, + "fluid_pressure_type" : "Uniform", + "value" : 0.0, + "table" : 0 + } + }], + "loads_process_list" : [{ + "python_module" : "apply_vector_constraint_table_process", + "kratos_module" : "KratosMultiphysics.GeoMechanicsApplication", + "process_name" : "ApplyVectorConstraintTableProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.Gravity", + "variable_name" : "VOLUME_ACCELERATION", + "active" : [false, true, false], + "value" : [0.0, -10.0, 0.0], + "table" : [0, 0, 0] + } + }], + "auxiliar_process_list" : [] + } +} diff --git a/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_vertical_line_element3D2N/test_vertical_line_element3D2N.mdpa b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_vertical_line_element3D2N/test_vertical_line_element3D2N.mdpa new file mode 100644 index 000000000000..47a3012899e1 --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_vertical_line_element3D2N/test_vertical_line_element3D2N.mdpa @@ -0,0 +1,87 @@ +Begin Properties 1 +End Properties + + +Begin Nodes + 1 0.000000e+00 0.000000e+00 0.000000e+00 + 2 0.000000e+00 -1.000000e+00 0.000000e+00 + 3 0.000000e+00 -2.000000e+00 0.000000e+00 + 4 0.000000e+00 -3.000000e+00 0.000000e+00 +End Nodes + + +Begin Elements TransientPwLineElement3D2N + 1 1 1 2 + 2 1 2 3 + 3 1 3 4 +End Elements + + +Begin SubModelPart Start + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + + +Begin SubModelPart filter + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions + End SubModelPart + + +Begin SubModelPart top + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + End SubModelPartNodes + Begin SubModelPartElements + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + + +Begin SubModelPart Gravity + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart \ No newline at end of file diff --git a/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_vertical_line_element3D3N/ProjectParameters.json b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_vertical_line_element3D3N/ProjectParameters.json new file mode 100644 index 000000000000..221c609f1e3f --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_vertical_line_element3D3N/ProjectParameters.json @@ -0,0 +1,147 @@ +{ + "problem_data": { + "problem_name" : "test_vertical_line_element3D3N", + "start_time" : 0.000000e+00, + "end_time" : 1.800000e+05, + "echo_level" : 0, + "parallel_type" : "OpenMP", + "number_of_threads" : 1 + }, + "solver_settings" : { + "solver_type" : "Pw", + "model_part_name" : "PorousDomain", + "domain_size" : 3, + "model_import_settings" : { + "input_type" : "mdpa", + "input_filename" : "test_vertical_line_element3D3N" + }, + "material_import_settings" : { + "materials_filename" : "../Common/MaterialParameters3D.json" + }, + "time_stepping" : { + "time_step" : 3.600, + "max_delta_time_factor" : 1000 + }, + "buffer_size" : 2, + "echo_level" : 0, + "clear_storage" : false, + "compute_reactions" : false, + "move_mesh_flag" : false, + "reform_dofs_at_each_step" : false, + "nodal_smoothing" : false, + "block_builder" : true, + "solution_type" : "Transient_Groundwater_Flow", + "scheme_type" : "Backward_Euler", + "reset_displacements" : false, + "newmark_beta" : 0.25, + "newmark_gamma" : 0.5, + "newmark_theta" : 0.5, + "rayleigh_m" : 0.0, + "rayleigh_k" : 0.0, + "strategy_type" : "newton_raphson", + "convergence_criterion" : "water_pressure_criterion", + "displacement_relative_tolerance" : 1.0E-4, + "displacement_absolute_tolerance" : 1.0E-9, + "residual_relative_tolerance" : 1.0E-4, + "residual_absolute_tolerance" : 1.0E-9, + "water_pressure_relative_tolerance" : 1.0E-4, + "water_pressure_absolute_tolerance" : 1.0E-9, + "min_iterations" : 2, + "max_iterations" : 15, + "number_cycles" : 2, + "reduction_factor" : 0.5, + "increase_factor" : 2.0, + "desired_iterations" : 2, + "max_radius_factor" : 10.0, + "min_radius_factor" : 0.1, + "calculate_reactions" : true, + "max_line_search_iterations" : 5, + "first_alpha_value" : 0.5, + "second_alpha_value" : 1.0, + "min_alpha" : 0.1, + "max_alpha" : 2.0, + "line_search_tolerance" : 0.5, + "rotation_dofs" : true, + "linear_solver_settings" : { + "solver_type" : "bicgstab", + "tolerance" : 1.0e-6, + "max_iteration" : 1000, + "scaling" : true, + "preconditioner_type" : "ilu0" + }, + "problem_domain_sub_model_part_list" : ["filter"], + "processes_sub_model_part_list" : ["Start","Gravity","top"], + "body_domain_sub_model_part_list" : ["filter"] + }, + "output_processes" : { + "gid_output" : [{ + "python_module" : "gid_output_process", + "kratos_module" : "KratosMultiphysics", + "process_name" : "GiDOutputProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.filter", + "output_name" : "test_vertical_line_element3D3N", + "postprocess_parameters" : { + "result_file_configuration": { + "gidpost_flags" : { + "WriteDeformedMeshFlag" : "WriteUndeformed", + "WriteConditionsFlag" : "WriteElementsOnly", + "GiDPostMode" : "GiD_PostAscii", + "MultiFileFlag" : "SingleFile" + }, + "file_label" : "step", + "output_control_type" : "step", + "output_interval" : 1, + "body_output" : true, + "node_output" : false, + "skin_output" : false, + "plane_output" : [], + "nodal_results" : ["WATER_PRESSURE"], + "gauss_point_results" : [] + }, + "point_data_configuration" : [] + } + } + }] + }, + "processes": { + "constraints_process_list" : [{ + "python_module" : "apply_scalar_constraint_table_process", + "kratos_module" : "KratosMultiphysics.GeoMechanicsApplication", + "process_name" : "ApplyScalarConstraintTableProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.Start", + "variable_name" : "WATER_PRESSURE", + "is_fixed" : false, + "fluid_pressure_type" : "Uniform", + "value" : 10.0, + "table" : 0 + } + },{ + "python_module" : "apply_scalar_constraint_table_process", + "kratos_module" : "KratosMultiphysics.GeoMechanicsApplication", + "process_name" : "ApplyScalarConstraintTableProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.top", + "variable_name" : "WATER_PRESSURE", + "is_fixed" : true, + "fluid_pressure_type" : "Uniform", + "value" : 0.0, + "table" : 0 + } + }], + "loads_process_list" : [{ + "python_module" : "apply_vector_constraint_table_process", + "kratos_module" : "KratosMultiphysics.GeoMechanicsApplication", + "process_name" : "ApplyVectorConstraintTableProcess", + "Parameters" : { + "model_part_name" : "PorousDomain.Gravity", + "variable_name" : "VOLUME_ACCELERATION", + "active" : [false, true, false], + "value" : [0.0, -10.0, 0.0], + "table" : [0, 0, 0] + } + }], + "auxiliar_process_list" : [] + } +} diff --git a/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_vertical_line_element3D3N/test_vertical_line_element3D3N.mdpa b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_vertical_line_element3D3N/test_vertical_line_element3D3N.mdpa new file mode 100644 index 000000000000..e99b61665e65 --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_pressure_line_element/test_vertical_line_element3D3N/test_vertical_line_element3D3N.mdpa @@ -0,0 +1,99 @@ +Begin Properties 1 +End Properties + + +Begin Nodes + 1 0.000000e+00 0.000000e+00 0.000000e+00 + 2 0.000000e+00 -1.000000e+00 0.000000e+00 + 3 0.000000e+00 -2.000000e+00 0.000000e+00 + 4 0.000000e+00 -3.000000e+00 0.000000e+00 + 5 0.000000e+00 -0.500000e+00 0.000000e+00 + 6 0.000000e+00 -1.500000e+00 0.000000e+00 + 7 0.000000e+00 -2.500000e+00 0.000000e+00 +End Nodes + + +Begin Elements TransientPwLineElement3D3N + 1 1 1 2 5 + 2 1 2 3 6 + 3 1 3 4 7 +End Elements + + +Begin SubModelPart Start + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + + +Begin SubModelPart filter + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions + End SubModelPart + + +Begin SubModelPart top + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + End SubModelPartNodes + Begin SubModelPartElements + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + + +Begin SubModelPart Gravity + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart \ No newline at end of file