Kratos
Kratos copied to clipboard
[GeoMechanics] Added Triangular element 15 nodes, Line element 5 nodes
📝 Description Added Triangular geometry 15 nodes:
-Triangle2D15N
- Line2D5N
🆕 Changelog The Geometry is added to generate elements.
- TransientPwElement2D15N
- SteadyStatePwElement2D15N
- UPwSmallStrainElement2D15N
- SmallStrainUPwDiffOrderElement2D15N
- UPwSmallStrainAxisymmetricElement2D15N
- SmallStrainUPwDiffOrderAxisymmetricElement2D15N
- UPwUpdatedLagrangianElement2D15N
- UpdatedLagrangianUPwDiffOrderElement2D15N
- UPwUpdatedLagrangianAxisymmetricElement2D15N
- UpdatedLagrangianUPwDiffOrderAxisymmetricElement2D15N
- LineLoadDiffOrderCondition2D5N
- LineNormalLoadDiffOrderCondition2D5N
- LineNormalFluidFluxDiffOrderCondition2D5N
Considering that we're adding a new geometry, which might be of interest to any other Kratos application, I'd add this to the Kratos core. Having said this, I'd create an auxiliary PR in which we only add the new geometry, together with its corresponding tests. Once we merge this, we can recover this one implementing the element that uses such geometry.
Considering that we're adding a new geometry, which might be of interest to any other Kratos application, I'd add this to the Kratos core. Having said this, I'd create an auxiliary PR in which we only add the new geometry, together with its corresponding tests. Once we merge this, we can recover this one implementing the element that uses such geometry.
Thank you for your interest. We will add them to Kratos application and make a new PR. I am creating a new issue for this.
I will do the rest of review, later
Thank you Vahid, I appreciate your help
@mnabideltares I approved the changes related to GeoMechanicsApp. Please wait for the modifications needed for the geometries (2D15N and 1D5N).
@Vahid-Galavi , I already merged the 10 and 15 nodes geometries to Kratos, and now it is the time to continue this PR. As I already have all the triangular elements, namely 3, 6, 10 and 15, I am trying to interpolate for pressure (from lower order element) to the U element. However, my question is: In the current state of the code, if I solve the U on 15 nodes element, does the pressure gets solved on 10 nodes element, or stays on 3 nodes?
case 15: //2D T15P10
mpPressureGeometry = GeometryType::Pointer(new Triangle2D10< Node<3> >(rGeom(0), rGeom(1), rGeom(2), rGeom(3), rGeom(4), rGeom(5), rGeom(6), rGeom(7), rGeom(8), rGeom(9)));
break;
Does the prerrure gets aware from these lines that it has to be solved on 10 nodes?
Thank you in advance. Your help is highly appreciated.
@Vahid-Galavi , I already merged the 10 and 15 nodes geometries to Kratos, and now it is the time to continue this PR. As I already have all the triangular elements, namely 3, 6, 10 and 15, I am trying to interpolate for pressure (from lower order element) to the U element. However, my question is: In the current state of the code, if I solve the U on 15 nodes element, does the pressure gets solved on 10 nodes element, or stays on 3 nodes?
case 15: //2D T15P10 mpPressureGeometry = GeometryType::Pointer(new Triangle2D10< Node<3> >(rGeom(0), rGeom(1), rGeom(2), rGeom(3), rGeom(4), rGeom(5), rGeom(6), rGeom(7), rGeom(8), rGeom(9))); break;Does the prerrure gets aware from these lines that it has to be solved on 10 nodes?
Thank you in advance. Your help is highly appreciated.
@mnabideltares In function Initialize() we make the geometry for pore pressure. Based on your code, for 15 node shape fuction for displacements, you are making a 10 node shape function for pore pressure. So, the answer to your question, is yes, It will use 10 noded shape functions for pore pressures.
@Vahid-Galavi Considering element 10N, the pressure is 6N. However, the points on the edges are not falling at the same position. For 6N element:
case 6: //2D T6P3
mpPressureGeometry = GeometryType::Pointer( new Triangle2D3< Node<3> >(rGeom(0), rGeom(1), rGeom(2)) );
Which uses the 3 corner points of the 3 nodes element, which have common locations between 3 and 6 nodes elements. However for 10N:
mpPressureGeometry = GeometryType::Pointer(new Triangle2D6< Node<3> >(rGeom(0), rGeom(1), rGeom(2), rGeom(3), rGeom(4), rGeom(5)));
The points 0, 1 and 2 have shared position, while 3, 4 and 5 are different. For example, for bottom edge: 0--------3--------1 => 6N 0-----3-----4-----1 => 10N
Am I analysing it correctly? Do you think this implementation works between such elements?
@mnabideltares Somewhere in the element, the mapping is applied. So far, the mapping was from 1st order to 2st order which simply means that the pore pressure in the middle node is the average of the corner nodes. In the other cases, for example from 3 nodes to 4 nodes, you need to find the values by using the shape functions, evaluated at the position of the higher order nodes.
@AlejandroCornejo Thank you for your review and approval. I still did not add test cases for these elements in GeoMechanics application. Then I will add some tests before I merge the pull request.
@AlejandroCornejo I already added 2 test cases for 2 elements, namely 10N and 15N.
@AlejandroCornejo Can you please approve it again (if you think everything is ok)? so that I can merge it. Thanks