diff --git a/python/FIERRO-GUI/fierro_gui/Bulk_Forming.py b/python/FIERRO-GUI/fierro_gui/Bulk_Forming.py index 12ccf14d8..caa82168f 100644 --- a/python/FIERRO-GUI/fierro_gui/Bulk_Forming.py +++ b/python/FIERRO-GUI/fierro_gui/Bulk_Forming.py @@ -47,6 +47,14 @@ def material_class_2(): self.MaterialTypeTool_2.setCurrentIndex(4) self.INMaterialType_2.currentIndexChanged.connect(material_class_2) + # Control addition of plasticity + def plasticity(): + if self.BEnablePlasticity.isChecked(): + self.EnablePlasticity.setCurrentIndex(1) + else: + self.EnablePlasticity.setCurrentIndex(0) + self.BEnablePlasticity.stateChanged.connect(plasticity) + # Define material properties using predefined values def predefined_materials(): # Clear elastic parameters @@ -85,7 +93,68 @@ def predefined_materials(): self.INthet1.clear() self.INhselfx.clear() self.INhlatex.clear() - if "Single Crystal Copper" in self.INMaterialDefinition.currentText(): + if "Import Elastic Parameters File" in self.INMaterialDefinition.currentText(): + elastic_filename, _ = QFileDialog.getOpenFileName(filter="Elastic Parameters File (*.txt)",) + matrix = [] + with open(elastic_filename, 'r') as file: + # Read the first line + first_line = file.readline().strip() + + # Check if the first character of the first line is '0' - anisotropic + if first_line[0] == '0': + # Read next six lines for the matrix + for _ in range(6): + line = file.readline().strip() + if line: # Ensure line is not empty + row = line.split()[:6] # Convert to float + row = [float(val) for val in row if val.replace('.', '').isdigit()] + matrix.append(row) + # Add to anisotropic table + for i in range(6): + for j in range(6): + item = QTableWidgetItem(str(matrix[i][j])) + self.TAnisotropic_2.setItem(i, j, item) + # Turn page to anisotropic + self.MaterialTypeTool_2.setCurrentIndex(2) + # Check if the first character of the first line is '1' - isotropic + elif first_line[0] == '1': + line = file.readline().strip() + row = line.split()[:2] + row = [float(val) for val in row if val.replace('.', '').isdigit()] + matrix.append(row) + # Add to isotropic line edit definitions + self.INYoungsModulus_2.setText(str(matrix[0][0])) + self.INPoissonsRatio_2.setText(str(matrix[0][1])) + # Turn page to isotropic + self.MaterialTypeTool_2.setCurrentIndex(0) + else: + warning_message("ERROR: The first character of the first line is not a '0' (anisotropic) or '1' (isotropic)") + return None + elif "Import Plastic Parameters File" in self.INMaterialDefinition.currentText(): + plastic_filename, _ = QFileDialog.getOpenFileName(filter="Plastic Parameters File (*.txt)",) + with open(plastic_filename, 'r') as file: + iline = 1; + for line in file: + # Find crystal axes + if iline == 3: + crystal_axes_line = line.strip().split()[:3] + crystal_axes_line = [float(val) for val in crystal_axes_line if val.replace('.', '').isdigit()] + if len(crystal_axes_line) < 3: + warning_message("ERROR: crystal axes was not found on line 3") + return + else: + self.INa.setText(str(crystal_axes_line[0])) + self.INb.setText(str(crystal_axes_line[1])) + self.INc.setText(str(crystal_axes_line[2])) + # Find slip systems + + # Update line number + iline += 1 + + # Turn page to plastic + self.BEnablePlasticity.setChecked(True) + self.MaterialMenu_2.setCurrentIndex(1) + elif "Single Crystal Copper" in self.INMaterialDefinition.currentText(): if 'MPa' in self.INUnits.currentText(): m = 1 elif 'Pa' in self.INUnits.currentText(): @@ -106,6 +175,7 @@ def predefined_materials(): self.TAnisotropic_2.setItem(4,4,QTableWidgetItem('75400.')) self.TAnisotropic_2.setItem(5,5,QTableWidgetItem('75400.')) # Define plastic properties + self.BEnablePlasticity.setChecked(True) self.INa.setText('1.') self.INb.setText('1.') self.INc.setText('1.') @@ -140,6 +210,7 @@ def predefined_materials(): self.TAnisotropic_2.setItem(4,4,QTableWidgetItem('82500.')) self.TAnisotropic_2.setItem(5,5,QTableWidgetItem('82500.')) # Define plastic properties + self.BEnablePlasticity.setChecked(True) self.INa.setText('1.') self.INb.setText('1.') self.INc.setText('1.') @@ -186,18 +257,19 @@ def add_material_2(): warning_message('ERROR: Elastic material definition incomplete') return # Plastic parameters checks - if not self.INa.text().strip() or not self.INb.text().strip() or not self.INc.text().strip(): - warning_message('ERROR: crystal axis definition incomplete') - return - if self.TSlipSystemParameters.rowCount() == 0: - warning_message('ERROR: Voce parameters are incomplete') - return - for rowc in range(self.TSlipSystemParameters.rowCount()): - for colc in range(self.TSlipSystemParameters.columnCount()): - item = self.TSlipSystemParameters.item(rowc, colc) - if item is None or not item.text().strip(): - warning_message('ERROR: Voce parameters are incomplete') - return + if self.BEnablePlasticity.isChecked(): + if not self.INa.text().strip() or not self.INb.text().strip() or not self.INc.text().strip(): + warning_message('ERROR: crystal axis definition incomplete') + return + if self.TSlipSystemParameters.rowCount() == 0: + warning_message('ERROR: Voce parameters are incomplete') + return + for rowc in range(self.TSlipSystemParameters.rowCount()): + for colc in range(self.TSlipSystemParameters.columnCount()): + item = self.TSlipSystemParameters.item(rowc, colc) + if item is None or not item.text().strip(): + warning_message('ERROR: Voce parameters are incomplete') + return # Assign elastic parameters if all checks pass if 'Gas' in self.INSolidGas_2.currentText(): @@ -439,17 +511,18 @@ def add_material_2(): self.TMaterials_2.setItem(row, i, QTableWidgetItem('0')) # Add plastic parameters - self.TMaterials_2.setItem(row,23,QTableWidgetItem(self.INa.text())) - self.TMaterials_2.setItem(row,24,QTableWidgetItem(self.INb.text())) - self.TMaterials_2.setItem(row,25,QTableWidgetItem(self.INc.text())) - for colc in range(self.TSlipSystemParameters.columnCount()): - for rowc in range(self.TSlipSystemParameters.rowCount()): - item = self.TSlipSystemParameters.item(rowc, colc) - if rowc == 0: - new_text = item.text() - else: - new_text = new_text + ', ' + item.text() - self.TMaterials_2.setItem(row,colc+26,QTableWidgetItem(new_text)) + if self.BEnablePlasticity.isChecked(): + self.TMaterials_2.setItem(row,23,QTableWidgetItem(self.INa.text())) + self.TMaterials_2.setItem(row,24,QTableWidgetItem(self.INb.text())) + self.TMaterials_2.setItem(row,25,QTableWidgetItem(self.INc.text())) + for colc in range(self.TSlipSystemParameters.columnCount()): + for rowc in range(self.TSlipSystemParameters.rowCount()): + item = self.TSlipSystemParameters.item(rowc, colc) + if rowc == 0: + new_text = item.text() + else: + new_text = new_text + ', ' + item.text() + self.TMaterials_2.setItem(row,colc+26,QTableWidgetItem(new_text)) # Clear plastic parameters self.INa.clear() @@ -769,7 +842,6 @@ def add_custom_system(): # Expand custom definition self.TSlipSystems.expandItem(custom_label[0]) self.BSubmit.clicked.connect(add_custom_system) - # Setup New Page new_page.setLayout(page_layout) self.SlipSystemInfo.addWidget(new_page) @@ -954,6 +1026,22 @@ def boundary_conditions(): self.TVgrad.setItem(2,0,QTableWidgetItem("0.")) self.TVgrad.setItem(2,1,QTableWidgetItem("0.")) self.TVgrad.setItem(2,2,QTableWidgetItem("0.")) + elif "Compression Z" in self.INbulkBC.currentText(): + # Clear tables + self.TVgrad.clearContents() + self.TVgradi.clearContents() + self.TCstress.clearContents() + + # Assign values + self.TVgrad.setItem(0,1,QTableWidgetItem("0.")) + self.TVgrad.setItem(0,2,QTableWidgetItem("0.")) + self.TVgrad.setItem(1,0,QTableWidgetItem("0.")) + self.TVgrad.setItem(1,2,QTableWidgetItem("0.")) + self.TVgrad.setItem(2,0,QTableWidgetItem("0.")) + self.TVgrad.setItem(2,1,QTableWidgetItem("0.")) + self.TVgrad.setItem(2,2,QTableWidgetItem("-1.0")) + self.TCstress.setItem(0,0,QTableWidgetItem("0.")) + self.TCstress.setItem(1,1,QTableWidgetItem("0.")) self.INbulkBC.currentIndexChanged.connect(boundary_conditions) # Run Bulk Formation @@ -981,7 +1069,12 @@ def run_bulk_forming(): executable_path = DeveloperInputs.fierro_evpfft_exe elif self.UserConfig == "User": executable_path = "evpfft" - arguments = ["-f", self.BULK_FORMING_INPUT] + if ".txt" in file_type: + arguments = ["-f", self.BULK_FORMING_INPUT] + elif ".vtk" in file_type: + arguments = ["-f", self.BULK_FORMING_INPUT, "-m", "2"] + else: + warning_message("ERROR: Trying to run an incorrect file type.") self.p = QProcess() self.p.setWorkingDirectory(self.working_directory) diff --git a/python/FIERRO-GUI/fierro_gui/Bulk_Forming_WInput.py b/python/FIERRO-GUI/fierro_gui/Bulk_Forming_WInput.py index 2e16ad7a7..8c8280b4a 100644 --- a/python/FIERRO-GUI/fierro_gui/Bulk_Forming_WInput.py +++ b/python/FIERRO-GUI/fierro_gui/Bulk_Forming_WInput.py @@ -2,55 +2,64 @@ import tempfile def Bulk_Forming_WInput(self): - # Plastic Input File plastic_parameters = open(self.BULK_FORMING_PLASTIC_PARAMETERS,"w") - header = 'SLIP SYSTEMS FOR CUBIC CRYSTAL\n' \ - 'CUBIC icryst\n' - plastic_parameters.write(header) - crystal_axis = f' {self.TMaterials_2.item(0,23).text()} {self.TMaterials_2.item(0,24).text()} {self.TMaterials_2.item(0,25).text()} crystal axis (cdim(i))\n' - plastic_parameters.write(crystal_axis) - system_names = self.TMaterials_2.item(0,26).text() - num_systems = system_names.count(',') + 1 - nmodes = f' {num_systems} nmodesx (total # of modes listed in the file)\n' \ - f' {num_systems} nmodes (# of modes to be used in the calculation)\n' - plastic_parameters.write(nmodes) - modei = ' 1' - for i in range(num_systems-1): - modei = modei + f' {i+2}' - modei = modei + ' mode(i) (label of the modes to be used)\n' - plastic_parameters.write(modei) - slip_system_names = system_names.split(',') - nsmx_max = 0 - for i in range(num_systems): - slip_system_name = slip_system_names[i].split('.', 1)[1].strip() - dict = slip_system_names[i].split('.', 1)[0].strip() - dvar = f'T{dict}' - slip_table = getattr(self, dvar) - nsmx = slip_table.rowCount() - if nsmx > nsmx_max: - nsmx_max = nsmx - slip_parameters = f' {slip_system_name} SLIP\n' \ - f' {i+1} {nsmx} {self.TMaterials_2.item(0,27).text().split(",")[i]} {self.TMaterials_2.item(0,28).text().split(",")[i]} 0.0 0 modex,nsmx,nrsx,gamd0x,twshx,isectwx\n' \ - f' {self.TMaterials_2.item(0,29).text().split(",")[i]} {self.TMaterials_2.item(0,30).text().split(",")[i]} {self.TMaterials_2.item(0,31).text().split(",")[i]} {self.TMaterials_2.item(0,32).text().split(",")[i]} {self.TMaterials_2.item(0,33).text().split(",")[i]} tau0xf,tau0xb,tau1x,thet0,thet1\n' \ - f' {self.TMaterials_2.item(0,34).text().split(",")[i]}' - for ii in range(num_systems): - slip_parameters = slip_parameters + f' {self.TMaterials_2.item(0,35).text().split(",")[i]}' - slip_parameters = slip_parameters + ' hselfx,hlatex\n' - plastic_parameters.write(slip_parameters) - for j in range(nsmx): - slip_plane = slip_table.item(j,0).text().split(',') - slip_system = ' ' - for k in range(len(slip_plane)): - slip_system = slip_system + f'{slip_plane[k]} ' - slip_direction = slip_table.item(j,1).text().split(',') - for k in range(len(slip_direction)): - slip_system = slip_system + f' {slip_direction[k]}' - if j == 0: - slip_system = slip_system + ' SLIP (n-b)\n' - else: - slip_system = slip_system + '\n' - plastic_parameters.write(slip_system) + if self.TMaterials_2.item(0,23) is None or not self.TMaterials_2.item(0,23).text().strip(): + no_plasticity_input = 'SLIP SYSTEMS FOR CUBIC CRYSTAL\n' \ + 'CUBIC icryst\n' \ + ' 1. 1. 1. crystal axis (cdim(i))\n' \ + ' 0 nmodesx (total # of modes listed in the file)\n' \ + ' 0 nmodes (# of modes to be used in the calculation)' + plastic_parameters.write(no_plasticity_input) + modes = '2 0 0 0 NPHMX, NMODMX, NTWMMX, NSYSMX\n' + else: + header = 'SLIP SYSTEMS FOR CUBIC CRYSTAL\n' \ + 'CUBIC icryst\n' + plastic_parameters.write(header) + crystal_axis = f' {self.TMaterials_2.item(0,23).text()} {self.TMaterials_2.item(0,24).text()} {self.TMaterials_2.item(0,25).text()} crystal axis (cdim(i))\n' + plastic_parameters.write(crystal_axis) + system_names = self.TMaterials_2.item(0,26).text() + num_systems = system_names.count(',') + 1 + nmodes = f' {num_systems} nmodesx (total # of modes listed in the file)\n' \ + f' {num_systems} nmodes (# of modes to be used in the calculation)\n' + plastic_parameters.write(nmodes) + modei = ' 1' + for i in range(num_systems-1): + modei = modei + f' {i+2}' + modei = modei + ' mode(i) (label of the modes to be used)\n' + plastic_parameters.write(modei) + slip_system_names = system_names.split(',') + nsmx_max = 0 + for i in range(num_systems): + slip_system_name = slip_system_names[i].split('.', 1)[1].strip() + dict = slip_system_names[i].split('.', 1)[0].strip() + dvar = f'T{dict}' + slip_table = getattr(self, dvar) + nsmx = slip_table.rowCount() + if nsmx > nsmx_max: + nsmx_max = nsmx + slip_parameters = f' {slip_system_name} SLIP\n' \ + f' {i+1} {nsmx} {self.TMaterials_2.item(0,27).text().split(",")[i]} {self.TMaterials_2.item(0,28).text().split(",")[i]} 0.0 0 modex,nsmx,nrsx,gamd0x,twshx,isectwx\n' \ + f' {self.TMaterials_2.item(0,29).text().split(",")[i]} {self.TMaterials_2.item(0,30).text().split(",")[i]} {self.TMaterials_2.item(0,31).text().split(",")[i]} {self.TMaterials_2.item(0,32).text().split(",")[i]} {self.TMaterials_2.item(0,33).text().split(",")[i]} tau0xf,tau0xb,tau1x,thet0,thet1\n' \ + f' {self.TMaterials_2.item(0,34).text().split(",")[i]}' + for ii in range(num_systems): + slip_parameters = slip_parameters + f' {self.TMaterials_2.item(0,35).text().split(",")[i]}' + slip_parameters = slip_parameters + ' hselfx,hlatex\n' + plastic_parameters.write(slip_parameters) + for j in range(nsmx): + slip_plane = slip_table.item(j,0).text().split(',') + slip_system = ' ' + for k in range(len(slip_plane)): + slip_system = slip_system + f'{slip_plane[k]} ' + slip_direction = slip_table.item(j,1).text().split(',') + for k in range(len(slip_direction)): + slip_system = slip_system + f' {slip_direction[k]}' + if j == 0: + slip_system = slip_system + ' SLIP (n-b)\n' + else: + slip_system = slip_system + '\n' + plastic_parameters.write(slip_system) + modes = f'1 1 1 {nsmx_max} NPHMX, NMODMX, NTWMMX, NSYSMX\n' plastic_parameters.close() # Elastic Input File @@ -81,7 +90,6 @@ def Bulk_Forming_WInput(self): # Bulk Forming input parameters file bulk_forming_input = open(self.BULK_FORMING_INPUT,"w") - modes = f'1 1 1 {nsmx_max} NPHMX, NMODMX, NTWMMX, NSYSMX\n' bulk_forming_input.write(modes) Nx = int(self.TParts.item(0,7).text()) Ny = int(self.TParts.item(0,8).text()) diff --git a/python/FIERRO-GUI/fierro_gui/FIERRO_GUI.py b/python/FIERRO-GUI/fierro_gui/FIERRO_GUI.py index b7501c0f6..52b0b9b32 100644 --- a/python/FIERRO-GUI/fierro_gui/FIERRO_GUI.py +++ b/python/FIERRO-GUI/fierro_gui/FIERRO_GUI.py @@ -163,6 +163,7 @@ def SetupPipeline(selection): # Define geometry imports self.INSelectGeometryImport.clear() self.INSelectGeometryImport.addItem("Import Polycrystalline Data Set (.txt)") + self.INSelectGeometryImport.addItem("Import Geometry (.stl, .vtk)") # Turn off tabs self.NavigationMenu.setTabEnabled(3, False) self.MaterialMenu.setTabEnabled(1, True) diff --git a/python/FIERRO-GUI/fierro_gui/FIERRO_GUI.ui b/python/FIERRO-GUI/fierro_gui/FIERRO_GUI.ui index 612ee7744..cf83cfa1f 100644 --- a/python/FIERRO-GUI/fierro_gui/FIERRO_GUI.ui +++ b/python/FIERRO-GUI/fierro_gui/FIERRO_GUI.ui @@ -352,7 +352,7 @@ 1 - 2 + 6 @@ -5345,6 +5345,16 @@ li.checked::marker { content: "\2612"; } Custom + + + Import Elastic Parameters File + + + + + Import Plastic Parameters File + + Single Crystal Copper @@ -5509,7 +5519,7 @@ li.checked::marker { content: "\2612"; } - 1 + 0 @@ -6311,6 +6321,9 @@ li.checked::marker { content: "\2612"; } Plastic + + -1 + 0 @@ -6323,149 +6336,29 @@ li.checked::marker { content: "\2612"; } 0 + + + + Enable Plasticity + + + - - - - false - + + + + 0 + 0 + 1 - - - 16 - 16 - - - - false - - - false - - - - - - - Crystal Axis - - - - - - QFrame::NoFrame - - - QFrame::Raised - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - c - - - - - - - a - - - - - - - b - - - - - - - - - - - - - - - - false - - - - 0 - 0 - - - - - 17 - 17 - - - - - 18 - - - - Lattice parameters or unit cell dimensions of a crystal structure - - - - - - - :/Blue Icons/Blue Icons/information.svg:/Blue Icons/Blue Icons/information.svg - - - - 20 - 20 - - - - false - - - false - - - true - - - - - - - + + - - - Slip Systems - - - - 0 - + + 0 @@ -6479,188 +6372,153 @@ li.checked::marker { content: "\2612"; } 0 - - - - - - - - - FCC - - - - 1. (111)<110> - - - - - - BCC - - - - 2. (110)<111> - - - - - 3. (112)<111> - - - - - 4. (123)<111> - - - - - - CUSTOM - - - - - - - - QFrame::NoFrame - - - QFrame::Raised - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Details - - - - - - - Custom - - - - - - - - - - - 0 - 0 - - - - false + + + + 0 + 0 + - - background-color: rgb(194, 194, 194) + + + false + - - QAbstractScrollArea::AdjustToContentsOnFirstShow + + 0 - - QAbstractItemView::MultiSelection + + + 16 + 16 + - - - - - - QFrame::NoFrame + + false - - QFrame::Raised + + false - - - -1 - - - 0 - - - 0 - - - 0 + + + - - 0 - - - - - Add - - - - - - - Remove - - - - - - - - - - - i - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - - - QFrame::NoFrame - - - 0 - - - 4 - - - - + + Crystal Axis + + + + + + QFrame::NoFrame + + + QFrame::Raised + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + c + + + + + + + a + + + + + + + b + + + + + + + + + + + + + + + + false + + + + 0 + 0 + + + + + 17 + 17 + + + + + 18 + + + + Lattice parameters or unit cell dimensions of a crystal structure + + + + + + + :/Blue Icons/Blue Icons/information.svg:/Blue Icons/Blue Icons/information.svg + + + + 20 + 20 + + + + false + + + false + + + true + + + + + + + + + + + Slip Systems + + - 5 + 0 0 @@ -6674,576 +6532,158 @@ li.checked::marker { content: "\2612"; } 0 - - - - - true - true - - - - FCC (111)<110> - - - - - - QAbstractItemView::NoEditTriggers - - - 167 - - - - - - - - - - - - - - - - (Slip Plane) - - - - 13 - - - + - <Slip Direction> - - - - 13 - + - - - 1, 1, -1 - - - - - 0, 1, 1 - - - - - 1, 1, -1 - - - - - 1, 0, 1 - - - - - 1, 1, -1 - - - - - 1, -1, 0 - - - + - 1, -1, -1 + FCC + + + 1. (111)<110> + + - + - 0, 1, -1 + BCC + + + 2. (110)<111> + + + + + 3. (112)<111> + + + + + 4. (123)<111> + + - + - 1, -1, -1 - - - - - 1, 0, 1 - - - - - 1, -1, -1 - - - - - 1, 1, 0 - - - - - 1, -1, 1 - - - - - 0, 1, 1 - - - - - 1, -1, 1 - - - - - 1, 0, -1 - - - - - 1, -1, 1 - - - - - 1, 1, 0 - - - - - 1, 1, 1 - - - - - 0, 1, -1 - - - - - 1, 1, 1 - - - - - 1, 0, -1 - - - - - 1, 1, 1 - - - - - 1, -1, 0 + CUSTOM - - - - - - 5 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - true - true - + + + + QFrame::NoFrame - - BCC (110)<111> + + QFrame::Raised + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Details + + + + + + + Custom + + + + - - - QAbstractItemView::NoEditTriggers + + + + 0 + 0 + - - 167 - - - - - - - - - - - - - - - - (Slip Plane) - - - - 13 - - - - - - <Slip Direction> - - - - 13 - - - - - - 0, 1, 1 - - - - - 1, 1, -1 - - - - - 1, 0, 1 - - - - - 1, 1, -1 - - - - - 1, -1, 0 - - - - - 1, 1, -1 - - - - - 0, 1, -1 - - - - - 1, -1, -1 - - - - - 1, 0, 1 - - - - - 1, -1, -1 - - - - - 1, 1, 0 - - - - - 1, -1, -1 - - - - - 0, 1, 1 - - - - - 1, -1, 1 - - - - - 1, 0, -1 - - - - - 1, -1, 1 - - - - - 1, 1, 0 - - - - - 1, -1, 1 - - - - - 0, 1, -1 - - - - - 1, 1, 1 - - - - - 1, 0, -1 - - - - - 1, 1, 1 - - - - - 1, -1, 0 - - - - - 1, 1, 1 - - - - - - - - - - 5 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - true - true - + + false - - BCC (112)<111> + + background-color: rgb(194, 194, 194) + + + QAbstractScrollArea::AdjustToContentsOnFirstShow + + + QAbstractItemView::MultiSelection - - - QAbstractItemView::NoEditTriggers + + + QFrame::NoFrame - - 167 - - - - - - - - - - - - - - - - (Slip Plane) - - - - 13 - - - - - - <Slip Direction> - - - - 13 - - - - - - -2, 1, -1 - - - - - -1, -1, 1 - - - - - 1, -2, -1 - - - - - -1, -1, 1 - - - - - 1, 1, 2 - - - - - -1, -1, 1 - - - - - -2, -1, -1 - - - - - -1, 1, 1 - - - - - 1, 2, -1 - - - - - -1, 1, 1 - - - - - 1, -1, 2 - - - - - -1, 1, 1 - - - - - 2, 1, -1 - - - - - 1, -1, 1 - - - - - -1, -2, -1 - - - - - 1, -1, 1 - - - - - -1, 1, 2 - - - - - 1, -1, 1 - - - - - 2, -1, -1 - - - - - 1, 1, 1 - - - - - -1, 2, -1 - - - - - 1, 1, 1 - - - - - -1, -1, 2 - - - - - 1, 1, 1 - - + + QFrame::Raised + + + + -1 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Add + + + + + + + Remove + + + + - - - - 5 - + + + i + + 0 @@ -7256,989 +6696,1607 @@ li.checked::marker { content: "\2612"; } 0 - - - - - true - true - + + + + - - BCC (123)<111> + + QFrame::NoFrame - - - - - - QAbstractItemView::NoEditTriggers + + 0 - - 24 + + 4 - - 167 - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Slip Plane) - - - - 13 - - - - - - <Slip Direction> - - - - 13 - - - - - - 1, 2, 3 - - - - - 1, 1, -1 - - - - - -1, 3, 2 - - - - - 1, 1, -1 - - - - - 2, 1, 3 - - - - - 1, 1, -1 - - - - - -2, 3, 1 - - - - - 1, 1, -1 - - - - - 3, -1, 2 - - - - - 1, 1, -1 - - - - - 3, -2, 1 - - - - - 1, 1, -1 - - - - - -1, 2, -3 - - - - - 1, -1, -1 - - - - - 1, 3, -2 - - - - - 1, -1, -1 - - - - - 2, -1, 3 - - - - - 1, -1, -1 - - - - - 2, 3, -1 - - - - - 1, -1, -1 - - - - - 3, 1, 2 - - - - - 1, -1, -1 - - - - - 3, 2, 1 - - - - - 1, -1, -1 - - - - - 1, -2, -3 - - - - - 1, -1, 1 - - - - - 1, 3, 2 - - - - - 1, -1, 1 - - - - - 2, -1, -3 - - - - - 1, -1, 1 - - - - - 2, 3, 1 - - - - - 1, -1, 1 - - - - - 3, 1, -2 - - - - - 1, -1, 1 - - - - - 3, 2, -1 - - - - - 1, -1, 1 - - - - - 1, 2, -3 - - - - - 1, 1, 1 - - - - - 1, -3, 2 - - - - - 1, 1, 1 - - - - - 2, 1, -3 - - - - - 1, 1, 1 - - - - - 2, -3, 1 - - - - - 1, 1, 1 - - - - - -3, 1, 2 - - - - - 1, 1, 1 - - - - - -3, 2, 1 - - - - - 1, 1, 1 - - + + + + + 5 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + true + true + + + + FCC (111)<110> + + + + + + + QAbstractItemView::NoEditTriggers + + + 167 + + + + + + + + + + + + + + + + (Slip Plane) + + + + 13 + + + + + + <Slip Direction> + + + + 13 + + + + + + 1, 1, -1 + + + + + 0, 1, 1 + + + + + 1, 1, -1 + + + + + 1, 0, 1 + + + + + 1, 1, -1 + + + + + 1, -1, 0 + + + + + 1, -1, -1 + + + + + 0, 1, -1 + + + + + 1, -1, -1 + + + + + 1, 0, 1 + + + + + 1, -1, -1 + + + + + 1, 1, 0 + + + + + 1, -1, 1 + + + + + 0, 1, 1 + + + + + 1, -1, 1 + + + + + 1, 0, -1 + + + + + 1, -1, 1 + + + + + 1, 1, 0 + + + + + 1, 1, 1 + + + + + 0, 1, -1 + + + + + 1, 1, 1 + + + + + 1, 0, -1 + + + + + 1, 1, 1 + + + + + 1, -1, 0 + + + + + + + + + + 5 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + true + true + + + + BCC (110)<111> + + + + + + + QAbstractItemView::NoEditTriggers + + + 167 + + + + + + + + + + + + + + + + (Slip Plane) + + + + 13 + + + + + + <Slip Direction> + + + + 13 + + + + + + 0, 1, 1 + + + + + 1, 1, -1 + + + + + 1, 0, 1 + + + + + 1, 1, -1 + + + + + 1, -1, 0 + + + + + 1, 1, -1 + + + + + 0, 1, -1 + + + + + 1, -1, -1 + + + + + 1, 0, 1 + + + + + 1, -1, -1 + + + + + 1, 1, 0 + + + + + 1, -1, -1 + + + + + 0, 1, 1 + + + + + 1, -1, 1 + + + + + 1, 0, -1 + + + + + 1, -1, 1 + + + + + 1, 1, 0 + + + + + 1, -1, 1 + + + + + 0, 1, -1 + + + + + 1, 1, 1 + + + + + 1, 0, -1 + + + + + 1, 1, 1 + + + + + 1, -1, 0 + + + + + 1, 1, 1 + + + + + + + + + + 5 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + true + true + + + + BCC (112)<111> + + + + + + + QAbstractItemView::NoEditTriggers + + + 167 + + + + + + + + + + + + + + + + (Slip Plane) + + + + 13 + + + + + + <Slip Direction> + + + + 13 + + + + + + -2, 1, -1 + + + + + -1, -1, 1 + + + + + 1, -2, -1 + + + + + -1, -1, 1 + + + + + 1, 1, 2 + + + + + -1, -1, 1 + + + + + -2, -1, -1 + + + + + -1, 1, 1 + + + + + 1, 2, -1 + + + + + -1, 1, 1 + + + + + 1, -1, 2 + + + + + -1, 1, 1 + + + + + 2, 1, -1 + + + + + 1, -1, 1 + + + + + -1, -2, -1 + + + + + 1, -1, 1 + + + + + -1, 1, 2 + + + + + 1, -1, 1 + + + + + 2, -1, -1 + + + + + 1, 1, 1 + + + + + -1, 2, -1 + + + + + 1, 1, 1 + + + + + -1, -1, 2 + + + + + 1, 1, 1 + + + + + + + + + + 5 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + true + true + + + + BCC (123)<111> + + + + + + + QAbstractItemView::NoEditTriggers + + + 24 + + + 167 + + + + + + + + + + + + + + + + + + + + + + + + + + + + (Slip Plane) + + + + 13 + + + + + + <Slip Direction> + + + + 13 + + + + + + 1, 2, 3 + + + + + 1, 1, -1 + + + + + -1, 3, 2 + + + + + 1, 1, -1 + + + + + 2, 1, 3 + + + + + 1, 1, -1 + + + + + -2, 3, 1 + + + + + 1, 1, -1 + + + + + 3, -1, 2 + + + + + 1, 1, -1 + + + + + 3, -2, 1 + + + + + 1, 1, -1 + + + + + -1, 2, -3 + + + + + 1, -1, -1 + + + + + 1, 3, -2 + + + + + 1, -1, -1 + + + + + 2, -1, 3 + + + + + 1, -1, -1 + + + + + 2, 3, -1 + + + + + 1, -1, -1 + + + + + 3, 1, 2 + + + + + 1, -1, -1 + + + + + 3, 2, 1 + + + + + 1, -1, -1 + + + + + 1, -2, -3 + + + + + 1, -1, 1 + + + + + 1, 3, 2 + + + + + 1, -1, 1 + + + + + 2, -1, -3 + + + + + 1, -1, 1 + + + + + 2, 3, 1 + + + + + 1, -1, 1 + + + + + 3, 1, -2 + + + + + 1, -1, 1 + + + + + 3, 2, -1 + + + + + 1, -1, 1 + + + + + 1, 2, -3 + + + + + 1, 1, 1 + + + + + 1, -3, 2 + + + + + 1, 1, 1 + + + + + 2, 1, -3 + + + + + 1, 1, 1 + + + + + 2, -3, 1 + + + + + 1, 1, 1 + + + + + -3, 1, 2 + + + + + 1, 1, 1 + + + + + -3, 2, 1 + + + + + 1, 1, 1 + + + + + + - - - - - - - Voce Parameters - - - - -1 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 0 - - - - QAbstractScrollArea::AdjustToContentsOnFirstShow - - - - Slip System - - - - - nrsx - - - - - gamd0x - - - - - tau0xf - - - - - tau0xb - - - - - tau1x - - - - - thet0 - - - - - thet1 - - - - - hselfx - - - - - hlatex - - - - - - - - QFrame::NoFrame - - - QFrame::Raised - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - QFrame::NoFrame - - - QFrame::Raised - - - - 0 + + + Voce Parameters + + + + -1 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + QAbstractScrollArea::AdjustToContentsOnFirstShow - - 0 + + + Slip System + + + + + nrsx + + + + + gamd0x + + + + + tau0xf + + + + + tau0xb + + + + + tau1x + + + + + thet0 + + + + + thet1 + + + + + hselfx + + + + + hlatex + + + + + + + + QFrame::NoFrame - - 0 + + QFrame::Raised - - 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + QFrame::NoFrame + + + QFrame::Raised + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Slip System: + + + + + + + + + + + + + + + + QFrame::NoFrame - - - - Slip System: - - - - - - - - - - - - - - - - QFrame::NoFrame - - - QFrame::Raised - - - - 12 - - - 0 - - - 12 - - - 10 - - - - - false - - - - 0 - 0 - - - - - 17 - 17 - - - - - 18 - - - - Rate sensitivity exponent. Relates shear rate on a slip system to the resolved shear stress. - - - - - - - :/Blue Icons/Blue Icons/information.svg:/Blue Icons/Blue Icons/information.svg - - - - 20 - 20 - - - - false - - - false - - - true - - - - - - - gamd0x: - - - - - - - hlatex: - - - - - - - - - - - - - false - - - - 0 - 0 - - - - - 17 - 17 - - - - Self-hardening coefficient. How the current slip system affects the hardening of the same system. - - - - - - - :/Blue Icons/Blue Icons/information.svg:/Blue Icons/Blue Icons/information.svg - - - - 20 - 20 - - - - false - - - false - - - true - - - - - - - tau0xb: - - - - - - - - - - tau0xf: - - - - - - - thet0: - - - - - - - hselfx: - - - - - - - tau1x: - - - - - - - false - - - - 0 - 0 - - - - - 17 - 17 - - - - Asymptotic hardening rate. The rate of hardening with increasing strain. - - - - - - - :/Blue Icons/Blue Icons/information.svg:/Blue Icons/Blue Icons/information.svg - - - - 20 - 20 - - - - false - - - false - - - true - - - - - - - - - - false - - - - 0 - 0 - - - - - 17 - 17 - - - - Latent hardening coefficient. How the current slip system affects the hardening of other systems. - - - - - - - :/Blue Icons/Blue Icons/information.svg:/Blue Icons/Blue Icons/information.svg - - - - 20 - 20 - - - - false - - - false - - - true - - - - - - - false - - - - 0 - 0 - - - - - 17 - 17 - - - - - 18 - - - - Reference shar rate. Sets the scale for the plastic strain rates in the model. - - - - - - - :/Blue Icons/Blue Icons/information.svg:/Blue Icons/Blue Icons/information.svg - - - - 20 - 20 - - - - false - - - false - - - true - - - - - - - - - - - - - false - - - - 0 - 0 - - - - - 17 - 17 - - - - Initial critical resolved shear stress for backward slip. The stress required to initiate slip on a given slip system. - - - - - - - :/Blue Icons/Blue Icons/information.svg:/Blue Icons/Blue Icons/information.svg - - - - 20 - 20 - - - - false - - - false - - - true - - - - - - - thet1: - - - - - - - - - - - - - false - - - - 0 - 0 - - - - - 17 - 17 - - - - - 18 - - - - Initial critical resolved shear stress for forward slip. The stress required to initiate slip on a given slip system. - - - - - - - :/Blue Icons/Blue Icons/information.svg:/Blue Icons/Blue Icons/information.svg - - - - 20 - 20 - - - - false - - - false - - - true - - - - - - - false - - - - 0 - 0 - - - - - 17 - 17 - - - - Saturation stress. The maximum value that the critical resolved shear stress can reach during hardening. - - - - - - - :/Blue Icons/Blue Icons/information.svg:/Blue Icons/Blue Icons/information.svg - - - - 20 - 20 - - - - false - - - false - - - true - - - - - - - - - - false - - - - 0 - 0 - - - - - 17 - 17 - - - - Initial hardening rate. The hardening rate at the beginning of plastic deformation. - - - - - - - :/Blue Icons/Blue Icons/information.svg:/Blue Icons/Blue Icons/information.svg - - - - 20 - 20 - - - - false - - - false - - - true - - - - - - - nrsx: - - - - + + QFrame::Raised + + + + 12 + + + 0 + + + 12 + + + 10 + + + + + false + + + + 0 + 0 + + + + + 17 + 17 + + + + + 18 + + + + Rate sensitivity exponent. Relates shear rate on a slip system to the resolved shear stress. + + + + + + + :/Blue Icons/Blue Icons/information.svg:/Blue Icons/Blue Icons/information.svg + + + + 20 + 20 + + + + false + + + false + + + true + + + + + + + gamd0x: + + + + + + + hlatex: + + + + + + + + + + + + + false + + + + 0 + 0 + + + + + 17 + 17 + + + + Self-hardening coefficient. How the current slip system affects the hardening of the same system. + + + + + + + :/Blue Icons/Blue Icons/information.svg:/Blue Icons/Blue Icons/information.svg + + + + 20 + 20 + + + + false + + + false + + + true + + + + + + + tau0xb: + + + + + + + + + + tau0xf: + + + + + + + thet0: + + + + + + + hselfx: + + + + + + + tau1x: + + + + + + + false + + + + 0 + 0 + + + + + 17 + 17 + + + + Asymptotic hardening rate. The rate of hardening with increasing strain. + + + + + + + :/Blue Icons/Blue Icons/information.svg:/Blue Icons/Blue Icons/information.svg + + + + 20 + 20 + + + + false + + + false + + + true + + + + + + + + + + false + + + + 0 + 0 + + + + + 17 + 17 + + + + Latent hardening coefficient. How the current slip system affects the hardening of other systems. + + + + + + + :/Blue Icons/Blue Icons/information.svg:/Blue Icons/Blue Icons/information.svg + + + + 20 + 20 + + + + false + + + false + + + true + + + + + + + false + + + + 0 + 0 + + + + + 17 + 17 + + + + + 18 + + + + Reference shar rate. Sets the scale for the plastic strain rates in the model. + + + + + + + :/Blue Icons/Blue Icons/information.svg:/Blue Icons/Blue Icons/information.svg + + + + 20 + 20 + + + + false + + + false + + + true + + + + + + + + + + + + + false + + + + 0 + 0 + + + + + 17 + 17 + + + + Initial critical resolved shear stress for backward slip. The stress required to initiate slip on a given slip system. + + + + + + + :/Blue Icons/Blue Icons/information.svg:/Blue Icons/Blue Icons/information.svg + + + + 20 + 20 + + + + false + + + false + + + true + + + + + + + thet1: + + + + + + + + + + + + + false + + + + 0 + 0 + + + + + 17 + 17 + + + + + 18 + + + + Initial critical resolved shear stress for forward slip. The stress required to initiate slip on a given slip system. + + + + + + + :/Blue Icons/Blue Icons/information.svg:/Blue Icons/Blue Icons/information.svg + + + + 20 + 20 + + + + false + + + false + + + true + + + + + + + false + + + + 0 + 0 + + + + + 17 + 17 + + + + Saturation stress. The maximum value that the critical resolved shear stress can reach during hardening. + + + + + + + :/Blue Icons/Blue Icons/information.svg:/Blue Icons/Blue Icons/information.svg + + + + 20 + 20 + + + + false + + + false + + + true + + + + + + + + + + false + + + + 0 + 0 + + + + + 17 + 17 + + + + Initial hardening rate. The hardening rate at the beginning of plastic deformation. + + + + + + + :/Blue Icons/Blue Icons/information.svg:/Blue Icons/Blue Icons/information.svg + + + + 20 + 20 + + + + false + + + false + + + true + + + + + + + nrsx: + + + + + + + + @@ -9481,6 +9539,11 @@ li.checked::marker { content: "\2612"; } ECAP + + + Compression Z + + @@ -11488,7 +11551,7 @@ li.checked::marker { content: "\2612"; } 0 0 1355 - 24 + 37 diff --git a/python/FIERRO-GUI/fierro_gui/ui_FIERRO_GUI.py b/python/FIERRO-GUI/fierro_gui/ui_FIERRO_GUI.py index 55bbb18ad..401f7498f 100644 --- a/python/FIERRO-GUI/fierro_gui/ui_FIERRO_GUI.py +++ b/python/FIERRO-GUI/fierro_gui/ui_FIERRO_GUI.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- ################################################################################ -## Form generated from reading UI file 'FIERRO_GUIJXXlhf.ui' +## Form generated from reading UI file 'FIERRO_GUIBosuJw.ui' ## ## Created by: Qt User Interface Compiler version 6.6.0 ## @@ -16,15 +16,15 @@ QIcon, QImage, QKeySequence, QLinearGradient, QPainter, QPalette, QPixmap, QRadialGradient, QTransform) -from PySide6.QtWidgets import (QAbstractItemView, QAbstractScrollArea, QApplication, QComboBox, - QFormLayout, QFrame, QGridLayout, QHBoxLayout, - QHeaderView, QLabel, QLayout, QLineEdit, - QListWidget, QListWidgetItem, QMainWindow, QMenu, - QMenuBar, QPlainTextEdit, QProgressBar, QPushButton, - QRadioButton, QScrollArea, QSizePolicy, QSpacerItem, - QSplitter, QStackedWidget, QStatusBar, QTabWidget, - QTableWidget, QTableWidgetItem, QToolButton, QTreeWidget, - QTreeWidgetItem, QVBoxLayout, QWidget) +from PySide6.QtWidgets import (QAbstractItemView, QAbstractScrollArea, QApplication, QCheckBox, + QComboBox, QFormLayout, QFrame, QGridLayout, + QHBoxLayout, QHeaderView, QLabel, QLayout, + QLineEdit, QListWidget, QListWidgetItem, QMainWindow, + QMenu, QMenuBar, QPlainTextEdit, QProgressBar, + QPushButton, QRadioButton, QScrollArea, QSizePolicy, + QSpacerItem, QSplitter, QStackedWidget, QStatusBar, + QTabWidget, QTableWidget, QTableWidgetItem, QToolButton, + QTreeWidget, QTreeWidgetItem, QVBoxLayout, QWidget) import IconResourceFile_rc import IconResourceFile_rc @@ -2890,6 +2890,8 @@ def setupUi(self, MainWindow): self.INMaterialDefinition.addItem("") self.INMaterialDefinition.addItem("") self.INMaterialDefinition.addItem("") + self.INMaterialDefinition.addItem("") + self.INMaterialDefinition.addItem("") self.INMaterialDefinition.setObjectName(u"INMaterialDefinition") self.gridLayout_25.addWidget(self.INMaterialDefinition, 1, 1, 1, 1) @@ -3370,10 +3372,33 @@ def setupUi(self, MainWindow): self.Plastic.setObjectName(u"Plastic") self.Plastic.setStyleSheet(u"") self.verticalLayout_26 = QVBoxLayout(self.Plastic) +#ifndef Q_OS_MAC + self.verticalLayout_26.setSpacing(-1) +#endif self.verticalLayout_26.setObjectName(u"verticalLayout_26") self.verticalLayout_26.setContentsMargins(0, 0, 0, 0) - self.PlasticProperties = QTabWidget(self.Plastic) + self.BEnablePlasticity = QCheckBox(self.Plastic) + self.BEnablePlasticity.setObjectName(u"BEnablePlasticity") + + self.verticalLayout_26.addWidget(self.BEnablePlasticity, 0, Qt.AlignHCenter) + + self.EnablePlasticity = QStackedWidget(self.Plastic) + self.EnablePlasticity.setObjectName(u"EnablePlasticity") + sizePolicy11.setHeightForWidth(self.EnablePlasticity.sizePolicy().hasHeightForWidth()) + self.EnablePlasticity.setSizePolicy(sizePolicy11) + self.page_10 = QWidget() + self.page_10.setObjectName(u"page_10") + self.verticalLayout_71 = QVBoxLayout(self.page_10) + self.verticalLayout_71.setObjectName(u"verticalLayout_71") + self.EnablePlasticity.addWidget(self.page_10) + self.page_26 = QWidget() + self.page_26.setObjectName(u"page_26") + self.verticalLayout_70 = QVBoxLayout(self.page_26) + self.verticalLayout_70.setObjectName(u"verticalLayout_70") + self.verticalLayout_70.setContentsMargins(0, 0, 0, 0) + self.PlasticProperties = QTabWidget(self.page_26) self.PlasticProperties.setObjectName(u"PlasticProperties") + self.PlasticProperties.setMinimumSize(QSize(0, 0)) font12 = QFont() font12.setItalic(False) self.PlasticProperties.setFont(font12) @@ -4195,7 +4220,11 @@ def setupUi(self, MainWindow): self.PlasticProperties.addTab(self.VoceParameters, "") - self.verticalLayout_26.addWidget(self.PlasticProperties) + self.verticalLayout_70.addWidget(self.PlasticProperties) + + self.EnablePlasticity.addWidget(self.page_26) + + self.verticalLayout_26.addWidget(self.EnablePlasticity) icon12 = QIcon() icon12.addFile(u":/Blue Icons/Blue Icons/Plastic.svg", QSize(), QIcon.Normal, QIcon.Off) @@ -4859,6 +4888,7 @@ def setupUi(self, MainWindow): self.INbulkBC.addItem("") self.INbulkBC.addItem("") self.INbulkBC.addItem("") + self.INbulkBC.addItem("") self.INbulkBC.setObjectName(u"INbulkBC") self.gridLayout_28.addWidget(self.INbulkBC, 0, 1, 1, 1) @@ -6079,6 +6109,7 @@ def setupUi(self, MainWindow): self.MaterialTypeTool.setCurrentIndex(0) self.MaterialMenu_2.setCurrentIndex(0) self.MaterialTypeTool_2.setCurrentIndex(0) + self.EnablePlasticity.setCurrentIndex(0) self.PlasticProperties.setCurrentIndex(0) self.pushButton_13.setDefault(False) self.SlipSystemInfo.setCurrentIndex(0) @@ -6563,8 +6594,10 @@ def retranslateUi(self, MainWindow): self.LMaterialName_3.setText(QCoreApplication.translate("MainWindow", u"Name:", None)) self.LMaterialDefinition.setText(QCoreApplication.translate("MainWindow", u"Material Definition:", None)) self.INMaterialDefinition.setItemText(0, QCoreApplication.translate("MainWindow", u"Custom", None)) - self.INMaterialDefinition.setItemText(1, QCoreApplication.translate("MainWindow", u"Single Crystal Copper", None)) - self.INMaterialDefinition.setItemText(2, QCoreApplication.translate("MainWindow", u"Tantalum", None)) + self.INMaterialDefinition.setItemText(1, QCoreApplication.translate("MainWindow", u"Import Elastic Parameters File", None)) + self.INMaterialDefinition.setItemText(2, QCoreApplication.translate("MainWindow", u"Import Plastic Parameters File", None)) + self.INMaterialDefinition.setItemText(3, QCoreApplication.translate("MainWindow", u"Single Crystal Copper", None)) + self.INMaterialDefinition.setItemText(4, QCoreApplication.translate("MainWindow", u"Tantalum", None)) self.LType_2.setText(QCoreApplication.translate("MainWindow", u"Elasticity:", None)) self.INSolidGas_2.setItemText(0, QCoreApplication.translate("MainWindow", u"Solid", None)) @@ -6611,6 +6644,7 @@ def retranslateUi(self, MainWindow): self.LNUxy_2.setText(QCoreApplication.translate("MainWindow", u"

