From 61cca14de8a281c6e31c945a95036c79d43d570c Mon Sep 17 00:00:00 2001
From: shankinsMechEng <134628078+shankinsMechEng@users.noreply.github.com>
Date: Fri, 3 Jan 2025 12:38:30 -0700
Subject: [PATCH] added ability to write input files
---
python/FIERRO-GUI/fierro_gui/Bulk_Forming.py | 33 +
python/FIERRO-GUI/fierro_gui/FIERRO_GUI.ui | 1070 ++++++++++-------
.../FIERRO-GUI/fierro_gui/Homogenization.py | 36 +
python/FIERRO-GUI/fierro_gui/ui_FIERRO_GUI.py | 184 ++-
4 files changed, 849 insertions(+), 474 deletions(-)
diff --git a/python/FIERRO-GUI/fierro_gui/Bulk_Forming.py b/python/FIERRO-GUI/fierro_gui/Bulk_Forming.py
index 81b8288cc..be29792ba 100644
--- a/python/FIERRO-GUI/fierro_gui/Bulk_Forming.py
+++ b/python/FIERRO-GUI/fierro_gui/Bulk_Forming.py
@@ -1125,6 +1125,10 @@ def boundary_conditions():
self.TCstress.setItem(1,1,QTableWidgetItem("0."))
self.INbulkBC.currentIndexChanged.connect(boundary_conditions)
+ # Select to run locally or write the input files
+ self.INBFRunLocally.toggled.connect(lambda: self.BFRunWrite.setCurrentIndex(0))
+ self.INBFWriteFiles.toggled.connect(lambda: self.BFRunWrite.setCurrentIndex(1))
+
# Select serial or parallel run type
self.INBFSerial.toggled.connect(lambda: self.BFRunType.setCurrentIndex(0))
self.INBFParallel.toggled.connect(lambda: self.BFRunType.setCurrentIndex(1))
@@ -1133,6 +1137,35 @@ def boundary_conditions():
num_cores = os.cpu_count()
self.INBFmpiRanks.setMaximum(num_cores)
+ # Write input files
+ def Write_Input_Files():
+ # Ask user to select a folder
+ selected_directory = QFileDialog.getExistingDirectory(None, "Select Folder")
+ # Create input files
+ self.BULK_FORMING_ELASTIC_PARAMETERS = os.path.join(selected_directory, 'elastic_parameters.txt')
+ self.BULK_FORMING_PLASTIC_PARAMETERS = os.path.join(selected_directory, 'plastic_parameters.txt')
+ self.BULK_FORMING_INPUT = os.path.join(selected_directory, 'bulk_forming_input.txt')
+ Bulk_Forming_WInput(self)
+ # Write a readme file
+ readme = os.path.join(selected_directory, 'README.txt')
+ wreadme = open(readme,"w")
+ about = 'ABOUT: \n' \
+ 'elastic_parameters.txt -> these files contain the elastic material properties\n' \
+ 'plastic_parameters.txt -> this file contains the plastic material properties\n' \
+ 'bulk_forming_input.txt -> this file is the input file to the evpfft solver\n' \
+ ' -> ** Ensure you go into this file and properly specify file paths\n'
+ wreadme.write(about)
+ run = 'TO RUN: \n' \
+ 'flags -> Please set the flags: export OMP_PROC_BIND=spread and export OMP_NUM_THREADS=1\n' \
+ 'parallel run -> (.txt input): mpirun -np # evpfft -f bulk_forming_input.txt\n' \
+ ' -> (.vtk input): mpirun -np # evpfft -f bulk_forming_input.txt -m 2\n' \
+ 'serial run -> (.txt input): evpfft -f bulk_forming_input.txt\n' \
+ ' -> (.vtk input): evpfft -f bulk_forming_input.txt -m 2\n' \
+ 'help -> evpfft --help'
+ wreadme.write(run)
+ wreadme.close()
+ self.BBFWriteFiles.clicked.connect(Write_Input_Files)
+
# Run Bulk Formation
self.run = 0
self.ConvergenceError = False
diff --git a/python/FIERRO-GUI/fierro_gui/FIERRO_GUI.ui b/python/FIERRO-GUI/fierro_gui/FIERRO_GUI.ui
index 44084154e..fc25826a0 100644
--- a/python/FIERRO-GUI/fierro_gui/FIERRO_GUI.ui
+++ b/python/FIERRO-GUI/fierro_gui/FIERRO_GUI.ui
@@ -10359,32 +10359,19 @@ li.checked::marker { content: "\2612"; }
-
-
-
-
- true
- true
-
-
-
- Job Type
-
-
-
- -
-
+
QFrame::NoFrame
QFrame::Raised
-
+
0
- 5
+ 0
0
@@ -10393,9 +10380,9 @@ li.checked::marker { content: "\2612"; }
5
-
-
+
- Single Job
+ Run Locally
true
@@ -10403,90 +10390,272 @@ li.checked::marker { content: "\2612"; }
-
-
+
- Batch Job
+ Write Input Files
- -
-
+
-
+
1
-
-
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
-
-
-
+
+
+
-
+
+
+
+ true
+ true
+
+
+
+ Job Type
+
+
+
+ -
+
QFrame::NoFrame
QFrame::Raised
-
+
0
- 0
+ 5
0
- 0
+ 5
-
-
+
- Batch Type:
+ Single Job
+
+
+ true
-
-
-
-
-
- Geometry
-
-
+
+
+ Batch Job
+
+ -
+
+
+ 1
+
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ QFrame::NoFrame
+
+
+ QFrame::Raised
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ Batch Type:
+
+
+
+ -
+
+
-
+
+ Geometry
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ QFrame::NoFrame
+
+
+ QFrame::Raised
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ Save Material Constants Files
+
+
+ true
+
+
+
+ -
+
+
+ Save All Files
+
+
+
+
+
+
+ -
+
+
+ Select Geometry Files
+
+
+
+ -
+
+
+ QFrame::NoFrame
+
+
+ QFrame::Raised
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ false
+
+
+
+ true
+
+
+
+ Homogenizing File:
+
+
+
+ -
+
+
+ false
+
+
+ 1/1
+
+
+
+
+
+
+ -
+
+
+ false
+
+
+
+
+
+
+
-
-
-
-
- 0
- 0
-
+
+
+
+ true
+ true
+
+
+ Run Type
+
+
+
+ -
+
QFrame::NoFrame
QFrame::Raised
-
+
0
@@ -10497,12 +10666,12 @@ li.checked::marker { content: "\2612"; }
0
- 0
+ 5
-
-
+
- Save Material Constants Files
+ Serial
true
@@ -10510,31 +10679,166 @@ li.checked::marker { content: "\2612"; }
-
-
+
- Save All Files
+ Parallel
- -
-
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 75
+
+
+
+
+ 16777215
+ 75
+
+
+
+ 1
+
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ QFrame::NoFrame
+
+
+ QFrame::Raised
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ QFrame::NoFrame
+
+
+ QFrame::Raised
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ MPI Ranks:
+
+
+
+ -
+
+
+ false
+
+
+ QAbstractSpinBox::UpDownArrows
+
+
+ 1
+
+
+ 1
+
+
+
+
+
+
+ -
+
+
+ <html><head/><body><p><span style=" color:#797979;">Warning: mpi could be slower than serial for small models due to initialization and overhead.</span></p></body></html>
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ true
+ true
+
+
- Select Geometry Files
+ Convergence Tuning
-
-
+
QFrame::NoFrame
QFrame::Raised
-
+
0
@@ -10545,30 +10849,28 @@ li.checked::marker { content: "\2612"; }
0
- 0
+ 5
-
-
-
-
- false
-
-
-
- true
-
+
-
+
+
+ Automatically adjust model parameters if solution convergence is not met.
- Homogenizing File:
+ Automatic
+
+
+ true
- -
-
-
- false
+
-
+
+
+ Outputs a convergence warning. Requires manual parameter adjustment and manual re-run.
- 1/1
+ Manual
@@ -10576,105 +10878,14 @@ li.checked::marker { content: "\2612"; }
-
-
-
- false
-
-
-
-
-
-
-
- -
-
-
-
- true
- true
-
-
-
- Run Type
-
-
-
- -
-
-
- QFrame::NoFrame
-
-
- QFrame::Raised
-
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 5
-
-
-
-
-
- Serial
-
-
- true
-
-
-
- -
-
-
- Parallel
-
-
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- 1
-
-
-
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
-
-
-
+
QFrame::NoFrame
QFrame::Raised
-
+
0
@@ -10687,197 +10898,91 @@ li.checked::marker { content: "\2612"; }
0
-
-
-
-
- MPI Ranks:
-
-
-
- -
-
-
- false
-
-
- QAbstractSpinBox::UpDownArrows
-
-
- 1
-
-
- 1
+
-
+
+
+
+ true
+
-
-
-
-
-
- -
-
-
- <html><head/><body><p><span style=" color:#797979;">Warning: mpi could be slower than serial for small models due to initialization and overhead.</span></p></body></html>
-
-
- true
-
-
-
-
-
-
-
- -
-
-
-
- true
- true
-
-
-
- Convergence Tuning
-
-
-
- -
-
-
- QFrame::NoFrame
-
-
- QFrame::Raised
-
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 5
-
-
-
-
-
- Automatically adjust model parameters if solution convergence is not met.
-
-
- Automatic
-
-
- true
-
-
-
- -
-
-
- Outputs a convergence warning. Requires manual parameter adjustment and manual re-run.
-
-
- Manual
-
-
-
-
-
-
- -
-
-
- QFrame::NoFrame
-
-
- QFrame::Raised
-
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
-
-
-
-
-
- true
-
-
-
- Run Homogenization
-
-
- true
-
-
-
- -
-
-
- Terminate
-
-
- false
-
-
- false
-
-
-
-
+
+ Run Homogenization
+
+
+ true
+
+
+
+ -
+
+
+ Terminate
+
+
+ false
+
+
+ false
+
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+
+
+ -
+
+
+ Write Input Files
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
-
-
-
-
- true
- true
-
-
-
- Run Type
-
-
-
- -
-
+
QFrame::NoFrame
QFrame::Raised
-
+
0
@@ -10891,9 +10996,9 @@ li.checked::marker { content: "\2612"; }
5
-
-
+
- Serial
+ Run Locally
true
@@ -10901,9 +11006,9 @@ li.checked::marker { content: "\2612"; }
-
-
+
- Parallel
+ Write Input Files
@@ -10911,104 +11016,193 @@ li.checked::marker { content: "\2612"; }
-
-
-
-
- 0
- 0
-
-
+
1
-
-
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
-
-
-
-
- false
+
+
+
-
+
+
+
+ true
+ true
+
-
- QAbstractSpinBox::UpDownArrows
+
+ Run Type
-
- 1
+
+
+ -
+
+
+ QFrame::NoFrame
+
+
+ QFrame::Raised
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 5
+
+
-
+
+
+ Serial
+
+
+ true
+
+
+
+ -
+
+
+ Parallel
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
-
+
1
+
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ false
+
+
+ QAbstractSpinBox::UpDownArrows
+
+
+ 1
+
+
+ 1
+
+
+
+ -
+
+
+ MPI Ranks:
+
+
+
+
+
+
+
+ -
+
+
+ QFrame::NoFrame
+
+
+ QFrame::Raised
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+
+ true
+
+
+
+ Run Bulk Forming Simulation
+
+
+ true
+
+
+
+ -
+
+
+ Terminate
+
+
+
+
- -
-
+
+
+
+
+ -
+
- MPI Ranks:
+ Write Input Files
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
- -
-
-
- QFrame::NoFrame
-
-
- QFrame::Raised
-
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
-
-
-
-
-
- true
-
-
-
- Run Bulk Forming Simulation
-
-
- true
-
-
-
- -
-
-
- Terminate
-
-
-
-
-
-
-
@@ -11089,7 +11283,7 @@ li.checked::marker { content: "\2612"; }
-
- 2
+ 1
diff --git a/python/FIERRO-GUI/fierro_gui/Homogenization.py b/python/FIERRO-GUI/fierro_gui/Homogenization.py
index 29000d9c3..7c79b11de 100644
--- a/python/FIERRO-GUI/fierro_gui/Homogenization.py
+++ b/python/FIERRO-GUI/fierro_gui/Homogenization.py
@@ -956,6 +956,42 @@ def batch_geometry():
self.INHomogenizationBatchFile.setText(f'{self.file_paths[0]}')
self.BSelectGeometryFiles.clicked.connect(batch_geometry)
+ # Write input files
+ def Write_Input_Files():
+ # Ask user to select a folder
+ selected_directory = QFileDialog.getExistingDirectory(None, "Select Folder")
+ # Create input files
+ self.ELASTIC_PARAMETERS_0 = os.path.join(selected_directory, 'elastic_parameters_0.txt')
+ self.ELASTIC_PARAMETERS_1 = os.path.join(selected_directory, 'elastic_parameters_1.txt')
+ self.PLASTIC_PARAMETERS = os.path.join(selected_directory, 'plastic_parameters.txt')
+ self.EVPFFT_INPUT = os.path.join(selected_directory, 'evpfft_lattice_input.txt')
+ for BC_index in range(6):
+ self.EVPFFT_INPUT = os.path.join(selected_directory, f'evpfft_lattice_input_{BC_index}.txt')
+ Homogenization_WInput(self,BC_index)
+ # Write a readme file
+ readme = os.path.join(selected_directory, 'README.txt')
+ wreadme = open(readme,"w")
+ about = 'ABOUT: \n' \
+ 'elastic_parameters_#.txt -> these files contain the elastic material properties\n' \
+ 'plastic_parameters.txt -> this file contains null plastic material properties\n' \
+ 'input_#.txt -> this file is your input file for each of the 6 homogenization steps\n' \
+ ' -> ** Ensure you go into these files and properly specify file paths\n'
+ wreadme.write(about)
+ run = 'TO RUN: \n' \
+ 'flags -> Please set the flags: export OMP_PROC_BIND=spread and export OMP_NUM_THREADS=1\n' \
+ 'parallel run -> (.txt input): mpirun -np # evpfft -f input_#.txt\n' \
+ ' -> (.vtk input): mpirun -np # evpfft -f input_#.txt -m 2\n' \
+ 'serial run -> (.txt input): evpfft -f input_#.txt\n' \
+ ' -> (.vtk input): evpfft -f input_#.txt -m 2\n' \
+ 'help -> evpfft --help'
+ wreadme.write(run)
+ wreadme.close()
+ self.BHWriteFiles.clicked.connect(Write_Input_Files)
+
+ # Select to run locally or write the input files
+ self.INHRunLocally.toggled.connect(lambda: self.HomogenizationRunWrite.setCurrentIndex(0))
+ self.INHWriteFiles.toggled.connect(lambda: self.HomogenizationRunWrite.setCurrentIndex(1))
+
# Select single job or batch job
self.INSingleJob.toggled.connect(lambda: self.HomogenizationBatch.setCurrentIndex(0))
self.INBatchJob.toggled.connect(lambda: self.HomogenizationBatch.setCurrentIndex(1))
diff --git a/python/FIERRO-GUI/fierro_gui/ui_FIERRO_GUI.py b/python/FIERRO-GUI/fierro_gui/ui_FIERRO_GUI.py
index b1b793ae5..de676a2cc 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_GUIYaKUPn.ui'
+## Form generated from reading UI file 'FIERRO_GUIGbeDCJ.ui'
##
## Created by: Qt User Interface Compiler version 6.6.0
##
@@ -5344,13 +5344,40 @@ def setupUi(self, MainWindow):
self.page_21.setObjectName(u"page_21")
self.verticalLayout_13 = QVBoxLayout(self.page_21)
self.verticalLayout_13.setObjectName(u"verticalLayout_13")
- self.label_53 = QLabel(self.page_21)
+ self.frame_71 = QFrame(self.page_21)
+ self.frame_71.setObjectName(u"frame_71")
+ self.frame_71.setFrameShape(QFrame.NoFrame)
+ self.frame_71.setFrameShadow(QFrame.Raised)
+ self.formLayout_26 = QFormLayout(self.frame_71)
+ self.formLayout_26.setObjectName(u"formLayout_26")
+ self.formLayout_26.setContentsMargins(0, 0, 0, 5)
+ self.INHRunLocally = QRadioButton(self.frame_71)
+ self.INHRunLocally.setObjectName(u"INHRunLocally")
+ self.INHRunLocally.setChecked(True)
+
+ self.formLayout_26.setWidget(0, QFormLayout.LabelRole, self.INHRunLocally)
+
+ self.INHWriteFiles = QRadioButton(self.frame_71)
+ self.INHWriteFiles.setObjectName(u"INHWriteFiles")
+
+ self.formLayout_26.setWidget(0, QFormLayout.FieldRole, self.INHWriteFiles)
+
+
+ self.verticalLayout_13.addWidget(self.frame_71, 0, Qt.AlignHCenter)
+
+ self.HomogenizationRunWrite = QStackedWidget(self.page_21)
+ self.HomogenizationRunWrite.setObjectName(u"HomogenizationRunWrite")
+ self.page_37 = QWidget()
+ self.page_37.setObjectName(u"page_37")
+ self.verticalLayout_73 = QVBoxLayout(self.page_37)
+ self.verticalLayout_73.setObjectName(u"verticalLayout_73")
+ self.label_53 = QLabel(self.page_37)
self.label_53.setObjectName(u"label_53")
self.label_53.setFont(font14)
- self.verticalLayout_13.addWidget(self.label_53, 0, Qt.AlignHCenter)
+ self.verticalLayout_73.addWidget(self.label_53, 0, Qt.AlignHCenter)
- self.frame_16 = QFrame(self.page_21)
+ self.frame_16 = QFrame(self.page_37)
self.frame_16.setObjectName(u"frame_16")
self.frame_16.setFrameShape(QFrame.NoFrame)
self.frame_16.setFrameShadow(QFrame.Raised)
@@ -5369,9 +5396,9 @@ def setupUi(self, MainWindow):
self.formLayout.setWidget(0, QFormLayout.FieldRole, self.INBatchJob)
- self.verticalLayout_13.addWidget(self.frame_16, 0, Qt.AlignHCenter)
+ self.verticalLayout_73.addWidget(self.frame_16, 0, Qt.AlignHCenter)
- self.HomogenizationBatch = QStackedWidget(self.page_21)
+ self.HomogenizationBatch = QStackedWidget(self.page_37)
self.HomogenizationBatch.setObjectName(u"HomogenizationBatch")
self.page_5 = QWidget()
self.page_5.setObjectName(u"page_5")
@@ -5463,15 +5490,15 @@ def setupUi(self, MainWindow):
self.HomogenizationBatch.addWidget(self.page_6)
- self.verticalLayout_13.addWidget(self.HomogenizationBatch, 0, Qt.AlignTop)
+ self.verticalLayout_73.addWidget(self.HomogenizationBatch, 0, Qt.AlignTop)
- self.label_54 = QLabel(self.page_21)
+ self.label_54 = QLabel(self.page_37)
self.label_54.setObjectName(u"label_54")
self.label_54.setFont(font14)
- self.verticalLayout_13.addWidget(self.label_54, 0, Qt.AlignHCenter)
+ self.verticalLayout_73.addWidget(self.label_54, 0, Qt.AlignHCenter)
- self.frame_59 = QFrame(self.page_21)
+ self.frame_59 = QFrame(self.page_37)
self.frame_59.setObjectName(u"frame_59")
self.frame_59.setFrameShape(QFrame.NoFrame)
self.frame_59.setFrameShadow(QFrame.Raised)
@@ -5490,12 +5517,14 @@ def setupUi(self, MainWindow):
self.formLayout_6.setWidget(0, QFormLayout.FieldRole, self.INHParallel)
- self.verticalLayout_13.addWidget(self.frame_59, 0, Qt.AlignHCenter)
+ self.verticalLayout_73.addWidget(self.frame_59, 0, Qt.AlignHCenter)
- self.HomogenizationRunType = QStackedWidget(self.page_21)
+ self.HomogenizationRunType = QStackedWidget(self.page_37)
self.HomogenizationRunType.setObjectName(u"HomogenizationRunType")
- sizePolicy6.setHeightForWidth(self.HomogenizationRunType.sizePolicy().hasHeightForWidth())
- self.HomogenizationRunType.setSizePolicy(sizePolicy6)
+ sizePolicy8.setHeightForWidth(self.HomogenizationRunType.sizePolicy().hasHeightForWidth())
+ self.HomogenizationRunType.setSizePolicy(sizePolicy8)
+ self.HomogenizationRunType.setMinimumSize(QSize(0, 75))
+ self.HomogenizationRunType.setMaximumSize(QSize(16777215, 75))
self.page_31 = QWidget()
self.page_31.setObjectName(u"page_31")
self.HomogenizationRunType.addWidget(self.page_31)
@@ -5508,15 +5537,24 @@ def setupUi(self, MainWindow):
self.frame_65.setObjectName(u"frame_65")
self.frame_65.setFrameShape(QFrame.NoFrame)
self.frame_65.setFrameShadow(QFrame.Raised)
- self.formLayout_9 = QFormLayout(self.frame_65)
+ self.verticalLayout_74 = QVBoxLayout(self.frame_65)
+ self.verticalLayout_74.setObjectName(u"verticalLayout_74")
+ self.verticalLayout_74.setContentsMargins(0, 0, 0, 0)
+ self.frame_70 = QFrame(self.frame_65)
+ self.frame_70.setObjectName(u"frame_70")
+ sizePolicy8.setHeightForWidth(self.frame_70.sizePolicy().hasHeightForWidth())
+ self.frame_70.setSizePolicy(sizePolicy8)
+ self.frame_70.setFrameShape(QFrame.NoFrame)
+ self.frame_70.setFrameShadow(QFrame.Raised)
+ self.formLayout_9 = QFormLayout(self.frame_70)
self.formLayout_9.setObjectName(u"formLayout_9")
self.formLayout_9.setContentsMargins(0, 0, 0, 0)
- self.label_58 = QLabel(self.frame_65)
+ self.label_58 = QLabel(self.frame_70)
self.label_58.setObjectName(u"label_58")
self.formLayout_9.setWidget(0, QFormLayout.LabelRole, self.label_58)
- self.INmpiRanks = QSpinBox(self.frame_65)
+ self.INmpiRanks = QSpinBox(self.frame_70)
self.INmpiRanks.setObjectName(u"INmpiRanks")
self.INmpiRanks.setReadOnly(False)
self.INmpiRanks.setButtonSymbols(QAbstractSpinBox.UpDownArrows)
@@ -5526,25 +5564,28 @@ def setupUi(self, MainWindow):
self.formLayout_9.setWidget(0, QFormLayout.FieldRole, self.INmpiRanks)
- self.verticalLayout_72.addWidget(self.frame_65)
+ self.verticalLayout_74.addWidget(self.frame_70)
- self.label_65 = QLabel(self.page_32)
+ self.label_65 = QLabel(self.frame_65)
self.label_65.setObjectName(u"label_65")
self.label_65.setWordWrap(True)
- self.verticalLayout_72.addWidget(self.label_65)
+ self.verticalLayout_74.addWidget(self.label_65, 0, Qt.AlignTop)
+
+
+ self.verticalLayout_72.addWidget(self.frame_65)
self.HomogenizationRunType.addWidget(self.page_32)
- self.verticalLayout_13.addWidget(self.HomogenizationRunType, 0, Qt.AlignTop)
+ self.verticalLayout_73.addWidget(self.HomogenizationRunType, 0, Qt.AlignTop)
- self.label_64 = QLabel(self.page_21)
+ self.label_64 = QLabel(self.page_37)
self.label_64.setObjectName(u"label_64")
self.label_64.setFont(font14)
- self.verticalLayout_13.addWidget(self.label_64, 0, Qt.AlignHCenter)
+ self.verticalLayout_73.addWidget(self.label_64, 0, Qt.AlignHCenter)
- self.frame_64 = QFrame(self.page_21)
+ self.frame_64 = QFrame(self.page_37)
self.frame_64.setObjectName(u"frame_64")
self.frame_64.setFrameShape(QFrame.NoFrame)
self.frame_64.setFrameShadow(QFrame.Raised)
@@ -5563,9 +5604,9 @@ def setupUi(self, MainWindow):
self.formLayout_19.setWidget(0, QFormLayout.FieldRole, self.INHManual)
- self.verticalLayout_13.addWidget(self.frame_64, 0, Qt.AlignHCenter)
+ self.verticalLayout_73.addWidget(self.frame_64, 0, Qt.AlignHCenter)
- self.frame_68 = QFrame(self.page_21)
+ self.frame_68 = QFrame(self.page_37)
self.frame_68.setObjectName(u"frame_68")
self.frame_68.setFrameShape(QFrame.NoFrame)
self.frame_68.setFrameShadow(QFrame.Raised)
@@ -5585,24 +5626,69 @@ def setupUi(self, MainWindow):
self.horizontalLayout_25.addWidget(self.BKillEVPFFT2)
- self.verticalLayout_13.addWidget(self.frame_68)
+ self.verticalLayout_73.addWidget(self.frame_68)
self.verticalSpacer_9 = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
- self.verticalLayout_13.addItem(self.verticalSpacer_9)
+ self.verticalLayout_73.addItem(self.verticalSpacer_9)
+
+ self.HomogenizationRunWrite.addWidget(self.page_37)
+ self.page_38 = QWidget()
+ self.page_38.setObjectName(u"page_38")
+ self.verticalLayout_75 = QVBoxLayout(self.page_38)
+ self.verticalLayout_75.setObjectName(u"verticalLayout_75")
+ self.BHWriteFiles = QPushButton(self.page_38)
+ self.BHWriteFiles.setObjectName(u"BHWriteFiles")
+
+ self.verticalLayout_75.addWidget(self.BHWriteFiles)
+
+ self.verticalSpacer_21 = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
+
+ self.verticalLayout_75.addItem(self.verticalSpacer_21)
+
+ self.HomogenizationRunWrite.addWidget(self.page_38)
+
+ self.verticalLayout_13.addWidget(self.HomogenizationRunWrite)
self.RunOptions.addWidget(self.page_21)
self.page_24 = QWidget()
self.page_24.setObjectName(u"page_24")
self.verticalLayout_39 = QVBoxLayout(self.page_24)
self.verticalLayout_39.setObjectName(u"verticalLayout_39")
- self.label_62 = QLabel(self.page_24)
+ self.frame_72 = QFrame(self.page_24)
+ self.frame_72.setObjectName(u"frame_72")
+ self.frame_72.setFrameShape(QFrame.NoFrame)
+ self.frame_72.setFrameShadow(QFrame.Raised)
+ self.formLayout_29 = QFormLayout(self.frame_72)
+ self.formLayout_29.setObjectName(u"formLayout_29")
+ self.formLayout_29.setContentsMargins(0, 0, 0, 5)
+ self.INBFRunLocally = QRadioButton(self.frame_72)
+ self.INBFRunLocally.setObjectName(u"INBFRunLocally")
+ self.INBFRunLocally.setChecked(True)
+
+ self.formLayout_29.setWidget(0, QFormLayout.LabelRole, self.INBFRunLocally)
+
+ self.INBFWriteFiles = QRadioButton(self.frame_72)
+ self.INBFWriteFiles.setObjectName(u"INBFWriteFiles")
+
+ self.formLayout_29.setWidget(0, QFormLayout.FieldRole, self.INBFWriteFiles)
+
+
+ self.verticalLayout_39.addWidget(self.frame_72, 0, Qt.AlignHCenter)
+
+ self.BFRunWrite = QStackedWidget(self.page_24)
+ self.BFRunWrite.setObjectName(u"BFRunWrite")
+ self.page_39 = QWidget()
+ self.page_39.setObjectName(u"page_39")
+ self.verticalLayout_76 = QVBoxLayout(self.page_39)
+ self.verticalLayout_76.setObjectName(u"verticalLayout_76")
+ self.label_62 = QLabel(self.page_39)
self.label_62.setObjectName(u"label_62")
self.label_62.setFont(font14)
- self.verticalLayout_39.addWidget(self.label_62, 0, Qt.AlignHCenter)
+ self.verticalLayout_76.addWidget(self.label_62, 0, Qt.AlignHCenter)
- self.frame_63 = QFrame(self.page_24)
+ self.frame_63 = QFrame(self.page_39)
self.frame_63.setObjectName(u"frame_63")
self.frame_63.setFrameShape(QFrame.NoFrame)
self.frame_63.setFrameShadow(QFrame.Raised)
@@ -5621,9 +5707,9 @@ def setupUi(self, MainWindow):
self.formLayout_11.setWidget(0, QFormLayout.FieldRole, self.INBFParallel)
- self.verticalLayout_39.addWidget(self.frame_63, 0, Qt.AlignHCenter)
+ self.verticalLayout_76.addWidget(self.frame_63, 0, Qt.AlignHCenter)
- self.BFRunType = QStackedWidget(self.page_24)
+ self.BFRunType = QStackedWidget(self.page_39)
self.BFRunType.setObjectName(u"BFRunType")
sizePolicy6.setHeightForWidth(self.BFRunType.sizePolicy().hasHeightForWidth())
self.BFRunType.setSizePolicy(sizePolicy6)
@@ -5651,9 +5737,9 @@ def setupUi(self, MainWindow):
self.BFRunType.addWidget(self.page_34)
- self.verticalLayout_39.addWidget(self.BFRunType, 0, Qt.AlignTop)
+ self.verticalLayout_76.addWidget(self.BFRunType)
- self.frame_69 = QFrame(self.page_24)
+ self.frame_69 = QFrame(self.page_39)
self.frame_69.setObjectName(u"frame_69")
self.frame_69.setFrameShape(QFrame.NoFrame)
self.frame_69.setFrameShadow(QFrame.Raised)
@@ -5672,7 +5758,25 @@ def setupUi(self, MainWindow):
self.horizontalLayout_26.addWidget(self.BKillBulkForming)
- self.verticalLayout_39.addWidget(self.frame_69)
+ self.verticalLayout_76.addWidget(self.frame_69)
+
+ self.BFRunWrite.addWidget(self.page_39)
+ self.page_40 = QWidget()
+ self.page_40.setObjectName(u"page_40")
+ self.verticalLayout_77 = QVBoxLayout(self.page_40)
+ self.verticalLayout_77.setObjectName(u"verticalLayout_77")
+ self.BBFWriteFiles = QPushButton(self.page_40)
+ self.BBFWriteFiles.setObjectName(u"BBFWriteFiles")
+
+ self.verticalLayout_77.addWidget(self.BBFWriteFiles, 0, Qt.AlignTop)
+
+ self.verticalSpacer_31 = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
+
+ self.verticalLayout_77.addItem(self.verticalSpacer_31)
+
+ self.BFRunWrite.addWidget(self.page_40)
+
+ self.verticalLayout_39.addWidget(self.BFRunWrite, 0, Qt.AlignTop)
self.verticalSpacer_29 = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
@@ -6427,10 +6531,12 @@ def setupUi(self, MainWindow):
self.BoundaryConditionsOptions.setCurrentIndex(0)
self.SolverSettingsOptions.setCurrentIndex(0)
self.RunOptions.setCurrentIndex(0)
+ self.HomogenizationRunWrite.setCurrentIndex(0)
self.HomogenizationBatch.setCurrentIndex(0)
self.HomogenizationRunType.setCurrentIndex(0)
self.BRunEVPFFT2.setDefault(True)
self.BKillEVPFFT2.setDefault(False)
+ self.BFRunWrite.setCurrentIndex(0)
self.BFRunType.setCurrentIndex(0)
self.BRunBulkForming.setDefault(True)
self.tabWidget_2.setCurrentIndex(0)
@@ -7559,6 +7665,8 @@ def retranslateUi(self, MainWindow):
self.INRunSelection.setItemText(2, QCoreApplication.translate("MainWindow", u"Bulk Forming", None))
self.BRunSGH.setText(QCoreApplication.translate("MainWindow", u"Run SGH Solver", None))
+ self.INHRunLocally.setText(QCoreApplication.translate("MainWindow", u"Run Locally", None))
+ self.INHWriteFiles.setText(QCoreApplication.translate("MainWindow", u"Write Input Files", None))
self.label_53.setText(QCoreApplication.translate("MainWindow", u"Job Type", None))
self.INSingleJob.setText(QCoreApplication.translate("MainWindow", u"Single Job", None))
self.INBatchJob.setText(QCoreApplication.translate("MainWindow", u"Batch Job", None))
@@ -7586,12 +7694,16 @@ def retranslateUi(self, MainWindow):
self.INHManual.setText(QCoreApplication.translate("MainWindow", u"Manual", None))
self.BRunEVPFFT2.setText(QCoreApplication.translate("MainWindow", u"Run Homogenization", None))
self.BKillEVPFFT2.setText(QCoreApplication.translate("MainWindow", u"Terminate", None))
+ self.BHWriteFiles.setText(QCoreApplication.translate("MainWindow", u"Write Input Files", None))
+ self.INBFRunLocally.setText(QCoreApplication.translate("MainWindow", u"Run Locally", None))
+ self.INBFWriteFiles.setText(QCoreApplication.translate("MainWindow", u"Write Input Files", None))
self.label_62.setText(QCoreApplication.translate("MainWindow", u"Run Type", None))
self.INBFSerial.setText(QCoreApplication.translate("MainWindow", u"Serial", None))
self.INBFParallel.setText(QCoreApplication.translate("MainWindow", u"Parallel", None))
self.label_63.setText(QCoreApplication.translate("MainWindow", u"MPI Ranks:", None))
self.BRunBulkForming.setText(QCoreApplication.translate("MainWindow", u"Run Bulk Forming Simulation", None))
self.BKillBulkForming.setText(QCoreApplication.translate("MainWindow", u"Terminate", None))
+ self.BBFWriteFiles.setText(QCoreApplication.translate("MainWindow", u"Write Input Files", None))
self.LPostprocessing.setText(QCoreApplication.translate("MainWindow", u"
![](\":/Blue)
Postprocessing
", None))
self.INSelectPostprocessing.setItemText(0, QCoreApplication.translate("MainWindow", u"SGH", None))
self.INSelectPostprocessing.setItemText(1, QCoreApplication.translate("MainWindow", u"Homogenization", None))