Creating FEM models for CalculiX

520 views
Skip to first unread message

Peter Hauschild

unread,
Jan 16, 2024, 12:31:12 PM1/16/24
to OpenVSP
Hi !
I'm trying to do an analysis of a wing with OpenVSP using Calculix as the FEM solver.
I have some questions about OpenVSP setup tab.

1. What does exactly the dynamic pressure slider do? Is it multiplying the pressure values distributed on the surface of the wing?

2. After solving the generated CalculiX input, the displacements are negligible in the static as they are in a magnitudes of e-8 ~ e-6 on a 10m long wing without any internal structure. Also these are in random points of the wing, which seem a bit strange to me.

3. How can i apply a fixed boundary condition to a wing? So in my case i'd like to give a fixed bc to the surface of the wing (surface where it should connect to the fusealge). When i check the results in CalculiX this surface is has displacements, which should not happen.

Any solution or answer is greatly appriciated!

cean wang

unread,
Jan 16, 2024, 9:28:31 PM1/16/24
to ope...@googlegroups.com
1. It is a scale factor of the Cp.

2. I have done a calculation of a wing. Nearly no displacement. Have to add fixed constraints in the central plane.

3. My solver is nastran-95. I generate the case file by my self. I know the node number where I want to apply a fixed constraint. 
I think prepromax can check the node number and it can edit the inp file. It can add constraint to model, but not sure if it can do that to a mesh.

--
You received this message because you are subscribed to the Google Groups "OpenVSP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openvsp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openvsp/0c5b8925-44b8-4de1-8545-2d9a44012da0n%40googlegroups.com.

skyc...@gmail.com

unread,
Jan 18, 2024, 1:33:22 PM1/18/24
to OpenVSP
As Cean said, the dynamic pressure slider is to dimensionalize the pressure coefficients into psi, psf, Pa, etc.  These pressures are then applied to the surface of the FEM for analysis.  For question 2, I'd suggest checking to make sure you're using consistent units for length and material properties.  For example, if you are using meters, make sure you're outputting the material properties in the correct units using the "FEA Output Unit System" on the  "Structure" tab in the FEA Structures dialog.  Also, if you didn't move the slider for the dynamic pressure and it's at 0 or a very small number, your pressure distribution will be nil on the FEM. 

Applying a fixed BC to the root of the wing can be done using the "BC's" tab in the FEA Structures dialog.  You can apply to a part (like a fixed point), or using a filtering system on x/y/z.  For a root, I'd use the filter and try to just capture the nodes at the centerline or wing/body connection. 

One caution, the wing skin surface part must be named "Skin" for the pressures to be loaded onto it.  You can use Graphix to view the loads and make sure they're being loaded onto the skin.  There's a bug right now where it only loads pressures to something called Skin, so if you add rectangles on the surface, they won't have loads applied to them. 

For an overview of the process, see Rob's Structures primer from the 2023 OpenVSP Workshop (available online), and for tips and tricks, see my (Bryan Sandoz) slides from the same workshop.  Hopefully those will help, because with the current state, there are some workarounds that you have to do to get things to work as you want them to. 

skyc...@gmail.com

unread,
Jan 18, 2024, 1:35:08 PM1/18/24
to OpenVSP
Best of luck, and let us know if you run into any more snags!

Peter Hauschild

