Kratos icon indicating copy to clipboard operation
Kratos copied to clipboard

[GeoMechanics] Added Triangular element 15 nodes, Line element 5 nodes

Open mnabideltares opened this issue 3 years ago • 4 comments

📝 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

mnabideltares avatar Jul 28 '22 12:07 mnabideltares

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.

rubenzorrilla avatar Jul 28 '22 12:07 rubenzorrilla

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.

mnabideltares avatar Jul 28 '22 13:07 mnabideltares

I will do the rest of review, later

Thank you Vahid, I appreciate your help

mnabideltares avatar Jul 30 '22 23:07 mnabideltares

@mnabideltares I approved the changes related to GeoMechanicsApp. Please wait for the modifications needed for the geometries (2D15N and 1D5N).

Vahid-Galavi avatar Aug 09 '22 09:08 Vahid-Galavi

@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 avatar Jan 24 '23 08:01 mnabideltares

@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 avatar Jan 24 '23 09:01 Vahid-Galavi

@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 avatar Jan 24 '23 10:01 mnabideltares

@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.

Vahid-Galavi avatar Jan 24 '23 11:01 Vahid-Galavi

@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.

mnabideltares avatar Jan 30 '23 13:01 mnabideltares

@AlejandroCornejo I already added 2 test cases for 2 elements, namely 10N and 15N.

mnabideltares avatar Feb 06 '23 19:02 mnabideltares

@AlejandroCornejo Can you please approve it again (if you think everything is ok)? so that I can merge it. Thanks

mnabideltares avatar Feb 07 '23 09:02 mnabideltares