FEM: unit test, add new solve modules ccx and z88 and add a input file write test for new ccx solver

This commit is contained in:
Bernd Hahnebach
2017-12-01 19:43:16 +01:00
committed by wmayer
parent 7ad273f3cc
commit 5c18c71ad4

View File

@@ -29,6 +29,7 @@ import FemToolsCcx
import FemResultTools
import FreeCAD
import ObjectsFem
import femsolver.run
import tempfile
import unittest
import os
@@ -49,6 +50,8 @@ static_analysis_dir = temp_dir + 'FEM_static/'
static_save_fc_file = static_analysis_dir + static_base_name + '.fcstd'
static_analysis_inp_file = test_file_dir + static_base_name + '.inp'
static_expected_values = test_file_dir + "cube_static_expected_values"
static2_analysis_dir = temp_dir + 'FEM_static2/'
static2_save_fc_file = static2_analysis_dir + static_base_name + '2.fcstd'
frequency_base_name = 'cube_frequency'
frequency_analysis_dir = temp_dir + 'FEM_frequency/'
@@ -393,6 +396,9 @@ class FemTest(unittest.TestCase):
pymodules += collect_python_modules('PyObjects')
if FreeCAD.GuiUp:
pymodules += collect_python_modules('PyGui')
pymodules += collect_python_modules('femsolver')
pymodules += collect_python_modules('femsolver/z88')
pymodules += collect_python_modules('femsolver/calculix')
# import all collected modules
# fcc_print(pymodules)
@@ -592,6 +598,33 @@ class FemCcxAnalysisTest(unittest.TestCase):
fcc_print('Save FreeCAD file for frequency analysis to {}...'.format(frequency_save_fc_file))
self.active_doc.saveAs(frequency_save_fc_file)
# use new solver frame work solver
fcc_print('Checking FEM new solver for new solver frame work...')
solver_ccx2_object = ObjectsFem.makeSolverCalculix(self.active_doc, 'SolverCalculiX')
solver_ccx2_object.GeometricalNonlinearity = 'linear'
solver_ccx2_object.ThermoMechSteadyState = False
solver_ccx2_object.MatrixSolverType = 'default'
solver_ccx2_object.IterationsControlParameterTimeUse = False
solver_ccx2_object.EigenmodesCount = 10
solver_ccx2_object.EigenmodeHighLimit = 1000000.0
solver_ccx2_object.EigenmodeLowLimit = 0.0
self.assertTrue(solver_ccx2_object, "FemTest of new solver failed")
analysis.Member = analysis.Member + [solver_ccx2_object]
fcc_print('Checking inpfile writing for new solver frame work...')
if not os.path.exists(static2_analysis_dir):
os.makedirs(static2_analysis_dir)
machine = solver_ccx2_object.Proxy.createMachine(solver_ccx2_object, static2_analysis_dir)
machine.target = femsolver.run.PREPARE
machine.start()
machine.join() # wait for the machine to finish.
fcc_print('Comparing {} to {}/{}.inp'.format(static_analysis_inp_file, static2_analysis_dir, mesh_name))
ret = compare_inp_files(static_analysis_inp_file, static2_analysis_dir + mesh_name + '.inp')
self.assertFalse(ret, "FemToolsCcx write_inp_file test failed.\n{}".format(ret))
fcc_print('Save FreeCAD file for static2 analysis to {}...'.format(static2_save_fc_file))
self.active_doc.saveAs(static2_save_fc_file)
fcc_print('--------------- End of FEM tests static and frequency analysis ---------------')
def test_thermomech_analysis(self):