FEM: frd result reader, fix compact mesh for multiple result sets if not compacted
This commit is contained in:
@@ -84,6 +84,8 @@ def importFrd(
|
||||
'Result_mesh'
|
||||
)
|
||||
result_mesh_object.FemMesh = mesh
|
||||
res_mesh_is_compacted = False
|
||||
nodenumbers_for_compacted_mesh = []
|
||||
|
||||
number_of_increments = len(m['Results'])
|
||||
FreeCAD.Console.PrintLog(
|
||||
@@ -118,14 +120,30 @@ def importFrd(
|
||||
res_obj = importToolsFem.fill_femresult_mechanical(res_obj, result_set)
|
||||
if analysis:
|
||||
analysis_object.addObject(res_obj)
|
||||
|
||||
# complementary result object calculations
|
||||
import femresult.resulttools as restools
|
||||
import femtools.femutils as femutils
|
||||
if not res_obj.MassFlowRate:
|
||||
# information 1:
|
||||
# only compact result if not Flow 1D results
|
||||
# compact result object, workaround for bug 2873
|
||||
# https://www.freecadweb.org/tracker/view.php?id=2873
|
||||
res_obj = restools.compact_result(res_obj)
|
||||
# information 2:
|
||||
# if the result data has multiple result sets there will be multiple result objs
|
||||
# they all will use one mesh obj
|
||||
# on the first res obj fill the mesh obj will be compacted, thus
|
||||
# it does not need to be compacted on further result sets
|
||||
# but NodeNumbers need to be compacted for every result set (res object fill)
|
||||
# example frd file: https://forum.freecadweb.org/viewtopic.php?t=32649#p274291
|
||||
if res_mesh_is_compacted is False:
|
||||
# first result set, compact FemMesh and NodeNumbers
|
||||
res_obj = restools.compact_result(res_obj)
|
||||
res_mesh_is_compacted = True
|
||||
nodenumbers_for_compacted_mesh = res_obj.NodeNumbers
|
||||
else:
|
||||
# all other result sets, do not compact FemMesh, only set NodeNumbers
|
||||
res_obj.NodeNumbers = nodenumbers_for_compacted_mesh
|
||||
|
||||
# fill DisplacementLengths
|
||||
res_obj = restools.add_disp_apps(res_obj)
|
||||
|
||||
Reference in New Issue
Block a user