Fem: Write reaction force from rigid body nodes - fixes #14558

This commit is contained in:
marioalexis
2024-06-09 15:20:55 -03:00
committed by Chris Hennes
parent 75fe4f60f6
commit c1b2e933d2
2 changed files with 24 additions and 0 deletions

View File

@@ -73,6 +73,11 @@ def write_constraint(f, femobj, rb_obj, ccxwriter):
f.write("{},{},{},{}\n".format(ref_node_idx, *rb_obj.ReferenceNode))
f.write("{},{},{},{}\n".format(rot_node_idx, *rb_obj.ReferenceNode))
f.write("*NSET,NSET={}_RefNode\n".format(rb_obj.Name))
f.write("{},\n".format(ref_node_idx))
f.write("*NSET,NSET={}_RotNode\n".format(rb_obj.Name))
f.write("{},\n".format(rot_node_idx))
kw_line = "*RIGID BODY, NSET={}, REF NODE={}, ROT NODE={}".format(rb_obj.Name, ref_node_idx, rot_node_idx)
f.write(kw_line + "\n")

View File

@@ -84,6 +84,25 @@ def write_step_output(f, ccxwriter):
):
f.write("*NODE PRINT, NSET={}, TOTALS=ONLY\n".format(femobj["Object"].Name))
f.write("RF\n")
if ccxwriter.member.cons_rigidbody:
# reaction forces/moments for Constraint rigid body
f.write("** reaction forces/moments for Constraint rigid body\n")
for femobj in ccxwriter.member.cons_rigidbody:
# femobj --> dict, FreeCAD document object is femobj["Object"]
if (
femobj["Object"].TranslationalModeX != "Free"
or femobj["Object"].TranslationalModeY != "Free"
or femobj["Object"].TranslationalModeZ != "Free"
):
f.write("*NODE PRINT, NSET={}_RefNode, TOTALS=ONLY\n".format(femobj["Object"].Name))
f.write("RF\n")
if (
femobj["Object"].RotationalModeX != "Free"
or femobj["Object"].RotationalModeY != "Free"
or femobj["Object"].RotationalModeZ != "Free"
):
f.write("*NODE PRINT, NSET={}_RotNode, TOTALS=ONLY\n".format(femobj["Object"].Name))
f.write("RF\n")
if ccxwriter.member.cons_fixed or ccxwriter.member.cons_displacement:
f.write("\n")
f.write("*OUTPUT, FREQUENCY={}".format(ccxwriter.solver_obj.OutputFrequency))