Fri 16 May 23:06:54 CEST 2025

This commit is contained in:
sbosse 2025-05-16 23:08:48 +02:00
parent 9feb0110d5
commit eab3d82653

View File

@ -12,15 +12,21 @@ import math
class SnapShots: class SnapShots:
def __init__(self, Enable=False, Extension='.png', Step=200, Filename=None, File_path = None, dB=60, Color=0, def __init__(self, Enable=False, Extension='.png', Step=200, Filename=None, File_path = None, dB=60, Color=0,
Field = 0, Field = 0,
Material = 0,
enableFields=False, enableFields=False,
enableSignals=False, enableSignals=False,
enableImages=False, enableImages=False,
enableMaterial=False,
enableNumPy=False, enableNumPy=False,
enableVolume=False, enableVolume=False,
enableView=False, enableView=False,
sensorShape = [], sensorShape = [],
sensorPlacement = [], sensorPlacement = [],
sensorSize = 0): 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.IsEnable = Enable
self.Extension = Extension self.Extension = Extension
@ -30,9 +36,11 @@ class SnapShots:
self.DB = dB self.DB = dB
self.Color = Color self.Color = Color
self.Field = Field self.Field = Field
self.Material = Material
self.enableFields = enableFields self.enableFields = enableFields
self.enableSignals = enableSignals self.enableSignals = enableSignals
self.enableImages = enableImages self.enableImages = enableImages
self.enableMaterial = enableMaterial
self.enableNumPy = enableNumPy self.enableNumPy = enableNumPy
self.enableVolume = enableVolume self.enableVolume = enableVolume
self.enableView = enableView self.enableView = enableView
@ -43,7 +51,7 @@ class SnapShots:
self.volS = [] self.volS = []
self.volP = [] 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 self.File_path does not exist, create it
if not os.path.exists(self.File_path): if not os.path.exists(self.File_path):
os.makedirs(self.File_path) os.makedirs(self.File_path)
@ -69,6 +77,54 @@ class SnapShots:
savemat(FILE, dict) savemat(FILE, dict)
# @blab+ # @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): def save_signal(self, D , n, Label):
self.Label = Label self.Label = Label