From 9ab0fa44f225aec7efb355c548870240ce711311 Mon Sep 17 00:00:00 2001 From: Bernd Hahnebach Date: Tue, 2 Jul 2019 12:51:40 +0200 Subject: [PATCH] FEM: frd result reader, fix compact mesh for multiple result sets if not compacted --- src/Mod/Fem/feminout/importCcxFrdResults.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/Mod/Fem/feminout/importCcxFrdResults.py b/src/Mod/Fem/feminout/importCcxFrdResults.py index 23280ddbc3..089908a905 100644 --- a/src/Mod/Fem/feminout/importCcxFrdResults.py +++ b/src/Mod/Fem/feminout/importCcxFrdResults.py @@ -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)