Quarter point element functions/operators

6 views
Skip to first unread message
Assigned to lik...@wp.pl by me

ignathanas

unread,
Nov 17, 2021, 6:00:11 AM11/17/21
to MoFEM Q&A
Hello,

I am attempting to use the singular elements and I had a question regarding usage of singularity related functions and operators.

Am I right to say that all is needed to "transform" the elements around crack front one need to do two thing:

1) run function setSingularDofs for spatial positions
2) push operator OpTransfromSingularBaseFunctions for those elements

If yes, am I right to say that setSingularDofs is not needed to be pushed for post processing?

Thanks in advance,
Ignatios

ignathanas

unread,
Nov 17, 2021, 6:03:06 AM11/17/21
to MoFEM Q&A
Sorry a correction:
setSingularDofs is called rather than pushed.

Lukasz Kaczmraczyk

unread,
Nov 17, 2021, 7:06:44 AM11/17/21
to MoFEM Q&A
Hey,

Element with singularity need info about edges adjacent to crack front, and then you push operators to it. The problem does not matter, terminal, or mechanical if it has the right type of singularity, i.e. O(r^-2).

Implementation if not very generic, all is done for fracture module, easy way to adopt it is to follow this

Note that: 

  // Create elastic element finite element instance for residuals. Note that
  // this element approx. singularity at crack front.
  feRhs = boost::make_shared<CrackFrontElement>(
      mField, setSingularCoordinates, crackFrontNodes, crackFrontNodesEdges,
      crackFrontElements, addSingularity);

  // Create finite element instance for assembly of tangent matrix
  feLhs = boost::make_shared<CrackFrontElement>(
      mField, setSingularCoordinates, crackFrontNodes, crackFrontNodesEdges,
      crackFrontElements, addSingularity);
`
which data in constructor about 

crackFrontNodes, crackFrontNodesEdges,   crackFrontElements

what is self-explanatory,

then you push OPs to this element in a standard way, and singularity will be automatically handled, with one exception, you have to calculate gradients in the right way, and this is done by pushing OP OpGetCrackFrontDataGradientAtGaussPts at the front which modifies base functions,
see

Regards,
Lukasz

Lukasz Kaczmraczyk

unread,
Nov 17, 2021, 7:12:54 AM11/17/21
to MoFEM Q&A
Ignatius, 

The way above is quite complex, for ALE, and is a simpler way, pointed by you. Look at
which is modifying materials node positions, i.e. geometry of element at the crack front, such that it will generate singularity. That is good enough for the real problem. Then you use your elements as usual.

What setSingularElementMatrialPositions do, is simply sets MESH_NODE_POSITIOSNS such that the inverse of Jacobian is singular at crack front.

Regards,
Lukasz
Reply all
Reply to author
Forward
0 new messages