Modelling of composites with solid sections

Hello all,

I am wondering if it is possible to easily model composites in CalculiX using solid sections and hence elements (C3D8 or C3D20). I know that usually it is preferred to use shell sections and elements (S4 or S8), but I have used C3D8 elements in the past in Abaqus and has worked good.

Just to clarify, I do need to use solid elements due to mesh reasons and nature of the problem I am trying to solve.

For this, I would usually just define an orientation with rotation when defining the section of each ply/layer of the composite. In CalculiX I am defining the orientation and section cards as:

*Solid section, Elset=Ply_0, Material=Mat1, Orientation=OR1
*Orientation, Name=OR1
0, 0, 0, 0, 0, 1
3, 0.0

However, when trying that, I get the following error:

fatal error in ChvMananger_newObjectOfSizeNbytes(0x60171a090,-30827824)

I have tried defining the orientation before and after defining the section assignment card. I have tried other local axis of orientation and axis of rotation… but it does not work.

If anyone has any suggestions it would be very much appreciated :slight_smile: :slight_smile:

Many thanks in advance!
Mik

Following I include a inp file in which I define the orientation and Calculix returns the error mentioned…

**
** Heading +++++++++++++++++++++++++++++++++++++++++++++++++
**
** Nodes +++++++++++++++++++++++++++++++++++++++++++++++++++
**
*Node
1,0.0,0.0,0.0
2,70.0,0.0,0.0
3,70.0,25.0,0.0
4,0.0,25.0,0.0
5,70.0,0.0,225.0
6,0.0,0.0,225.0
7,70.0,25.0,225.0
8,0.0,25.0,225.0
9,35.0,0.0,0.0
10,70.0,12.5,0.0
11,35.0,25.0,0.0
12,0.0,12.5,0.0
13,70.0,0.0,112.5
14,35.0,0.0,225.0
15,0.0,0.0,112.5
16,70.0,25.0,112.5
17,70.0,12.5,225.0
18,0.0,25.0,112.5
19,35.0,25.0,225.0
20,0.0,12.5,225.0
21,35.0,12.5,0.0
22,35.0,0.0,112.5
23,70.0,12.5,112.5
24,35.0,25.0,112.5
25,0.0,12.5,112.5
26,35.0,12.5,225.0
27,35.0,12.5,112.5
28,70.0,0.0,250.0
29,0.0,0.0,250.0
30,70.0,25.0,250.0
31,0.0,25.0,250.0
32,70.0,0.0,237.5
33,35.0,0.0,250.0
34,0.0,0.0,237.5
35,70.0,25.0,237.5
36,70.0,12.5,250.0
37,0.0,25.0,237.5
38,35.0,25.0,250.0
39,0.0,12.5,250.0
40,35.0,0.0,237.5
41,70.0,12.5,237.5
42,35.0,25.0,237.5
43,0.0,12.5,237.5
44,35.0,12.5,250.0
45,35.0,12.5,237.5
46,70.0,0.0,275.0
47,0.0,0.0,275.0
48,70.0,25.0,275.0
49,0.0,25.0,275.0
50,70.0,0.0,262.5
51,35.0,0.0,275.0
52,0.0,0.0,262.5
53,70.0,25.0,262.5
54,70.0,12.5,275.0
55,0.0,25.0,262.5
56,35.0,25.0,275.0
57,0.0,12.5,275.0
58,35.0,0.0,262.5
59,70.0,12.5,262.5
60,35.0,25.0,262.5
61,0.0,12.5,262.5
62,35.0,12.5,275.0
63,35.0,12.5,262.5
64,70.0,0.0,500.0
65,0.0,0.0,500.0
66,70.0,25.0,500.0
67,0.0,25.0,500.0
68,70.0,0.0,387.5
69,35.0,0.0,500.0
70,0.0,0.0,387.5
71,70.0,25.0,387.5
72,70.0,12.5,500.0
73,0.0,25.0,387.5
74,35.0,25.0,500.0
75,0.0,12.5,500.0
76,35.0,0.0,387.5
77,70.0,12.5,387.5
78,35.0,25.0,387.5
79,0.0,12.5,387.5
80,35.0,12.5,500.0
81,35.0,12.5,387.5
82,140.0,0.0,0.0
83,140.0,25.0,0.0
84,140.0,0.0,225.0
85,140.0,25.0,225.0
86,105.0,0.0,0.0
87,140.0,12.5,0.0
88,105.0,25.0,0.0
89,140.0,0.0,112.5
90,105.0,0.0,225.0
91,140.0,25.0,112.5
92,140.0,12.5,225.0
93,105.0,25.0,225.0
94,105.0,12.5,0.0
95,105.0,0.0,112.5
96,140.0,12.5,112.5
97,105.0,25.0,112.5
98,105.0,12.5,225.0
99,105.0,12.5,112.5
100,140.0,0.0,250.0
101,140.0,25.0,250.0
102,140.0,0.0,237.5
103,105.0,0.0,250.0
104,140.0,25.0,237.5
105,140.0,12.5,250.0
106,105.0,25.0,250.0
107,105.0,0.0,237.5
108,140.0,12.5,237.5
109,105.0,25.0,237.5
110,105.0,12.5,250.0
111,105.0,12.5,237.5
112,140.0,0.0,275.0
113,140.0,25.0,275.0
114,140.0,0.0,262.5
115,105.0,0.0,275.0
116,140.0,25.0,262.5
117,140.0,12.5,275.0
118,105.0,25.0,275.0
119,105.0,0.0,262.5
120,140.0,12.5,262.5
121,105.0,25.0,262.5
122,105.0,12.5,275.0
123,105.0,12.5,262.5
124,140.0,0.0,500.0
125,140.0,25.0,500.0
126,140.0,0.0,387.5
127,105.0,0.0,500.0
128,140.0,25.0,387.5
129,140.0,12.5,500.0
130,105.0,25.0,500.0
131,105.0,0.0,387.5
132,140.0,12.5,387.5
133,105.0,25.0,387.5
134,105.0,12.5,500.0
135,105.0,12.5,387.5
136,210.0,0.0,0.0
137,210.0,25.0,0.0
138,210.0,0.0,225.0
139,210.0,25.0,225.0
140,175.0,0.0,0.0
141,210.0,12.5,0.0
142,175.0,25.0,0.0
143,210.0,0.0,112.5
144,175.0,0.0,225.0
145,210.0,25.0,112.5
146,210.0,12.5,225.0
147,175.0,25.0,225.0
148,175.0,12.5,0.0
149,175.0,0.0,112.5
150,210.0,12.5,112.5
151,175.0,25.0,112.5
152,175.0,12.5,225.0
153,175.0,12.5,112.5
154,210.0,0.0,250.0
155,210.0,25.0,250.0
156,210.0,0.0,237.5
157,175.0,0.0,250.0
158,210.0,25.0,237.5
159,210.0,12.5,250.0
160,175.0,25.0,250.0
161,175.0,0.0,237.5
162,210.0,12.5,237.5
163,175.0,25.0,237.5
164,175.0,12.5,250.0
165,175.0,12.5,237.5
166,210.0,0.0,275.0
167,210.0,25.0,275.0
168,210.0,0.0,262.5
169,175.0,0.0,275.0
170,210.0,25.0,262.5
171,210.0,12.5,275.0
172,175.0,25.0,275.0
173,175.0,0.0,262.5
174,210.0,12.5,262.5
175,175.0,25.0,262.5
176,175.0,12.5,275.0
177,175.0,12.5,262.5
178,210.0,0.0,500.0
179,210.0,25.0,500.0
180,210.0,0.0,387.5
181,175.0,0.0,500.0
182,210.0,25.0,387.5
183,210.0,12.5,500.0
184,175.0,25.0,500.0
185,175.0,0.0,387.5
186,210.0,12.5,387.5
187,175.0,25.0,387.5
188,175.0,12.5,500.0
189,175.0,12.5,387.5
190, 105.0, 12.5, 505.0
**
** Elements ++++++++++++++++++++++++++++++++++++++++++++++++
**
*Element, type=C3D8
1, 1, 9, 21, 12, 15, 22, 27, 25
2, 15, 22, 27, 25, 6, 14, 26, 20
3, 12, 21, 11, 4, 25, 27, 24, 18
4, 25, 27, 24, 18, 20, 26, 19, 8
5, 9, 2, 10, 21, 22, 13, 23, 27
6, 22, 13, 23, 27, 14, 5, 17, 26
7, 21, 10, 3, 11, 27, 23, 16, 24
8, 27, 23, 16, 24, 26, 17, 7, 19
9, 6, 14, 26, 20, 34, 40, 45, 43
10, 34, 40, 45, 43, 29, 33, 44, 39
11, 20, 26, 19, 8, 43, 45, 42, 37
12, 43, 45, 42, 37, 39, 44, 38, 31
13, 14, 5, 17, 26, 40, 32, 41, 45
14, 40, 32, 41, 45, 33, 28, 36, 44
15, 26, 17, 7, 19, 45, 41, 35, 42
16, 45, 41, 35, 42, 44, 36, 30, 38
17, 29, 33, 44, 39, 52, 58, 63, 61
18, 52, 58, 63, 61, 47, 51, 62, 57
19, 39, 44, 38, 31, 61, 63, 60, 55
20, 61, 63, 60, 55, 57, 62, 56, 49
21, 33, 28, 36, 44, 58, 50, 59, 63
22, 58, 50, 59, 63, 51, 46, 54, 62
23, 44, 36, 30, 38, 63, 59, 53, 60
24, 63, 59, 53, 60, 62, 54, 48, 56
25, 47, 51, 62, 57, 70, 76, 81, 79
26, 70, 76, 81, 79, 65, 69, 80, 75
27, 57, 62, 56, 49, 79, 81, 78, 73
28, 79, 81, 78, 73, 75, 80, 74, 67
29, 51, 46, 54, 62, 76, 68, 77, 81
30, 76, 68, 77, 81, 69, 64, 72, 80
31, 62, 54, 48, 56, 81, 77, 71, 78
32, 81, 77, 71, 78, 80, 72, 66, 74
33, 2, 86, 94, 10, 13, 95, 99, 23
34, 13, 95, 99, 23, 5, 90, 98, 17
35, 10, 94, 88, 3, 23, 99, 97, 16
36, 23, 99, 97, 16, 17, 98, 93, 7
37, 86, 82, 87, 94, 95, 89, 96, 99
38, 95, 89, 96, 99, 90, 84, 92, 98
39, 94, 87, 83, 88, 99, 96, 91, 97
40, 99, 96, 91, 97, 98, 92, 85, 93
41, 5, 90, 98, 17, 32, 107, 111, 41
42, 32, 107, 111, 41, 28, 103, 110, 36
43, 17, 98, 93, 7, 41, 111, 109, 35
44, 41, 111, 109, 35, 36, 110, 106, 30
45, 90, 84, 92, 98, 107, 102, 108, 111
46, 107, 102, 108, 111, 103, 100, 105, 110
47, 98, 92, 85, 93, 111, 108, 104, 109
48, 111, 108, 104, 109, 110, 105, 101, 106
49, 28, 103, 110, 36, 50, 119, 123, 59
50, 50, 119, 123, 59, 46, 115, 122, 54
51, 36, 110, 106, 30, 59, 123, 121, 53
52, 59, 123, 121, 53, 54, 122, 118, 48
53, 103, 100, 105, 110, 119, 114, 120, 123
54, 119, 114, 120, 123, 115, 112, 117, 122
55, 110, 105, 101, 106, 123, 120, 116, 121
56, 123, 120, 116, 121, 122, 117, 113, 118
57, 46, 115, 122, 54, 68, 131, 135, 77
58, 68, 131, 135, 77, 64, 127, 134, 72
59, 54, 122, 118, 48, 77, 135, 133, 71
60, 77, 135, 133, 71, 72, 134, 130, 66
61, 115, 112, 117, 122, 131, 126, 132, 135
62, 131, 126, 132, 135, 127, 124, 129, 134
63, 122, 117, 113, 118, 135, 132, 128, 133
64, 135, 132, 128, 133, 134, 129, 125, 130
65, 82, 140, 148, 87, 89, 149, 153, 96
66, 89, 149, 153, 96, 84, 144, 152, 92
67, 87, 148, 142, 83, 96, 153, 151, 91
68, 96, 153, 151, 91, 92, 152, 147, 85
69, 140, 136, 141, 148, 149, 143, 150, 153
70, 149, 143, 150, 153, 144, 138, 146, 152
71, 148, 141, 137, 142, 153, 150, 145, 151
72, 153, 150, 145, 151, 152, 146, 139, 147
73, 84, 144, 152, 92, 102, 161, 165, 108
74, 102, 161, 165, 108, 100, 157, 164, 105
75, 92, 152, 147, 85, 108, 165, 163, 104
76, 108, 165, 163, 104, 105, 164, 160, 101
77, 144, 138, 146, 152, 161, 156, 162, 165
78, 161, 156, 162, 165, 157, 154, 159, 164
79, 152, 146, 139, 147, 165, 162, 158, 163
80, 165, 162, 158, 163, 164, 159, 155, 160
81, 100, 157, 164, 105, 114, 173, 177, 120
82, 114, 173, 177, 120, 112, 169, 176, 117
83, 105, 164, 160, 101, 120, 177, 175, 116
84, 120, 177, 175, 116, 117, 176, 172, 113
85, 157, 154, 159, 164, 173, 168, 174, 177
86, 173, 168, 174, 177, 169, 166, 171, 176
87, 164, 159, 155, 160, 177, 174, 170, 175
88, 177, 174, 170, 175, 176, 171, 167, 172
89, 112, 169, 176, 117, 126, 185, 189, 132
90, 126, 185, 189, 132, 124, 181, 188, 129
91, 117, 176, 172, 113, 132, 189, 187, 128
92, 132, 189, 187, 128, 129, 188, 184, 125
93, 169, 166, 171, 176, 185, 180, 186, 189
94, 185, 180, 186, 189, 181, 178, 183, 188
95, 176, 171, 167, 172, 189, 186, 182, 187
96, 189, 186, 182, 187, 188, 183, 179, 184
**
** Node sets +++++++++++++++++++++++++++++++++++++++++++++++
**
*Nset, Nset=set_node_dummy
190
*Nset, Nset=Nset_f_bottom_nodes
1, 2, 3, 4, 9, 10, 11, 12, 21, 82, 83, 86, 87, 88, 94, 136,
137, 140, 141, 142, 148
**
** Element sets ++++++++++++++++++++++++++++++++++++++++++++
**
*Elset, Elset=Ply_0
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96
**
** Materials +++++++++++++++++++++++++++++++++++++++++++++++
**
*Material, name=Mat1
*Elastic, Type=ENGINEERING CONSTANTS
3500.0, 250.0, 250.0, 0.3, 0.26, 0.29, 230.0, 230.0,
300.0, 294
**
** Equations +++++++++++++++++++
**
*Equation
2
64, 3, -1.0, 190, 3, 1.0
*Equation
2
65, 3, -1.0, 190, 3, 1.0
*Equation
2
66, 3, -1.0, 190, 3, 1.0
*Equation
2
67, 3, -1.0, 190, 3, 1.0
*Equation
2
69, 3, -1.0, 190, 3, 1.0
*Equation
2
72, 3, -1.0, 190, 3, 1.0
*Equation
2
74, 3, -1.0, 190, 3, 1.0
*Equation
2
75, 3, -1.0, 190, 3, 1.0
*Equation
2
80, 3, -1.0, 190, 3, 1.0
*Equation
2
124, 3, -1.0, 190, 3, 1.0
*Equation
2
125, 3, -1.0, 190, 3, 1.0
*Equation
2
127, 3, -1.0, 190, 3, 1.0
*Equation
2
129, 3, -1.0, 190, 3, 1.0
*Equation
2
130, 3, -1.0, 190, 3, 1.0
*Equation
2
134, 3, -1.0, 190, 3, 1.0
*Equation
2
178, 3, -1.0, 190, 3, 1.0
*Equation
2
179, 3, -1.0, 190, 3, 1.0
*Equation
2
181, 3, -1.0, 190, 3, 1.0
*Equation
2
183, 3, -1.0, 190, 3, 1.0
*Equation
2
184, 3, -1.0, 190, 3, 1.0
*Equation
2
188, 3, -1.0, 190, 3, 1.0
**
** Steps +++++++++++++++++++++++++++++++++++++++++++++++++++
**
**
** Step-1 +++++++++++++++++++++++++++++++++++++++++++++++++++
**
**
*Step
*Static
0.1, 1., 1e-4, 0.5
**
** Boundary conditions +++++++++++++++++++++++++++++++++++++
**
** Name: Bottom_Fixed
*Boundary, OP=New
Nset_f_bottom_nodes, 1, 6, 0
**
** Loads +++++++++++++++++++++++++++++++++++++
**
** Name: AppliedLoad
*Cload, OP=New
set_node_dummy, 3, 2000.0
**
** Defined fields +++++++++++++++++++++++++++++++++++++
**
**
** History outputs +++++++++++++++++++++++++++++++++++++
**
** Field outputs +++++++++++++++++++++++++++++++++++++
**
*Node file
U
*EL FILE
S, E
**
** End step +++++++++++++++++++++++++++++++++++++
**
*End step

