As the title says, I am trying to code in FEM a plate structure that either has a hole in one of the layers or one of the layers is made of patches of plates, rather than one whole plate. However, while I have a slight idea of how to implement this, I'm really not very sure and I would like some questions answered before I start trudging through my code haphazardly.

From what I understand of FEM, I understand that in order to represent a hole or a patch (which is basically a plate with a hole AROUND it) is to change the connectivity matrix for a given layer. However, I don't quite get how I would go about doing that. For example, if I had a 6x6 element plate structure and one of the layers of that plate was to have a 2x2 element hole in the middle, do I simply remove those elements from my connectivity vector? I just have a feeling that would cause some of my matrix dimensions to not match and throw the whole thing into chaos.

Additionally, what if the location/dimensions of my hole or plate didn't align perfectly with the coordinates of my elements? how do I implement that? Would I have to write a completely new coordinate system for my nodes?

I'm sorry if my questions seem either too obvious or too vague. I just wanted to know if I'm heading in the right direction before investing in any major change to my code. If any of you could point me in the right direction or provide some good practice/sample pieces of code that would be great. I'm learning FEM basically through trial and error.

  • $\begingroup$ I think that the laminate information in plates is normally included in the constitutive tensor. Thus, I don't think that you can easily just add a hole in one of the layers. $\endgroup$
    – nicoguaro
    Commented Dec 14, 2017 at 16:39
  • $\begingroup$ You are solving 2d plane stress problem, or you have bending and torsion? The best solution for this type of problems is solid-shell elements. I did some work on this; we solved example with perforated shells, see doi.org/10.5281/zenodo.556472. We have as well cases with laminated plates too if you are interested. $\endgroup$
    – likask
    Commented Dec 14, 2017 at 17:54
  • $\begingroup$ Thank you for the ppt! My structure right now is a plate with bending and torsion. I am using 9 node square element. But I guess my question boils down to when you made your FEM code for the perforated shell, how was it different from just a normal shell? Did you have to completely restructure your code or can you change the geometry by changing a couple of matrices? $\endgroup$ Commented Dec 15, 2017 at 3:55
  • $\begingroup$ What plate theory you are using, the Kirchhoff–Love theory of plates, the Reissner-Mindlin theory? I understand that you have rotational DOFs. You can not simply make layers from such plates, you rather consider laminate at in physical equation? Is this what you are doing. $\endgroup$
    – likask
    Commented Dec 15, 2017 at 8:27
  • $\begingroup$ About the code; Finite element codes in general work with unstructured meshes, and assembly of geometry with holes is no different than any other complex geometry. Usually, that is managed by general procedures, and nothing special has to be done to include voids. $\endgroup$
    – likask
    Commented Dec 15, 2017 at 8:33

1 Answer 1


The strength of the FE method is its ability to represent complex geometries. That way is it preferred method by engineers. Thus representation of holes or other geometrical features is for it natural.

In general, to solve your problem, you have to have a global enumeration of nodes. Then you iterate over finite elements, calculate local stiffness matrix and assemble it global stiffness matrix, by copying block of DOFs adjacent to nodes, one by one, into the global matrix using global nodal indexes to find the right place. In your case, you have 6-DOFs at the node, i.e. three displacements and three rotations. You can find many books about that, for example, Zienkewicz and Taylor book or look at internet resources https://www.colorado.edu/engineering/cas/courses.d/AFEM.d/

However, you raise two issues which are problematic, i.e. laminate plate (1) and non-conforming meshes (2).

1) For Kirchoff-Love or Reissner-Mindlin you can consider laminate plate by modifying the stiffness equation and appropriate integration through the thickness. I refer you to a vast number of papers in this area. However, you can not stack Kirchoff-Love or Reissner-Mindlin FE element on top of each other; you will not capture adequately bending stiffness. If you like that, you need to modify formulation. I strongly believe the best solution is with using solid-shell elements.

2) You consider the case when nodes on subsequent layers do not much, in that case, you have non-conforming mesh. In principle, you can not do that, unless you have a special methodology to resolve those type of problems. You need to look at the mortar method or Nitsche method which both which provide a solution for non-conforming meshes.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.