FEM: unit test, get rid of ActiveDocument
This commit is contained in:
@@ -40,15 +40,8 @@ class TestCcxTools(unittest.TestCase):
|
||||
self
|
||||
):
|
||||
# setUp is executed before every test
|
||||
# setting up a document to hold the tests
|
||||
self.doc_name = self.__class__.__name__
|
||||
if FreeCAD.ActiveDocument:
|
||||
if FreeCAD.ActiveDocument.Name != self.doc_name:
|
||||
FreeCAD.newDocument(self.doc_name)
|
||||
else:
|
||||
FreeCAD.newDocument(self.doc_name)
|
||||
FreeCAD.setActiveDocument(self.doc_name)
|
||||
self.active_doc = FreeCAD.ActiveDocument
|
||||
self.document = FreeCAD.newDocument(self.doc_name)
|
||||
|
||||
# more inits
|
||||
self.mesh_name = "Mesh"
|
||||
@@ -73,7 +66,7 @@ class TestCcxTools(unittest.TestCase):
|
||||
):
|
||||
# set up
|
||||
from femexamples.boxanalysis import setup_frequency as setup
|
||||
setup(self.active_doc, "ccxtools")
|
||||
setup(self.document, "ccxtools")
|
||||
test_name = "frequency"
|
||||
base_name = "cube_frequency"
|
||||
res_obj_name = "CCX_Mode1_Results"
|
||||
@@ -105,7 +98,7 @@ class TestCcxTools(unittest.TestCase):
|
||||
):
|
||||
# set up
|
||||
from femexamples.boxanalysis import setup_static as setup
|
||||
setup(self.active_doc, "ccxtools")
|
||||
setup(self.document, "ccxtools")
|
||||
test_name = "ccxtools static"
|
||||
base_name = "cube_static"
|
||||
res_obj_name = "CCX_Results"
|
||||
@@ -137,14 +130,14 @@ class TestCcxTools(unittest.TestCase):
|
||||
):
|
||||
# set up
|
||||
from femexamples.ccx_cantilever_std import setup_cantileverhexa20faceload as setup
|
||||
setup(self.active_doc, "ccxtools")
|
||||
setup(self.document, "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)
|
||||
fcc_print(self.document.Objects)
|
||||
# test input file writing
|
||||
self.input_file_writing_test(
|
||||
test_name=test_name,
|
||||
@@ -158,7 +151,7 @@ class TestCcxTools(unittest.TestCase):
|
||||
):
|
||||
# set up
|
||||
from femexamples.constraint_contact_shell_shell import setup
|
||||
setup(self.active_doc, "ccxtools")
|
||||
setup(self.document, "ccxtools")
|
||||
test_name = "constraint contact shell shell"
|
||||
base_name = "constraint_contact_shell_shell"
|
||||
analysis_dir = testtools.get_unit_test_tmp_dir(
|
||||
@@ -179,7 +172,7 @@ class TestCcxTools(unittest.TestCase):
|
||||
):
|
||||
# set up
|
||||
from femexamples.constraint_contact_solid_solid import setup
|
||||
setup(self.active_doc, "ccxtools")
|
||||
setup(self.document, "ccxtools")
|
||||
test_name = "constraint contact solid solid"
|
||||
base_name = "constraint_contact_solid_solid"
|
||||
analysis_dir = testtools.get_unit_test_tmp_dir(
|
||||
@@ -202,7 +195,7 @@ class TestCcxTools(unittest.TestCase):
|
||||
):
|
||||
# set up
|
||||
from femexamples.constraint_tie import setup
|
||||
setup(self.active_doc, "ccxtools")
|
||||
setup(self.document, "ccxtools")
|
||||
test_name = "constraint tie"
|
||||
base_name = "constraint_tie"
|
||||
analysis_dir = testtools.get_unit_test_tmp_dir(
|
||||
@@ -223,7 +216,7 @@ class TestCcxTools(unittest.TestCase):
|
||||
):
|
||||
# set up
|
||||
from femexamples.material_multiple_twoboxes import setup
|
||||
setup(self.active_doc, "ccxtools")
|
||||
setup(self.document, "ccxtools")
|
||||
test_name = "multiple material"
|
||||
base_name = "mat_multiple"
|
||||
analysis_dir = testtools.get_unit_test_tmp_dir(
|
||||
@@ -244,7 +237,7 @@ class TestCcxTools(unittest.TestCase):
|
||||
):
|
||||
# set up
|
||||
from femexamples.material_nl_platewithhole import setup
|
||||
setup(self.active_doc, "ccxtools")
|
||||
setup(self.document, "ccxtools")
|
||||
test_name = "nonlinear material"
|
||||
base_name = "mat_nonlinear"
|
||||
analysis_dir = testtools.get_unit_test_tmp_dir(
|
||||
@@ -265,7 +258,7 @@ class TestCcxTools(unittest.TestCase):
|
||||
):
|
||||
# set up
|
||||
from femexamples.thermomech_bimetall import setup
|
||||
setup(self.active_doc, "ccxtools")
|
||||
setup(self.document, "ccxtools")
|
||||
test_name = "thermomech bimetall"
|
||||
base_name = "thermomech_bimetall"
|
||||
analysis_dir = testtools.get_unit_test_tmp_dir(
|
||||
@@ -286,7 +279,7 @@ class TestCcxTools(unittest.TestCase):
|
||||
):
|
||||
# set up
|
||||
from femexamples.thermomech_flow1d import setup
|
||||
setup(self.active_doc, "ccxtools")
|
||||
setup(self.document, "ccxtools")
|
||||
test_name = "Flow1D"
|
||||
base_name = "Flow1D_thermomech"
|
||||
res_obj_name = "CCX_Time1_0_Results"
|
||||
@@ -318,7 +311,7 @@ class TestCcxTools(unittest.TestCase):
|
||||
):
|
||||
# set up
|
||||
from femexamples.thermomech_spine import setup
|
||||
setup(self.active_doc, "ccxtools")
|
||||
setup(self.document, "ccxtools")
|
||||
test_name = "thermomechanical"
|
||||
base_name = "spine_thermomech"
|
||||
res_obj_name = "CCX_Results"
|
||||
@@ -359,8 +352,8 @@ class TestCcxTools(unittest.TestCase):
|
||||
.format(test_name)
|
||||
)
|
||||
|
||||
analysis = self.active_doc.Analysis
|
||||
solver_object = self.active_doc.CalculiXccxTools
|
||||
analysis = self.document.Analysis
|
||||
solver_object = self.document.CalculiXccxTools
|
||||
fea = ccxtools.FemToolsCcx(analysis, solver_object, test_mode=True)
|
||||
fea.update_objects()
|
||||
|
||||
@@ -404,7 +397,7 @@ class TestCcxTools(unittest.TestCase):
|
||||
"Save FreeCAD file for {} to {}..."
|
||||
.format(test_name, save_fc_file)
|
||||
)
|
||||
self.active_doc.saveAs(save_fc_file)
|
||||
self.document.saveAs(save_fc_file)
|
||||
|
||||
fcc_print(
|
||||
"\n--------------- "
|
||||
@@ -481,7 +474,7 @@ class TestCcxTools(unittest.TestCase):
|
||||
"Save FreeCAD file for {} to {}..."
|
||||
.format(test_name, save_fc_file)
|
||||
)
|
||||
self.active_doc.saveAs(save_fc_file)
|
||||
self.document.saveAs(save_fc_file)
|
||||
|
||||
fcc_print("--------------- End of {} -------------------".format(test_name))
|
||||
|
||||
|
||||
@@ -37,15 +37,8 @@ class TestFemCommon(unittest.TestCase):
|
||||
self
|
||||
):
|
||||
# setUp is executed before every test
|
||||
# setting up a document to hold the tests
|
||||
self.doc_name = self.__class__.__name__
|
||||
if FreeCAD.ActiveDocument:
|
||||
if FreeCAD.ActiveDocument.Name != self.doc_name:
|
||||
FreeCAD.newDocument(self.doc_name)
|
||||
else:
|
||||
FreeCAD.newDocument(self.doc_name)
|
||||
FreeCAD.setActiveDocument(self.doc_name)
|
||||
self.active_doc = FreeCAD.ActiveDocument
|
||||
self.document = FreeCAD.newDocument(self.doc_name)
|
||||
|
||||
def test_00print(
|
||||
self
|
||||
@@ -60,7 +53,7 @@ class TestFemCommon(unittest.TestCase):
|
||||
def test_adding_refshaps(
|
||||
self
|
||||
):
|
||||
doc = self.active_doc
|
||||
doc = self.document
|
||||
slab = doc.addObject("Part::Plane", "Face")
|
||||
slab.Length = 500.00
|
||||
slab.Width = 500.00
|
||||
|
||||
@@ -84,15 +84,8 @@ class TestObjectExistance(unittest.TestCase):
|
||||
self
|
||||
):
|
||||
# setUp is executed before every test
|
||||
# setting up a document to hold the tests
|
||||
self.doc_name = self.__class__.__name__
|
||||
if FreeCAD.ActiveDocument:
|
||||
if FreeCAD.ActiveDocument.Name != self.doc_name:
|
||||
FreeCAD.newDocument(self.doc_name)
|
||||
else:
|
||||
FreeCAD.newDocument(self.doc_name)
|
||||
FreeCAD.setActiveDocument(self.doc_name)
|
||||
self.active_doc = FreeCAD.ActiveDocument
|
||||
self.document = FreeCAD.newDocument(self.doc_name)
|
||||
|
||||
def test_00print(
|
||||
self
|
||||
@@ -167,7 +160,7 @@ class TestObjectExistance(unittest.TestCase):
|
||||
expected_len = len(expected_obj_types)
|
||||
expected_obj_types = sorted(expected_obj_types)
|
||||
|
||||
doc = self.active_doc
|
||||
doc = self.document
|
||||
|
||||
# get the supportedTypes for FEM module
|
||||
|
||||
|
||||
@@ -37,15 +37,8 @@ class TestMaterialUnits(unittest.TestCase):
|
||||
self
|
||||
):
|
||||
# setUp is executed before every test
|
||||
# setting up a document to hold the tests
|
||||
self.doc_name = self.__class__.__name__
|
||||
if FreeCAD.ActiveDocument:
|
||||
if FreeCAD.ActiveDocument.Name != self.doc_name:
|
||||
FreeCAD.newDocument(self.doc_name)
|
||||
else:
|
||||
FreeCAD.newDocument(self.doc_name)
|
||||
FreeCAD.setActiveDocument(self.doc_name)
|
||||
self.active_doc = FreeCAD.ActiveDocument
|
||||
self.document = FreeCAD.newDocument(self.doc_name)
|
||||
|
||||
def test_00print(
|
||||
self
|
||||
|
||||
@@ -39,15 +39,8 @@ class TestMeshCommon(unittest.TestCase):
|
||||
self
|
||||
):
|
||||
# setUp is executed before every test
|
||||
# setting up a document to hold the tests
|
||||
self.doc_name = self.__class__.__name__
|
||||
if FreeCAD.ActiveDocument:
|
||||
if FreeCAD.ActiveDocument.Name != self.doc_name:
|
||||
FreeCAD.newDocument(self.doc_name)
|
||||
else:
|
||||
FreeCAD.newDocument(self.doc_name)
|
||||
FreeCAD.setActiveDocument(self.doc_name)
|
||||
self.active_doc = FreeCAD.ActiveDocument
|
||||
self.document = FreeCAD.newDocument(self.doc_name)
|
||||
|
||||
def test_00print(
|
||||
self
|
||||
@@ -228,15 +221,8 @@ class TestMeshEleTetra10(unittest.TestCase):
|
||||
self
|
||||
):
|
||||
# setUp is executed before every test
|
||||
# setting up a document to hold the tests
|
||||
self.doc_name = self.__class__.__name__
|
||||
if FreeCAD.ActiveDocument:
|
||||
if FreeCAD.ActiveDocument.Name != self.doc_name:
|
||||
FreeCAD.newDocument(self.doc_name)
|
||||
else:
|
||||
FreeCAD.newDocument(self.doc_name)
|
||||
FreeCAD.setActiveDocument(self.doc_name)
|
||||
self.active_doc = FreeCAD.ActiveDocument
|
||||
self.document = FreeCAD.newDocument(self.doc_name)
|
||||
|
||||
# more inits
|
||||
self.elem = "tetra10"
|
||||
|
||||
@@ -38,15 +38,8 @@ class TestObjectCreate(unittest.TestCase):
|
||||
self
|
||||
):
|
||||
# setUp is executed before every test
|
||||
# setting up a document to hold the tests
|
||||
self.doc_name = self.__class__.__name__
|
||||
if FreeCAD.ActiveDocument:
|
||||
if FreeCAD.ActiveDocument.Name != self.doc_name:
|
||||
FreeCAD.newDocument(self.doc_name)
|
||||
else:
|
||||
FreeCAD.newDocument(self.doc_name)
|
||||
FreeCAD.setActiveDocument(self.doc_name)
|
||||
self.active_doc = FreeCAD.ActiveDocument
|
||||
self.document = FreeCAD.newDocument(self.doc_name)
|
||||
|
||||
def test_00print(
|
||||
self
|
||||
@@ -61,7 +54,7 @@ class TestObjectCreate(unittest.TestCase):
|
||||
def test_femobjects_make(
|
||||
self
|
||||
):
|
||||
doc = self.active_doc
|
||||
doc = self.document
|
||||
analysis = ObjectsFem.makeAnalysis(doc)
|
||||
|
||||
analysis.addObject(ObjectsFem.makeConstraintBearing(doc))
|
||||
@@ -158,15 +151,8 @@ class TestObjectType(unittest.TestCase):
|
||||
self
|
||||
):
|
||||
# setUp is executed before every test
|
||||
# setting up a document to hold the tests
|
||||
self.doc_name = self.__class__.__name__
|
||||
if FreeCAD.ActiveDocument:
|
||||
if FreeCAD.ActiveDocument.Name != self.doc_name:
|
||||
FreeCAD.newDocument(self.doc_name)
|
||||
else:
|
||||
FreeCAD.newDocument(self.doc_name)
|
||||
FreeCAD.setActiveDocument(self.doc_name)
|
||||
self.active_doc = FreeCAD.ActiveDocument
|
||||
self.document = FreeCAD.newDocument(self.doc_name)
|
||||
|
||||
def test_00print(
|
||||
self
|
||||
@@ -181,7 +167,7 @@ class TestObjectType(unittest.TestCase):
|
||||
def test_femobjects_type(
|
||||
self
|
||||
):
|
||||
doc = self.active_doc
|
||||
doc = self.document
|
||||
|
||||
from femtools.femutils import type_of_obj
|
||||
self.assertEqual(
|
||||
@@ -378,7 +364,7 @@ class TestObjectType(unittest.TestCase):
|
||||
def test_femobjects_isoftype(
|
||||
self
|
||||
):
|
||||
doc = self.active_doc
|
||||
doc = self.document
|
||||
|
||||
from femtools.femutils import is_of_type
|
||||
self.assertTrue(is_of_type(
|
||||
@@ -578,7 +564,7 @@ class TestObjectType(unittest.TestCase):
|
||||
):
|
||||
# try to add all possible True types from inheritance chain see
|
||||
# https://forum.freecadweb.org/viewtopic.php?f=10&t=32625
|
||||
doc = self.active_doc
|
||||
doc = self.document
|
||||
|
||||
from femtools.femutils import is_derived_from
|
||||
|
||||
@@ -1278,7 +1264,7 @@ class TestObjectType(unittest.TestCase):
|
||||
self
|
||||
):
|
||||
# only the last True type is used
|
||||
doc = self.active_doc
|
||||
doc = self.document
|
||||
|
||||
self.assertTrue(
|
||||
ObjectsFem.makeAnalysis(
|
||||
|
||||
@@ -38,15 +38,8 @@ class TestResult(unittest.TestCase):
|
||||
self
|
||||
):
|
||||
# setUp is executed before every test
|
||||
# setting up a document to hold the tests
|
||||
self.doc_name = self.__class__.__name__
|
||||
if FreeCAD.ActiveDocument:
|
||||
if FreeCAD.ActiveDocument.Name != self.doc_name:
|
||||
FreeCAD.newDocument(self.doc_name)
|
||||
else:
|
||||
FreeCAD.newDocument(self.doc_name)
|
||||
FreeCAD.setActiveDocument(self.doc_name)
|
||||
self.active_doc = FreeCAD.ActiveDocument
|
||||
self.document = FreeCAD.newDocument(self.doc_name)
|
||||
|
||||
def test_00print(
|
||||
self
|
||||
|
||||
@@ -39,15 +39,8 @@ class TestSolverFrameWork(unittest.TestCase):
|
||||
self
|
||||
):
|
||||
# setUp is executed before every test
|
||||
# setting up a document to hold the tests
|
||||
self.doc_name = self.__class__.__name__
|
||||
if FreeCAD.ActiveDocument:
|
||||
if FreeCAD.ActiveDocument.Name != self.doc_name:
|
||||
FreeCAD.newDocument(self.doc_name)
|
||||
else:
|
||||
FreeCAD.newDocument(self.doc_name)
|
||||
FreeCAD.setActiveDocument(self.doc_name)
|
||||
self.active_doc = FreeCAD.ActiveDocument
|
||||
self.document = FreeCAD.newDocument(self.doc_name)
|
||||
|
||||
# more inits
|
||||
self.mesh_name = "Mesh"
|
||||
@@ -73,9 +66,9 @@ class TestSolverFrameWork(unittest.TestCase):
|
||||
|
||||
# set up the CalculiX static analysis example
|
||||
from femexamples import boxanalysis as box
|
||||
box.setup_static(self.active_doc, "calculix")
|
||||
box.setup_static(self.document, "calculix")
|
||||
|
||||
solver_obj = self.active_doc.SolverCalculiX
|
||||
solver_obj = self.document.SolverCalculiX
|
||||
|
||||
base_name = "cube_static"
|
||||
analysis_dir = testtools.get_unit_test_tmp_dir(self.temp_dir, solver_obj.Name)
|
||||
@@ -83,7 +76,7 @@ class TestSolverFrameWork(unittest.TestCase):
|
||||
# save the file
|
||||
save_fc_file = join(analysis_dir, solver_obj.Name + "_" + base_name + ".FCStd")
|
||||
fcc_print("Save FreeCAD file to {}...".format(save_fc_file))
|
||||
self.active_doc.saveAs(save_fc_file)
|
||||
self.document.saveAs(save_fc_file)
|
||||
|
||||
# write input file
|
||||
fcc_print("Checking FEM input file writing for CalculiX solver framework solver ...")
|
||||
@@ -115,19 +108,19 @@ class TestSolverFrameWork(unittest.TestCase):
|
||||
|
||||
# set up the Elmer static analysis example
|
||||
from femexamples import boxanalysis as box
|
||||
box.setup_static(self.active_doc, "elmer")
|
||||
box.setup_static(self.document, "elmer")
|
||||
|
||||
analysis_obj = self.active_doc.Analysis
|
||||
solver_obj = self.active_doc.SolverElmer
|
||||
material_obj = self.active_doc.MechanicalMaterial
|
||||
mesh_obj = self.active_doc.Mesh
|
||||
box_object = self.active_doc.Box
|
||||
analysis_obj = self.document.Analysis
|
||||
solver_obj = self.document.SolverElmer
|
||||
material_obj = self.document.MechanicalMaterial
|
||||
mesh_obj = self.document.Mesh
|
||||
box_object = self.document.Box
|
||||
|
||||
base_name = "cube_static"
|
||||
analysis_dir = testtools.get_unit_test_tmp_dir(self.temp_dir, solver_obj.Name)
|
||||
|
||||
# TODO move to elmer solver of femexample code
|
||||
ObjectsFem.makeEquationElasticity(self.active_doc, solver_obj)
|
||||
ObjectsFem.makeEquationElasticity(self.document, solver_obj)
|
||||
|
||||
# set ThermalExpansionCoefficient
|
||||
# FIXME elmer elasticity needs the dictionary key "ThermalExpansionCoefficient"
|
||||
@@ -138,17 +131,17 @@ class TestSolverFrameWork(unittest.TestCase):
|
||||
|
||||
# elmer needs a GMHS mesh object
|
||||
# FIXME error message on Python solver run
|
||||
mesh_gmsh = ObjectsFem.makeMeshGmsh(self.active_doc)
|
||||
mesh_gmsh = ObjectsFem.makeMeshGmsh(self.document)
|
||||
mesh_gmsh.CharacteristicLengthMin = "9 mm"
|
||||
mesh_gmsh.FemMesh = mesh_obj.FemMesh
|
||||
mesh_gmsh.Part = box_object
|
||||
analysis_obj.addObject(mesh_gmsh)
|
||||
self.active_doc.removeObject(mesh_obj.Name) # remove original mesh object
|
||||
self.document.removeObject(mesh_obj.Name) # remove original mesh object
|
||||
|
||||
# save the file
|
||||
save_fc_file = join(analysis_dir, solver_obj.Name + "_" + base_name + ".FCStd")
|
||||
fcc_print("Save FreeCAD file to {}...".format(save_fc_file))
|
||||
self.active_doc.saveAs(save_fc_file)
|
||||
self.document.saveAs(save_fc_file)
|
||||
|
||||
# write input files
|
||||
fcc_print("Checking FEM input file writing for Elmer solver framework solver ...")
|
||||
|
||||
Reference in New Issue
Block a user