PD: I define the loading with equations referencing to a set node which I define. This is not a problem and does not cause any issues for the orientation problem.

I think this is not well defined. The following runs, check use of *ORIENTATION in the manual:

*Orientation, Name=OR1
1, 0, 0, 0, 0, 1
3, 0.0

*Orientation and *Transform Cards can be better understood if one reads those numbers as vectors (not points) defining the first two axis of the new coordinate system. The third , in this case is build automatically as orthogonal.

*Orientation, Name=OR1
0, 0, 0, 0, 0, 1

Could be read as :

*Orientation, Name=OR1
(0, 0, 0), (0, 0, 1)

This way one clearly sees (0, 0, 0) is not right (is not a vector).

1 Like

Someone correct me if I am wrong, but the vectors involved in the definition of *Orientation for a shell must be contained into the shell plane. I think that in case they are not contained ccx projects them on the shell . What is clear is that none of the vectors can point in the normal direction. v3 is always the normal which implies that for composites the values of Engineering constants with index 3 are always associated with the through thickness properties. The value of young’s modulus E3 may seem dispensable but should never be less than Max(E1,E2)*10.
Otherwise, convergence problems may occur.

Hi JuanP74,

I have checked now and also understood better with the comment from Disla about vectors. In the documentation says to input coordinates of point in X and coordinates of point in Y but not in X. So I thought the origin would work as point in X.

