FEM: unit test, separat method to create a doc with all FEM objects
This commit is contained in:
@@ -60,68 +60,7 @@ class TestObjectCreate(unittest.TestCase):
|
||||
def test_femobjects_make(
|
||||
self
|
||||
):
|
||||
doc = self.document
|
||||
analysis = ObjectsFem.makeAnalysis(doc)
|
||||
|
||||
analysis.addObject(ObjectsFem.makeConstraintBearing(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintBodyHeatSource(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintContact(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintDisplacement(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintElectrostaticPotential(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintFixed(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintFlowVelocity(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintFluidBoundary(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintForce(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintGear(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintHeatflux(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintInitialFlowVelocity(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintInitialTemperature(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintPlaneRotation(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintPressure(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintPulley(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintSelfWeight(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintTemperature(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintTie(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintTransform(doc))
|
||||
|
||||
analysis.addObject(ObjectsFem.makeElementFluid1D(doc))
|
||||
analysis.addObject(ObjectsFem.makeElementGeometry1D(doc))
|
||||
analysis.addObject(ObjectsFem.makeElementGeometry2D(doc))
|
||||
analysis.addObject(ObjectsFem.makeElementRotation1D(doc))
|
||||
|
||||
analysis.addObject(ObjectsFem.makeMaterialFluid(doc))
|
||||
mat = analysis.addObject(ObjectsFem.makeMaterialSolid(doc))[0]
|
||||
analysis.addObject(ObjectsFem.makeMaterialMechanicalNonlinear(doc, mat))
|
||||
analysis.addObject(ObjectsFem.makeMaterialReinforced(doc))
|
||||
|
||||
msh = analysis.addObject(ObjectsFem.makeMeshGmsh(doc))[0]
|
||||
ObjectsFem.makeMeshBoundaryLayer(doc, msh)
|
||||
ObjectsFem.makeMeshGroup(doc, msh)
|
||||
ObjectsFem.makeMeshRegion(doc, msh)
|
||||
analysis.addObject(ObjectsFem.makeMeshNetgen(doc))
|
||||
rm = ObjectsFem.makeMeshResult(doc)
|
||||
|
||||
res = analysis.addObject(ObjectsFem.makeResultMechanical(doc))[0]
|
||||
res.Mesh = rm
|
||||
if "BUILD_FEM_VTK" in FreeCAD.__cmake__:
|
||||
vres = analysis.addObject(ObjectsFem.makePostVtkResult(doc, res))[0]
|
||||
ObjectsFem.makePostVtkFilterClipRegion(doc, vres)
|
||||
ObjectsFem.makePostVtkFilterClipScalar(doc, vres)
|
||||
ObjectsFem.makePostVtkFilterCutFunction(doc, vres)
|
||||
ObjectsFem.makePostVtkFilterWarp(doc, vres)
|
||||
|
||||
analysis.addObject(ObjectsFem.makeSolverCalculixCcxTools(doc))
|
||||
analysis.addObject(ObjectsFem.makeSolverCalculix(doc))
|
||||
sol = analysis.addObject(ObjectsFem.makeSolverElmer(doc))[0]
|
||||
analysis.addObject(ObjectsFem.makeSolverZ88(doc))
|
||||
|
||||
ObjectsFem.makeEquationElasticity(doc, sol)
|
||||
ObjectsFem.makeEquationElectrostatic(doc, sol)
|
||||
ObjectsFem.makeEquationFlow(doc, sol)
|
||||
ObjectsFem.makeEquationFluxsolver(doc, sol)
|
||||
ObjectsFem.makeEquationHeat(doc, sol)
|
||||
|
||||
doc.recompute()
|
||||
doc = create_all_fem_objects_doc(self.document)
|
||||
|
||||
# count the def make in ObjectsFem module
|
||||
# if FEM VTK post processing is disabled, we are not able to create VTK post objects
|
||||
@@ -140,7 +79,7 @@ class TestObjectCreate(unittest.TestCase):
|
||||
# analysis itself is not in analysis group --> 1
|
||||
# thus: -14
|
||||
|
||||
self.assertEqual(len(analysis.Group), count_defmake - 14)
|
||||
self.assertEqual(len(doc.Analysis.Group), count_defmake - 14)
|
||||
self.assertEqual(len(doc.Objects), count_defmake)
|
||||
|
||||
fcc_print("doc objects count: {}, method: {}".format(
|
||||
@@ -194,6 +133,7 @@ class TestObjectType(unittest.TestCase):
|
||||
self
|
||||
):
|
||||
doc = self.document
|
||||
create_all_fem_objects_doc
|
||||
|
||||
from femtools.femutils import type_of_obj
|
||||
self.assertEqual(
|
||||
@@ -1533,3 +1473,72 @@ class TestObjectType(unittest.TestCase):
|
||||
):
|
||||
# clearance, is executed after every test
|
||||
FreeCAD.closeDocument(self.doc_name)
|
||||
|
||||
|
||||
# helper
|
||||
def create_all_fem_objects_doc(
|
||||
doc
|
||||
):
|
||||
analysis = ObjectsFem.makeAnalysis(doc)
|
||||
|
||||
analysis.addObject(ObjectsFem.makeConstraintBearing(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintBodyHeatSource(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintContact(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintDisplacement(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintElectrostaticPotential(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintFixed(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintFlowVelocity(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintFluidBoundary(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintForce(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintGear(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintHeatflux(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintInitialFlowVelocity(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintInitialTemperature(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintPlaneRotation(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintPressure(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintPulley(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintSelfWeight(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintTemperature(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintTie(doc))
|
||||
analysis.addObject(ObjectsFem.makeConstraintTransform(doc))
|
||||
|
||||
analysis.addObject(ObjectsFem.makeElementFluid1D(doc))
|
||||
analysis.addObject(ObjectsFem.makeElementGeometry1D(doc))
|
||||
analysis.addObject(ObjectsFem.makeElementGeometry2D(doc))
|
||||
analysis.addObject(ObjectsFem.makeElementRotation1D(doc))
|
||||
|
||||
analysis.addObject(ObjectsFem.makeMaterialFluid(doc))
|
||||
mat = analysis.addObject(ObjectsFem.makeMaterialSolid(doc))[0]
|
||||
analysis.addObject(ObjectsFem.makeMaterialMechanicalNonlinear(doc, mat))
|
||||
analysis.addObject(ObjectsFem.makeMaterialReinforced(doc))
|
||||
|
||||
msh = analysis.addObject(ObjectsFem.makeMeshGmsh(doc))[0]
|
||||
ObjectsFem.makeMeshBoundaryLayer(doc, msh)
|
||||
ObjectsFem.makeMeshGroup(doc, msh)
|
||||
ObjectsFem.makeMeshRegion(doc, msh)
|
||||
analysis.addObject(ObjectsFem.makeMeshNetgen(doc))
|
||||
rm = ObjectsFem.makeMeshResult(doc)
|
||||
|
||||
res = analysis.addObject(ObjectsFem.makeResultMechanical(doc))[0]
|
||||
res.Mesh = rm
|
||||
if "BUILD_FEM_VTK" in FreeCAD.__cmake__:
|
||||
vres = analysis.addObject(ObjectsFem.makePostVtkResult(doc, res))[0]
|
||||
ObjectsFem.makePostVtkFilterClipRegion(doc, vres)
|
||||
ObjectsFem.makePostVtkFilterClipScalar(doc, vres)
|
||||
ObjectsFem.makePostVtkFilterCutFunction(doc, vres)
|
||||
ObjectsFem.makePostVtkFilterWarp(doc, vres)
|
||||
|
||||
analysis.addObject(ObjectsFem.makeSolverCalculixCcxTools(doc))
|
||||
analysis.addObject(ObjectsFem.makeSolverCalculix(doc))
|
||||
sol = analysis.addObject(ObjectsFem.makeSolverElmer(doc))[0]
|
||||
analysis.addObject(ObjectsFem.makeSolverZ88(doc))
|
||||
|
||||
ObjectsFem.makeEquationElasticity(doc, sol)
|
||||
ObjectsFem.makeEquationElectrostatic(doc, sol)
|
||||
ObjectsFem.makeEquationFlow(doc, sol)
|
||||
ObjectsFem.makeEquationFluxsolver(doc, sol)
|
||||
ObjectsFem.makeEquationHeat(doc, sol)
|
||||
|
||||
doc.recompute()
|
||||
|
||||
return doc
|
||||
|
||||
Reference in New Issue
Block a user