FEM: unit test, add ccx canti faceload hexa20 writing

This commit is contained in:
Bernd Hahnebach
2020-03-01 23:08:02 +01:00
parent 48aa159dc0
commit 53edc755dd
4 changed files with 495 additions and 0 deletions

View File

@@ -170,6 +170,7 @@ SET(FemTestsFiles_SRCS
SET(FemTestsCcx_SRCS
femtest/data/ccx/__init__.py
femtest/data/ccx/canti_ccx_faceload_hexa20.inp
femtest/data/ccx/constraint_contact_shell_shell.FCStd
femtest/data/ccx/constraint_contact_shell_shell.inp
femtest/data/ccx/constraint_contact_solid_solid.FCStd

View File

@@ -125,6 +125,7 @@ gf()
./bin/FreeCADCmd --run-test "femtest.app.test_femimport.TestObjectExistance.test_objects_existance"
./bin/FreeCADCmd --run-test "femtest.app.test_ccxtools.TestCcxTools.test_freq_analysis"
./bin/FreeCADCmd --run-test "femtest.app.test_ccxtools.TestCcxTools.test_static_analysis"
./bin/FreeCADCmd --run-test "femtest.app.test_ccxtools.TestCcxTools.test_static_constraint_force_faceload_hexa20"
./bin/FreeCADCmd --run-test "femtest.app.test_ccxtools.TestCcxTools.test_static_constraint_contact_shell_shell"
./bin/FreeCADCmd --run-test "femtest.app.test_ccxtools.TestCcxTools.test_static_constraint_contact_solid_solid"
./bin/FreeCADCmd --run-test "femtest.app.test_ccxtools.TestCcxTools.test_static_constraint_tie"
@@ -173,6 +174,9 @@ unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.a
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_ccxtools.TestCcxTools.test_static_analysis"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_ccxtools.TestCcxTools.test_static_constraint_force_faceload_hexa20"))
import unittest
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_ccxtools.TestCcxTools.test_static_constraint_contact_shell_shell"))

View File

