Jacobian of a Shell Element

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts
  • christian.moyer
    Junior Member
    • Aug 2011
    • 21

    Jacobian of a Shell Element

    Hi,

    Is there a reference or formula for the Jacobian calculation? I have a shell mesh, and I'm trying to reshape the shell by modifying elements with negative Jacobians. It would be handy to be able to calc. the negative Jacobian on my own, and modify the mesh locally.

    Ie, given four points (xi,yi,zi, i=1,4) that define a shell element, and a shell thickness t, how does FEBio calculate the Jacobian? Is it typically done at every Gauss point?

    Thanks,
    -Christian
  • maas
    Lead Code Developer
    • Nov 2007
    • 3400

    #2
    Hi Christian,

    I suggest checking the source code (available from the website) to see how FEBio does it. The relevant code is in the file FEShellDomain.cpp. The function FEShellDomain::defgrad() calculates the deformation gradient at an integration point of a shell element and returns the determinant (i.e. the jacobian).

    Note that this function does not give the whole picture. To reproduce the code outside FEBio, you'll also need to define the shape functions and their derivatives of the shell element as well as the normals at the shell nodes. The latter is not trivial to compute since you'll have to calculate the node normals by averaging the facet normals of the surrounding shells.

    But maybe we can solve this problem without having to reproduce FEBio code. Are your elements inverting before the first time step?

    Steve.
    Department of Bioengineering, University of Utah
    Scientific Computing and Imaging institute, University of Utah

    Comment

    • christian.moyer
      Junior Member
      • Aug 2011
      • 21

      #3
      Hi Steve,

      Thanks, I think I can track down each of those components and recreating the shape functions should be straightforward.

      The elements are inverted prior to the first time step. I'm operating on the mesh prior to running FEBio, trying to refine the mesh at locations where a negative Jacobian has shown up. My problem is that I can't know for sure the location of each of the inverted elements without starting up FEBio. It would be really handy to run an external diagnostic on the mesh, calc the Jacobian for each element, and repair any trouble locations, before starting FEBio. That's what I was going for with the question.

      -Christian

      Comment

      • maas
        Lead Code Developer
        • Nov 2007
        • 3400

        #4
        Have you checked out the latest PreView version? It has a Mesh Inspector tool which allows you to visualize the jacobians. I haven't used it to track down initially inverted shells, but give it a try and see if that tool can be of any help. If not, I'd be more than happy to modify for your needs.

        Cheers,

        Steve.
        Department of Bioengineering, University of Utah
        Scientific Computing and Imaging institute, University of Utah

        Comment

        • christian.moyer
          Junior Member
          • Aug 2011
          • 21

          #5
          Hi Steve,

          I check out PreView's capabilities. It works well for detecting if there are problem elements (negative Jacobians), but what I really need is a way to modify the problem elements in real time (refine the mesh locally at those locations). I checked through the source code and recreated the Jacobian calculation in MATLAB. It seems like a feasible solution.

          One question: How exactly are node normals calculated for shell elements?

          A side note: I think there is an error in the Gaussian Quadrature setup for shell elements. It looks like you guys chose a 2x2x3 grid (3 points through the thickness of the shell). However, the 3 gauss points in the through shell thickness direction should be weighted {5/9,8/9,5/9} and they're currently weighted {5/9,5/9,5/9}. This is just for quad shell elements.

          Comment

          Working...
          X
          😀
          😂
          🥰
          😘
          🤢
          😎
          😞
          😡
          👍
          👎