unread,
Jan 23, 2024, 10:33:54 AM1/23/24
to OpenVSP
Thank you for your answers. I went through both slides, i got some useful information out of them. Unfortunately I could not create a useful data, using the Aero-Structural model.
For the simplicity i'm just testing a simple default wing geometry, with a 5 degree angle of attack. I've set every value, to SI and made two fixed point on the symmetry plane to create fixed boundary conditions.
I noticed that, the cp from VSPAero and the applied pressure from CGX are inverse. I attached a picture ( https://ibb.co/JdR0H52 ) from the bottom side of the wing, where the cp is higher but i got a somewhat high but negative pressure applied near the leading edge. Is this because the pressure acts opposite to the surface normal, so that "negative pressure" is in negative z direction, thus making it + z direction? 

My second question is about the results. I increased the dynamic pressure slider to 1000 and still have the same results as before. ( https://ibb.co/LQHxnMk ) For the solution, i just copied the command line from the GUI to the CMD when the "Solve Structure" button is clicked.

Currently i'm using VSP 3.35.3, but in the 3.36.0 version i have the same problem.

skyc...@gmail.com

unread,
Jan 23, 2024, 7:01:54 PM1/23/24
to OpenVSP
Hmm, I will try and replicate

skyc...@gmail.com

unread,
Jan 23, 2024, 7:45:08 PM1/23/24
to OpenVSP
I may be wrong, but I think the surface normals for the FEM are pointed out away from the FEM.  I'm not sure how to verify this with Calculix, I know how to do it with Femap but don't have access to Femap right now.  In that case, it would be normal to get P values that are the opposite sign as the Cp values. 

Peter Hauschild

unread,
Jan 24, 2024, 2:32:13 AM1/24/24
to OpenVSP
Thank you, that's what i thought also.
I realized i haven't asked my second question. So when i ran my structural analysis, the result was just some non-symmetrical spots of high stress location. I think it should be somewhat symmetrical results, which corresponds well with the applied pressures. For this I just run the "ccx C:\\location to file\\wing.static.inp" from CMD. Do you have any idea or advice how to solve this error?

skyc...@gmail.com

unread,
Jan 25, 2024, 12:01:47 AM1/25/24
to OpenVSP
Hi Peter,

I'm walking through the same process you are, starting with just the basic wing geometry.  A couple things:  The default wing is a symmetric airfoil (0010), so it won't generate a ton of lift at low alphas.  I changed it to a NACA 2214 by changing the T/C and camber.  Also, you will need to refine the U and W divisions to get a decent mesh density.  Check out Brandon's slide deck for that here

Screenshot 2024-01-24 075259.png

When I run this, I now get a decent spanwise distribution in the Results Manager at Alpha = 5 deg:

Screenshot 2024-01-24 075538.png

And a decent pressure distribution:

Screenshot 2024-01-24 075109.png


Since I'm just assuming this plane is in ft (18 ft span), I need to tell the Structures section that:
Screenshot 2024-01-24 075736.png

This should convert the included material properties to the appropriate units.  If you input your own material property, you will need to tell it what the units are and it will convert them to the output unit system.  Default shell is 6061-T6 alu, which is fine for this example (I think skins are usually 2000 series or 7075 though?). 

Next we need to set a reasonable dimension for the skin thickness for the DefaultShell Property that's currently being used by the skin.  I set it to 0.063 inches thick (an available thickness on Aircraft Spruce), which it converts to meters.   

Depending on the thickness you set for the wing, I'd recommend at least putting in a spar with some reasonable spar caps.  If the deformations are too large Calculix might be failing the analysis due to large deformation?  Not sure if it even lets you know that or not.  I changed DefaultBeam to be a rectangle cross section 3in by 0.25 in.  I added a spar and then made sure to create beam elements.

I then add BC's at the centerline saying to fix tx,ty,tz (1,2,3) for any node with y values between -0.001 and 0.001. 

Check the mesh by intersecting and meshing it.  You can see the beam elements as the blue lines:

Screenshot 2024-01-24 081721.png

Then check the internal spar mesh by turning off the skin:
Screenshot 2024-01-24 081737.png

Not great but at least good enough for a demo. 

I export the mesh in Aero Structures (or Structures) and then visualize it in CGX:

Screenshot 2024-01-24 082030.png

Note that in Calculix, you can't see the expanded 3D shape of the beam elements until you run a solution. 

I now need to calculate dynamic pressure in SI units for the wing.  Let's say 45 m/s, 1.225 kg/m^3 (sea level).  q = ~1240 Pa
I apply those loads and wait for a while for it to interpolate the VSPAero mesh onto the Calculix mesh. 

I've got the loads, and am now comparing them to the original CPs.  It's a bit tricky because the scales are different in each program (yellow is 0 in VSPAero and green is 0 in CCX).  Not sure if they are exactly right, but will proceed to see if we get legit deformations.

Screenshot 2024-01-24 085518.png

Note, at this point the beams failed because my names were too long.  Went back and changed the component name in Structures to wing and the parts to S and P from Skin and Spar).  Then it stopped loading pressures.  Took me a while to remember that it only loads pressures to "Skin" part.  Whoops!

Now I've got the pressures loaded (so it looks like the above plot) I ran CCX.  Had to do some work to remove spaces from the filepath because it didn't like that, but was able to get it to run. 

When I ran it with the baseline mesh settings on the base wing, I got some negative jacobian errors on the mesh.  (Can also do view bad elements in CCX).  I switched the "convert to quads" off just to push through, but you'd need to assess what elements are failing and adjust mesh settings until you get no bad elements.

....okay, I started this effort this morning but have been running into hiccups throughout the day as I work on it sporatically.  I'll have to continue later.  Suffice to say, had some spurious elements that I had to make go away by changing the location of my spar so the mesher didn't create erroneous elements.  (Rob, I think this is part of the centerline/junction issue with the bounding box).

Will add more later. 

skyc...@gmail.com

unread,
Sep 18, 2024, 11:09:57 PM9/18/24
to OpenVSP
Ok, it's been a lot later, and a lot has changed.  One thing to note, I still haven't gotten to the bottom of the negative jacobians, but I suspect it is the beam element formulation in Calculix.  I have been focusing more on the OpenVSP->PyNastran->Mystran->PyNastran workflow. 

One question I have for Rob, for the apply loads dynamic pressure, should I be using the consistent units with the calculix file (the structures output units), or should I be using the consistent units with the VSPAero/OpenVSP?

Rob McDonald

unread,
Sep 19, 2024, 12:19:12 AM9/19/24
to ope...@googlegroups.com
I just checked the code.  I don't do anything with that dynamic pressure (in terms of conversion).  I just send it on to vsploads -- which works in the FEM units (I think).

However, the VSPAERO model does not get scaled from the OpenVSP units.

So, if you have your OpenVSP in feet, but you set up your FEM to run in inches, you would need your dynamic pressure to be in inches.  The pressure from VSPAERO is in coefficient form -- which is why you need the dynamic pressure.  So, it'll dimensionalize to load just fine.

However, I don't know if the vsploads interpolation of the pressure from VSPAERO mesh to FEA mesh is smart enough to work from feet to inches.

I recommend you set up a simple test case to try to find out.  When in doubt, with this conversion utility (vsploads), use OpenVSP and FEM in the same units.

Rob


--
You received this message because you are subscribed to the Google Groups "OpenVSP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openvsp+u...@googlegroups.com.

skyc...@gmail.com

unread,
Sep 19, 2024, 12:36:13 AM9/19/24
to OpenVSP
Thanks Rob,

I think it's doing the interpolation between feet and inches correctly, because I've got a swept wing and if it didn't, I'm guessing I'd see the pressure distribution not following the contour of the wing very well?

I'm getting surface pressures that are between -1 and +0.5 psi, which I think means I did the right thing with the dynamic pressure, but I'm getting super low reaction forces from the constraints, so somehow I'm not summing things up correctly or maybe Mystran isn't doing the pressure loads correctly or something.  I'll look into it more. 

skyc...@gmail.com

unread,
Sep 19, 2024, 2:54:44 PM9/19/24
to OpenVSP
I've confirmed that you need to use consistent units in the VSPAero run.  Below you can see the "imprint" of the ft-units wing onto the leading edge of the inch-units FEM.

Consistent units.png

Rob McDonald

unread,
Sep 19, 2024, 3:01:03 PM9/19/24
to ope...@googlegroups.com
How adorable.

Thanks for verifying.

Rob


skyc...@gmail.com

unread,
Sep 19, 2024, 3:05:14 PM9/19/24
to OpenVSP
I missed this earlier because I forgot to switch my original design to inches units in the FEM, so everything was working because everything was in feet. 

skyc...@gmail.com

unread,
Sep 19, 2024, 6:25:14 PM9/19/24
to OpenVSP
A related issue that I've flagged in the past has now been explained by this as well.  Rob, I remember complaining to you that if I didn't use consistent units, the mesh wouldn't show up in the structures GUI.  It is showing up, just translated way off screen due to the unit difference.  A simple "fit to view" brings it back in scope. 

skyc...@gmail.com

unread,
Mar 2, 2025, 1:56:32 PMMar 2
to OpenVSP
Hello again,

Working through a basic aircraft layout now, and am trying to figure out where something is going wrong with the vsploads.  I've got an airplane in ft units, and I'm inputting 60 psf as my dynamic pressure in the Aero Structure Coupled Analysis.  When I run the VLM in VSPAero, I get the following deltaCP values:
 deltaCP2.png

First, am I to read the peak delta CP as -4.688, or as -17.98? 

Second, when I use the vsploads tool to apply these to the structure, I get the following surface pressures:

deltaP.png

This appears to show the positive pressure applied to the top surface, negative to the lower surface, which is the opposite of my intent.  Also, if I do delta CP of ~4 x 60 psf = 240 psf, applying half to each surface should give me ~120 psf, not 340?.  I will check my surface normal directions to make sure they make sense, but need to figure out how to do that with PyNastran. 

Let me know if anyone has any insights to this.  VSP model is attached.
Basic Test.vsp3

Rob McDonald

unread,
Mar 2, 2025, 3:43:41 PMMar 2
to ope...@googlegroups.com
The VSPAERO viewer range is not immediately obvious.

The -17.98 is the absolute minimum deltaCp observed in your model.  This will be at a very narrow strip along the leading edge of the wing or other lifting surface.  This is because the flow sees infinite acceleration around the leading edge of an infinitely thin surface.

You see the same thing when you look at the load distribution around a thin plate at angle of attack in thin airfoil theory.  I don't recall if the leading edge load goes truly infinite,or just majorly spikes, but it is anomalously huge.

The -4.688 is the average minus one standard deviation in deltaCp.  VSPAERO sets the limit in this way to keep the leading edge value from 'blowing out' the scale.

Under 'Options', 'Set Contour Levels', there is a window where you can manually override the color bar limits for the plot.

So, the minimum deltaCp is -18, but it applies to a very small region along the leading edge.  When that load is dimensionalized and interpolated onto the FEM mesh, the max/min observed pressure is ~340 psf.

Compare your first panel spacing in your VLM model to your FEM mesh resolution around the leading edge.  I suspect the finite element 'covers' a relatively large region of chord.  I don't know the exact details of how vsploads does the load transfer interpolation between meshes.

Rob



skyc...@gmail.com

unread,
Mar 2, 2025, 9:54:42 PMMar 2
to OpenVSP
Great, thanks for the explanation Rob!  Regarding the deltaCP, am I correct in assuming that half of the given deltaCP goes to the top surface (hopefully as a suction), and half goes to the bottom half?  So if I pick a color band that's 3 deltaCP, I can assume 1.5 goes to top and 1.5 goes to bottom?

Thanks!
Bryan

Rob McDonald

unread,
Mar 2, 2025, 10:37:14 PMMar 2
to ope...@googlegroups.com
I believe it is something like that, but I'm not actually sure of the details of how it is implemented....

I did some searching in the code and found this...


Looks to me like half goes to each side.

Rob




Alan Teeder

unread,
Mar 3, 2025, 3:34:15 AMMar 3
to ope...@googlegroups.com

Most of a wing´s lift is produced by the "suction" over the top surface. This is several times higher than the lift produced by the lower surface.

Alan

skyc...@gmail.com

unread,
Apr 9, 2025, 11:52:15 PMApr 9
to OpenVSP
It is definitely a simplification.  I've heard from a loads DER who just places all the load on one surface (upper, or lower skin), so I'm guessing it's an acceptable approximation?  More often I'm pulling loads and applying them directly to the spar caps.  Again, a simplification, but one I think has been considered acceptable. 

skyc...@gmail.com

unread,
Sep 10, 2025, 11:12:39 AM (13 days ago) Sep 10
to OpenVSP
This is reopening a very old thread, but at the beginning of this thread I tried to show a simple example going from nothing to a FEM and running it..and I failed.  I have now been able to finally complete that process, and it's documented at our last OpenVSP workshop. See video here:  Demo video of FEA

You can see the other videos on structures here:  
Reply all
Reply to author
Forward
0 new messages