@@ -132,6 +132,27 @@ class TestCcxTools(unittest.TestCase):
res_obj_name=res_obj_name,
)
# ********************************************************************************************
def test_static_constraint_force_faceload_hexa20(
self
):
# set up
from femexamples.ccx_cantilever_std import setup_cantileverhexa20faceload as setup
setup(self.active_doc, "ccxtools")
test_name = "canti ccx faceload hexa20"
base_name = "canti_ccx_faceload_hexa20"
analysis_dir = testtools.get_unit_test_tmp_dir(
self.temp_dir,
("FEM_" + base_name),
)
fcc_print(self.active_doc.Objects)
# test input file writing
self.input_file_writing_test(
test_name=test_name,
base_name=base_name,
analysis_dir=analysis_dir,
)
# ********************************************************************************************
def test_static_constraint_contact_shell_shell(
self

View File

@@ -0,0 +1,469 @@
** written by FreeCAD inp file writer for CalculiX,Abaqus meshes
** highest dimension mesh elements only.
** Nodes
*Node, NSET=Nall
1, -2.22e-13, 0, 1000
2, 4.460492503132e-17, 0, 0
3, 4.460492503132e-17, 1000, 0
4, -2.22e-13, 1000, 1000
5, 8000, 0, 1000
6, 8000, 0, 1.818989403546e-12
7, 8000, 1000, 1.818989403546e-12
8, 8000, 1000, 1000
9, -1.664888487687e-13, 0, 750
10, -1.109776975375e-13, 0, 500
11, -5.546654630623e-14, 0, 250
12, 4.460492503132e-17, 250, 0
13, 4.460492503132e-17, 500, 0
14, 4.460492503132e-17, 750, 0
15, -5.546654630623e-14, 1000, 250
16, -1.109776975375e-13, 1000, 500
17, -1.664888487687e-13, 1000, 750
18, -2.22e-13, 750, 1000
19, -2.22e-13, 500, 1000
20, -2.22e-13, 250, 1000
21, 8000, 0, 750
22, 8000, 0, 500
23, 8000, 0, 250
24, 8000, 250, 1.818989403546e-12
25, 8000, 500, 1.818989403546e-12
26, 8000, 750, 1.818989403546e-12
27, 8000, 1000, 250
28, 8000, 1000, 500
29, 8000, 1000, 750
30, 8000, 750, 1000
31, 8000, 500, 1000
32, 8000, 250, 1000
33, 500, 0, 1.136868377216e-13
34, 1000, 0, 2.273736754432e-13
35, 1500, 0, 3.410605131648e-13
36, 2000, 0, 4.547473508865e-13
37, 2500, 0, 5.684341886081e-13
38, 3000, 0, 6.821210263297e-13
39, 3500, 0, 7.958078640513e-13
40, 4000, 0, 9.094947017729e-13
41, 4500, 0, 1.023181539495e-12
42, 5000, 0, 1.136868377216e-12
43, 5500, 0, 1.250555214938e-12
44, 6000, 0, 1.364242052659e-12
45, 6500, 0, 1.477928890381e-12
46, 7000, 0, 1.591615728103e-12
47, 7500, 0, 1.705302565824e-12
48, 7500, 0, 1000
49, 7000, 0, 1000
50, 6500, 0, 1000
51, 6000, 0, 1000
52, 5500, 0, 1000
53, 5000, 0, 1000
54, 4500, 0, 1000
55, 4000, 0, 1000
56, 3500, 0, 1000
57, 3000, 0, 1000
58, 2500, 0, 1000
59, 2000, 0, 1000
60, 1500, 0, 1000
61, 1000, 0, 1000
62, 500, 0, 1000
63, 500, 1000, 1.136868377216e-13
64, 1000, 1000, 2.273736754432e-13
65, 1500, 1000, 3.410605131648e-13
66, 2000, 1000, 4.547473508865e-13
67, 2500, 1000, 5.684341886081e-13
68, 3000, 1000, 6.821210263297e-13
69, 3500, 1000, 7.958078640513e-13
70, 4000, 1000, 9.094947017729e-13
71, 4500, 1000, 1.023181539495e-12
72, 5000, 1000, 1.136868377216e-12
73, 5500, 1000, 1.250555214938e-12
74, 6000, 1000, 1.364242052659e-12
75, 6500, 1000, 1.477928890381e-12
76, 7000, 1000, 1.591615728103e-12
77, 7500, 1000, 1.705302565824e-12
78, 500, 1000, 1000
79, 1000, 1000, 1000
80, 1500, 1000, 1000
81, 2000, 1000, 1000
82, 2500, 1000, 1000
83, 3000, 1000, 1000
84, 3500, 1000, 1000
85, 4000, 1000, 1000
86, 4500, 1000, 1000
87, 5000, 1000, 1000
88, 5500, 1000, 1000
89, 6000, 1000, 1000
90, 6500, 1000, 1000
91, 7000, 1000, 1000
92, 7500, 1000, 1000
93, -1.109776975375e-13, 250, 500
94, -1.664888487687e-13, 500, 750
95, -1.109776975375e-13, 500, 500
96, -5.546654630623e-14, 500, 250
97, -1.109776975375e-13, 750, 500
98, 8000, 250, 500
99, 8000, 500, 750
100, 8000, 500, 500
101, 8000, 500, 250
102, 8000, 750, 500
103, 500, 0, 500
104, 1000, 0, 750
105, 1000, 0, 500
106, 1000, 0, 250
107, 1500, 0, 500
108, 2000, 0, 750
109, 2000, 0, 500
110, 2000, 0, 250
111, 2500, 0, 500
112, 3000, 0, 750
113, 3000, 0, 500
114, 3000, 0, 250
115, 3500, 0, 500
116, 4000, 0, 750
117, 4000, 0, 500
118, 4000, 0, 250
119, 4500, 0, 500
120, 5000, 0, 750
121, 5000, 0, 500
122, 5000, 0, 250
123, 5500, 0, 500
124, 6000, 0, 750
125, 6000, 0, 500
126, 6000, 0, 250
127, 6500, 0, 500
128, 7000, 0, 750
129, 7000, 0, 500
130, 7000, 0, 250
131, 7500, 0, 500
132, 500, 500, 1.136868377216e-13
133, 1000, 250, 2.273736754432e-13
134, 1000, 500, 2.273736754432e-13
135, 1000, 750, 2.273736754432e-13
136, 1500, 500, 3.410605131648e-13
137, 2000, 250, 4.547473508865e-13
138, 2000, 500, 4.547473508865e-13
139, 2000, 750, 4.547473508865e-13
140, 2500, 500, 5.684341886081e-13
141, 3000, 250, 6.821210263297e-13
142, 3000, 500, 6.821210263297e-13
143, 3000, 750, 6.821210263297e-13
144, 3500, 500, 7.958078640513e-13
145, 4000, 250, 9.094947017729e-13
146, 4000, 500, 9.094947017729e-13
147, 4000, 750, 9.094947017729e-13
148, 4500, 500, 1.023181539495e-12
149, 5000, 250, 1.136868377216e-12
150, 5000, 500, 1.136868377216e-12
151, 5000, 750, 1.136868377216e-12
152, 5500, 500, 1.250555214938e-12
153, 6000, 250, 1.364242052659e-12
154, 6000, 500, 1.364242052659e-12
155, 6000, 750, 1.364242052659e-12
156, 6500, 500, 1.477928890381e-12
157, 7000, 250, 1.591615728103e-12
158, 7000, 500, 1.591615728103e-12
159, 7000, 750, 1.591615728103e-12
160, 7500, 500, 1.705302565824e-12
161, 500, 1000, 500
162, 1000, 1000, 250
163, 1000, 1000, 500
164, 1000, 1000, 750
165, 1500, 1000, 500
166, 2000, 1000, 250
167, 2000, 1000, 500
168, 2000, 1000, 750
169, 2500, 1000, 500
170, 3000, 1000, 250
171, 3000, 1000, 500
172, 3000, 1000, 750
173, 3500, 1000, 500
174, 4000, 1000, 250
175, 4000, 1000, 500
176, 4000, 1000, 750
177, 4500, 1000, 500
178, 5000, 1000, 250
179, 5000, 1000, 500
180, 5000, 1000, 750
181, 5500, 1000, 500
182, 6000, 1000, 250
183, 6000, 1000, 500
184, 6000, 1000, 750
185, 6500, 1000, 500
186, 7000, 1000, 250
187, 7000, 1000, 500
188, 7000, 1000, 750
189, 7500, 1000, 500
190, 500, 500, 1000
191, 1000, 750, 1000
192, 1000, 500, 1000
193, 1000, 250, 1000
194, 1500, 500, 1000
195, 2000, 750, 1000
196, 2000, 500, 1000
197, 2000, 250, 1000
198, 2500, 500, 1000
199, 3000, 750, 1000
200, 3000, 500, 1000
201, 3000, 250, 1000
202, 3500, 500, 1000
203, 4000, 750, 1000
204, 4000, 500, 1000
205, 4000, 250, 1000
206, 4500, 500, 1000
207, 5000, 750, 1000
208, 5000, 500, 1000
209, 5000, 250, 1000
210, 5500, 500, 1000
211, 6000, 750, 1000
212, 6000, 500, 1000
213, 6000, 250, 1000
214, 6500, 500, 1000
215, 7000, 750, 1000
216, 7000, 500, 1000
217, 7000, 250, 1000
218, 7500, 500, 1000
219, 500, 500, 500
220, 1000, 250, 500
221, 1000, 500, 750
222, 1000, 500, 500
223, 1000, 500, 250
224, 1000, 750, 500
225, 1500, 500, 500
226, 2000, 250, 500
227, 2000, 500, 750
228, 2000, 500, 500
229, 2000, 500, 250
230, 2000, 750, 500
231, 2500, 500, 500
232, 3000, 250, 500
233, 3000, 500, 750
234, 3000, 500, 500
235, 3000, 500, 250
236, 3000, 750, 500
237, 3500, 500, 500
238, 4000, 250, 500
239, 4000, 500, 750
240, 4000, 500, 500
241, 4000, 500, 250
242, 4000, 750, 500
243, 4500, 500, 500
244, 5000, 250, 500
245, 5000, 500, 750
246, 5000, 500, 500
247, 5000, 500, 250
248, 5000, 750, 500
249, 5500, 500, 500
250, 6000, 250, 500
251, 6000, 500, 750
252, 6000, 500, 500
253, 6000, 500, 250
254, 6000, 750, 500
255, 6500, 500, 500
256, 7000, 250, 500
257, 7000, 500, 750
258, 7000, 500, 500
259, 7000, 500, 250
260, 7000, 750, 500
261, 7500, 500, 500
** Volume elements
*Element, TYPE=C3D20, ELSET=Evolumes
1, 1, 10, 95, 19, 61, 105, 222, 192, 9, 93, 94, 20, 104, 220, 221,
193, 62, 103, 219, 190,
2, 10, 2, 13, 95, 105, 34, 134, 222, 11, 12, 96, 93, 106, 133, 223,
220, 103, 33, 132, 219,
3, 19, 95, 16, 4, 192, 222, 163, 79, 94, 97, 17, 18, 221, 224, 164,
191, 190, 219, 161, 78,
4, 95, 13, 3, 16, 222, 134, 64, 163, 96, 14, 15, 97, 223, 135, 162,
224, 219, 132, 63, 161,
5, 61, 105, 222, 192, 59, 109, 228, 196, 104, 220, 221, 193, 108, 226, 227,
197, 60, 107, 225, 194,
6, 105, 34, 134, 222, 109, 36, 138, 228, 106, 133, 223, 220, 110, 137, 229,
226, 107, 35, 136, 225,
7, 192, 222, 163, 79, 196, 228, 167, 81, 221, 224, 164, 191, 227, 230, 168,
195, 194, 225, 165, 80,
8, 222, 134, 64, 163, 228, 138, 66, 167, 223, 135, 162, 224, 229, 139, 166,
230, 225, 136, 65, 165,
9, 59, 109, 228, 196, 57, 113, 234, 200, 108, 226, 227, 197, 112, 232, 233,
201, 58, 111, 231, 198,
10, 109, 36, 138, 228, 113, 38, 142, 234, 110, 137, 229, 226, 114, 141, 235,
232, 111, 37, 140, 231,
11, 196, 228, 167, 81, 200, 234, 171, 83, 227, 230, 168, 195, 233, 236, 172,
199, 198, 231, 169, 82,
12, 228, 138, 66, 167, 234, 142, 68, 171, 229, 139, 166, 230, 235, 143, 170,
236, 231, 140, 67, 169,
13, 57, 113, 234, 200, 55, 117, 240, 204, 112, 232, 233, 201, 116, 238, 239,
205, 56, 115, 237, 202,
14, 113, 38, 142, 234, 117, 40, 146, 240, 114, 141, 235, 232, 118, 145, 241,
238, 115, 39, 144, 237,
15, 200, 234, 171, 83, 204, 240, 175, 85, 233, 236, 172, 199, 239, 242, 176,
203, 202, 237, 173, 84,
16, 234, 142, 68, 171, 240, 146, 70, 175, 235, 143, 170, 236, 241, 147, 174,
242, 237, 144, 69, 173,
17, 55, 117, 240, 204, 53, 121, 246, 208, 116, 238, 239, 205, 120, 244, 245,
209, 54, 119, 243, 206,
18, 117, 40, 146, 240, 121, 42, 150, 246, 118, 145, 241, 238, 122, 149, 247,
244, 119, 41, 148, 243,
19, 204, 240, 175, 85, 208, 246, 179, 87, 239, 242, 176, 203, 245, 248, 180,
207, 206, 243, 177, 86,
20, 240, 146, 70, 175, 246, 150, 72, 179, 241, 147, 174, 242, 247, 151, 178,
248, 243, 148, 71, 177,
21, 53, 121, 246, 208, 51, 125, 252, 212, 120, 244, 245, 209, 124, 250, 251,
213, 52, 123, 249, 210,
22, 121, 42, 150, 246, 125, 44, 154, 252, 122, 149, 247, 244, 126, 153, 253,
250, 123, 43, 152, 249,
23, 208, 246, 179, 87, 212, 252, 183, 89, 245, 248, 180, 207, 251, 254, 184,
211, 210, 249, 181, 88,
24, 246, 150, 72, 179, 252, 154, 74, 183, 247, 151, 178, 248, 253, 155, 182,
254, 249, 152, 73, 181,
25, 51, 125, 252, 212, 49, 129, 258, 216, 124, 250, 251, 213, 128, 256, 257,
217, 50, 127, 255, 214,
26, 125, 44, 154, 252, 129, 46, 158, 258, 126, 153, 253, 250, 130, 157, 259,
256, 127, 45, 156, 255,
27, 212, 252, 183, 89, 216, 258, 187, 91, 251, 254, 184, 211, 257, 260, 188,
215, 214, 255, 185, 90,
28, 252, 154, 74, 183, 258, 158, 76, 187, 253, 155, 182, 254, 259, 159, 186,
260, 255, 156, 75, 185,
29, 49, 129, 258, 216, 5, 22, 100, 31, 128, 256, 257, 217, 21, 98, 99,
32, 48, 131, 261, 218,
30, 129, 46, 158, 258, 22, 6, 25, 100, 130, 157, 259, 256, 23, 24, 101,
98, 131, 47, 160, 261,
31, 216, 258, 187, 91, 31, 100, 28, 8, 257, 260, 188, 215, 99, 102, 29,
30, 218, 261, 189, 92,
32, 258, 158, 76, 187, 100, 25, 7, 28, 259, 159, 186, 260, 101, 26, 27,
102, 261, 160, 77, 189,
** Define element set Eall
*ELSET, ELSET=Eall
Evolumes
***********************************************************
** Element sets for materials and FEM element type (solid, shell, beam, fluid)
** written by write_element_sets_material_and_femelement_type function
*ELSET,ELSET=FemMaterialSolid
Evolumes
***********************************************************
** Node sets for fixed constraint
** written by write_node_sets_constraints_fixed function
** ConstraintFixed
*NSET,NSET=ConstraintFixed
1,
2,
3,
4,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
93,
94,
95,
96,
97,
***********************************************************
** Materials
** written by write_materials function
** Young's modulus unit is MPa = N/mm2
** FreeCAD material name: CalculiX-Steel
** FemMaterial
*MATERIAL, NAME=FemMaterial
*ELASTIC
210000, 0.300
***********************************************************
** Sections
** written by write_femelementsets function
*SOLID SECTION, ELSET=FemMaterialSolid, MATERIAL=FemMaterial
***********************************************************
** At least one step is needed to run an CalculiX analysis of FreeCAD
** written by write_step_begin function
*STEP
*STATIC
***********************************************************
** Fixed Constraints
** written by write_constraints_fixed function
** ConstraintFixed
*BOUNDARY
ConstraintFixed,1
ConstraintFixed,2
ConstraintFixed,3
***********************************************************
** Node loads Constraints
** written by write_constraints_force function
*CLOAD
** ConstraintForce
** node loads on shape: Box:Face2
5,3,1.8750000000000E+05
6,3,1.8750000000000E+05
7,3,1.8750000000000E+05
8,3,1.8750000000000E+05
21,3,-7.5000000000000E+05
22,3,3.7500000000000E+05
23,3,-7.5000000000000E+05
24,3,-7.5000000000000E+05
25,3,3.7500000000000E+05
26,3,-7.5000000000000E+05
27,3,-7.5000000000000E+05
28,3,3.7500000000000E+05
29,3,-7.5000000000000E+05
30,3,-7.5000000000000E+05
31,3,3.7500000000000E+05
32,3,-7.5000000000000E+05
98,3,-1.5000000000000E+06
99,3,-1.5000000000000E+06
100,3,7.5000000000000E+05
101,3,-1.5000000000000E+06
102,3,-1.5000000000000E+06
***********************************************************
** Outputs --> frd file
** written by write_outputs_types function
*NODE FILE
U
*EL FILE
S, E
** outputs --> dat file
** reaction forces for Constraint fixed
*NODE PRINT, NSET=ConstraintFixed, TOTALS=ONLY
RF
***********************************************************
** written by write_step_end function
*END STEP
***********************************************************
** CalculiX Input file
** written by write_footer function
** written by --> FreeCAD 0.19.19767 (Git)
** written on --> Sun Mar 1 22:34:34 2020
** file name --> CantilverHexa20FaceLoad.FCStd
** analysis name --> Analysis
**
**
**
** Units
**
** Geometry (mesh data) --> mm
** Materials (Young's modulus) --> N/mm2 = MPa
** Loads (nodal loads) --> N
**