FEM: Implement constraint displacement in C++

This commit is contained in:
vginkeo
2016-02-11 08:55:57 +02:00
parent ff4d7ad365
commit 034e377dd0
30 changed files with 2277 additions and 42 deletions

View File

@@ -175,13 +175,17 @@ class FemTools(QtCore.QRunnable, QtCore.QObject):
# Individual constraints are "Fem::ConstraintPressure" type
self.pressure_constraints = []
## @var beam_sections
# set of beam sections from the analyis. Updated with update_objects
# set of beam sections from the analysis. Updated with update_objects
# Individual beam sections are Proxy.Type "FemBeamSection"
self.beam_sections = []
## @var shell_thicknesses
# set of shell thicknesses from the analyis. Updated with update_objects
# set of shell thicknesses from the analysis. Updated with update_objects
# Individual shell thicknesses are Proxy.Type "FemShellThickness"
self.shell_thicknesses = []
## @var displacement_constraints
# set of displacements for the analysis. Updated with update_objects
# Individual displacement_constraints are Proxy.Type "FemConstraintDisplacement"
self.displacement_constraints = []
for m in self.analysis.Member:
if m.isDerivedFrom("Fem::FemSolverObjectPython"):
@@ -210,6 +214,10 @@ class FemTools(QtCore.QRunnable, QtCore.QObject):
PressureObjectDict = {}
PressureObjectDict['Object'] = m
self.pressure_constraints.append(PressureObjectDict)
elif m.isDerivedFrom("Fem::ConstraintDisplacement"): #OvG: Replacement reference to C++ implementation of Displacement Constraint
displacement_constraint_dict = {}
displacement_constraint_dict['Object'] = m
self.displacement_constraints.append(displacement_constraint_dict)
elif hasattr(m, "Proxy") and m.Proxy.Type == "FemBeamSection":
beam_section_dict = {}
beam_section_dict['Object'] = m
@@ -240,7 +248,7 @@ class FemTools(QtCore.QRunnable, QtCore.QObject):
if has_no_references is True:
message += "More than one Material has empty References list (Only one empty References list is allowed!).\n"
has_no_references = True
if not self.fixed_constraints:
if not (self.fixed_constraints):
message += "No fixed-constraint nodes defined in the Analysis\n"
if self.analysis_type == "static":
if not (self.force_constraints or self.pressure_constraints):
@@ -269,6 +277,7 @@ class FemTools(QtCore.QRunnable, QtCore.QObject):
inp_writer = iw.inp_writer(self.analysis, self.mesh, self.materials,
self.fixed_constraints,
self.force_constraints, self.pressure_constraints,
self.displacement_constraints, #OvG: Stick to naming convention
self.beam_sections, self.shell_thicknesses,
self.analysis_type, self.eigenmode_parameters,
self.working_dir)