diff --git a/src/Mod/Fem/femmesh/meshsetsgetter.py b/src/Mod/Fem/femmesh/meshsetsgetter.py index 5669b093e2..6394e77ce3 100644 --- a/src/Mod/Fem/femmesh/meshsetsgetter.py +++ b/src/Mod/Fem/femmesh/meshsetsgetter.py @@ -89,6 +89,7 @@ class MeshSetsGetter(): self.femelement_faces_table = {} self.femelement_edges_table = {} self.femelement_count_test = True + self.mat_geo_sets = [] # ******************************************************************************************** # ******************************************************************************************** @@ -652,7 +653,7 @@ class MeshSetsGetter(): if len(self.member.mats_linear) > 1: self.get_material_elements() - # create the ccx_elsets + # create the mat_geo_sets if len(self.member.mats_linear) == 1: if self.femmesh.Volumes: # we only could do this for volumes, if a mesh contains volumes @@ -660,19 +661,19 @@ class MeshSetsGetter(): # but a mesh could contain the element faces of the volumes as faces # and the edges of the faces as edges # there we have to check for some geometric objects - self.get_ccx_elsets_single_mat_solid() + self.get_mat_geo_sets_single_mat_solid() if len(self.member.geos_shellthickness) == 1: - self.get_ccx_elsets_single_mat_single_shell() + self.get_mat_geo_sets_single_mat_single_shell() elif len(self.member.geos_shellthickness) > 1: - self.get_ccx_elsets_single_mat_multiple_shell() + self.get_mat_geo_sets_single_mat_multiple_shell() if len(self.member.geos_beamsection) == 1: - self.get_ccx_elsets_single_mat_single_beam() + self.get_mat_geo_sets_single_mat_single_beam() elif len(self.member.geos_beamsection) > 1: - self.get_ccx_elsets_single_mat_multiple_beam() + self.get_mat_geo_sets_single_mat_multiple_beam() if len(self.member.geos_fluidsection) == 1: - self.get_ccx_elsets_single_mat_single_fluid() + self.get_mat_geo_sets_single_mat_single_fluid() elif len(self.member.geos_fluidsection) > 1: - self.get_ccx_elsets_single_mat_multiple_fluid() + self.get_mat_geo_sets_single_mat_multiple_fluid() elif len(self.member.mats_linear) > 1: if self.femmesh.Volumes: # we only could do this for volumes, if a mseh contains volumes @@ -682,19 +683,19 @@ class MeshSetsGetter(): # there we have to check for some geometric objects # volume is a bit special # because retrieving ids from group mesh data is implemented - self.get_ccx_elsets_multiple_mat_solid() + self.get_mat_geo_sets_multiple_mat_solid() if len(self.member.geos_shellthickness) == 1: - self.get_ccx_elsets_multiple_mat_single_shell() + self.get_mat_geo_sets_multiple_mat_single_shell() elif len(self.member.geos_shellthickness) > 1: - self.get_ccx_elsets_multiple_mat_multiple_shell() + self.get_mat_geo_sets_multiple_mat_multiple_shell() if len(self.member.geos_beamsection) == 1: - self.get_ccx_elsets_multiple_mat_single_beam() + self.get_mat_geo_sets_multiple_mat_single_beam() elif len(self.member.geos_beamsection) > 1: - self.get_ccx_elsets_multiple_mat_multiple_beam() + self.get_mat_geo_sets_multiple_mat_multiple_beam() if len(self.member.geos_fluidsection) == 1: - self.get_ccx_elsets_multiple_mat_single_fluid() + self.get_mat_geo_sets_multiple_mat_single_fluid() elif len(self.member.geos_fluidsection) > 1: - self.get_ccx_elsets_multiple_mat_multiple_fluid() + self.get_mat_geo_sets_multiple_mat_multiple_fluid() # self.mat_geo_sets = [ { # "ccx_elset" : [e1, e2, e3, ... , en] or elements set name strings @@ -712,7 +713,7 @@ class MeshSetsGetter(): # TODO support multiple beamrotations # we do not need any more any data from the rotation document object, # thus we do not need to save the rotation document object name in the else - def get_ccx_elsets_single_mat_single_beam(self): + def get_mat_geo_sets_single_mat_single_beam(self): mat_obj = self.member.mats_linear[0]["Object"] beamsec_obj = self.member.geos_beamsection[0]["Object"] beamrot_data = self.member.geos_beamrotation[0] @@ -735,7 +736,7 @@ class MeshSetsGetter(): ccx_elset["beam_normal"] = beamdirection["normal"] self.mat_geo_sets.append(ccx_elset) - def get_ccx_elsets_single_mat_multiple_beam(self): + def get_mat_geo_sets_single_mat_multiple_beam(self): mat_obj = self.member.mats_linear[0]["Object"] beamrot_data = self.member.geos_beamrotation[0] for beamsec_data in self.member.geos_beamsection: @@ -762,7 +763,7 @@ class MeshSetsGetter(): ccx_elset["beam_normal"] = beamdirection["normal"] self.mat_geo_sets.append(ccx_elset) - def get_ccx_elsets_multiple_mat_single_beam(self): + def get_mat_geo_sets_multiple_mat_single_beam(self): beamsec_obj = self.member.geos_beamsection[0]["Object"] beamrot_data = self.member.geos_beamrotation[0] for mat_data in self.member.mats_linear: @@ -788,7 +789,7 @@ class MeshSetsGetter(): ccx_elset["beam_normal"] = beamdirection["normal"] self.mat_geo_sets.append(ccx_elset) - def get_ccx_elsets_multiple_mat_multiple_beam(self): + def get_mat_geo_sets_multiple_mat_multiple_beam(self): beamrot_data = self.member.geos_beamrotation[0] for beamsec_data in self.member.geos_beamsection: beamsec_obj = beamsec_data["Object"] @@ -820,7 +821,7 @@ class MeshSetsGetter(): self.mat_geo_sets.append(ccx_elset) # fluid - def get_ccx_elsets_single_mat_single_fluid(self): + def get_mat_geo_sets_single_mat_single_fluid(self): mat_obj = self.member.mats_linear[0]["Object"] fluidsec_obj = self.member.geos_fluidsection[0]["Object"] elset_data = self.ccx_eedges @@ -833,7 +834,7 @@ class MeshSetsGetter(): ccx_elset["fluidsection_obj"] = fluidsec_obj self.mat_geo_sets.append(ccx_elset) - def get_ccx_elsets_single_mat_multiple_fluid(self): + def get_mat_geo_sets_single_mat_multiple_fluid(self): mat_obj = self.member.mats_linear[0]["Object"] for fluidsec_data in self.member.geos_fluidsection: fluidsec_obj = fluidsec_data["Object"] @@ -847,7 +848,7 @@ class MeshSetsGetter(): ccx_elset["fluidsection_obj"] = fluidsec_obj self.mat_geo_sets.append(ccx_elset) - def get_ccx_elsets_multiple_mat_single_fluid(self): + def get_mat_geo_sets_multiple_mat_single_fluid(self): fluidsec_obj = self.member.geos_fluidsection[0]["Object"] for mat_data in self.member.mats_linear: mat_obj = mat_data["Object"] @@ -861,7 +862,7 @@ class MeshSetsGetter(): ccx_elset["fluidsection_obj"] = fluidsec_obj self.mat_geo_sets.append(ccx_elset) - def get_ccx_elsets_multiple_mat_multiple_fluid(self): + def get_mat_geo_sets_multiple_mat_multiple_fluid(self): for fluidsec_data in self.member.geos_fluidsection: fluidsec_obj = fluidsec_data["Object"] for mat_data in self.member.mats_linear: @@ -884,7 +885,7 @@ class MeshSetsGetter(): self.mat_geo_sets.append(ccx_elset) # shell - def get_ccx_elsets_single_mat_single_shell(self): + def get_mat_geo_sets_single_mat_single_shell(self): mat_obj = self.member.mats_linear[0]["Object"] shellth_obj = self.member.geos_shellthickness[0]["Object"] elset_data = self.ccx_efaces @@ -900,7 +901,7 @@ class MeshSetsGetter(): ccx_elset["shellthickness_obj"] = shellth_obj self.mat_geo_sets.append(ccx_elset) - def get_ccx_elsets_single_mat_multiple_shell(self): + def get_mat_geo_sets_single_mat_multiple_shell(self): mat_obj = self.member.mats_linear[0]["Object"] for shellth_data in self.member.geos_shellthickness: shellth_obj = shellth_data["Object"] @@ -917,7 +918,7 @@ class MeshSetsGetter(): ccx_elset["shellthickness_obj"] = shellth_obj self.mat_geo_sets.append(ccx_elset) - def get_ccx_elsets_multiple_mat_single_shell(self): + def get_mat_geo_sets_multiple_mat_single_shell(self): shellth_obj = self.member.geos_shellthickness[0]["Object"] for mat_data in self.member.mats_linear: mat_obj = mat_data["Object"] @@ -934,7 +935,7 @@ class MeshSetsGetter(): ccx_elset["shellthickness_obj"] = shellth_obj self.mat_geo_sets.append(ccx_elset) - def get_ccx_elsets_multiple_mat_multiple_shell(self): + def get_mat_geo_sets_multiple_mat_multiple_shell(self): for shellth_data in self.member.geos_shellthickness: shellth_obj = shellth_data["Object"] for mat_data in self.member.mats_linear: @@ -957,7 +958,7 @@ class MeshSetsGetter(): self.mat_geo_sets.append(ccx_elset) # solid - def get_ccx_elsets_single_mat_solid(self): + def get_mat_geo_sets_single_mat_solid(self): mat_obj = self.member.mats_linear[0]["Object"] elset_data = self.ccx_evolumes names = [ @@ -972,7 +973,7 @@ class MeshSetsGetter(): self.mat_geo_sets.append(ccx_elset) print(self.mat_geo_sets) - def get_ccx_elsets_multiple_mat_solid(self): + def get_mat_geo_sets_multiple_mat_solid(self): for mat_data in self.member.mats_linear: mat_obj = mat_data["Object"] elset_data = mat_data["FEMElements"] diff --git a/src/Mod/Fem/femsolver/calculix/write_constraint_fluidsection.py b/src/Mod/Fem/femsolver/calculix/write_constraint_fluidsection.py index a142629504..1c07af5e5e 100644 --- a/src/Mod/Fem/femsolver/calculix/write_constraint_fluidsection.py +++ b/src/Mod/Fem/femsolver/calculix/write_constraint_fluidsection.py @@ -49,8 +49,8 @@ def handle_fluidsection_liquid_inlet_outlet(inpfile, ccxwriter): # Fluid sections: # fluidsection Liquid inlet outlet objs requires special element definition # to fill ccxwriter.FluidInletoutlet_ele list the ccx_elset are needed - # thus this has to be after the creation of ccx_elsets - # different pipe cross sections will generate ccx_elsets + # thus this has to be after the creation of mat_geo_sets + # different pipe cross sections will generate mat_geo_sets ccxwriter.FluidInletoutlet_ele = [] ccxwriter.fluid_inout_nodes_file = join( @@ -76,8 +76,8 @@ def handle_fluidsection_liquid_inlet_outlet(inpfile, ccxwriter): return fluidsec_obj return None - def is_fluidsection_inoutlet_setnames_possible(ccx_elsets): - for ccx_elset in ccx_elsets: + def is_fluidsection_inoutlet_setnames_possible(mat_geo_sets): + for ccx_elset in mat_geo_sets: if ( ccx_elset["ccx_elset"] and "fluidsection_obj" in ccx_elset # fluid mesh @@ -95,7 +95,7 @@ def handle_fluidsection_liquid_inlet_outlet(inpfile, ccxwriter): # collect elementIDs for fluidsection Liquid inlet outlet objs # if they have element data (happens if not "eall") - for ccx_elset in ccxwriter.ccx_elsets: + for ccx_elset in ccxwriter.mat_geo_sets: fluidsec_obj = get_fluidsection_inoutlet_obj_if_setdata(ccx_elset) if fluidsec_obj is None: continue @@ -118,9 +118,9 @@ def handle_fluidsection_liquid_inlet_outlet(inpfile, ccxwriter): ) # create the correct element definition for fluidsection Liquid inlet outlet objs - # at least one "fluidsection_obj" needs to be in ccx_elsets and has the attributes + # at least one "fluidsection_obj" needs to be in mat_geo_sets and has the attributes # TODO: what if there are other objs in elsets? - if is_fluidsection_inoutlet_setnames_possible(ccxwriter.ccx_elsets) is not None: + if is_fluidsection_inoutlet_setnames_possible(ccxwriter.mat_geo_sets) is not None: # it is not distinguished if split input file # for split input file the main file is just closed and reopend even if not needed inpfile.close() diff --git a/src/Mod/Fem/femsolver/calculix/write_femelement_geometry.py b/src/Mod/Fem/femsolver/calculix/write_femelement_geometry.py index 559dd9cb85..e38b044ee1 100644 --- a/src/Mod/Fem/femsolver/calculix/write_femelement_geometry.py +++ b/src/Mod/Fem/femsolver/calculix/write_femelement_geometry.py @@ -32,7 +32,7 @@ def write_femelement_geometry(f, ccxwriter): f.write("\n{}\n".format(59 * "*")) f.write("** Sections\n") - for ccx_elset in ccxwriter.ccx_elsets: + for ccx_elset in ccxwriter.mat_geo_sets: if ccx_elset["ccx_elset"]: elsetdef = "ELSET={}, ".format(ccx_elset["ccx_elset_name"]) material = "MATERIAL={}".format(ccx_elset["mat_obj_name"]) diff --git a/src/Mod/Fem/femsolver/calculix/write_femelement_matgeosets.py b/src/Mod/Fem/femsolver/calculix/write_femelement_matgeosets.py index 49b32c9404..01f0f6720f 100644 --- a/src/Mod/Fem/femsolver/calculix/write_femelement_matgeosets.py +++ b/src/Mod/Fem/femsolver/calculix/write_femelement_matgeosets.py @@ -31,11 +31,11 @@ import six def write_femelement_matgeosets(f, ccxwriter): - # write ccx_elsets to file + # write mat_geo_sets to file f.write("\n{}\n".format(59 * "*")) f.write("** Element sets for materials and FEM element type (solid, shell, beam, fluid)\n") - for ccx_elset in ccxwriter.ccx_elsets: + for ccx_elset in ccxwriter.mat_geo_sets: f.write("*ELSET,ELSET={}\n".format(ccx_elset["ccx_elset_name"])) diff --git a/src/Mod/Fem/femsolver/calculix/writer.py b/src/Mod/Fem/femsolver/calculix/writer.py index 56439cf5bf..327cbbf0ae 100644 --- a/src/Mod/Fem/femsolver/calculix/writer.py +++ b/src/Mod/Fem/femsolver/calculix/writer.py @@ -134,7 +134,7 @@ class FemInputWriterCcx(writerbase.FemInputWriter): FreeCAD.Console.PrintMessage("Get mesh sets.\n") time_start = time.process_time() - if not self.ccx_elsets: + if not self.mat_geo_sets: self.get_mesh_sets() time_getsets = time.process_time() @@ -155,7 +155,7 @@ class FemInputWriterCcx(writerbase.FemInputWriter): # element sets for materials and element geometry write_femelement_matgeosets.write_femelement_matgeosets(inpfile, self) - # some fluidsection objs need special treatment, ccx_elsets are needed for this + # some fluidsection objs need special treatment, mat_geo_sets are needed for this inpfile = con_fluidsection.handle_fluidsection_liquid_inlet_outlet(inpfile, self) # element sets constraints diff --git a/src/Mod/Fem/femsolver/writerbase.py b/src/Mod/Fem/femsolver/writerbase.py index e18f48ed46..f4870f8918 100644 --- a/src/Mod/Fem/femsolver/writerbase.py +++ b/src/Mod/Fem/femsolver/writerbase.py @@ -76,10 +76,7 @@ class FemInputWriter(): self.ccx_evolumes = "Evolumes" self.ccx_efaces = "Efaces" self.ccx_eedges = "Eedges" - if mat_geo_sets is not None: - self.ccx_elsets = mat_geo_sets - else: - self.ccx_elsets = [] + self.mat_geo_sets = mat_geo_sets if self.mesh_object: if hasattr(self.mesh_object, "Shape"): self.theshape = self.mesh_object.Shape @@ -304,7 +301,7 @@ class FemInputWriter(): def get_element_sets_material_and_femelement_geometry(self): self.meshdatagetter.get_element_sets_material_and_femelement_geometry() - self.ccx_elsets = self.meshdatagetter.mat_geo_sets + self.mat_geo_sets = self.meshdatagetter.mat_geo_sets ## @}