Thanks for your reply :slight_smile:

Hi Disla,

Thanks for your reply. I see. It works now. As said to JuanP74, in the documentation talks about points (coordinates). But I see it better with vectors, yes.

Thanks for the reply.

Hi Disla,

As said, I am interested in simulating composites with solid sections, not shells. Shells are good due to lighter computational cost and ease for simulations, but they are not adequate for determinate simulations with composites.

Also, I usually consider E3 equal as E2, as per common practice. Again, E3 takes a more secondary role when simulating with shell elements, similar to when using Classical Laminate Theory.

Again, many thanks for your reply! :slight_smile:

I don’t think that’s true for ccx.

1-Imposing BC on shells is harder than solids.
2-The node count of layered shells is much larger. Not sure if this is a bug or intentional for some reason but common nodes between layer are not merged after the expansion. Maybe Juan Knows the reason.¿?¿

*NODE
1,0,-0.05,0
2,0,-0.05,0.025
3,0.025,-0.05,0
4,0.0125,-0.05,0.05
5,0.025,-0.05,0.05
6,0.0125,-0.05,0
7,0.025,-0.05,0.025
8,0,-0.05,0.05
*ELEMENT,TYPE=S8R
1,1,8,5,3,2,4,7,6
*ELSET,ELSET=WALL_1
1

