FEM: Thermal expansion reference temperature for CalculiX analyses (#19285)

* FEM: Update task_material_common.py

* FEM: Update write_femelement_material.py

* FEM: Update Material.ui

* Fem: Enable material expansion reference temperature

* FEM: Update thermomech_bimetal.py

* FEM: Update thermomech_bimetal.inp

---------

Co-authored-by: marioalexis <mario.passaglia@gmail.com>
This commit is contained in:
FEA-eng
2025-01-29 13:37:02 +01:00
committed by GitHub
parent 07b2c87f0a
commit 456106910e
5 changed files with 88 additions and 171 deletions

View File

@@ -98,6 +98,11 @@ class _TaskPanel(base_femtaskpanel._BaseTaskPanel):
QtCore.SIGNAL("editingFinished()"),
self.tec_changed,
)
QtCore.QObject.connect(
self.parameterWidget.qsb_expansion_reference_temperature,
QtCore.SIGNAL("editingFinished()"),
self.tec_changed,
)
QtCore.QObject.connect(
self.parameterWidget.qsb_specific_heat,
QtCore.SIGNAL("editingFinished()"),
@@ -154,13 +159,6 @@ class _TaskPanel(base_femtaskpanel._BaseTaskPanel):
self.selectionWidget.finish_selection()
return super().reject()
def isfloat(self, num):
try:
float(num)
return True
except ValueError:
return False
# choose material ****************************************************************************
def filter_models(self, category):
material_filter = Materials.MaterialFilter()
@@ -172,24 +170,26 @@ class _TaskPanel(base_femtaskpanel._BaseTaskPanel):
def toggleInputFieldsReadOnly(self):
if self.parameterWidget.chbu_allow_edit.isChecked():
self.parameterWidget.qsb_density.setReadOnly(False)
self.parameterWidget.qsb_young_modulus.setReadOnly(False)
self.parameterWidget.qsb_poisson_ratio.setReadOnly(False)
self.parameterWidget.qsb_thermal_conductivity.setReadOnly(False)
self.parameterWidget.qsb_expansion_coefficient.setReadOnly(False)
self.parameterWidget.qsb_specific_heat.setReadOnly(False)
self.parameterWidget.qsb_kinematic_viscosity.setReadOnly(False)
self.parameterWidget.qsb_density.setDisabled(False)
self.parameterWidget.qsb_young_modulus.setDisabled(False)
self.parameterWidget.qsb_poisson_ratio.setDisabled(False)
self.parameterWidget.qsb_thermal_conductivity.setDisabled(False)
self.parameterWidget.qsb_expansion_coefficient.setDisabled(False)
self.parameterWidget.qsb_expansion_reference_temperature.setDisabled(False)
self.parameterWidget.qsb_specific_heat.setDisabled(False)
self.parameterWidget.qsb_kinematic_viscosity.setDisabled(False)
self.parameterWidget.wgt_material_tree.setEnabled(False)
self.uuid = ""
self.mat_from_input_fields()
else:
self.parameterWidget.qsb_density.setReadOnly(True)
self.parameterWidget.qsb_young_modulus.setReadOnly(True)
self.parameterWidget.qsb_poisson_ratio.setReadOnly(True)
self.parameterWidget.qsb_thermal_conductivity.setReadOnly(True)
self.parameterWidget.qsb_expansion_coefficient.setReadOnly(True)
self.parameterWidget.qsb_specific_heat.setReadOnly(True)
self.parameterWidget.qsb_kinematic_viscosity.setReadOnly(True)
self.parameterWidget.qsb_density.setDisabled(True)
self.parameterWidget.qsb_young_modulus.setDisabled(True)
self.parameterWidget.qsb_poisson_ratio.setDisabled(True)
self.parameterWidget.qsb_thermal_conductivity.setDisabled(True)
self.parameterWidget.qsb_expansion_coefficient.setDisabled(True)
self.parameterWidget.qsb_expansion_reference_temperature.setDisabled(True)
self.parameterWidget.qsb_specific_heat.setDisabled(True)
self.parameterWidget.qsb_kinematic_viscosity.setDisabled(True)
self.parameterWidget.wgt_material_tree.setEnabled(True)
self.set_from_editor(self.material_tree.UUID)
@@ -224,6 +224,14 @@ class _TaskPanel(base_femtaskpanel._BaseTaskPanel):
self.parameterWidget.qsb_expansion_coefficient.property("value").UserString
)
def tec_changed(self):
if self.parameterWidget.chbu_allow_edit.isChecked():
self.material["ThermalExpansionReferenceTemperature"] = (
self.parameterWidget.qsb_expansion_reference_temperature.property(
"value"
).UserString
)
def sh_changed(self):
if self.parameterWidget.chbu_allow_edit.isChecked():
self.material["SpecificHeat"] = self.parameterWidget.qsb_specific_heat.property(
@@ -277,6 +285,12 @@ class _TaskPanel(base_femtaskpanel._BaseTaskPanel):
self.parameterWidget.qsb_expansion_coefficient.setProperty("value", v)
else:
self.parameterWidget.qsb_expansion_coefficient.setProperty("rawValue", 0.0)
if "ThermalExpansionReferenceTemperature" in matmap:
self.parameterWidget.qsb_expansion_reference_temperature.setProperty(
"value", Units.Quantity(matmap["ThermalExpansionReferenceTemperature"])
)
else:
self.parameterWidget.qsb_expansion_reference_temperature.setProperty("rawValue", 0.0)
if "SpecificHeat" in matmap:
self.parameterWidget.qsb_specific_heat.setProperty(
"value", Units.Quantity(matmap["SpecificHeat"])
@@ -299,6 +313,9 @@ class _TaskPanel(base_femtaskpanel._BaseTaskPanel):
d["Density"] = p.qsb_density.property("value").UserString
d["ThermalConductivity"] = p.qsb_thermal_conductivity.property("value").UserString
d["ThermalExpansionCoefficient"] = p.qsb_expansion_coefficient.property("value").UserString
d["ThermalExpansionReferenceTemperature"] = p.qsb_expansion_reference_temperature.property(
"value"
).UserString
d["SpecificHeat"] = p.qsb_specific_heat.property("value").UserString
if self.obj.Category == "Solid":
d["YoungsModulus"] = p.qsb_young_modulus.property("value").UserString