Kratos
Kratos copied to clipboard
[GeoMechanicsApplication] Phreatic error with discontinuous geometry
When multiple phreatic lines are assigned to a surface it seems that the first point in the left is always extrapolated to the right. As it can be seen in the figures bellow.
The problem can be found in apply_scalar_constrain_table_process.py in function CalculatePressure. In this case when the node is outside of the phreatic line the pressure gets extrapolated. This makes assigning different phreatic lines in the same surface order dependent
` double CalculatePressure(const Node<3> &rNode, const array_1d<double, 2> &y) const { double height = 0.0; if (rNode.Coordinates()[mHorizontalDirection] >= mMinHorizontalCoordinate && rNode.Coordinates()[mHorizontalDirection] <= mMaxHorizontalCoordinate) { height = mSlope * (rNode.Coordinates()[mHorizontalDirection] - mFirstReferenceCoordinate[mHorizontalDirection]) + y[0];
} else if (rNode.Coordinates()[mHorizontalDirection] < mMinHorizontalCoordinate) {
height = mSlope * (mMinHorizontalCoordinate - mFirstReferenceCoordinate[mHorizontalDirection]) + y[0];
} else if (rNode.Coordinates()[mHorizontalDirection] > mMaxHorizontalCoordinate) {
height = mSlope * (mMaxHorizontalCoordinate - mFirstReferenceCoordinate[mHorizontalDirection]) + y[0];
}
const double distance = height - rNode.Coordinates()[mGravityDirection];
const double pressure = - PORE_PRESSURE_SIGN_FACTOR * mSpecificWeight * distance;
return pressure;
}`
Fixed for constant pressure
Also added phreatic multi line table process .... i.e. varies in time
The PR was closed so that @WPK4FEM and @avdg81 can complete there changes to the underlying functionalities before reimplementation.