Curved (orthotropic) composite shell sections

Hello,
I hope someone can give me a good hint how to model composite tanks? I used quad shell elements for layers and the model follows this tank tutorial from FEAnalyst but replacing isotropic steel properties:

Nowadays, often composite layers are used for tanks. So, tried to create a [0, 90, +45, -45]s lay-up to get an idea what is possible using the Materials keywords:

*MATERIAL, NAME=composite
*ELASTIC, TYPE=ENGINEERING CONSTANTS
140000, 9000, 9000, 0.3, 0.3, 0.4, 5000, 5000
1500, 294
**
*ORIENTATION, NAME=OR1,SYSTEM=RECTANGULAR
1.0, 0.0, 0.0, 1.0, 0.0, 0.0
*ORIENTATION, NAME=OR2,SYSTEM=RECTANGULAR
1.0, 0.0, 0.0, 0.0, 1.0, 0.0
*ORIENTATION, NAME=OR3,SYSTEM=RECTANGULAR
1.0, 0.0, 0.0, 1.0, 1.0, 0.0
*ORIENTATION, NAME=OR4,SYSTEM=RECTANGULAR
1.0, 0.0, 0.0, -1.0, 1.0, 0.0
**
*SHELL SECTION, , COMPOSITE, Elset=Element_Set-1
4, , composite, OR1
4, , composite, OR2
4, , composite, OR3
4, , composite, OR4
4, , composite, OR4
4, , composite, OR3
4, , composite, OR2
4, , composite, OR1

The thickness has been set quite high to simply see what is going on. The thought process of the defined *orientation values is that a typical reinforcement is created with fibres in x which is then rotated in to a local coordinate system to create 0, 90, 45 and -45 degree orientations. I tried also without a local coordinate system but no luck either.

The problem is that the stress field should be symmetric inside the tank which it is clearly not.

The actual pmx file is here:

Would anyone have a good idea how to set-up this use case correctly? I have come across this code for Calculix but haven’t got it working for Prepomax yet, and I am not sure why it would be necessary:

The material properties should be aligned with the shell element coordinate systems (I hoped) but likely I am wrong.

Any suggestion how to get the material orientations of the orthotropic composite layers correctly set-up would be much appreciated!

This stress concentration seems to be caused by CalculiX’s limitation in handling the drilling DOF: Inconsistent result with CalculiX on a shell model of a plate in bending · Issue #64 · Dhondtguido/CalculiX · GitHub

Using symmetry with shell elements can lead to problems with CalculiX. It works only on flat surfaces perpendicular to the symmetry plane due to:

Thank you both.

Haven’t studied the issue in detail yet but understand that the symmetry boundary conditions for curved parts with shell elements may be the issue. So, I did simulate a full tank instead to eliminate this potential cause altogether but the same issue seems to appear. The stress field inside the cylindrical section of the tank should, I believe, be uniform but there are significant differences present. Could the problem lie somewhere else?

Here the file:

Shell_Gmsh inverts some shell faces if Mesh optimization is turned on. This is the face orientation after meshing.

If you disable it, this is fixed.

Results:

I am not sure how the orientation card works in the curved surfaces.

To get rid of the missing section element sets, you can create a dummy material and a dummy section and then move the User keywords after it in the editor, and it will overwrite the dummy ones.

As a side note, this model is underconstrained - there are no BCs at all. Even though it’s subjected to self-equilibrating pressure load, it’s better to constrain it (e.g. using the 3-2-1 method).

Also, if you want to avoid issues with CalculiX’s “fake” shell elements, you can either try the only real shell element available (as user element - keyword edits needed) in this solver or just switch to solids. Sometimes layers of hexahedral and wedge elements are a better option than shells in CalculiX.

1 Like

Thank you again Matej, Jakub, for your help and suggestions!

Not constraining the tank was an oversight on my part. Have done so now.

The issue with the flipped element faces is a good call too. I wasn’t aware of this happening but turned optimisation off now as well. As the lay-up was symmetric, I would have thought that this should not have a big influence, if any, in this case though.

Also many thanks of pointing out how to get rid of the missing element set issue. Not a problem but it was a nuisance. Noticed that the keyword editor does not allow removal of previous keywords. Maybe an option to be added at some point to make it look better but leaving previous keywords blank seems to do the trick.

To further simplify the model, I have only used 0 deg orthotropic plies now and the issue is still there.

For anyone interested, this is the pmx file:

I would think that this has to do with the orientations not assigned as hoped to the elements. I’ll try to play a bit more with the orientation keyword. The Calculix Python code linked above suggested element sets for each orientation around a curved surface. I’ll try this out and let you know the results. I believe that other FEA solvers have an option to show the element orientation vectors or local coordinate system? Maybe something to add here as well?

Lastly, thank you for the suggestion of using layers of hexahedral and wedge elements. I will try this too. I’ll get back on how I’m getting on.

I have played with the *orientation keyword and yes, my initial understanding was not correct and yes, the element orientation was one of the issues that the simulations did not look correct. The correct use to define vectors a and b for *orientation is given here, and personally find the description not very easy to understand at first: *ORIENTATION

