| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | __title__ = "FreeCAD FEM result mechanical document object" |
| | __author__ = "Qingfeng Xia, Bernd Hahnebach" |
| | __url__ = "https://www.freecad.org" |
| |
|
| | |
| | |
| | |
| |
|
| | from . import base_fempythonobject |
| |
|
| |
|
| | class ResultMechanical(base_fempythonobject.BaseFemPythonObject): |
| | """ |
| | The Fem::ResultMechanical's Proxy python type, add result specific properties |
| | """ |
| |
|
| | Type = "Fem::ResultMechanical" |
| |
|
| | def __init__(self, obj): |
| | super().__init__(obj) |
| |
|
| | obj.addProperty( |
| | "App::PropertyString", |
| | "ResultType", |
| | "Base", |
| | "Type of the result", |
| | 1, |
| | ) |
| | obj.setPropertyStatus("ResultType", "LockDynamic") |
| | obj.ResultType = str(self.Type) |
| |
|
| | |
| | obj.addProperty("App::PropertyInteger", "Eigenmode", "Data", "", True) |
| | obj.setPropertyStatus("Eigenmode", "LockDynamic") |
| | obj.addProperty( |
| | "App::PropertyFloat", "EigenmodeFrequency", "Data", "User Defined Results", True |
| | ) |
| | obj.setPropertyStatus("EigenmodeFrequency", "LockDynamic") |
| |
|
| | |
| | |
| | |
| | |
| | obj.addProperty( |
| | "App::PropertyVectorList", |
| | "DisplacementVectors", |
| | "NodeData", |
| | "List of displacement vectors", |
| | True, |
| | ) |
| | obj.setPropertyStatus("DisplacementVectors", "LockDynamic") |
| | obj.addProperty( |
| | "App::PropertyFloatList", |
| | "Peeq", |
| | "NodeData", |
| | "List of equivalent plastic strain values", |
| | True, |
| | ) |
| | obj.setPropertyStatus("Peeq", "LockDynamic") |
| | obj.addProperty( |
| | "App::PropertyFloatList", |
| | "MohrCoulomb", |
| | "NodeData", |
| | "List of Mohr Coulomb stress values", |
| | True, |
| | ) |
| | obj.setPropertyStatus("MohrCoulomb", "LockDynamic") |
| | obj.addProperty( |
| | "App::PropertyFloatList", |
| | "ReinforcementRatio_x", |
| | "NodeData", |
| | "Reinforcement ratio in X-direction", |
| | True, |
| | ) |
| | obj.setPropertyStatus("ReinforcementRatio_x", "LockDynamic") |
| | obj.addProperty( |
| | "App::PropertyFloatList", |
| | "ReinforcementRatio_y", |
| | "NodeData", |
| | "Reinforcement ratio in Y-direction", |
| | True, |
| | ) |
| | obj.setPropertyStatus("ReinforcementRatio_y", "LockDynamic") |
| | obj.addProperty( |
| | "App::PropertyFloatList", |
| | "ReinforcementRatio_z", |
| | "NodeData", |
| | "Reinforcement ratio in Z-direction", |
| | True, |
| | ) |
| | obj.setPropertyStatus("ReinforcementRatio_z", "LockDynamic") |
| | |
| | |
| | obj.addProperty( |
| | "App::PropertyVectorList", |
| | "PS1Vector", |
| | "NodeData", |
| | "List of 1st Principal Stress Vectors", |
| | True, |
| | ) |
| | obj.setPropertyStatus("PS1Vector", "LockDynamic") |
| | obj.addProperty( |
| | "App::PropertyVectorList", |
| | "PS2Vector", |
| | "NodeData", |
| | "List of 2nd Principal Stress Vectors", |
| | True, |
| | ) |
| | obj.setPropertyStatus("PS2Vector", "LockDynamic") |
| | obj.addProperty( |
| | "App::PropertyVectorList", |
| | "PS3Vector", |
| | "NodeData", |
| | "List of 3rd Principal Stress Vectors", |
| | True, |
| | ) |
| | obj.setPropertyStatus("PS3Vector", "LockDynamic") |
| |
|
| | |
| | obj.addProperty( |
| | "App::PropertyFloatList", |
| | "DisplacementLengths", |
| | "NodeData", |
| | "List of displacement lengths", |
| | True, |
| | ) |
| | obj.setPropertyStatus("DisplacementLengths", "LockDynamic") |
| | obj.addProperty( |
| | "App::PropertyFloatList", |
| | "vonMises", |
| | "NodeData", |
| | "List of von Mises equivalent stresses", |
| | True, |
| | ) |
| | obj.setPropertyStatus("vonMises", "LockDynamic") |
| | obj.addProperty("App::PropertyFloatList", "PrincipalMax", "NodeData", "", True) |
| | obj.setPropertyStatus("PrincipalMax", "LockDynamic") |
| | obj.addProperty("App::PropertyFloatList", "PrincipalMed", "NodeData", "", True) |
| | obj.setPropertyStatus("PrincipalMed", "LockDynamic") |
| | obj.addProperty("App::PropertyFloatList", "PrincipalMin", "NodeData", "", True) |
| | obj.setPropertyStatus("PrincipalMin", "LockDynamic") |
| | obj.addProperty( |
| | "App::PropertyFloatList", |
| | "MaxShear", |
| | "NodeData", |
| | "List of Maximum Shear stress values", |
| | True, |
| | ) |
| | obj.setPropertyStatus("MaxShear", "LockDynamic") |
| | obj.addProperty( |
| | "App::PropertyFloatList", |
| | "MassFlowRate", |
| | "NodeData", |
| | "List of mass flow rate values", |
| | True, |
| | ) |
| | obj.setPropertyStatus("MassFlowRate", "LockDynamic") |
| | obj.addProperty( |
| | "App::PropertyFloatList", |
| | "NetworkPressure", |
| | "NodeData", |
| | "List of network pressure values", |
| | True, |
| | ) |
| | obj.setPropertyStatus("NetworkPressure", "LockDynamic") |
| | obj.addProperty( |
| | "App::PropertyFloatList", "UserDefined", "NodeData", "User Defined Results", True |
| | ) |
| | obj.setPropertyStatus("UserDefined", "LockDynamic") |
| | obj.addProperty( |
| | "App::PropertyFloatList", "Temperature", "NodeData", "Temperature field", True |
| | ) |
| | obj.addProperty( |
| | "App::PropertyVectorList", "HeatFlux", "NodeData", "List of heat flux vectors", True |
| | ) |
| | obj.setPropertyStatus("HeatFlux", "LockDynamic") |
| |
|
| | obj.setPropertyStatus("Temperature", "LockDynamic") |
| | obj.addProperty("App::PropertyFloatList", "NodeStressXX", "NodeData", "", True) |
| | obj.setPropertyStatus("NodeStressXX", "LockDynamic") |
| | obj.addProperty("App::PropertyFloatList", "NodeStressYY", "NodeData", "", True) |
| | obj.setPropertyStatus("NodeStressYY", "LockDynamic") |
| | obj.addProperty("App::PropertyFloatList", "NodeStressZZ", "NodeData", "", True) |
| | obj.setPropertyStatus("NodeStressZZ", "LockDynamic") |
| | obj.addProperty("App::PropertyFloatList", "NodeStressXY", "NodeData", "", True) |
| | obj.setPropertyStatus("NodeStressXY", "LockDynamic") |
| | obj.addProperty("App::PropertyFloatList", "NodeStressXZ", "NodeData", "", True) |
| | obj.setPropertyStatus("NodeStressXZ", "LockDynamic") |
| | obj.addProperty("App::PropertyFloatList", "NodeStressYZ", "NodeData", "", True) |
| | obj.setPropertyStatus("NodeStressYZ", "LockDynamic") |
| | obj.addProperty("App::PropertyFloatList", "NodeStrainXX", "NodeData", "", True) |
| | obj.setPropertyStatus("NodeStrainXX", "LockDynamic") |
| | obj.addProperty("App::PropertyFloatList", "NodeStrainYY", "NodeData", "", True) |
| | obj.setPropertyStatus("NodeStrainYY", "LockDynamic") |
| | obj.addProperty("App::PropertyFloatList", "NodeStrainZZ", "NodeData", "", True) |
| | obj.setPropertyStatus("NodeStrainZZ", "LockDynamic") |
| | obj.addProperty("App::PropertyFloatList", "NodeStrainXY", "NodeData", "", True) |
| | obj.setPropertyStatus("NodeStrainXY", "LockDynamic") |
| | obj.addProperty("App::PropertyFloatList", "NodeStrainXZ", "NodeData", "", True) |
| | obj.setPropertyStatus("NodeStrainXZ", "LockDynamic") |
| | obj.addProperty("App::PropertyFloatList", "NodeStrainYZ", "NodeData", "", True) |
| | obj.setPropertyStatus("NodeStrainYZ", "LockDynamic") |
| | obj.addProperty("App::PropertyFloatList", "CriticalStrainRatio", "NodeData", "", True) |
| | obj.setPropertyStatus("CriticalStrainRatio", "LockDynamic") |
| |
|
| | |
| | |
| | zero_list = 26 * [0] |
| | obj.Stats = zero_list |
| |
|
| | def onDocumentRestored(self, obj): |
| | |
| | |
| | if hasattr(obj, "StressValues") is True: |
| | obj.addProperty( |
| | "App::PropertyFloatList", |
| | "vonMises", |
| | "NodeData", |
| | "List of von Mises equivalent stresses", |
| | True, |
| | ) |
| | obj.setPropertyStatus("vonMises", "LockDynamic") |
| | obj.vonMises = obj.StressValues |
| | obj.setPropertyStatus("StressValues", "-LockDynamic") |
| | obj.removeProperty("StressValues") |
| |
|
| | |
| | |
| | if len(obj.Stats) == 39: |
| | temp = obj.Stats |
| | for i in range(12, -1, -1): |
| | del temp[3 * i + 1] |
| | obj.Stats = temp |
| |
|