Exemplo n.º 1
0
    def run(self):
        global _inputFileName
        self.pushStatus("Preparing input...\n")

        # get mesh set data
        # TODO evaluate if it makes sense to add new task
        # between check and prepare to the solver frame work
        mesh_obj = membertools.get_mesh_to_solve(self.analysis)[0]  # pre check done already
        meshdatagetter = meshsetsgetter.MeshSetsGetter(
            self.analysis,
            self.solver,
            mesh_obj,
            membertools.AnalysisMember(self.analysis),
        )
        meshdatagetter.get_mesh_sets()

        # write solver input
        w = writer.FemInputWriterCcx(
            self.analysis,
            self.solver,
            mesh_obj,
            meshdatagetter.member,
            self.directory,
            meshdatagetter.mat_geo_sets
        )
        path = w.write_solver_input()
        # report to user if task succeeded
        if path != "" and os.path.isfile(path):
            self.pushStatus("Writing solver input completed.")
        else:
            self.pushStatus("Writing solver input failed.")
            self.fail()
        _inputFileName = os.path.splitext(os.path.basename(path))[0]
Exemplo n.º 2
0
    def run(self):
        self.pushStatus("Preparing solver input...\n")

        # get mesh set data
        # TODO see calculix tasks get mesh set data
        mesh_obj = membertools.get_mesh_to_solve(
            self.analysis)[0]  # pre check done already
        meshdatagetter = meshsetsgetter.MeshSetsGetter(
            self.analysis,
            self.solver,
            mesh_obj,
            membertools.AnalysisMember(self.analysis),
        )
        meshdatagetter.get_mesh_sets()

        # write solver input
        w = writer.FemInputWriterZ88(self.analysis, self.solver, mesh_obj,
                                     meshdatagetter.member, self.directory)
        path = w.write_solver_input()
        # report to user if task succeeded
        if path is not None:
            self.pushStatus("Writing solver input completed.")
        else:
            self.pushStatus("Writing solver input failed.")
            self.fail()
Exemplo n.º 3
0
    def write_inp_file(self):

        # get mesh set data
        # TODO use separate method for getting the mesh set data
        from femmesh import meshsetsgetter
        meshdatagetter = meshsetsgetter.MeshSetsGetter(
            self.analysis,
            self.solver,
            self.mesh,
            membertools.AnalysisMember(self.analysis),
        )
        # save the sets into the member objects of the instanz meshdatagetter
        meshdatagetter.get_mesh_sets()

        # write input file
        import femsolver.calculix.writer as iw
        self.inp_file_name = ""
        try:
            inp_writer = iw.FemInputWriterCcx(
                self.analysis,
                self.solver,
                self.mesh,
                meshdatagetter.member,
                self.working_dir,
                meshdatagetter.mat_geo_sets
            )
            self.inp_file_name = inp_writer.write_solver_input()
        except Exception:
            FreeCAD.Console.PrintError(
                "Unexpected error when writing CalculiX input file: {}\n"
                .format(sys.exc_info()[1])
            )
            raise
Exemplo n.º 4
0
 def run(self):
     self.pushStatus("Preparing input files...\n")
     w = writer.FemInputWriterZ88(
         self.analysis,
         self.solver,
         membertools.get_mesh_to_solve(self.analysis)[0],  # pre check has been done already
         membertools.AnalysisMember(self.analysis),
         self.directory
     )
     path = w.write_z88_input()
     # report to user if task succeeded
     if path is not None:
         self.pushStatus("Write completed!")
     else:
         self.pushStatus("Writing Z88 input files failed!")
Exemplo n.º 5
0
    def update_objects(self):
        ## @var mesh
        #  mesh of the analysis. Used to generate .inp file and to show results
        self.mesh = None
        mesh, message = membertools.get_mesh_to_solve(self.analysis)
        if mesh is not None:
            self.mesh = mesh
        else:
            if FreeCAD.GuiUp:
                QtGui.QMessageBox.critical(None, "Missing prerequisite", message)
            raise Exception(message + "\n")

        ## @var members
        # members of the analysis. All except solvers and the mesh
        self.member = membertools.AnalysisMember(self.analysis)
Exemplo n.º 6
0
    def run(self):
        self.pushStatus("Checking analysis member...\n")
        self.check_mesh_exists()

        # workaround use Calculix ccxtools pre checks
        from femtools.checksanalysis import check_member_for_solver_calculix
        message = check_member_for_solver_calculix(
            self.analysis, self.solver,
            membertools.get_mesh_to_solve(self.analysis)[0],
            membertools.AnalysisMember(self.analysis))
        if message:
            text = "CalculiX can not be started...\n"
            self.report.error("{}{}".format(text, message))
            self.fail()
            return
Exemplo n.º 7
0
    def update_objects(self):
        ## @var mesh
        #  mesh for the analysis
        self.mesh = None
        mesh, message = membertools.get_mesh_to_solve(self.analysis)
        if mesh is not None:
            self.mesh = mesh
        else:
            # the prerequisites will run anyway and they will print a message box anyway
            # thus do not print one here, but print a console warning
            FreeCAD.Console.PrintWarning(
                "{} The prerequisite check will fail.\n".format(message))

        ## @var members
        # members of the analysis. All except the solver and the mesh
        self.member = membertools.AnalysisMember(self.analysis)
Exemplo n.º 8
0
 def run(self):
     global _inputFileName
     self.pushStatus("Preparing input files...\n")
     w = writer.FemInputWriterCcx(
         self.analysis,
         self.solver,
         membertools.get_mesh_to_solve(
             self.analysis)[0],  # pre check has been done already
         membertools.AnalysisMember(self.analysis),
         self.directory)
     path = w.write_calculix_input_file()
     # report to user if task succeeded
     if path != "":
         self.pushStatus("Write completed!")
     else:
         self.pushStatus("Writing CalculiX input file failed!")
     _inputFileName = os.path.splitext(os.path.basename(path))[0]