**======== Steel_S355 ========
*Material, Name=Steel_S355
*DENSITY
8500.0
*ELASTIC, TYPE=ISO
210E9,0.3


*SHELL SECTION,COMPOSITE,ELSET=Wall_1,offset=0.0
0.001,,Steel_S355
0.002,,Steel_S355
0.002,,Steel_S355
0.001,,Steel_S355

*STEP
*STATIC
*NODE FILE 
U
*END STEP

It seems to be not true, i do testing in my old days with 32bit OS and limited RAM. Solver logs shown number of equation of shell model is much larger compared to solid for similar model mesh.

This also similar with continuum shell element in Abaqus, so it assumed to be common situation and some consideration still required.

Probably CalculiX does duplicated element by offsetting, some treatment using equal constraint between coincident nodes may be done internally. It’s to avoid knot generated and over stiffening the model.

Shells are good due to lighter computational cost

CalculiX expands shells internally to layer(s) of C3D20 elements.
So it it not by definition lighter.

2 Likes

If you merge the nodes for a layered shell where the layers have different properties, the stresses would be wrong. See e.g. this article on my website.
The way to solve that is to use separate nodes with TIE constraints between the layer, see the second article.

Thanks for sharing Roland. It makes more sense now.

Reasonable, it will eliminate averaging due to extrapolated. The stress at integration point still correct.

