def test_box_static_0_mm(self): fcc_print("") self.set_unit_schema(0) # mm/kg/s # set up the Elmer static analysis example from femexamples.boxanalysis_static import setup setup(self.document, "elmer") # for information: # elmer needs gmsh mesho object # FIXME error message on Python solver run # the examples do use a gmsh mesh object thus ok base_name = get_namefromdef("test_") analysis_dir = testtools.get_fem_test_tmp_dir(self.pre_dir_name + base_name) # save the file save_fc_file = join(analysis_dir, base_name + ".FCStd") # fcc_print("Save FreeCAD file to {}...".format(save_fc_file)) self.document.saveAs(save_fc_file) # write input files # fcc_print("Checking FEM input file writing for Elmer solver framework solver ...") machine_elmer = self.document.SolverElmer.Proxy.createMachine( self.document.SolverElmer, analysis_dir, True) machine_elmer.target = femsolver.run.PREPARE machine_elmer.start() machine_elmer.join() # wait for the machine to finish. fcc_print("Test writing STARTINFO file") startinfo_given = join(self.test_file_dir, "ELMERSOLVER_STARTINFO") startinfo_totest = join(analysis_dir, "ELMERSOLVER_STARTINFO") # fcc_print("Comparing {} to {}".format(startinfo_given, startinfo_totest)) ret = testtools.compare_files(startinfo_given, startinfo_totest) self.assertFalse(ret, "STARTINFO write file test failed.\n{}".format(ret)) fcc_print("Test writing case file") casefile_given = join(self.test_file_dir, base_name + self.ending) casefile_totest = join(analysis_dir, self.infilename + self.ending) # fcc_print("Comparing {} to {}".format(casefile_given, casefile_totest)) ret = testtools.compare_files(casefile_given, casefile_totest) self.assertFalse(ret, "case write file test failed.\n{}".format(ret)) fcc_print("Test writing GMSH geo file") gmshgeofile_given = join(self.test_file_dir, "group_mesh.geo") gmshgeofile_totest = join(analysis_dir, "group_mesh.geo") # 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))
def test_ccxcantilever_faceload_1_si(self): if sys.version_info.major < 3: # TODO does not pass on Python 2 # https://travis-ci.org/github/FreeCAD/FreeCAD/builds/707885742 # https://api.travis-ci.org/v3/job/707885745/log.txt fcc_print("Python 2: test aborted.") return fcc_print("") self.set_unit_schema(1) # SI-units m/kg/s from femexamples.ccx_cantilever_faceload import setup setup(self.document, "elmer") self.input_file_writing_test(get_namefromdef("test_"))
def test_elmer_ccxcanti_faceload( self ): fcc_print("\n------------- Start of FEM elmer tests for ccx cantilever faceload -------") # set up the Elmer static analysis example from femexamples.ccx_cantilever_faceload import setup setup(self.document, "elmer") solver_obj = self.document.SolverElmer base_name = "elmer_ccxcanti_faceload" analysis_dir = testtools.get_unit_test_tmp_dir(self.temp_dir, solver_obj.Name) # 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.document.saveAs(save_fc_file) # write input files fcc_print("Checking FEM input file writing for Elmer solver framework solver ...") machine_elmer = solver_obj.Proxy.createMachine( solver_obj, analysis_dir, True ) machine_elmer.target = femsolver.run.PREPARE machine_elmer.start() machine_elmer.join() # wait for the machine to finish. # compare case input file test_file_dir_elmer = join(testtools.get_fem_test_home_dir(), "elmer") fcc_print(test_file_dir_elmer) fcc_print("Test writing case file") casefile_given = join(test_file_dir_elmer, "elmer_ccxcanti_faceload_mm.sif") casefile_totest = join(analysis_dir, "case.sif") fcc_print("Comparing {} to {}".format(casefile_given, casefile_totest)) ret = testtools.compare_files(casefile_given, casefile_totest) self.assertFalse(ret, "case write file test failed.\n{}".format(ret)) fcc_print("--------------- End of FEM elmer tests for ccx cantilever faceload ---------")
def test_solver_calculix(self): fcc_print( "\n--------------- Start of FEM tests solver framework solver CalculiX ------" ) # set up the CalculiX static analysis example from femexamples.boxanalysis_static import setup setup(self.document, "calculix") solver_obj = self.document.SolverCalculiX base_name = "cube_static" analysis_dir = testtools.get_unit_test_tmp_dir(self.temp_dir, solver_obj.Name) # 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.document.saveAs(save_fc_file) # write input file fcc_print( "Checking FEM input file writing for CalculiX solver framework solver ..." ) machine_ccx = solver_obj.Proxy.createMachine(solver_obj, analysis_dir) machine_ccx.target = femsolver.run.PREPARE machine_ccx.start() machine_ccx.join() # wait for the machine to finish. infile_given = join(testtools.get_fem_test_home_dir(), "ccx", (base_name + ".inp")) inpfile_totest = join(analysis_dir, (self.mesh_name + ".inp")) fcc_print("Comparing {} to {}".format(infile_given, inpfile_totest)) ret = testtools.compare_inp_files(infile_given, inpfile_totest) self.assertFalse( ret, "ccxtools write_inp_file test failed.\n{}".format(ret)) fcc_print( "--------------- End of FEM tests solver framework solver CalculiX --------" )
def test_ccxcantilever_prescribeddisplacement_0_mm(self): fcc_print("") self.set_unit_schema(0) # mm/kg/s from femexamples.ccx_cantilever_prescribeddisplacement import setup setup(self.document, "elmer") self.input_file_writing_test(get_namefromdef("test_"))
def test_solver_elmer( self ): fcc_print("\n--------------- Start of FEM tests solver framework solver Elmer ---------") # set up the Elmer static analysis example from femexamples.boxanalysis_static import setup setup(self.document, "elmer") # for information: # elmer needs gmsh mesho object # FIXME error message on Python solver run # the examples do use a gmsh mesh object thus ok # FIXME elmer elasticity needs the dict key "ThermalExpansionCoefficient" in material solver_obj = self.document.SolverElmer base_name = "cube_static" analysis_dir = testtools.get_unit_test_tmp_dir(self.temp_dir, solver_obj.Name) # 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.document.saveAs(save_fc_file) # write input files fcc_print("Checking FEM input file writing for Elmer solver framework solver ...") machine_elmer = solver_obj.Proxy.createMachine( solver_obj, analysis_dir, True ) machine_elmer.target = femsolver.run.PREPARE machine_elmer.start() machine_elmer.join() # wait for the machine to finish. # compare startinfo, case and gmsh input files test_file_dir_elmer = join(testtools.get_fem_test_home_dir(), "elmer") fcc_print(test_file_dir_elmer) fcc_print("Test writing STARTINFO file") startinfo_given = join(test_file_dir_elmer, "ELMERSOLVER_STARTINFO") startinfo_totest = join(analysis_dir, "ELMERSOLVER_STARTINFO") fcc_print("Comparing {} to {}".format(startinfo_given, startinfo_totest)) ret = testtools.compare_files(startinfo_given, startinfo_totest) self.assertFalse(ret, "STARTINFO write file test failed.\n{}".format(ret)) fcc_print("Test writing case file") casefile_given = join(test_file_dir_elmer, "case_mm.sif") casefile_totest = join(analysis_dir, "case.sif") fcc_print("Comparing {} to {}".format(casefile_given, casefile_totest)) ret = testtools.compare_files(casefile_given, casefile_totest) self.assertFalse(ret, "case write file test failed.\n{}".format(ret)) fcc_print("Test writing GMSH geo file") gmshgeofile_given = join(test_file_dir_elmer, "group_mesh.geo") gmshgeofile_totest = join(analysis_dir, "group_mesh.geo") 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)) fcc_print("--------------- End of FEM tests solver framework solver Elmer -----------")
def test_solver_elmer(self): fcc_print( "\n--------------- Start of FEM tests solver framework solver Elmer ---------" ) # set up the Elmer static analysis example from femexamples.boxanalysis_static import setup setup(self.document, "elmer") 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.document, solver_obj) # set ThermalExpansionCoefficient # FIXME elmer elasticity needs the dictionary key "ThermalExpansionCoefficient" # even on simple elasticity analysis, otherwise it fails mat = material_obj.Material mat["ThermalExpansionCoefficient"] = "0 um/m/K" material_obj.Material = mat # elmer needs a GMHS mesh object # FIXME error message on Python solver run 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.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.document.saveAs(save_fc_file) # write input files fcc_print( "Checking FEM input file writing for Elmer solver framework solver ..." ) machine_elmer = solver_obj.Proxy.createMachine(solver_obj, analysis_dir, True) machine_elmer.target = femsolver.run.PREPARE machine_elmer.start() machine_elmer.join() # wait for the machine to finish. # compare startinfo, case and gmsh input files test_file_dir_elmer = join(testtools.get_fem_test_home_dir(), "elmer") fcc_print(test_file_dir_elmer) fcc_print("Test writing STARTINFO file") startinfo_given = join(test_file_dir_elmer, "ELMERSOLVER_STARTINFO") startinfo_totest = join(analysis_dir, "ELMERSOLVER_STARTINFO") fcc_print("Comparing {} to {}".format(startinfo_given, startinfo_totest)) ret = testtools.compare_files(startinfo_given, startinfo_totest) self.assertFalse(ret, "STARTINFO write file test failed.\n{}".format(ret)) fcc_print("Test writing case file") casefile_given = join(test_file_dir_elmer, "case.sif") casefile_totest = join(analysis_dir, "case.sif") fcc_print("Comparing {} to {}".format(casefile_given, casefile_totest)) ret = testtools.compare_files(casefile_given, casefile_totest) self.assertFalse(ret, "case write file test failed.\n{}".format(ret)) fcc_print("Test writing GMSH geo file") gmshgeofile_given = join(test_file_dir_elmer, "group_mesh.geo") gmshgeofile_totest = join(analysis_dir, "group_mesh.geo") 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)) fcc_print( "--------------- End of FEM tests solver framework solver Elmer -----------" )
def test_solver_calculix( self ): from femexamples.boxanalysis_static import setup setup(self.document, "calculix") self.calculix_inputfile_writing_test("cube_static")
def test_elmer_ccxcanti_nodeload(self): from femexamples.ccx_cantilever_nodeload import setup setup(self.document, "elmer") self.elmer_inputfile_writing_test("elmer_ccxcanti_nodeload")
def test_ccxcantilever_faceload_1_si(self): fcc_print("") self.set_unit_schema(1) # SI-units m/kg/s from femexamples.ccx_cantilever_faceload import setup setup(self.document, "elmer") self.input_file_writing_test(get_namefromdef("test_"))
def test_ccxcantilever_nodeload(self): fcc_print("") from femexamples.ccx_cantilever_nodeload import setup setup(self.document, "elmer") self.input_file_writing_test(get_namefromdef("test_"))