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:
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user