From eab3d82653e051b2602aa19d70e9f85d072661cf Mon Sep 17 00:00:00 2001 From: sbosse Date: Fri, 16 May 2025 23:08:48 +0200 Subject: [PATCH] Fri 16 May 23:06:54 CEST 2025 --- src/SimNDT/run_setup/snapshots.py | 58 ++++++++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/src/SimNDT/run_setup/snapshots.py b/src/SimNDT/run_setup/snapshots.py index 2bbfee7..6263bf0 100644 --- a/src/SimNDT/run_setup/snapshots.py +++ b/src/SimNDT/run_setup/snapshots.py @@ -12,15 +12,21 @@ import math class SnapShots: def __init__(self, Enable=False, Extension='.png', Step=200, Filename=None, File_path = None, dB=60, Color=0, Field = 0, + Material = 0, enableFields=False, enableSignals=False, enableImages=False, + enableMaterial=False, enableNumPy=False, enableVolume=False, enableView=False, sensorShape = [], sensorPlacement = [], sensorSize = 0): + if Material is 0: + Material = "Im" + if type(Field) == str or type(Field) == unicode: + Field = ["Vx","Vy","[Vx,Vy]","Txx","Txy","Tyy","[Txx:Txy:Tyy]","Dx","Dy","[Dx,Dy]","SV"].index(Field) self.IsEnable = Enable self.Extension = Extension @@ -30,9 +36,11 @@ class SnapShots: self.DB = dB self.Color = Color self.Field = Field + self.Material = Material self.enableFields = enableFields self.enableSignals = enableSignals self.enableImages = enableImages + self.enableMaterial = enableMaterial self.enableNumPy = enableNumPy self.enableVolume = enableVolume self.enableView = enableView @@ -43,7 +51,7 @@ class SnapShots: self.volS = [] self.volP = [] - print("SnapShots Field="+str(Field)+" enableNumPy="+str(enableNumPy)+" enableVolume="+str(enableVolume)+ " enableSignals="+str(enableSignals)) + print("SnapShots Field="+str(Field)+" enableNumPy="+str(enableNumPy)+" enableVolume="+str(enableVolume)+ " enableSignals="+str(enableSignals)+ " enableMaterial="+str(enableMaterial)) # if self.File_path does not exist, create it if not os.path.exists(self.File_path): os.makedirs(self.File_path) @@ -69,6 +77,54 @@ class SnapShots: savemat(FILE, dict) # @blab+ + # save material distribution matrix + def save_material(self,SimPack,Material): + if Material == 'I': + FILE = self.Filename + "-materials-I" + FILE_PATH = os.path.join(self.File_path, FILE) + print('Saving scenario material label distribution matrix I ('+FILE+') ['+str(SimPack.Scenario.I.shape[0])+','+str(SimPack.Scenario.I.shape[1])+']') + np.save(FILE_PATH,SimPack.Scenario.I) + if Material == 'Iabs': + FILE = self.Filename + "-materials-Iabs" + FILE_PATH = os.path.join(self.File_path, FILE) + print('Saving scenario material label distribution matrix Iabs ('+FILE+') ['+str(SimPack.Scenario.Iabs.shape[0])+','+str(SimPack.Scenario.Iabs.shape[1])+']') + np.save(FILE_PATH,SimPack.Scenario.Iabs) + if Material == 'Im': + FILE = self.Filename + "-materials-Im" + FILE_PATH = os.path.join(self.File_path, FILE) + print('Saving simulation material label distribution matrix Im ('+FILE+') ['+str(SimPack.Simulation.Im.shape[0])+','+str(SimPack.Simulation.Im.shape[1])+']') + np.save(FILE_PATH,SimPack.Simulation.Im) + if Material == 'RV': + # Must be recreated from Im, efit2d replaces rho<2 with very large rho value > 1e24 + MRI, NRI = np.shape(SimPack.Simulation.Im) + Rho = np.zeros((MRI, NRI), dtype=np.float32) + VL = np.zeros((MRI, NRI), dtype=np.float32) + VT = np.zeros((MRI, NRI), dtype=np.float32) + for n in range(len(SimPack.Materials)): + ind = np.nonzero(SimPack.Simulation.Im == SimPack.Materials[n].Label) + Rho[ind] = SimPack.Materials[n].Rho + VL[ind] = SimPack.Materials[n].VL + VT[ind] = SimPack.Materials[n].VT + # 'air', (1.24, 344, 1e-30), but handled in efit2d as vaccum, i.e. 0 + # + ind = np.nonzero(SimPack.Simulation.Im == 255) + Rho[ind] = 1.24 + VL[ind] = 344 + VT[ind] = 1e-30 + FILE = self.Filename + "-materials-Rho" + FILE_PATH = os.path.join(self.File_path, FILE) + print('Saving simulation material distribution matrix ('+FILE+') ['+str(Rho.min())+','+str(Rho.max())+']') + np.save(FILE_PATH,Rho) + FILE = self.Filename + "-materials-VL" + FILE_PATH = os.path.join(self.File_path, FILE) + print('Saving simulation material distribution matrix ('+FILE+') ['+str(VL.min())+','+str(VL.max())+']') + np.save(FILE_PATH,VL) + FILE = self.Filename + "-materials-VT" + FILE_PATH = os.path.join(self.File_path, FILE) + print('Saving simulation material distribution matrix ('+FILE+') ['+str(VT.min())+','+str(VT.max())+']') + np.save(FILE_PATH,VT) + + def save_signal(self, D , n, Label): self.Label = Label