Tie constraint using weighted approach, it seems only applicable for implicit solid modeling since the nodes are not always coincident., may not the same in case of expanded shell element.

Hopefully someone who familiar in Fortran can explains detailed by referring to code subroutines.

Since I model the geometry myself in cgx, I make sure that the nodes are coincident when modelling a sandwich.

But even when the nodes are not coincident (e.g. “bonding” a composite sheet perpendicular to another sheet) it seems to work OK. However, in most of those cases I’m more interested in the eigenfrequencies and not the stresses. If we design carbon/epoxy parts for high-end machinery it is usually because the customer tried to design the part in aluminium first, but found it was not stiff enough for its weight. :smile: The stresses in those parts are generally very low.

Maybe i’m not explaining clearly, it’s related to composite shell in CalculiX about connecting of separated layer. How is really work and actual implementation inside?

Regarding tie constraint of non conformal mesh, this is the main purpose in advantages of weighted approach. As i understand, some consideration still required to defining master surfaces. it may lead to wrong results when improper.

In case of expanded shell with composite options, did it use tie constraint also? Any reason to not use equal displacement constraint since the nodes always coincident.

You mean using e.g. neigh with the equ option?
If I recall correctly I stopped using that mostly because I often ran into errors where nodes had too many constraints, and I couldn’t find an easy way to solve those.

