Wed 28 Aug 21:38:52 CEST 2024
This commit is contained in:
parent
4436231e0a
commit
e309560dca
351
src/SimNDT/gui/materialSetupController.py
Normal file
351
src/SimNDT/gui/materialSetupController.py
Normal file
|
@ -0,0 +1,351 @@
|
||||||
|
__author__ = 'Miguel Molero'
|
||||||
|
|
||||||
|
from PySide.QtCore import *
|
||||||
|
from PySide.QtGui import *
|
||||||
|
|
||||||
|
from SimNDT.gui.ui_materialsetup import Ui_materialSetupDialog
|
||||||
|
from SimNDT.gui.Warnings import WarningParms
|
||||||
|
from SimNDT.gui.constants import *
|
||||||
|
|
||||||
|
from SimNDT.gui.materialLibraryController import MaterialLibrary
|
||||||
|
import copy
|
||||||
|
from SimNDT.core.material import Material
|
||||||
|
|
||||||
|
|
||||||
|
class MaterialSetup(QDialog, Ui_materialSetupDialog):
|
||||||
|
def __init__(self, SimNDT_Materials, filename=None, parent=None):
|
||||||
|
super(MaterialSetup, self).__init__(parent)
|
||||||
|
self.setupUi(self)
|
||||||
|
self.connectionSetup()
|
||||||
|
self.initSetup()
|
||||||
|
|
||||||
|
self.__IsOkAdd = True
|
||||||
|
|
||||||
|
self.SimNDT_Materials = copy.deepcopy(SimNDT_Materials)
|
||||||
|
self.filename = filename
|
||||||
|
|
||||||
|
if self.SimNDT_Materials is not None:
|
||||||
|
self.__NumMatTmp = len(self.SimNDT_Materials)
|
||||||
|
self.updateValues(self.__NumMatTmp)
|
||||||
|
self.deleteMaterialPushButton.setEnabled(True)
|
||||||
|
# self.materialLibraryPushButton.setEnabled(True)
|
||||||
|
self.secondFrame.setEnabled(True)
|
||||||
|
self.previousPushButton.setEnabled(True)
|
||||||
|
|
||||||
|
else:
|
||||||
|
self.SimNDT_Materials = None
|
||||||
|
self.dampingSetup(False)
|
||||||
|
self.__NumMatTmp = 0
|
||||||
|
|
||||||
|
def connectionSetup(self):
|
||||||
|
self.dampimgCheckBox.stateChanged.connect(self.dampingSetup)
|
||||||
|
self.previousPushButton.pressed.connect(self.previous)
|
||||||
|
self.nextPushButton.pressed.connect(self.next)
|
||||||
|
self.addMaterialPushButton.pressed.connect(self.addMaterial)
|
||||||
|
self.deleteMaterialPushButton.pressed.connect(self.deleteMaterial)
|
||||||
|
self.applyPushButton.pressed.connect(self.apply)
|
||||||
|
self.okPushButton.pressed.connect(self.accept)
|
||||||
|
self.cancelPushButton.pressed.connect(self.reject)
|
||||||
|
self.materialLibraryPushButton.pressed.connect(self.materialLibrary)
|
||||||
|
|
||||||
|
def initSetup(self):
|
||||||
|
|
||||||
|
self.rhoLabel.setText(RHO_LABEL)
|
||||||
|
self.lambdaLabel.setText(LAMBDA_LABEL)
|
||||||
|
self.muLabel.setText(MU_LABEL)
|
||||||
|
self.etavLabel.setText(ETAV_LABEL)
|
||||||
|
self.etasLabel.setText(ETAS_LABEL)
|
||||||
|
self.infoLabel.setText("")
|
||||||
|
self.dampingSetup(False)
|
||||||
|
|
||||||
|
self.setFocusPolicy(Qt.NoFocus)
|
||||||
|
self.previousPushButton.setFocusPolicy(Qt.NoFocus)
|
||||||
|
self.nextPushButton.setFocusPolicy(Qt.NoFocus)
|
||||||
|
self.deleteMaterialPushButton.setEnabled(False)
|
||||||
|
self.materialLibraryPushButton.setEnabled(False)
|
||||||
|
|
||||||
|
self.secondFrame.setEnabled(False)
|
||||||
|
self.propertiesFrame.setEnabled(False)
|
||||||
|
self.applyPushButton.setEnabled(False)
|
||||||
|
|
||||||
|
def dampingSetup(self, state=False):
|
||||||
|
|
||||||
|
self.etavLabel.setVisible(state)
|
||||||
|
self.etasLabel.setVisible(state)
|
||||||
|
self.etavLineEdit.setVisible(state)
|
||||||
|
self.etasLineEdit.setVisible(state)
|
||||||
|
|
||||||
|
def setValues(self, name, send_values):
|
||||||
|
|
||||||
|
self.rhoLineEdit.setText("%0.2f" % send_values[0])
|
||||||
|
self.lambdaLineEdit.setText("%0.2f" % send_values[1])
|
||||||
|
self.muLineEdit.setText("%0.2f" % send_values[2])
|
||||||
|
self.materialNameLineEdit.setText(name)
|
||||||
|
|
||||||
|
text = """
|
||||||
|
%s = %0.2f
|
||||||
|
<p> %s = %0.2f
|
||||||
|
""" % (VL_LABEL, send_values[3],
|
||||||
|
VT_LABEL, send_values[4])
|
||||||
|
|
||||||
|
self.infoLabel.setText(text)
|
||||||
|
|
||||||
|
def setAllValues(self, name, values):
|
||||||
|
|
||||||
|
self.rhoLineEdit.setText("%0.2f" % values[0])
|
||||||
|
self.lambdaLineEdit.setText("%0.2f" % values[1])
|
||||||
|
self.muLineEdit.setText("%0.2f" % values[2])
|
||||||
|
self.materialNameLineEdit.setText(name)
|
||||||
|
|
||||||
|
text = """
|
||||||
|
%s = %0.2f
|
||||||
|
<p> %s = %0.2f
|
||||||
|
""" % (VL_LABEL, values[3],
|
||||||
|
VT_LABEL, values[4])
|
||||||
|
|
||||||
|
self.infoLabel.setText(text)
|
||||||
|
|
||||||
|
self.labelSpinBox.setValue(values[5])
|
||||||
|
|
||||||
|
self.etavLineEdit.setText("%0.2f" % values[7])
|
||||||
|
self.etasLineEdit.setText("%0.2f" % values[8])
|
||||||
|
|
||||||
|
def setClear(self):
|
||||||
|
|
||||||
|
self.rhoLineEdit.clear()
|
||||||
|
self.lambdaLineEdit.clear()
|
||||||
|
self.muLineEdit.clear()
|
||||||
|
self.infoLabel.clear()
|
||||||
|
self.etavLineEdit.clear()
|
||||||
|
self.etasLineEdit.clear()
|
||||||
|
|
||||||
|
def getAllValues(self):
|
||||||
|
|
||||||
|
name = self.materialNameLineEdit.text()
|
||||||
|
rho = float(self.rhoLineEdit.text())
|
||||||
|
lam = float(self.lambdaLineEdit.text()) * 1e9
|
||||||
|
mu = float(self.muLineEdit.text()) * 1e9
|
||||||
|
label = int(self.labelSpinBox.value())
|
||||||
|
damping = self.dampimgCheckBox.isChecked()
|
||||||
|
|
||||||
|
try:
|
||||||
|
etav = float(self.etavLineEdit.text())
|
||||||
|
except:
|
||||||
|
etav = 0.0
|
||||||
|
|
||||||
|
try:
|
||||||
|
etas = float(self.etasLineEdit.text())
|
||||||
|
except:
|
||||||
|
etas = 0.0
|
||||||
|
|
||||||
|
values = (rho, lam, mu, label, damping, etav, etas)
|
||||||
|
return name, values
|
||||||
|
|
||||||
|
def previous(self):
|
||||||
|
|
||||||
|
if self.SimNDT_Materials is None:
|
||||||
|
return
|
||||||
|
|
||||||
|
if len(self.SimNDT_Materials) >= 1:
|
||||||
|
self.propertiesFrame.setEnabled(False)
|
||||||
|
|
||||||
|
self.__NumMatTmp -= 1
|
||||||
|
if self.__NumMatTmp <= 1:
|
||||||
|
self.__NumMatTmp = 1
|
||||||
|
|
||||||
|
self.updateValues(self.__NumMatTmp)
|
||||||
|
self.dampimgCheckBox.setChecked(self.SimNDT_Materials[self.__NumMatTmp - 1].Damping)
|
||||||
|
if self.SimNDT_Materials[self.__NumMatTmp - 1].Damping:
|
||||||
|
self.dampingSetup(True)
|
||||||
|
else:
|
||||||
|
self.dampingSetup(False)
|
||||||
|
|
||||||
|
def next(self):
|
||||||
|
|
||||||
|
if self.SimNDT_Materials is None:
|
||||||
|
return
|
||||||
|
|
||||||
|
if (self.__NumMatTmp + 1) <= len(self.SimNDT_Materials):
|
||||||
|
|
||||||
|
self.__NumMatTmp += 1
|
||||||
|
self.propertiesFrame.setEnabled(False)
|
||||||
|
self.updateValues(self.__NumMatTmp)
|
||||||
|
|
||||||
|
self.dampimgCheckBox.setChecked(self.SimNDT_Materials[self.__NumMatTmp - 1].Damping)
|
||||||
|
if self.SimNDT_Materials[self.__NumMatTmp - 1].Damping:
|
||||||
|
self.dampingSetup(True)
|
||||||
|
else:
|
||||||
|
self.dampingSetup(False)
|
||||||
|
|
||||||
|
if self.__NumMatTmp >= len(self.SimNDT_Materials):
|
||||||
|
self.__NumMatTmp = len(self.SimNDT_Materials)
|
||||||
|
|
||||||
|
def updateValues(self, num):
|
||||||
|
|
||||||
|
self.materialNumberlabel.setText(self.tr("Material #%s" % num))
|
||||||
|
|
||||||
|
values = (self.SimNDT_Materials[num - 1].Rho, # 0
|
||||||
|
self.SimNDT_Materials[num - 1].C12 * 1e-9, # 1
|
||||||
|
self.SimNDT_Materials[num - 1].C44 * 1e-9, # 2
|
||||||
|
self.SimNDT_Materials[num - 1].VL, # 3
|
||||||
|
self.SimNDT_Materials[num - 1].VT, # 4
|
||||||
|
self.SimNDT_Materials[num - 1].Label, # 5
|
||||||
|
self.SimNDT_Materials[num - 1].Damping, # 6
|
||||||
|
self.SimNDT_Materials[num - 1].Eta_v, # 7
|
||||||
|
self.SimNDT_Materials[num - 1].Eta_s) # 8
|
||||||
|
|
||||||
|
self.setAllValues(self.SimNDT_Materials[num - 1].Name, values)
|
||||||
|
|
||||||
|
self.dampimgCheckBox.setChecked(self.SimNDT_Materials[num - 1].Damping)
|
||||||
|
if self.SimNDT_Materials[num - 1].Damping:
|
||||||
|
self.dampingSetup(True)
|
||||||
|
else:
|
||||||
|
self.dampingSetup(False)
|
||||||
|
|
||||||
|
def addMaterial(self):
|
||||||
|
|
||||||
|
if self.__IsOkAdd:
|
||||||
|
|
||||||
|
self.addMaterialPushButton.setEnabled(False)
|
||||||
|
self.__IsOkAdd = False
|
||||||
|
self.deleteMaterialPushButton.setEnabled(True)
|
||||||
|
self.materialLibraryPushButton.setEnabled(True)
|
||||||
|
self.secondFrame.setEnabled(True)
|
||||||
|
self.propertiesFrame.setEnabled(True)
|
||||||
|
self.applyPushButton.setEnabled(True)
|
||||||
|
self.okPushButton.setEnabled(True)
|
||||||
|
|
||||||
|
if self.SimNDT_Materials is None:
|
||||||
|
self.previousPushButton.setEnabled(False)
|
||||||
|
self.nextPushButton.setEnabled(False)
|
||||||
|
self.deleteMaterialPushButton.setEnabled(False)
|
||||||
|
elif len(self.SimNDT_Materials) == 1:
|
||||||
|
self.previousPushButton.setEnabled(False)
|
||||||
|
self.nextPushButton.setEnabled(False)
|
||||||
|
else:
|
||||||
|
self.previousPushButton.setEnabled(True)
|
||||||
|
self.nextPushButton.setEnabled(True)
|
||||||
|
|
||||||
|
if self.SimNDT_Materials is None:
|
||||||
|
self.__NumMatTmp = 0
|
||||||
|
else:
|
||||||
|
self.__NumMatTmp = len(self.SimNDT_Materials)
|
||||||
|
|
||||||
|
self.__NumMatTmp += 1
|
||||||
|
|
||||||
|
self.materialNumberlabel.setText(self.tr("Material #%s" % self.__NumMatTmp))
|
||||||
|
self.materialNameLineEdit.clear()
|
||||||
|
self.dampimgCheckBox.setChecked(False)
|
||||||
|
|
||||||
|
self.setClear()
|
||||||
|
|
||||||
|
def deleteMaterial(self):
|
||||||
|
|
||||||
|
self.__IsOkAdd = True
|
||||||
|
self.okPushButton.setEnabled(True)
|
||||||
|
|
||||||
|
if self.SimNDT_Materials is None:
|
||||||
|
self.deleteMaterialPushButton.setEnabled(False)
|
||||||
|
return
|
||||||
|
|
||||||
|
if len(self.SimNDT_Materials) >= 1:
|
||||||
|
|
||||||
|
self.__NumMatTmp -= 1
|
||||||
|
self.SimNDT_Materials.pop(self.__NumMatTmp)
|
||||||
|
|
||||||
|
if self.__NumMatTmp <= 0:
|
||||||
|
self.__NumMatTmp = 0
|
||||||
|
self.SimNDT_Materials = None
|
||||||
|
self.deleteMaterialPushButton.setEnabled(False)
|
||||||
|
self.materialNumberlabel.setText(self.tr("Material #"))
|
||||||
|
self.materialNameLineEdit.clear()
|
||||||
|
self.dampimgCheckBox.setChecked(False)
|
||||||
|
self.setClear()
|
||||||
|
self.propertiesFrame.setEnabled(False)
|
||||||
|
|
||||||
|
try:
|
||||||
|
self.updateValues(len(self.SimNDT_Materials))
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
if self.__NumMatTmp <= 1:
|
||||||
|
self.addMaterialPushButton.setEnabled(True)
|
||||||
|
self.previousPushButton.setEnabled(False)
|
||||||
|
self.nextPushButton.setEnabled(False)
|
||||||
|
|
||||||
|
else:
|
||||||
|
self.addMaterialPushButton.setEnabled(True)
|
||||||
|
self.previousPushButton.setEnabled(True)
|
||||||
|
self.nextPushButton.setEnabled(True)
|
||||||
|
|
||||||
|
def apply(self):
|
||||||
|
|
||||||
|
try:
|
||||||
|
# if True:
|
||||||
|
name, values = self.getAllValues()
|
||||||
|
|
||||||
|
rho = values[0]
|
||||||
|
c11 = (values[1] + 2 * values[2])
|
||||||
|
c22 = c11
|
||||||
|
c12 = values[1]
|
||||||
|
c44 = values[2]
|
||||||
|
label = values[3]
|
||||||
|
|
||||||
|
damping = values[4]
|
||||||
|
|
||||||
|
if damping:
|
||||||
|
eta_v = values[5]
|
||||||
|
eta_s = values[6]
|
||||||
|
|
||||||
|
else:
|
||||||
|
eta_v = 1e-30
|
||||||
|
eta_s = 1e-30
|
||||||
|
|
||||||
|
material = Material(name, rho, c11, c12, c22, c44, label, damping, eta_v, eta_s)
|
||||||
|
|
||||||
|
if self.SimNDT_Materials is None:
|
||||||
|
self.SimNDT_Materials = list()
|
||||||
|
self.SimNDT_Materials.append(material)
|
||||||
|
else:
|
||||||
|
N = len(self.SimNDT_Materials)
|
||||||
|
if N != 0 and self.__NumMatTmp - 1 < N:
|
||||||
|
self.SimNDT_Materials[self.__NumMatTmp - 1] = material
|
||||||
|
else:
|
||||||
|
self.SimNDT_Materials.append(material)
|
||||||
|
|
||||||
|
if self.__NumMatTmp <= 1:
|
||||||
|
self.previousPushButton.setEnabled(False)
|
||||||
|
self.nextPushButton.setEnabled(False)
|
||||||
|
|
||||||
|
else:
|
||||||
|
self.previousPushButton.setEnabled(True)
|
||||||
|
self.nextPushButton.setEnabled(True)
|
||||||
|
|
||||||
|
self.deleteMaterialPushButton.setEnabled(True)
|
||||||
|
self.addMaterialPushButton.setEnabled(True)
|
||||||
|
self.applyPushButton.setEnabled(False)
|
||||||
|
self.propertiesFrame.setEnabled(False)
|
||||||
|
self.materialLibraryPushButton.setEnabled(False)
|
||||||
|
self.__IsOkAdd = True
|
||||||
|
|
||||||
|
|
||||||
|
except:
|
||||||
|
msgBox = WarningParms()
|
||||||
|
msgBox.exec_()
|
||||||
|
|
||||||
|
def accept(self):
|
||||||
|
|
||||||
|
if self.__IsOkAdd:
|
||||||
|
QDialog.accept(self)
|
||||||
|
|
||||||
|
else:
|
||||||
|
msgBox = WarningParms("Please Apply your changes")
|
||||||
|
msgBox.exec_()
|
||||||
|
|
||||||
|
def materialLibrary(self):
|
||||||
|
|
||||||
|
dlg = MaterialLibrary(filename=self.filename)
|
||||||
|
if dlg.exec_():
|
||||||
|
name, values = dlg.getValues()
|
||||||
|
send_values = (values[0], values[1] * 1e-9, values[2] * 1e-9, values[3], values[4])
|
||||||
|
self.setValues(name, send_values)
|
Loading…
Reference in New Issue
Block a user