Wed 28 Aug 21:38:52 CEST 2024
This commit is contained in:
		
							parent
							
								
									233870b8ba
								
							
						
					
					
						commit
						b1e6dcde8e
					
				
							
								
								
									
										89
									
								
								src/SimNDT/gui/twoPhaseModelImmersionCaseController.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								src/SimNDT/gui/twoPhaseModelImmersionCaseController.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,89 @@ | ||||||
|  | import numpy as np | ||||||
|  | 
 | ||||||
|  | from PySide.QtGui import * | ||||||
|  | 
 | ||||||
|  | from SimNDT.gui.Warnings import WarningParms | ||||||
|  | from SimNDT.gui.ui_twophasemodelimmersioncase import Ui_twoPhaseModelImmersionCaseDialog | ||||||
|  | 
 | ||||||
|  | from SimNDT.core.concreteModel import TwoPhaseModel, Granulometry | ||||||
|  | from SimNDT.core.geometryObjects import Concrete2PhaseImmersion | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class TwoPhaseModelImmersionCaseDialog(QDialog, Ui_twoPhaseModelImmersionCaseDialog): | ||||||
|  |     def __init__(self, parent=None, scenario=None, SimNDT_ConcreteMicrostructure=None): | ||||||
|  |         super(TwoPhaseModelImmersionCaseDialog, self).__init__(parent) | ||||||
|  |         self.setupUi(self) | ||||||
|  |         self.scenario = scenario | ||||||
|  | 
 | ||||||
|  |         self.progressBar.setVisible(False) | ||||||
|  | 
 | ||||||
|  |         if SimNDT_ConcreteMicrostructure: | ||||||
|  |             self.fractionDoubleSpinBox.setValue(SimNDT_ConcreteMicrostructure.Fraction) | ||||||
|  |             self.matrixLabelSpinBox.setValue(SimNDT_ConcreteMicrostructure.LabelMatrix) | ||||||
|  |             self.minDiameterDoubleSpinBox.setValue(SimNDT_ConcreteMicrostructure.MinDiameter) | ||||||
|  |             self.maxDiameterDoubleSpinBox.setValue(SimNDT_ConcreteMicrostructure.MaxDiameter) | ||||||
|  |             self.gradingDoubleSpinBox.setValue(SimNDT_ConcreteMicrostructure.Grading) | ||||||
|  |             self.minAspectRatioDoubleSpinBox.setValue(SimNDT_ConcreteMicrostructure.MinAspectRatio) | ||||||
|  |             self.maxAspectRatioDoubleSpinBox.setValue(SimNDT_ConcreteMicrostructure.MaxAspectRatio) | ||||||
|  | 
 | ||||||
|  |             try: | ||||||
|  |                 self.boxWidthLineEdit.setText(str(SimNDT_ConcreteMicrostructure.BoxWidth)) | ||||||
|  |                 self.boxHeightLineEdit.setText(str(SimNDT_ConcreteMicrostructure.BoxHeight)) | ||||||
|  | 
 | ||||||
|  |                 self.circularSpecimenCheckBox.setChecked(SimNDT_ConcreteMicrostructure.isCircular) | ||||||
|  |                 self.labelSpinBox.setValue(SimNDT_ConcreteMicrostructure.LabelAggregate) | ||||||
|  |             except: | ||||||
|  |                 pass | ||||||
|  | 
 | ||||||
|  |     def accept(self): | ||||||
|  | 
 | ||||||
|  |         try: | ||||||
|  | 
 | ||||||
|  |             width = float(self.boxWidthLineEdit.text()) | ||||||
|  |             height = float(self.boxHeightLineEdit.text()) | ||||||
|  |             matrixLabel = self.matrixLabelSpinBox.value() | ||||||
|  |             isCircular = self.circularSpecimenCheckBox.isChecked() | ||||||
|  | 
 | ||||||
|  |             fraction = self.fractionDoubleSpinBox.value() | ||||||
|  |             label = self.labelSpinBox.value() | ||||||
|  | 
 | ||||||
|  |             minD = self.minDiameterDoubleSpinBox.value() * 1e-3 | ||||||
|  |             maxD = self.maxDiameterDoubleSpinBox.value() * 1e-3 | ||||||
|  | 
 | ||||||
|  |             nG = self.gradingDoubleSpinBox.value() | ||||||
|  |             minAR = self.minAspectRatioDoubleSpinBox.value() | ||||||
|  |             maxAR = self.maxAspectRatioDoubleSpinBox.value() | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |         except: | ||||||
|  |             msgBox = WarningParms() | ||||||
|  |             msgBox.exec_() | ||||||
|  | 
 | ||||||
|  |         MI, NI = np.shape(self.scenario.I) | ||||||
|  |         Pixel_mm = self.scenario.Pixel_mm | ||||||
|  |         NC, MC = int(width * Pixel_mm), int(height * Pixel_mm) | ||||||
|  | 
 | ||||||
|  |         granulometry = Granulometry(MC, NC, Pixel_mm, minD, maxD, nG, minAR, maxAR, fraction, label) | ||||||
|  |         twoPhaseModel = TwoPhaseModel(MC, NC, granulometry, matrixLabel) | ||||||
|  |         image = twoPhaseModel.compute(self.progressBar) | ||||||
|  | 
 | ||||||
|  |         I = np.ones((MI, NI), dtype=np.float32) * self.scenario.Label | ||||||
|  |         I[MI / 2 - MC / 2:MI / 2 + MC / 2, NI / 2 - NC / 2:NI / 2 + NC / 2] = np.copy(image) | ||||||
|  | 
 | ||||||
|  |         if isCircular: | ||||||
|  |             X, Y = np.meshgrid(range(0, NI), range(0, MI)) | ||||||
|  |             Circular = ((X - NI / 2.) ** 2) / ((NC / 2.) ** 2) + ((Y - MI / 2.) ** 2) / ((MC / 2.) ** 2) | ||||||
|  |             Img = (Circular > 1) | ||||||
|  |             indx, indy = np.nonzero(Img == 1) | ||||||
|  |             I[indx, indy] = self.scenario.Label | ||||||
|  | 
 | ||||||
|  |         self.image = np.copy(I) | ||||||
|  | 
 | ||||||
|  |         self.concrete2PhaseObjectImmersion = Concrete2PhaseImmersion(Fraction=fraction, LabelMatrix=matrixLabel, | ||||||
|  |                                                                      MinDiameter=minD * 1e3, MaxDiameter=maxD * 1e3, | ||||||
|  |                                                                      Grading=nG, MinAspectRatio=minAR, | ||||||
|  |                                                                      MaxAspectRatio=maxAR, | ||||||
|  |                                                                      BoxWidth=width, BoxHeight=height, | ||||||
|  |                                                                      isCircular=isCircular, LabelAggregate=label) | ||||||
|  | 
 | ||||||
|  |         QDialog.accept(self) | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user