Probably a Tie Constraint and Equation generated by Neighbour command is working in similar ways, it based on node projection to face and use weighted approach with coefficient factors. The slave coefficient factors required to be much larger than the master. Even this has been notify in documentation is not recommended, but I did not know these number are limited. How large it can be handled?

It will search for disjunct meshes and generates sets storing the faces of this meshes with setnames starting with ‘+CF’.

Using equation directly to connect of two coincident nodes may not exactly the same since it’s connect individually I.e no sharing slave nodes.

How does one do that with CalculiX?

For equal displacement constraint I guess xyont is referring to equation constraint. It is similar to the equations part showed in the code above.
You need the nodes ids and the degree of freedom you want to restrict. The only problem with that is that as of now I have only been able to define equations node by node, and not set of nodes to a node.

So imagine you’ve got 2 faces of 4 nodes each: bottom face is nodes 1 to 4 and top face is nodes 5 to 8. Each of these nodes are coincident 2 by two. So node 1 is coincident with node 5, 2 with 6, 3 with 7 and 4 with 8.
Then you need to define the equation relating the displacement of the pair of nodes between them, see here for the documentation: *EQUATION

For this case, you need to create the equations between the nodes one by one. So, for example, if nodes 1 and 5 are “tied”/"constrained together:

*Equation
2
1, 1, -1.0, 5, 1, 1.0
*Equation
2
1, 2, -1.0, 5, 2, 1.0
*Equation
2
1, 3, -1.0, 5, 3, 1.0
With this, you are constraining the 6 degrees of freedom of nodes 1 and 5, to have the same increments. And as they were in the same location at the beginning of the simulation, they will be together at the end of the simulation.
So it creates these equations:
u5-u1 = 0
v5-v1 = 0
w5-w1 = 0
where u, v and w are the axial displacements in X, Y, Z.

If you want to extend the constraint to the rotation degree of freedom, extend the equations to degrees of freedom 4, 5 and 6.

I hope this helps.

1 Like

I see. That makes sense for composite shell elements actually.
I do tend to simulate composites with solid elements.