I have the element stiffness matrix for a thin "kirchhoff" plate. The plate is 3 [m] x 5 [m] and is simply supported on all edges. It's thickness is 0,2 [m]. On the plate there acts a constant load p = 5 [kN/m²]. For mu = 0,2 and E = 30000 [MPa] the displacement in the midpoint equals 0,168 [mm].

What's the most efficient or quickest way and how to implement or code the assembly of finite elements of 0,5 [m] x 0,5 [m] for this plate and get the global stiffness matrix, the results as the nodal displacement vector and the nodal force vector?

Hints are appreciated. Thanks.

enter image description here enter image description here enter image description here enter image description here enter image description here

Same question on Engineering stackexchange

Same question on stackoverflow

EDIT: If somebody knows an open source free code or implementation for this very specific program written in Java, C++ or even in VBA, then this would be an answer for the question too!

EDIT: I found here a code that should work fine. How difficult is it to translate this code into another procedural programming language? How much pain is involved?

  • 1
    $\begingroup$ You have a mesh with 6x10 elements and you worry about efficiency of your code? That's such a small problem that you're not even going to be able to measure the time it takes to assemble the matrix... $\endgroup$ Sep 9, 2020 at 15:21
  • $\begingroup$ @WolfgangBangerth I'm not worried about the efficiency of my code, which still hasn't been born or brought to life yet, but I'm worried about a simple or a straight forward way of bringing the code into existence. A code that will do the job of finding the nodal displacements and forces... And yes, first I need to create a code that does the job for 6x10 elements and later for more (quadratic/square) elements... $\endgroup$ Sep 9, 2020 at 15:35
  • 1
    $\begingroup$ Ah, I see. Have you looked at the corresponding lines in other codes? There are of course hundreds, maybe thousands of other codes that do exactly this. You might find yourself inspired by looking at what others have done; in fact, you might find yourself not actually wanting to re-invent the wheel given that others have done what you want to do, and have done it in greater generality and more features. $\endgroup$ Sep 9, 2020 at 17:32
  • $\begingroup$ @WolfgangBangerth ok, where to look for free (just basic kind of) source code that does this? $\endgroup$ Sep 9, 2020 at 18:01
  • 1
    $\begingroup$ I think you need to do a bit of work yourself, not hope that everything is spoon fed to you. We've pointed to numerous resources. Have you looked at them? It's not like computer languages are so vastly different that you can't get an idea of how to do things even from looking at a programming language you're not familiar with. $\endgroup$ Sep 9, 2020 at 22:12

1 Answer 1


What you are looking for is a Discrete Kirchhoff Quadrilateral plate or DKQ plate. Seems you are looking for a very straight forward formulation that simply give you the global stiffness matrix. But i'm afraid that most codes I've seen are dealing with integration and transformation. You can search for DKQ source code. There are documents for java which would be very helpful if you want to code it yourself. There are also C++ implementations of such element which you could find on the web, just google it. The codes i know are mostly using Gauss integration for calculating local stiffness matrix then convert it to global stiffness matrix. However this is the Java document I mentioned above:

  • "Development of Membrane, Plate and Flat Shell Elements in Java" thesis by Kaushalkumar Kansara (available here)

There is also a C#.NET code which worth a check (the code is not tested yet) available here

  • $\begingroup$ This is nice, thank you. I just had a look at the master thesis. I'll just ignore the c#-code for the moment, for I've had no experience programming in c# yet and it's not sure, if this code works... In the master thesis (I like java much better) I see bits of code everywhere, I will see how far I can come with collecting the pieces of code thrown everywhere throughout this thesis and I will get back to you... I'll be looking for the implementation of the DKQ plate element or the Discrete Kirchhoff Quadrilateral plate element... $\endgroup$ Sep 10, 2020 at 10:10
  • $\begingroup$ I'm checking the public class DKQElement which should extend the class Element, but there's no keyword "extends" in the class head definition... As a method of the class DKQElement there's a method called DKQElementKMatrix (), which calculates the element stiffness matrix for DKQ element.... It's all on element-level... I already have a stiffness matrix... This seems to be tedious putting all the pieces together... Is there a free code out there, which just solves this very specific problem? Like: take the mesh dimensions and just give the nodal forces and displacements?... $\endgroup$ Sep 10, 2020 at 10:16
  • $\begingroup$ In this thesis by Kaushalkumar Kansara there's actually no explicit code given to solve the problem. Instead there are lots of theoretical background information and how the functions should be named!... $\endgroup$ Sep 11, 2020 at 15:14
  • 1
    $\begingroup$ you still working on this? you can message on github issues section of C# project to know how it works... $\endgroup$
    – epsi1on
    Jun 16, 2021 at 13:51

Your Answer

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

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