Skip to content

Commit

Permalink
FEM: ccx tools, improve class documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
berndhahnebach committed Sep 18, 2019
1 parent 080f70b commit a1e6fce
Showing 1 changed file with 53 additions and 46 deletions.
99 changes: 53 additions & 46 deletions src/Mod/Fem/femtools/ccxtools.py
Expand Up @@ -40,6 +40,58 @@


class FemToolsCcx(QtCore.QRunnable, QtCore.QObject):
"""
Attributes
----------
analysis : Fem::FemAnalysis
FEM group analysis object
has to be present, will be set in __init__
solver : Fem::FemSolverObjectPython
FEM solver object
has to be present, will be set in __init__
base_name : str
name of .inp/.frd file (without extension)
It is used to construct .inp file path that is passed to CalculiX ccx
ccx_binary : str
working_dir : str
results_present : bool
indicating if there are calculation results ready for us
materials_linear : list of dictionaries
list of nonlinear materials from the analysis. Updated with update_objects
fixed_constraints : list of dictionaries
list of fixed constraints from the analysis. Updated with update_objects
selfweight_constraints : list of dictionaries
list of selfweight constraints from the analysis. Updated with update_objects
force_constraints : list of dictionaries
list of force constraints from the analysis. Updated with update_objects
pressure_constraints : list of dictionaries
list of pressure constraints from the analysis. Updated with update_objects
beam_sections : list of dictionaries
list of beam sections from the analysis. Updated with update_objects
beam_rotations : list of dictionaries
list of beam rotations from the analysis. Updated with update_objects
fluid_sections : list of dictionaries
list of fluid sections from the analysis. Updated with update_objects
shell_thicknesses : list of dictionaries
list of shell thicknesses from the analysis. Updated with update_objects
displacement_constraints : list of dictionaries
list of displacements for the analysis. Updated with update_objects
temperature_constraints : list of dictionaries
list of temperatures for the analysis. Updated with update_objects
heatflux_constraints : list of dictionaries
list of heatflux constraints for the analysis. Updated with update_objects
initialtemperature_constraints : list of dictionaries
list of initial temperatures for the analysis. Updated with update_objects
planerotation_constraints : list of dictionaries
list of plane rotation constraints from the analysis. Updated with update_objects
contact_constraints : list of dictionaries
list of contact constraints from the analysis. Updated with update_objects
transform_constraints : list of dictionaries
list of transform constraints from the analysis. Updated with update_objects
"""

known_analysis_types = ["static", "frequency", "thermomech", "check"]
finished = QtCore.Signal(int)
Expand All @@ -56,17 +108,11 @@ def __init__(self, analysis=None, solver=None, test_mode=False):
test_mode : bool, optional
mainly used in unit tests
"""

QtCore.QRunnable.__init__(self)
QtCore.QObject.__init__(self)

## @var analysis
# FEM analysis - the core object. Has to be present.
# It's set to analysis passed in "__init__"
# or set to current active analysis by default
# if nothing has been passed to "__init__".
self.analysis = None
## @var solver
# solver of the analysis. Used to store the active solver and analysis parameters
self.solver = None

if analysis:
Expand Down Expand Up @@ -106,12 +152,7 @@ def __init__(self, analysis=None, solver=None, test_mode=False):
if self.analysis and self.solver:
self.working_dir = ""
self.ccx_binary = ""
## @var base_name
# base name of .inp/.frd file (without extension).
# It is used to construct .inp file path that is passed to CalculiX ccx
self.base_name = ""
## @var results_present
# boolean variable indicating if there are calculation results ready for use
self.results_present = False
if test_mode:
self.test_mode = True
Expand Down Expand Up @@ -226,61 +267,27 @@ def update_objects(self):
# [{"Object":shell_thicknesses, "xxxxxxxx":value}, {}, ...]
# [{"Object":contact_constraints, "xxxxxxxx":value}, {}, ...]

## @var materials_linear
# list of linear materials from the analysis. Updated with update_objects
self.materials_linear = (
self._get_several_member("Fem::Material")
+ self._get_several_member("Fem::MaterialReinforced")
)
## @var materials_nonlinear
# list of nonlinear materials from the analysis. Updated with update_objects
self.materials_nonlinear = self._get_several_member("Fem::MaterialMechanicalNonlinear")
## @var fixed_constraints
# list of fixed constraints from the analysis. Updated with update_objects
self.fixed_constraints = self._get_several_member("Fem::ConstraintFixed")
## @var selfweight_constraints
# list of selfweight constraints from the analysis. Updated with update_objects
self.selfweight_constraints = self._get_several_member("Fem::ConstraintSelfWeight")
## @var force_constraints
# list of force constraints from the analysis. Updated with update_objects
self.force_constraints = self._get_several_member("Fem::ConstraintForce")
## @var pressure_constraints
# list of pressure constraints from the analysis. Updated with update_objects
self.pressure_constraints = self._get_several_member("Fem::ConstraintPressure")
## @var beam_sections
# list of beam sections from the analysis. Updated with update_objects
self.beam_sections = self._get_several_member("Fem::FemElementGeometry1D")
## @var beam_rotations
# list of beam rotations from the analysis. Updated with update_objects
self.beam_rotations = self._get_several_member("Fem::FemElementRotation1D")
## @var fluid_sections
# list of fluid sections from the analysis. Updated with update_objects
self.fluid_sections = self._get_several_member("Fem::FemElementFluid1D")
## @var shell_thicknesses
# list of shell thicknesses from the analysis. Updated with update_objects
self.shell_thicknesses = self._get_several_member("Fem::FemElementGeometry2D")
## @var displacement_constraints
# list of displacements for the analysis. Updated with update_objects
self.displacement_constraints = self._get_several_member("Fem::ConstraintDisplacement")
## @var temperature_constraints
# list of temperatures for the analysis. Updated with update_objects
self.temperature_constraints = self._get_several_member("Fem::ConstraintTemperature")
## @var heatflux_constraints
# list of heatflux constraints for the analysis. Updated with update_objects
self.heatflux_constraints = self._get_several_member("Fem::ConstraintHeatflux")
## @var initialtemperature_constraints
# list of initial temperatures for the analysis. Updated with update_objects
self.initialtemperature_constraints = self._get_several_member(
"Fem::ConstraintInitialTemperature"
)
## @var planerotation_constraints
# list of plane rotation constraints from the analysis. Updated with update_objects
self.planerotation_constraints = self._get_several_member("Fem::ConstraintPlaneRotation")
## @var contact_constraints
# list of contact constraints from the analysis. Updated with update_objects
self.contact_constraints = self._get_several_member("Fem::ConstraintContact")
## @var transform_constraints
# list of transform constraints from the analysis. Updated with update_objects
self.transform_constraints = self._get_several_member("Fem::ConstraintTransform")

def check_prerequisites(self):
Expand Down

0 comments on commit a1e6fce

Please sign in to comment.