nuxy:

", None)) self.LEz_2.setText(QCoreApplication.translate("MainWindow", u"

Ez:

", None)) self.MaterialMenu_2.setTabText(self.MaterialMenu_2.indexOf(self.Elastic_2), QCoreApplication.translate("MainWindow", u"Elastic", None)) + self.BEnablePlasticity.setText(QCoreApplication.translate("MainWindow", u"Enable Plasticity", None)) self.Lc.setText(QCoreApplication.translate("MainWindow", u"c", None)) self.La.setText(QCoreApplication.translate("MainWindow", u"a", None)) self.Lb.setText(QCoreApplication.translate("MainWindow", u"b", None)) @@ -7160,6 +7194,7 @@ def retranslateUi(self, MainWindow): self.INbulkBC.setItemText(0, QCoreApplication.translate("MainWindow", u"Custom", None)) self.INbulkBC.setItemText(1, QCoreApplication.translate("MainWindow", u"Example", None)) self.INbulkBC.setItemText(2, QCoreApplication.translate("MainWindow", u"ECAP", None)) + self.INbulkBC.setItemText(3, QCoreApplication.translate("MainWindow", u"Compression Z", None)) self.LVgrad.setText(QCoreApplication.translate("MainWindow", u"VELOCITY GRADIENT", None)) self.label_12.setText(QCoreApplication.translate("MainWindow", u"--enforced condition--", None))