Hi all,
I would like to share a simple python script that I recently wrote to model a variable stiffness / steered fibre composite panel in compression with CalculiX - in case this is of interest to the community.
I would also be interested to hear if anyone else has attempted to manually expand composite shell models - maybe using other tools such as gmesh?
Here is an overview of what I did:
Variable stiffness composites are laminated composites where both the steering angle and thickness of each ply can change as function of location on the ply, manufactured using AFP / ATL or in my case RTS technology.
The model is parametric, so you can edit the number of plies and steering angles at control points in the PARAMS. It currently assumes RTS manufacturing technology where the local ply thickness is linked to the local sheering angle. As a result, I cannot use the normal composite shell material definition in CalculiX. Instead, the script has these main steps (in the main() function):
- Create a 2D mesh of the plate using CGX - this could be imported from another process
- Import the 2D mesh into python and calculate the element and node normals (set to z-direction at the moment for the flat panel, but could be calculated from the 2D mesh or maybe even imported??)
- Offset the 2D mesh nodes by the local thickness distribution for each laminate substack
- Create new elements for each substack
- Define the material stiffness properties for each substack (multiple properties per substack depending on the local shearing angle and baseline lamina stiffness) from classical laminate theory
- Apply boundary conditions and calculate the model mass (optimisation objective)
- Write CCX input files, execute the analysis and read the buckling factor outputs
The model can grow quite quickly in size, since we create a new C3D20R element for each new ply or substack (where you can bunch similar +/- plies together) through the thickness.
The stand-alone python script is on Github: compute.py
And this tutorial covers the design optimisation aspect using the dapta app (disclaimer: I work for Dapta Ltd): Example of a variable stiffness plate in compression