diff --git a/src/Mod/Fem/femtest/app/test_solverframework.py b/src/Mod/Fem/femtest/app/test_solverframework.py index fa0dbce4d2..3cd388d009 100644 --- a/src/Mod/Fem/femtest/app/test_solverframework.py +++ b/src/Mod/Fem/femtest/app/test_solverframework.py @@ -22,7 +22,6 @@ # * * # ***************************************************************************/ -import Fem import FreeCAD import ObjectsFem import femsolver.run @@ -70,97 +69,15 @@ class TestSolverFrameWork(unittest.TestCase): self ): fcc_print("\n--------------- Start of FEM tests solver frame work ---------------") - box = self.active_doc.addObject("Part::Box", "Box") - fcc_print("Checking FEM new analysis...") - analysis = ObjectsFem.makeAnalysis( - self.active_doc, - "Analysis" - ) - self.assertTrue(analysis, "FemTest of new analysis failed") - fcc_print("Checking FEM new material...") - material_object = ObjectsFem.makeMaterialSolid( - self.active_doc, - "MechanicalMaterial" - ) - mat = material_object.Material - mat["Name"] = "Steel-Generic" - mat["YoungsModulus"] = "200000 MPa" - mat["PoissonRatio"] = "0.30" - mat["Density"] = "7900 kg/m^3" - material_object.Material = mat - self.assertTrue(material_object, "FemTest of new material failed") - analysis.addObject(material_object) + # set up the static analysis example + from femexamples import boxanalysis as box + box.setup_static(self.active_doc, "calculix") - fcc_print("Checking FEM new fixed constraint...") - fixed_constraint = self.active_doc.addObject( - "Fem::ConstraintFixed", - "FemConstraintFixed" - ) - fixed_constraint.References = [(box, "Face1")] - self.assertTrue(fixed_constraint, "FemTest of new fixed constraint failed") - analysis.addObject(fixed_constraint) - - fcc_print("Checking FEM new force constraint...") - force_constraint = self.active_doc.addObject( - "Fem::ConstraintForce", - "FemConstraintForce" - ) - force_constraint.References = [(box, "Face6")] - force_constraint.Force = 40000.0 - force_constraint.Direction = (box, ["Edge5"]) - self.active_doc.recompute() - force_constraint.Reversed = True - self.active_doc.recompute() - self.assertTrue(force_constraint, "FemTest of new force constraint failed") - analysis.addObject(force_constraint) - - fcc_print("Checking FEM new pressure constraint...") - pressure_constraint = self.active_doc.addObject( - "Fem::ConstraintPressure", - "FemConstraintPressure" - ) - pressure_constraint.References = [(box, "Face2")] - pressure_constraint.Pressure = 1000.0 - pressure_constraint.Reversed = False - self.assertTrue(pressure_constraint, "FemTest of new pressure constraint failed") - analysis.addObject(pressure_constraint) - - fcc_print("Checking FEM new mesh...") - from ..data.ccx.cube_mesh import create_nodes_cube - from ..data.ccx.cube_mesh import create_elements_cube - mesh = Fem.FemMesh() - ret = create_nodes_cube(mesh) - self.assertTrue(ret, "Import of mesh nodes failed") - ret = create_elements_cube(mesh) - self.assertTrue(ret, "Import of mesh volumes failed") - mesh_object = self.active_doc.addObject( - "Fem::FemMeshObject", - self.mesh_name - ) - mesh_object.FemMesh = mesh - self.assertTrue(mesh, "FemTest of new mesh failed") - analysis.addObject(mesh_object) - - self.active_doc.recompute() - - # solver frame work ccx solver - # calculix solver object - fcc_print("\nChecking FEM CalculiX solver for solver frame work...") - solver_ccx_object = ObjectsFem.makeSolverCalculix( - self.active_doc, - "SolverCalculiX" - ) - solver_ccx_object.AnalysisType = "static" - solver_ccx_object.GeometricalNonlinearity = "linear" - solver_ccx_object.ThermoMechSteadyState = False - solver_ccx_object.MatrixSolverType = "default" - solver_ccx_object.IterationsControlParameterTimeUse = False - solver_ccx_object.EigenmodesCount = 10 - solver_ccx_object.EigenmodeHighLimit = 1000000.0 - solver_ccx_object.EigenmodeLowLimit = 0.0 - self.assertTrue(solver_ccx_object, "FemTest of new ccx solver failed") - analysis.addObject(solver_ccx_object) + analysis = self.active_doc.Analysis + solver_ccx_object = self.active_doc.SolverCalculiX + material_object = self.active_doc.MechanicalMaterial + mesh_object = self.active_doc.Mesh static_base_name = "cube_static" solverframework_analysis_dir = testtools.get_unit_test_tmp_dir( @@ -189,6 +106,7 @@ class TestSolverFrameWork(unittest.TestCase): ret = testtools.compare_inp_files(infile_given, inpfile_totest) self.assertFalse(ret, "ccxtools write_inp_file test failed.\n{}".format(ret)) + ''' # use solver frame work elmer solver # elmer solver object solver_elmer_object = ObjectsFem.makeSolverElmer( @@ -254,10 +172,12 @@ class TestSolverFrameWork(unittest.TestCase): fcc_print("Comparing {} to {}".format(gmshgeofile_given, gmshgeofile_totest)) ret = testtools.compare_files(gmshgeofile_given, gmshgeofile_totest) self.assertFalse(ret, "GMSH geo write file test failed.\n{}".format(ret)) + ''' save_fc_file = solverframework_analysis_dir + static_base_name + ".FCStd" fcc_print("Save FreeCAD file for static2 analysis to {}...".format(save_fc_file)) self.active_doc.saveAs(save_fc_file) + fcc_print("--------------- End of FEM tests solver frame work ---------------") # ********************************************************************************************