Using this, element sets are grouped together with same orientations for which then the material is assigned with the keywords. As an example, for a set of eight 0 degree plies of an orthotropic material, results now look much more sensible. The stress field is much more homogenous as one would expect.

As I’m still using shell elements and symmetries, the inaccuracies are likely from the “drilling” problem you two mentioned above and I will look closer at it again.

Here is the set-up file in case of interest:

Work in progress…

As a side node, I did have a lot of crashes of Prepomax though, using v2.2.9 def. These crashes typically occur when I try to click on Model → Edit Calculix keywords in the FE tab. It is repeatable, especially after running the simulation. I look at the results and then try to look at the keywords again which causes the software to crash (just turns off) every single time. Maybe something to try if others are getting the same behaviour?

Can you prepare a test .pmx file?

In the middle of the form there are three buttons: Up, Down and Delete :slight_smile:

Yes, this is a missing feature.

Set up this models is difficult wthout orientations and their visualization.
I think it could be interesting to use documented benchmarks. You will be able to compare if your setup/result is right or not and could be used as reference for other users.

Mr.Reddy has some good examples with their exact solution.


Book

Mechanics of Laminated Composite Plates and Shells

Theory and Analysis, Second Edition
By J. N. Reddy

@Matej,
Many thanks for your comments. Noticed now the up, down and delete button. Completely overlooked this :s

The test file is linked in the post above which causes my Prepomax versions to crash “test_orient_ab.pmx”. You may remember that my machine had issues with missing dlls. It may or may not be related to this?

@Anys, many thanks for the reference. I’ll have a look at this.

probabaly it can be starts by drop all complexity of anisotropic shell i.e use simple elastic isotropic before going further in benchmark, shell edge restraint needed to apply at local coordinate system.

I have been trying the to convert the tank shell into C3D20 solid elements, which are described as “an excellent element for linear elastic calculations” by the Calculix manual.

I understand from some research and the comments above, that the initial set-up of defining S8R shell elements (used in posts above) would be converted anyway to C3D20 elements.

The solid elements are created using this file for which then a Caclulix inp file is exported and the individual element orientations determined and put back into the file or added to the keyword manager in Prepomax:

When running the simulation with the same conditions as above (same geometry, same number and thicknesses, same material etc), I am getting this stress field which looks much more reasonable (qualitatively)

There are not more artificial stress concentrations at the boundaries. I would think this is the way forward. The simulation file is here if of interest to anyone:

As a next step, I would like to assign different material properties for each ply but noticed that the “Thicken Shell Mesh” option only creates a single solid part and no element sets for the layers created. Would there be an easy way to get each layer as an element set or as individual solids? This would make it much easier to process element orientations and assign material properties to individual layers.

Many thanks, wouldn’t have made this progress without the community and, of course, the creators of Prepomax.

I also still need to get my head around how the material properties are actually assigned to the elements. I guess the element orientation can be further updated / oriented to reflect the ply orientation or different materials with rotated properties could be defined. Not sure what is best / easiest at the moment.

@synt, I’m interested in orthotropic materials only and confident that isotropic materials are well handled as shown in the many tutorials from @FEAnalyst. The tricky bit is how to handle non-isotropic materials :wink:

1 Like

@frank many tutorials and articles are bit different to my understanding :wink: but some discussion of problem in shell symmetric boundary condition in CalculiX forums and testing personally gave me some insight. Isotropic material is only first step to make sure the boundary condition of curved shell or non-aligned to default global axes was assigned properly or not.

For a slightly coarser mesh, these are the element orientation vectors. I would think that these should all need to point in the same direction for this model to assign the correct material properties?..

Having the a, b vectors for the local coordinate system aligned consistently, probably to be expected, has a significant influence on the results.

Next, boundary conditions and individual layer definitions.

regarding local axes orientation of shell element and anisotropic material, i’m not sure is it mandatory or not since shell face normal axes already know in CalculiX during expansion. As comparison, external software like SAP2000 generated internally of shell element local axes (based on element nodes order and coordinates) but it still can modify later to overrides.

Are you sure about this? It was my first assumption too but results were not correct. As linked above, others also state on the Calculix forum that the local element coordinate system needs to be defined when handling curved parts. This is also my understanding when using Abaqus; at least about 15 year’ish ago, one had to specify the element normals. Other composite pre-processors such as TexGen provide meshes with the surface normals already specified.
https://texgen.sourceforge.io/index.php/Main_Page

Nevertheless, very curious how to improve the models to get it right, so many thanks for your input.

Did you try simplified model of anisotropic plates with rectangular shapes in rotated position? curved shell edge is bit different in CalculiX, improperly set of boundary condition can make over-constrained.

as previously noticed, i’m not sure. I mean default local axes should be generated internally based on shell element node order and coordinates as another FE does. When the condition is not as expected, so there’s missing feature in CalculiX and preprocessor may fill the gaps.

Flat plates are not an issue as the global and local coordinate systems are the same. Curved structures are the ones which need attention and , as far as i can tell, this is not done automatically.

Anisotropic is a step too far for what i need. Orthotropic is what is required for composites. For isotropic materials, the element orientation would not matter either as properties are independent of orientation and not of interest to myself; but agree it can help to get the bc right.