def purge_results(self): self.pushStatus("Purge existing results...\n") # TODO see calculix result tasks for m in membertools.get_member(self.analysis, "Fem::FemResultObject"): if femutils.is_of_type(m.Mesh, "Fem::MeshResult"): self.analysis.Document.removeObject(m.Mesh.Name) self.analysis.Document.removeObject(m.Name) self.analysis.Document.recompute()
def checkMaterial(self): matObjs = membertools.get_member(self.analysis, "App::MaterialObjectPython") if len(matObjs) == 0: self.report.error("No material object found. " "At least one material is required.") self.fail() return False return True
def checkMesh(self): meshes = membertools.get_member(self.analysis, "Fem::FemMeshObject") if len(meshes) == 0: self.report.error("Missing a mesh object.") self.fail() return False elif len(meshes) > 1: self.report.error("Too many meshes. " "More than one mesh is not supported.") self.fail() return False return True
def purge_results(self): self.pushStatus("Purge existing results...\n") # TODO dat file will not be removed # TODO implement a generic purge method # TODO results from other solvers will be removed too # the user should decide if purge should only # delete this solver results or results from all solvers for m in membertools.get_member(self.analysis, "Fem::FemResultObject"): if m.Mesh and femutils.is_of_type(m.Mesh, "Fem::MeshResult"): self.analysis.Document.removeObject(m.Mesh.Name) self.analysis.Document.removeObject(m.Name) self.analysis.Document.recompute()
def load_results_ccxdat(self): dat_result_file = os.path.join(self.directory, _inputFileName + ".dat") if os.path.isfile(dat_result_file): mode_frequencies = importCcxDatResults.import_dat( dat_result_file, self.analysis) else: raise Exception( "FEM: No .dat results found at {}!".format(dat_result_file)) if mode_frequencies: for m in membertools.get_member(self.analysis, "Fem::FemResultObject"): if m.Eigenmode > 0: for mf in mode_frequencies: if m.Eigenmode == mf["eigenmode"]: m.EigenmodeFrequency = mf["frequency"]
def load_ccxdat_results(self): dat_result_file = os.path.join(self.directory, _inputFileName + ".dat") if os.path.isfile(dat_result_file): mode_frequencies = importCcxDatResults.import_dat( dat_result_file, self.analysis) else: # TODO: use solver framework status message system FreeCAD.Console.PrintError( "FEM: No results found at {}!\n".format(dat_result_file)) self.fail() if mode_frequencies: for m in membertools.get_member(self.analysis, "Fem::FemResultObject"): if m.Eigenmode > 0: for mf in mode_frequencies: if m.Eigenmode == mf["eigenmode"]: m.EigenmodeFrequency = mf["frequency"]
def _getMember(self, t): return membertools.get_member(self.analysis, t)
def checkHandled(self, w): handled = w.getHandledConstraints() allConstraints = membertools.get_member(self.analysis, "Fem::Constraint") for obj in set(allConstraints) - handled: self.report.warning("Ignored constraint %s." % obj.Label)
def purge_results(self): for m in membertools.get_member(self.analysis, "Fem::FemResultObject"): if m.Mesh and femutils.is_of_type(m.Mesh, "Fem::MeshResult"): self.analysis.Document.removeObject(m.Mesh.Name) self.analysis.Document.removeObject(m.Name) self.analysis.Document.recompute()