Source code for tofu.defaults

"""
This module stores all the default setting of ToFu
Including in particular computing parameters, dictionnaries and figures
"""

#import matplotlib
#matplotlib.use('WxAgg')
#matplotlib.interactive(True)

import matplotlib.pyplot as plt
from matplotlib.path import Path
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

#from mayavi import mlab
import datetime as dtm
import time as time


"""
###############################################################################
###############################################################################
###############################################################################
                Defaults settings generic
###############################################################################
###############################################################################
"""

# Default saving Paths
KeyRP = '/ToFu/src'
SaveAddIn = '/Objects_AUG/'
SaveAddObj = '/Objects_AUG/'
SaveAddOut = '/Outputs_AUG/'
MeshSaveAdd = '/Objects/'
dtmFormat = "D%Y%m%d_T%H%M%S"



AllowedExp = [None,'AUG','MISTRAL','JET','ITER','TCV','TS','WEST','KSTAR','Misc','Test']

"""
###############################################################################
###############################################################################
###############################################################################
                Defaults settings of ToFu_Geom
###############################################################################
###############################################################################
"""


# ---------- Common to several classes ----------

Legpropd = {'size':10}
TorLegd = {'frameon':False,'ncol':1,'bbox_to_anchor':(1.01, 1),'loc':2,'borderaxespad':0.,'prop':Legpropd}


#####################################################################
########################  Ves class  ################################
#####################################################################


# ------------ Computing settings ---------------

TorNP = 50
TorRelOff = 0.05
TorInsideNP = 100
TorSplprms = [100.,2.,3]
DetBaryCylNP1 = 50
DetBaryCylNP2 = 200

# --- Plotting dictionaries and parameters ------

TorPd = {'c':'k','lw':2}
TorId = {'c':'k','ls':'dashed','marker':'x','markersize':8,'mew':2}
TorBsd = {'c':'b','ls':'dashed','marker':'x','markersize':8,'mew':2}
TorBvd = {'c':'g','ls':'dashed','marker':'x','markersize':8,'mew':2}
TorVind = {'color':'r','scale':10}
TorITord = {'c':'k','ls':'dashed'}
TorBsTord = {'c':'b','ls':'dashed'}
TorBvTord = {'c':'g','ls':'dashed'}
TorNTheta = 50
Tor3DThetalim = [np.pi/2,2*np.pi]
Tor3DThetamin = np.pi/20.
TorP3Dd = {'color':(0.8,0.8,0.8,1.),'rstride':1,'cstride':1,'linewidth':0, 'antialiased':False}
TorPFilld = {'edgecolor':(0.8,0.8,0.8,1.),'facecolor':(0.8,0.8,0.8,1.),'linestyle':'solid','linewidth':1}
TorPAng = 'theta'
TorPAngUnit = 'rad'
TorPSketch = True
TorP3DFilld = {'color':(0.8,0.8,0.8,0.4),'linestyle':'solid','linewidth':0}

Vesdict = dict(Lax=None, Proj='All', Elt='PIBsBvV', Pdict=None, Idict=TorId, Bsdict=TorBsd, Bvdict=TorBvd, Vdict=TorVind,
            IdictHor=TorITord, BsdictHor=TorBsTord, BvdictHor=TorBvTord, Lim=Tor3DThetalim, Nstep=TorNTheta, LegDict=TorLegd, draw=True, Test=True)


# -------------- Figures ------------------------


[docs]def Plot_LOSProj_DefAxes(Mode, Type='Tor', a4=False): assert Mode in ['Cross','Hor','All'], "Arg should be 'Cross' or 'Hor' or 'All' !" assert Type in ['Tor','Lin'], "Arg Type must be in ['Tor','Lin'] !" if Mode == 'Cross': fW,fH,fdpi,axCol = (6,8,80,'w') if not a4 else (8.27,11.69,80,'w') axPos = [0.15, 0.15, 0.6, 0.7] f = plt.figure(facecolor="w",figsize=(fW,fH),dpi=fdpi) ax = f.add_axes(axPos,frameon=True,axisbg=axCol) if Type=='Tor': ax.set_xlabel(r"R (m)"), ax.set_ylabel(r"Z (m)") else: ax.set_xlabel(r"Y (m)"), ax.set_ylabel(r"Z (m)") ax.set_aspect(aspect="equal", adjustable='datalim') return ax elif Mode == 'Hor': fW,fH,fdpi,axCol = (6,8,80,'w') if not a4 else (8.27,11.69,80,'w') axPos = [0.15, 0.15, 0.6, 0.7] f = plt.figure(facecolor="w",figsize=(fW,fH),dpi=fdpi) ax = f.add_axes(axPos,frameon=True,axisbg=axCol) ax.set_xlabel(r"X (m)"), ax.set_ylabel(r"Y (m)") ax.set_aspect(aspect="equal", adjustable='datalim') return ax elif Mode=='All': fW,fH,fdpi,axCol = (16,8,80,'w') if not a4 else (11.69,8.27,80,'w') axPosP, axPosT = [0.07, 0.1, 0.3, 0.8], [0.55, 0.1, 0.3, 0.8] f = plt.figure(facecolor="w",figsize=(fW,fH),dpi=fdpi) axP = f.add_axes(axPosP,frameon=True,axisbg=axCol) axT = f.add_axes(axPosT,frameon=True,axisbg=axCol) if Type=='Tor': axP.set_xlabel(r"R (m)"), axP.set_ylabel(r"Z (m)") else: axP.set_xlabel(r"Y (m)"), axP.set_ylabel(r"Z (m)") axT.set_xlabel(r"X (m)"), axT.set_ylabel(r"Y (m)") axP.set_aspect(aspect="equal", adjustable='datalim') axT.set_aspect(aspect="equal", adjustable='datalim') return axP, axT
[docs]def Plot_3D_plt_Tor_DefAxes(a4=False): fW,fH,fdpi,axCol = (14,10,80,'w') if not a4 else (11.69,8.27,80,'w') axPos = [0.05, 0.05, 0.75, 0.85] f = plt.figure(facecolor="w",figsize=(fW,fH),dpi=fdpi) ax = f.add_axes(axPos,axisbg=axCol,projection='3d') ax.set_xlabel(r"X (m)") ax.set_ylabel(r"Y (m)") ax.set_zlabel(r"Z (m)") ax.set_aspect(aspect="equal", adjustable='datalim') return ax
[docs]def Plot_Impact_DefAxes(Proj, Ang='theta', AngUnit='rad', a4=False, Sketch=True): if Proj == 'Cross': fW,fH,fdpi,axCol = (10,6,80,'w') if not a4 else (11.69,8.27,80,'w') axPos = [0.12, 0.12, 0.60, 0.8] f = plt.figure(facecolor="w",figsize=(fW,fH),dpi=fdpi) ax, axSketch = f.add_axes(axPos,frameon=True,axisbg=axCol), [] XAng = r"$\theta$" if Ang=='theta' else r"$\xi$" XUnit = r"$(rad.)$" if AngUnit=='rad' else r"$(deg.)$" XTickLab = [r"$0$",r"$\pi/4$",r"$\pi/2$",r"$3\pi/4$",r"$\pi$"] if AngUnit=='rad' else [r"$0$",r"$90$",r"$180$",r"$270$",r"$360$"] ax.set_xlabel(XAng+r" "+XUnit) ax.set_ylabel(r"$p$ $(m)$") ax.set_xlim(0,np.pi) ax.set_ylim(-1.5,1.5) ax.set_xticks(np.pi*np.array([0.,1./4.,1./2.,3./4.,1.])) ax.set_xticklabels(XTickLab) if Sketch: axSketch = f.add_axes([0.75, 0.10, 0.15, 0.15],frameon=False,axisbg=axCol) Pt, Line, Hor, theta, ksi = np.array([[0,-0.8],[0,0.8]]), np.array([[-1.6,0.1],[0,1.7]]), np.array([[-0.4,0.2],[1.2,1.2]]), np.linspace(0,3.*np.pi/4.,30), np.linspace(0,np.pi/4.,10) theta, ksi = np.array([0.3*np.cos(theta),0.3*np.sin(theta)]), np.array([-0.4+0.4*np.cos(ksi), 1.2+0.4*np.sin(ksi)]) axSketch.plot(Pt[0,:],Pt[1,:],'+k',Pt[0,:],Pt[1,:],'--k',Line[0,:],Line[1,:],'-k', Hor[0,:],Hor[1,:],'-k', theta[0,:],theta[1,:],'-k', ksi[0,:],ksi[1,:],'-k') axSketch.annotate(r"$\theta$", xy=(0.3,0.4),xycoords='data',va="center", ha="center") axSketch.annotate(r"$\xi$", xy=(0.1,1.4),xycoords='data',va="center", ha="center") axSketch.annotate(r"$p$", xy=(-0.7,0.3),xycoords='data',va="center", ha="center") axSketch.set_xticks([]), axSketch.set_yticks([]) axSketch.axis("equal") return ax, axSketch elif Proj.lower() == '3d': fW,fH,fdpi,axCol = (11,9,80,'w') if not a4 else (11.69,8.27,80,'w') axPos = [0.1, 0.1, 0.65, 0.8] f = plt.figure(facecolor="w",figsize=(fW,fH),dpi=fdpi) ax = f.add_axes(axPos,axisbg=axCol,projection='3d') XAng = r"$\theta$" if Ang=='theta' else r"$\xi$" XUnit = r"$(rad.)$" if AngUnit=='rad' else r"$(deg.)$" XTickLab = [r"$0$",r"$\pi/4$",r"$\pi/2$",r"$3\pi/4$",r"$\pi$"] if AngUnit=='rad' else [r"$0$",r"$90$",r"$180$",r"$270$",r"$360$"] ax.set_xlabel(XAng+r" "+XUnit) ax.set_ylabel(r"$p$ $(m)$") ax.set_zlabel(r"$\phi$ $(rad)$") ax.set_xlim(0,np.pi) ax.set_ylim(-1.5,1.5) ax.set_zlim(-np.pi/2.,np.pi/2.) ax.set_xticks(np.pi*np.array([0.,1./4.,1./2.,3./4.,1.])) ax.set_xticklabels(XTickLab) return [ax]
#def Plot_3D_mlab_Tor_DefFig(): # fW,fH,fBgC = 700,500,(1.,1.,1.) # axPosP, axPosT = [0.07, 0.1, 0.3, 0.8], [0.55, 0.1, 0.3, 0.8] # f = mlab.figure(bgcolor=fBgC,fgcolor=None,size=(fW,fH)) # return f ##################################################################### ######################## Struct class ############################# ##################################################################### # --- Plotting dictionaries and parameters ------ StructPd = {'edgecolor':'k','linewidth':1} StructP3Dd = {'color':(0.8,0.8,0.8,1.),'rstride':1,'cstride':1,'linewidth':0, 'antialiased':False} Vesdict = dict(Lax=None, Proj='All', Elt='PIBsBvV', Pdict=None, Idict=TorId, Bsdict=TorBsd, Bvdict=TorBvd, Vdict=TorVind, IdictHor=TorITord, BsdictHor=TorBsTord, BvdictHor=TorBvTord, Lim=Tor3DThetalim, Nstep=TorNTheta, LegDict=TorLegd, draw=True, Test=True) ##################################################################### ######################## LOS class ################################ ##################################################################### # Number of points for plotting poloidal projection as a function of PolProjAng
[docs]def kpVsPolProjAng(x): return np.ceil(25.*(1 - (x/(np.pi/4)-1)**2) + 2)
# ------------ Computing settings --------------- LOSDiscrtSLim = (0.,1,) LOSDiscrtSLMode = 'norm' LOSDiscrtDS = 0.005 LOSDiscrtSMode = 'm' # --- Plotting dictionaries and parameters ------ LOSLd = {'c':'k','lw':2} LOSMd = {'c':'k','ls':'None','lw':2,'marker':'x','markersize':8,'mew':2} LOSMImpd = {'c':'k','ls':'None','lw':2,'marker':'x','markersize':8,'mew':2} LOSLplot = 'Tot' LOSImpAng = 'theta' LOSImpAngUnit = 'rad' LOSImpElt = 'LV' LOSdict = dict(Lax=None, Proj='All', Lplot=LOSLplot, Elt='LDIORP', EltVes='', Leg='', Ldict=LOSLd, MdictD=LOSMd, MdictI=LOSMd, MdictO=LOSMd, MdictR=LOSMd, MdictP=LOSMd, LegDict=TorLegd, Vesdict=Vesdict, draw=True, Test=True) # -------------- Figures ------------------------ ##################################################################### ###################### Lens class ################################ ##################################################################### # -------------- Figures ------------------------
[docs]def Plot_Lens_Alone_DefAxes(a4=False): axCol = 'w' (fW,fH) = (11.69,8.27) if a4 else (20,8) axPos = [0.05, 0.1, 0.9, 0.85] f = plt.figure(facecolor="w",figsize=(fW,fH)) ax = f.add_axes(axPos,axisbg=axCol) ax.set_xlabel(r"x (m)") ax.set_ylabel(r"y (m)") return ax
##################################################################### ###################### Detect class ################################ ##################################################################### # ------------ Computing settings --------------- DetSpanRMinMargin = 0.9 DetSpanNEdge = 5 DetSpanNRad = 5 DetConeNEdge = 8 DetConeNRad = 6 DetPreConedX12 = [0.01, 0.01] DetPreConedX12Mode = 'abs' DetPreConeds = 0.01 DetPreConedsMode = 'abs' DetPreConeMarginS = 0.002 DetConeDX = 0.002 DetConeDRY = 0.0025 # 0.0025 DetConeDTheta = np.pi/1024. # 512. DetConeDZ = 0.0025 # 0.0025 #DetConeNTheta = 25 # 25 #DetConeNZ = 50 # 50 DetConeRefdMax = 0.02 DetEtendMethod = 'quad' DetEtenddX12 = [0.01, 0.01] DetEtenddX12Mode = 'rel' DetEtendepsrel = 1.e-3 DetEtendRatio = 0.02 DetCalcEtendColis = False DetCalcSAngVectColis = True DetCalcSAngVectCone = True DetSynthEpsrel = 1.e-4 DetSynthdX12 = [0.005, 0.005] DetSynthdX12Mode = 'abs' DetSynthds = 0.005 DetSynthdsMode = 'abs' DetSynthMarginS = 0.001 # --- Plotting dictionaries and parameters ------ ApPd = {'c':'k','lw':2,'ls':'solid'} ApVd = {'color':'r','lw':2,'ls':'solid'} DetPd = {'c':'k','lw':2,'ls':'solid'} DetVd = {'color':'r','lw':2,'ls':'solid'} DetSAngPld = {'cmap':plt.cm.YlOrRd,'lw':0.,'rstride':1,'cstride':1, 'antialiased':False, 'edgecolor':'None'} DetSangPlContd = {'linewidths':0.} DetConed = {'edgecolors':'k', 'facecolors':(0.8,0.8,0.8,0.2), 'alpha':0.2, 'linewidths':0., 'linestyles':'-', 'antialiaseds':False} DetImpd = {'ls':'solid','c':'k','lw':1} ApLVin = 0.1 DetSAngPlRa = 0.5 DetSAngPldX12 = [0.025,0.025] DetSAngPldX12Mode = 'rel' DetSAngPlRatio = 0.01 DetEtendOnLOSNP = 20 DetEtendOnLOSModes = ['trapz'] DetEtendOnLOSLd = {'ls':'solid','c':'k','lw':2} DetSAngPlot = 'Int' DetSAngPlotMode = 'scatter' DetSAngPlotd = {'cmap':plt.cm.YlOrRd} DetSAngPlotLvl = 20 DetSliceAGdR = 0.005 DetSliceAGdY = 0.005 DetSliceAGdX = 0.01 DetSliceAGdTheta = np.pi/512. DetSliceAGdZ = 0.005 DetSliceNbd = {'scatter':{'cmap':plt.cm.Greys,'marker':'s','edgecolors':'None','s':10}, 'contour':{'cmap':plt.cm.Greys}, 'contourf':{'cmap':plt.cm.Greys}, 'imshow':{'cmap':plt.cm.Greys}} DetSliceSAd = {'scatter':{'cmap':plt.cm.YlOrRd,'marker':'s','edgecolors':'None','s':10, 'vmin':0}, 'contour':{'cmap':plt.cm.YlOrRd, 'vmin':0}, 'contourf':{'cmap':plt.cm.YlOrRd, 'vmin':0}, 'imshow':{'cmap':plt.cm.YlOrRd, 'vmin':0}} DetPolProjNTheta = 50 DetPolProjNZ = 25 DetSAngColis = True GDetEtendMdA = {'ls':'None','c':'k','lw':2,'marker':'+'} GDetEtendMdR = {'ls':'None','c':'b','lw':2,'marker':'x'} GDetEtendMdS = {'ls':'None','c':'g','lw':2,'marker':'o'} GDetEtendMdP = {'ls':'None','c':'r','lw':2,'marker':'*'} GDetSigd = {'ls':'solid','c':'k','lw':2,'marker':'+'} Apertdict = dict(Lax=None, Proj='All', Elt='PV', EltVes='', Leg='', LVIn=ApLVin, Pdict=ApPd, Vdict=ApVd, Vesdict=Vesdict, LegDict=TorLegd, draw=True, Test=True) #Detdict = # -------------- Figures ------------------------
[docs]def Plot_SAng_Plane_DefAxes(a4=False): (fW,fH,fdpi,axCol) = (11.69,8.27,80,'w') if a4 else (10,8,80,'w') axPos = [0.05, 0.05, 0.9, 0.9] f = plt.figure(facecolor="w",figsize=(fW,fH),dpi=fdpi) ax = f.add_axes(axPos,axisbg=axCol,projection='3d') ax.set_xlabel(r"X1 (m)") ax.set_ylabel(r"X2 (m)") ax.set_zlabel(r"$\Omega$ (sr)") return ax
[docs]def Plot_Etendue_AlongLOS_DefAxes(kMode='rel',a4=False): (fW,fH,fdpi,axCol) = (11.69,8.27,80,'w') if a4 else (14,8,80,'w') axPos = [0.06, 0.08, 0.70, 0.86] f = plt.figure(facecolor="w",figsize=(fW,fH),dpi=fdpi) ax = f.add_axes(axPos,frameon=True,axisbg=axCol) if kMode.lower()=='rel': ax.set_xlabel(r"Rel. length (adim.)") else: ax.set_xlabel(r"Length (m)") ax.set_ylabel(r"Etendue ($sr.m^2$)") return ax
[docs]def Plot_CrossSlice_SAngNb_DefAxes(VType='Tor', a4=False): (fW,fH,fdpi,axCol) = (11.69,8.27,80,'w') if a4 else (15,8,80,'w') f = plt.figure(facecolor="w",figsize=(fW,fH),dpi=fdpi) axSAng = f.add_axes([0.05, 0.06, 0.40, 0.85],frameon=True,axisbg=axCol) axNb = f.add_axes([0.60, 0.06, 0.40, 0.85],frameon=True,axisbg=axCol) if VType=='Tor': axSAng.set_xlabel(r"R (m)"), axNb.set_xlabel(r"R (m)") elif VType=='Lin': axSAng.set_xlabel(r"Y (m)"), axNb.set_xlabel(r"Y (m)") axSAng.set_ylabel(r"Z (m)"), axNb.set_ylabel(r"Z (m)") axSAng.set_aspect(aspect="equal", adjustable='datalim') axNb.set_aspect(aspect="equal", adjustable='datalim') return axSAng, axNb
[docs]def Plot_HorSlice_SAngNb_DefAxes(a4=False): (fW,fH,fdpi,axCol) = (11.69,8.27,80,'w') if a4 else (15,8,80,'w') f = plt.figure(facecolor="w",figsize=(fW,fH),dpi=fdpi) axSAng = f.add_axes([0.07, 0.12, 0.35, 0.8],frameon=True,axisbg=axCol) axNb = f.add_axes([0.55, 0.12, 0.35, 0.8],frameon=True,axisbg=axCol) axSAng.set_xlabel(r"X (m)"), axSAng.set_ylabel(r"Y (m)") axNb.set_xlabel(r"X (m)"), axNb.set_ylabel(r"Y (m)") axSAng.set_aspect(aspect="equal", adjustable='datalim') axNb.set_aspect(aspect="equal", adjustable='datalim') return axSAng, axNb
[docs]def Plot_Etendues_GDetect_DefAxes(a4=False): (fW,fH,fdpi,axCol) = (11.69,8.27,80,'w') if a4 else (18,8,80,'w') f = plt.figure(facecolor="w",figsize=(fW,fH),dpi=fdpi) ax = f.add_axes([0.05,0.1,0.85,0.80],frameon=True,axisbg=axCol) ax.set_xlabel(r"") ax.set_ylabel(r"Etendue (sr.m^2)") return ax
[docs]def Plot_Sig_GDetect_DefAxes(a4=False): (fW,fH,fdpi,axCol) = (11.69,8.27,80,'w') if a4 else (18,8,80,'w') f = plt.figure(facecolor="w",figsize=(fW,fH),dpi=fdpi) ax = f.add_axes([0.05,0.1,0.85,0.80],frameon=True,axisbg=axCol) ax.set_xlabel(r"") ax.set_ylabel(r"Signal (W)") return ax
#Ldict_mlab_Def = {'color':(0.,0.,0.),'tube_radius':None} #Mdict_mlab_Def = {'color':(0.,0.,0.),'line_width':1,'mode':'sphere'} #Dict_3D_mlab_Tor_Def = {'color':(0.8,0.8,0.8),'opacity':0.15,'transparent':False,'scale_factor':0.1}
[docs]def Plot_GDetect_Resolution_DefAxes(VType='Tor', a4=False): axCol = "w" (fW,fH) = (11.69,8.27) if a4 else (16,10) f = plt.figure(figsize=(fW,fH),facecolor=axCol) ax1 = f.add_axes([0.05, 0.06, 0.32, 0.80], frameon=True, axisbg=axCol) ax2 = f.add_axes([0.50, 0.55, 0.47, 0.40], frameon=True, axisbg=axCol) ax3 = f.add_axes([0.50, 0.06, 0.47, 0.40], frameon=True, axisbg=axCol) X1 = r"R (m)" if VType=='Tor' else r"Y (m)" ax1.set_xlabel(X1) ax1.set_ylabel(r"Z (m)") ax2.set_xlabel(r"size (a.u.)") ax2.set_ylabel(r"Signal (mW)") ax3.set_xlabel(r"Channels index (from 0)") ax3.set_ylabel(r"Signal (mW)") ax1.set_aspect(aspect='equal',adjustable='datalim') return ax1, ax2, ax3
""" ############################################################################### ############################################################################### ############################################################################### Defaults settings of ToFu_Mesh ############################################################################### ############################################################################### """ # Computing BF2IntMode = 'Surf' Mesh1DDefName = 'NoName' Mesh2DDefName = 'NoName' L1DRes = 0.001 L1Mode = 'Larger' L1Tol = 1e-14 L1IntOpSpa = False L1IntOpSpaFormat = 'dia'
[docs]def BF2_DVect_DefR(Points): Theta = np.arctan2(Points[1,:],Points[0,:]) return np.array([np.cos(Theta),np.sin(Theta),np.zeros((Points.shape[1],))])
[docs]def BF2_DVect_DefZ(Points): return np.array([[0.],[0.],[1.]])*np.ones((1,Points.shape[1]))
[docs]def BF2_DVect_DefTor(Points): Theta = np.arctan2(Points[1,:],Points[0,:]) return np.array([-np.sin(Theta),np.cos(Theta),np.zeros((Points.shape[1],))])
# --- Plotting dictionaries and parameters ------ Legpropd = {'size':10} M2Legd = {'frameon':False,'ncol':1,'bbox_to_anchor':(1.22, 1.12),'loc':2,'borderaxespad':0.5,'prop':Legpropd} M1Kd = {'c':'b', 'marker':'x', 'markersize':8, 'ls':'None', 'lw':3.} M1Cd = {'c':'r', 'marker':'o', 'markersize':5, 'ls':'None', 'lw':1.} M1Resd = {'c':'k', 'ls':'solid', 'lw':2.} M2Bckd = {'color':(0.9,0.9,0.9), 'marker':'None', 'linestyle':'-', 'linewidth':1.} M2Mshd = {'color':'k', 'marker':'None', 'linestyle':'-', 'linewidth':0.5} M2Kd = {'c':'b', 'marker':'x', 'markersize':8, 'ls':'None', 'mew':2.} M2Cd = {'c':'r', 'marker':'o', 'markersize':6, 'ls':'None', 'mew':0.} M2Sd = {'cmap':plt.cm.YlOrRd,'edgecolor':None} BF1Sub = 0.1 BF1SubMode = 'rel' BF1Fd = {'lw':1,'ls':'solid'} BF1Totd = {'c':'k','lw':2,'ls':'solid'} BF2Sub = (0.1,0.1) BF2SubMode = 'rel' BF2PlotMode = 'contourf' BF2PlotSubP = 0.25 BF2PlotSubMode = 'rel' BF2PlotNC = 25 BF2PlotTotd = {'cmap':plt.cm.YlOrRd,'edgecolor':None} BF2PlotIndSd = {'edgecolor':(0.8,0.8,0.8,1.),'facecolor':(0.8,0.8,0.8,1.),'linestyle':'solid','linewidth':1} BF2PlotIndPd = {'c':'g', 'marker':'+', 'markersize':8, 'ls':'None', 'mew':2., 'lw':'none'} # -------------- Figures ------------------------
[docs]def Plot_Mesh1D_DefAxes(a4=False): fdpi,axCol = 80,'w' (fW,fH) = (11.69,8.27) if a4 else (10,3) axPos = [0.04, 0.17, 0.8, 0.7] f = plt.figure(facecolor="w",figsize=(fW,fH),dpi=fdpi) ax = f.add_axes(axPos,frameon=True,axisbg=axCol) ax.set_xlabel(r"X (m)") return ax
[docs]def Plot_Res_Mesh1D_DefAxes(a4=False): fdpi,axCol = 80,'w' (fW,fH) = (11.69,8.27) if a4 else (10,5) axPos = [0.06, 0.17, 0.75, 0.7] f = plt.figure(facecolor="w",figsize=(fW,fH),dpi=fdpi) ax = f.add_axes(axPos,frameon=True,axisbg=axCol) ax.set_xlabel(r"X (m)"), ax.set_ylabel(r"$\Delta$ X (m)") return ax
[docs]def Plot_Mesh2D_DefAxes(VType='Tor', a4=False): fdpi,axCol = 80,'w' (fW,fH) = (11.69,8.27) if a4 else (8,8) axPos = [0.12, 0.08, 0.68, 0.88] f = plt.figure(facecolor="w",figsize=(fW,fH),dpi=fdpi) ax = f.add_axes(axPos,frameon=True,axisbg=axCol) Xlab = r"R (m)" if VType=='Tor' else r"Y (m)" ax.set_xlabel(Xlab) ax.set_ylabel(r"Z (m)") ax.set_aspect("equal", adjustable='datalim') return ax
[docs]def Plot_Res_Mesh2D_DefAxes(a4=False, VType='Tor'): fdpi,axCol = 80,'w' (fW,fH) = (11.69,8.27) if a4 else (11,11) axPos1, axPos2, axPos3, axPoscb = [0.1, 0.07, 0.60, 0.65], [0.75, 0.07, 0.23, 0.65], [0.1, 0.75, 0.60, 0.23], [0.75, 0.75, 0.03, 0.23] f = plt.figure(facecolor="w",figsize=(fW,fH),dpi=fdpi) ax1 = f.add_axes(axPos1,frameon=True,axisbg=axCol) ax2 = f.add_axes(axPos2,frameon=True,axisbg=axCol) ax3 = f.add_axes(axPos3,frameon=True,axisbg=axCol) axcb = f.add_axes(axPoscb,frameon=True,axisbg=axCol) X1str = r"R (m)" if VType=='Tor' else r"Y (m)" ax1.set_xlabel(X1str), ax1.set_ylabel(r"Z (m)") ax2.set_xlabel(r"Res. (m)"), ax2.set_ylabel(r"") ax3.set_xlabel(r""), ax3.set_ylabel(r"Res. (m)") ax1.set_aspect("equal", adjustable='datalim') return ax1, ax2, ax3, axcb
[docs]def Plot_BSpline_DefAxes(Mode): if Mode=='1D': fW,fH,fdpi,axCol = 12,6,80,'w' axPos = [0.08, 0.1, 0.78, 0.8] f = plt.figure(facecolor="w",figsize=(fW,fH),dpi=fdpi) ax = f.add_axes(axPos,frameon=True,axisbg=axCol) ax.set_xlabel(r"$X$ ($m$)") ax.set_ylabel(r"$Y$ ($a.u.$)") return ax elif Mode=='2D': fW,fH,fdpi,axCol = 10,8,80,'w' axPos = [0.1, 0.1, 0.8, 0.8] f = plt.figure(facecolor="w",figsize=(fW,fH),dpi=fdpi) ax = f.add_axes(axPos,frameon=True,axisbg=axCol) ax.set_xlabel(r"$R$ ($m$)") ax.set_ylabel(r"$Z$ ($m$)") ax.axis("equal") return ax elif Mode=='3D': fW,fH,fdpi,axCol = 10,8,80,'w' axPos = [0.1, 0.1, 0.8, 0.8] f = plt.figure(facecolor="w",figsize=(fW,fH),dpi=fdpi) ax = f.add_axes(axPos,axisbg=axCol,projection='3d') ax.set_xlabel(r"$R$ ($m$)") ax.set_ylabel(r"$Z$ ($m$)") ax.set_zlabel(r"Emiss. (a.u.)") return ax
[docs]def Plot_BSplineFit_DefAxes(Mode): if Mode=='2D': fW,fH,fdpi,axCol = 14,8,80,'w' axPos1, axPos2 = [0.1, 0.1, 0.4, 0.8], [0.55, 0.1, 0.4, 0.8] f = plt.figure(facecolor="w",figsize=(fW,fH),dpi=fdpi) ax1 = f.add_axes(axPos1,frameon=True,axisbg=axCol) ax2 = f.add_axes(axPos2,frameon=True,axisbg=axCol) ax1.set_xlabel(r"$R$ ($m$)"), ax1.set_ylabel(r"$Z$ ($m$)") ax2.set_xlabel(r"$R$ ($m$)") ax1.axis("equal"), ax2.axis("equal") return ax1, ax2 elif Mode=='3D': fW,fH,fdpi,axCol = 10,8,80,'w' axPos1, axPos2 = [0.1, 0.1, 0.4, 0.8], [0.55, 0.1, 0.4, 0.8] f = plt.figure(facecolor="w",figsize=(fW,fH),dpi=fdpi) ax1 = f.add_axes(axPos1,axisbg=axCol,projection='3d') ax2 = f.add_axes(axPos2,axisbg=axCol,projection='3d') ax1.set_xlabel(r"$R$ $(m)$"), ax1.set_ylabel(r"$Z$ $(m)$") ax2.set_xlabel(r"$R$ $(m)$"), ax2.set_ylabel(r"$Z$ $(m)$") ax1.set_zlabel(r"$Emiss.$ $(a.u.)$"), ax2.set_zlabel(r"$Emiss.$ $(a.u.)$") return ax1, ax2
[docs]def Plot_BSpline_Deriv_DefAxes(Deg): fW,fH,fdpi,axCol = 10,8,80,'w' f = plt.figure(facecolor="w",figsize=(fW,fH),dpi=fdpi) ax = [] for ii in range(0,Deg+1): ax.append(f.add_subplot(Deg+1,1,ii+1)) ax[ii].set_xlabel(r"x (a.u.)") ax[ii].set_ylabel(r"$d^{"+str(ii)+"}$ (a.u.)") return ax
[docs]def Plot_BaseFunc2D_BFuncMesh_DefAxes(): fW,fH,fdpi,axCol = 15,8,80,'w' axPos1, axPos2 = [0.05, 0.1, 0.4, 0.8], [0.55, 0.1, 0.4, 0.8] f = plt.figure(facecolor="w",figsize=(fW,fH),dpi=fdpi) ax1 = f.add_axes(axPos1,frameon=True,axisbg=axCol) ax2 = f.add_axes(axPos2,axisbg=axCol,projection='3d') ax1.set_xlabel(r"R (m)"), ax2.set_xlabel(r"R (m)") ax1.set_ylabel(r"Z (m)"), ax2.set_ylabel(r"Z (m)") ax2.set_zlabel(r"Z (a.u.)") ax1.axis("equal") return ax1, ax2
[docs]def Plot_BFunc_SuppMax_PolProj_DefAxes(): fW,fH,fdpi,axCol = 6,8,80,'w' axPos = [0.15, 0.15, 0.6, 0.7] f = plt.figure(facecolor="w",figsize=(fW,fH),dpi=fdpi) ax = f.add_axes(axPos,frameon=True,axisbg=axCol) ax.set_xlabel(r"R (m)") ax.set_ylabel(r"Z (m)") ax.axis("equal") return ax
[docs]def Plot_BF2_interp_DefAxes(): fW,fH,fdpi,axCol = 12,8,80,'w' axPosV1, axPosC1 = [0.08, 0.05, 0.4, 0.9], [0.56, 0.05, 0.4, 0.9] f = plt.figure(facecolor="w",figsize=(fW,fH),dpi=fdpi) axV1 = f.add_axes(axPosV1,frameon=True,axisbg=axCol) axC1 = f.add_axes(axPosC1,frameon=True,axisbg=axCol) axV1.set_xlabel(r"R (m)"), axC1.set_xlabel(r"R (m)") axV1.set_ylabel(r"Z (m)"), axC1.set_ylabel(r"Z (m)") axV1.set_title("Input"), axC1.set_title("Output") axV1.axis("equal"), axC1.axis("equal") return axV1, axC1
""" ############################################################################### ############################################################################### ############################################################################### Defaults settings of tofu.Eq ############################################################################### ############################################################################### """ # --- Plotting dictionaries and parameters ------ Eq2DPlotDict = {'scatter':{'cmap':plt.cm.YlOrRd, 'marker':'s','edgecolors':'None', 's':10}, 'contour':{'cmap':plt.cm.YlOrRd}, 'contourf':{'cmap':plt.cm.YlOrRd}, 'imshow':{'cmap':plt.cm.YlOrRd}} Eq2DMagAxDict = {'ls':'None', 'lw':0., 'marker':'+', 'ms':10, 'c':'k', 'mew':2.} Eq2DSepDict = {'ls':'-', 'lw':1., 'marker':'None', 'c':'k'} Eq2DPlotRadDict = {'pivot':'tail', 'color':'b', 'units':'xy', 'angles':'xy', 'scale':1., 'scale_units':'xy', 'width':0.003, 'headwidth':3, 'headlength':5} Eq2DPlotPolDict = {'pivot':'tail', 'color':'r', 'units':'xy', 'angles':'xy', 'scale':1., 'scale_units':'xy', 'width':0.003, 'headwidth':3, 'headlength':5} Eq2DPlotVsDict = {'ls':'None', 'lw':0., 'marker':'+', 'ms':8, 'color':'k', 'mec':'k'} # -------------- Figures ------------------------
[docs]def Plot_Eq2D_DefAxes(VType='Tor', cbar=False, a4=False): fdpi,axCol = 80,'w' (fW,fH) = (8.27,11.69) if a4 else (8,10) axPos = [0.12, 0.08, 0.68, 0.86] f = plt.figure(facecolor="w",figsize=(fW,fH),dpi=fdpi) ax = f.add_axes(axPos,frameon=True,axisbg=axCol) axc = f.add_axes([0.82,0.08,0.05,0.60],frameon=True,axisbg=axCol) if cbar else None Xlab = r"R (m)" if VType=='Tor' else r"Y (m)" ax.set_xlabel(Xlab) ax.set_ylabel(r"Z (m)") ax.set_aspect("equal", adjustable='datalim') return ax, axc
[docs]def Plot_Eq2D_Vs_DefAxes(VType='Tor', a4=False): fdpi,axCol = 80,'w' (fW,fH) = (11.69,8.27) if a4 else (11,8) axPos = [0.07, 0.06, 0.78, 0.87] f = plt.figure(facecolor="w",figsize=(fW,fH),dpi=fdpi) ax = f.add_axes(axPos,frameon=True,axisbg=axCol) return ax
[docs]def Plot_Eq2D_Inter_DefAxes(VType='Tor', cbar=False, a4=False): fdpi,axCol = 80,'w' (fW,fH) = (11.69,8.27) if a4 else (16.,11.3) f = plt.figure(facecolor="w", figsize=(fW,fH), dpi=fdpi) ax1 = f.add_axes([0.05, 0.05, 0.40, 0.90], frameon=True,axisbg=axCol) ax2 = f.add_axes([0.55, 0.55, 0.43, 0.40], frameon=True, axisbg=axCol) ax3 = f.add_axes([0.55, 0.05, 0.43, 0.40], frameon=True, axisbg=axCol) axc = f.add_axes([0.47, 0.05,0.03,0.60],frameon=True,axisbg=axCol) if cbar else None Xlab = r"R (m)" if VType=='Tor' else r"Y (m)" ax1.set_xlabel(Xlab), ax1.set_ylabel(r"Z (m)") ax2.set_xlabel(Xlab) ax3.set_xlabel(r"t (s)") ax1.set_aspect("equal", adjustable='datalim') return {'2DProf':[ax1], '1DProf':[ax2], '1DTime':[ax3], 'Misc':[axc], '1DConst':None, '2DConst':None}
""" ############################################################################### ############################################################################### ############################################################################### Defaults settings of ToFu_MatComp ############################################################################### ############################################################################### """ # ------------ Computing settings --------------- GMindMSubP = 0.1 GMindMSubPMode = 'Rel' GMindMSubTheta = 0.02 GMindMSubThetaMode = 'Rel' GMMatMSubP = 0.1 GMMatMSubPMode = 'Rel' GMMatMSubTheta = 0.02 GMMatMSubThetaMode = 'Rel' GMMatepsrel = 1.e-4 GMMatMode = 'trapz' GMMatDMinInf = 0.0005 GMMatLOSMode = 'quad' GMMatLOSeps = 1.e-4 GMMatLOSSubP = 0.01 GMMatLOSSubPMode = 'Rel' GMSigPlotSubP = 0.5 GMSigPlotSubPMode = 'Rel' GMSigPlotNC = 30 # --- Plotting dictionaries and parameters ------ GMPlotDetSubP = 0.1 GMPlotDetSubPMode = 'Rel' GMPlotDetKWArgMesh = {'Elt':'M','Mshdict':{'color':(0.9,0.9,0.9), 'marker':'None', 'linestyle':'-', 'linewidth':1.,'zorder':-10}}#'MBKC' GMPlotDetKWArgTor = {'Elt':'P'} GMPlotDetKWArgDet = {'Elt':'PC', 'EltApert':'P','EltLOS':'L','EltTor':'P'} GMPlotBFDetd = {'Elt':'C','Conedict':{'edgecolors':'none','facecolors':(0.8,0.8,0.8,0.2),'linewidths':0.,'zorder':10},'EltLOS':'L','Ldict':{'lw':2,'zorder':10}} GMPlotBFSubP = 0.05 GMPlotBFSubPMode = 'Rel' GMPlotBFKWArgLOS = {'Elt':'L'} GMPlotDetCd = {'cmap':plt.cm.YlOrRd,'edgecolors':'none','linewidths':0.} GMPlotDetLd = {'lw':2,'ls':'-','c':'k'} GMPlotDetLOSd = {'lw':2,'ls':'--','c':'k'} GMSigPlotSd = {'lw':2} GMSigPlotSLOSd = {'Elt':'L', 'Ldict':{'lw':1}} GMSigPlotCd = {'cmap':plt.cm.Greys} # or gray_r or Greys or hot_r # -------------- Figures ------------------------
[docs]def Plot_GeomMatrix_Mesh_DefAxes(a4=False): (fW,fH,fdpi,axCol) = (11.69,8.27,80,'w') if a4 else (16,10,80,'w') axPos1, axPos2, axPos3 = [0.05, 0.07, 0.32, 0.87], [0.48, 0.55, 0.5, 0.4], [0.48, 0.07, 0.5, 0.4] f = plt.figure(facecolor="w",figsize=(fW,fH),dpi=fdpi) ax1 = f.add_axes(axPos1,frameon=True,axisbg=axCol) ax2 = f.add_axes(axPos2,frameon=True,axisbg=axCol) ax3 = f.add_axes(axPos3,frameon=True,axisbg=axCol) ax1.set_xlabel(r"R (m)"), ax2.set_xlabel(r"Mesh elements index (starts at 0)"), ax3.set_xlabel(r"Basis functions index (starts at 0)") ax1.set_ylabel(r"Z (m)"), ax2.set_ylabel(r"Contribution ($W/sr/m^3 x sr.m^3$)"), ax3.set_ylabel(r"Contribution $W/sr/m^3 x sr.m^3$") ax1.axis("equal") return ax1, ax2, ax3
[docs]def Plot_BF2_sum_DefAxes(a4=False): (fW,fH,fdpi,axCol) = (11.69,8.27,80,'w') if a4 else (14,10,80,'w') axPos1, axPos2 = [0.05, 0.05, 0.85, 0.4], [0.05, 0.55, 0.85, 0.4] f = plt.figure(facecolor="w",figsize=(fW,fH),dpi=fdpi) ax1 = f.add_axes(axPos1,frameon=True,axisbg=axCol) ax2 = f.add_axes(axPos2,frameon=True,axisbg=axCol) ax1.set_xlabel(r"Detect index (starts at 0)"), ax2.set_xlabel(r"BFunc index (starts at 0)") ax1.set_ylabel(r"Contribution ($sr.m^3$)"), ax2.set_ylabel(r"Contribution ($sr.m^3$)") return ax1, ax2
[docs]def Plot_SynDiag_DefAxes(a4=False): (fW,fH,fdpi,axCol) = (11.69,8.27,80,'w') if a4 else (17,10,80,'w') axPos1, axPos2, axPos3, axPos4 = [0.05, 0.60, 0.92, 0.37], [0.08, 0.05, 0.20, 0.50], [0.37, 0.05, 0.26, 0.50], [0.70, 0.05, 0.20, 0.50] f = plt.figure(facecolor="w",figsize=(fW,fH),dpi=fdpi) ax1 = f.add_axes(axPos1,frameon=True,axisbg=axCol) ax2 = f.add_axes(axPos2,frameon=True,axisbg=axCol) ax3 = f.add_axes(axPos3,frameon=True,axisbg=axCol) ax4 = f.add_axes(axPos4,frameon=True,axisbg=axCol) ax1.set_xlabel(r""), ax2.set_xlabel(r"R (m)"), ax3.set_xlabel(r"R (m)"), ax4.set_xlabel(r"R (m)") ax1.set_ylabel(r"SXR (W)"), ax2.set_ylabel(r"Z (m)")#, ax3.set_ylabel(r"Z (m)"), ax4.set_ylabel(r"Z (m)") ax2.axis("equal"), ax3.axis("equal"), ax4.axis("equal") return ax1, ax2, ax3, ax4
""" ############################################################################### ############################################################################### ############################################################################### Defaults settings of ToFu_Treat ############################################################################### ############################################################################### """
[docs]def Plot_TreatSig_Def(a4=False, nMax=4): (fW,fH,fdpi,axCol) = (11.69,8.27,80,'w') if a4 else (22,10,80,'w') f = plt.figure(facecolor=axCol,figsize=(fW,fH),dpi=fdpi) ax3D = f.add_axes([0.05, 0.55, 0.35, 0.4],frameon=True,axisbg=axCol) axtime = f.add_axes([0.05, 0.05, 0.35, 0.4],frameon=True,axisbg=axCol) axprof = f.add_axes([0.45, 0.05, 0.53, 0.85],frameon=True,axisbg=axCol) LaxTxtChan, LaxTxtTime = [], [] width, w2 = (0.40-0.13)/nMax, (0.98-0.45)/nMax for ii in range(0,nMax): LaxTxtChan.append(f.add_axes([0.13+ii*width, 0.45, width, 0.05],frameon=False,axisbg=axCol)) LaxTxtChan[ii].spines['top'].set_visible(False), LaxTxtChan[ii].spines['bottom'].set_visible(False) LaxTxtChan[ii].spines['right'].set_visible(False), LaxTxtChan[ii].spines['left'].set_visible(False) LaxTxtChan[ii].set_xticks([]), LaxTxtChan[ii].set_yticks([]) LaxTxtChan[ii].set_xlim(0,1), LaxTxtChan[ii].set_ylim(0,1) LaxTxtTime.append(f.add_axes([0.45+ii*w2, 0.95, w2, 0.04],frameon=False,axisbg=axCol)) LaxTxtTime[ii].spines['top'].set_visible(False), LaxTxtTime[ii].spines['bottom'].set_visible(False) LaxTxtTime[ii].spines['right'].set_visible(False), LaxTxtTime[ii].spines['left'].set_visible(False) LaxTxtTime[ii].set_xticks([]), LaxTxtTime[ii].set_yticks([]) LaxTxtTime[ii].set_xlim(0,1), LaxTxtTime[ii].set_ylim(0,1) ax3D.set_xlabel(r"time (s)"), ax3D.set_ylabel(r"Channel index") axtime.set_xlabel(r"time (s)"), axtime.set_ylabel(r"SXR Mes. (mW)") axprof.set_xlabel(r"Channel index"), axprof.set_ylabel(r"SXR Mes. (mW)") axtime.grid(True), axprof.grid(True) return ax3D, axtime, axprof, LaxTxtChan, LaxTxtTime
[docs]def Plot_Noise_Def(a4=False): (fW,fH,fdpi,axCol) = (11.69,8.27,80,'w') if a4 else (20,10,80,'w') f = plt.figure(facecolor=axCol,figsize=(fW,fH),dpi=fdpi) ax = f.add_axes([0.07, 0.08, 0.74, 0.85],frameon=True,axisbg=axCol) ax.set_xlabel(r"Phys. (a.u.)"), ax.set_ylabel(r"Noise (a.u.)") ax.grid(True) return ax
[docs]def Plot_FFTChan_Def(a4=False): (fW,fH,fdpi,axCol) = (11.69,8.27,80,'w') if a4 else (9,5,80,'w') f = plt.figure(facecolor=axCol,figsize=(fW,fH),dpi=fdpi) ax = f.add_axes([0.08, 0.1, 0.90, 0.85],frameon=True,axisbg=axCol) ax.set_xlabel(r"time (s)") ax.set_ylabel(r"Freq. (kHz)") ax.grid(True) return ax
[docs]def Plot_FFTInter_Def(a4=False): (fW,fH,fdpi,axCol) = (11.69,8.27,80,'w') if a4 else (16,11.3,80,'w') f = plt.figure(facecolor=axCol,figsize=(fW,fH),dpi=fdpi) ax21 = f.add_axes([0.05, 0.55, 0.40, 0.40],frameon=True,axisbg=axCol) ax22 = f.add_axes([0.05, 0.05, 0.40, 0.40],frameon=True,axisbg=axCol) axt = f.add_axes([0.55, 0.55, 0.40, 0.40],frameon=True,axisbg=axCol) axF = f.add_axes([0.55, 0.05, 0.40, 0.40],frameon=True,axisbg=axCol) ax21.set_ylabel(r"Freq. (kHz)"), ax21.set_title(r"Pow. spectrum norm. to max") ax22.set_xlabel(r"time (s)"), ax22.set_ylabel(r"Freq. (kHz)"), ax22.set_title(r"Pow. spectrum norm. to instantaneous max") axt.set_xlabel(r"time (s)"), axt.set_ylabel(r"Harm. magnitude$^2$ (a.u.)") axF.set_xlabel(r"Freq. (kHz)"), axF.set_ylabel(r"Harm. magnitude$^2$ (a.u.)") ax21.grid(True), ax22.grid(True), axt.grid(True), axF.grid(True) return ax21, ax22, axt, axF
""" ############################################################################### ############################################################################### ############################################################################### Defaults settings of ToFu_Inv ############################################################################### ############################################################################### """ # Probability law for augmented tikho : p(x) = x^(a-1)*exp(-bx) # If normalised : # Mean [x] a / b # Variance <x> a / b^2 # If not normalised : # Mean [x] a! / (b^(a+1)) # Variance <x> a!/b^(2a+2) * ( (a+1)b^a - a! ) # [x] = k => b = (a!/k)^(1/(a+1)) # if [x]=1 => <x> = (a+1)* (a!)^(1/(a+1)) - 1 ConvCrit = 1.e-6 chi2Tol = 0.05 chi2Obj = 1. mu0 = 1000. AugTikho_a0 = 10 # (Regul. parameter, larger a => larger variance) AugTikho_b0 = np.math.factorial(AugTikho_a0)**(1/(AugTikho_a0+1)) # To have [x] = 1 AugTikho_a1 = 2 # (Noise), a as small as possible for small variance AugTikho_b1 = np.math.factorial(AugTikho_a1)**(1/(AugTikho_a1+1)) # To have [x] = 1 AugTikho_d = 0.95 # Exponent for rescaling of a0bis in V2, typically in [1/3 ; 1/2], but real limits are 0 < d < 1 (or 2 ?) AugTkLsmrAtol = 1.e-8 AugTkLsmrBtol = 1.e-8 AugTkLsmrConlim = 1e8 AugTkLsmrMaxiter = None SolInvParDef = {'Dt':None,'mu0':mu0,'SolMethod':'InvLin_AugTikho_V1','Deriv':'D2N2','IntMode':'Vol','Cond':None,'ConvCrit':ConvCrit,'Sparse':True,'SpType':'csr', 'Sep':{'In':True,'NLim':3}, 'Pos':True, 'KWARGS': {'a0':AugTikho_a0, 'b0':AugTikho_b0, 'a1':AugTikho_a1, 'b1':AugTikho_b1, 'd':AugTikho_d, 'ConvReg':True, 'FixedNb':True}, 'timeit':False, 'Verb':False,'VerbNb':None,'Method':'Poly','Deg':1,'Group':True,'plot':False,'LNames':None,'Com':''} # --- Plotting dictionaries and parameters ------ InvPlotSubP = 0.01 InvPlotSubMode = 'abs' InvAnimIntervalms = 100 InvAnimBlit = True InvAnimRepeat = True InvAnimRepeatDelay = 500 InvAnimTimeScale = 1.e2 InvPlotF = 'imshow' InvLvls = 30 Invdict = {'cmap':plt.cm.YlOrRd,'edgecolor':None} Tempd = {'ls':'-','c':'k'} Retrod = {'ls':'-','c':'b'} InvSXRd = {'ls':'-','c':'k','lw':1.} InvSigmad = {'facecolor':(0.8,0.8,0.8,0.7),'lw':0.} """ """ # -------------- Figures ------------------------
[docs]def Plot_Inv_Anim_DefAxes(SXR=True, TMat=True, Chi2N=True, Mu=True, R=True, Nit=True): axCol = 'w' if not any([SXR,TMat,Chi2N,Mu,R,Nit]): fW,fH = 8,10 f = plt.figure(figsize=(fW,fH),facecolor=axCol) axInvPos = [0.10, 0.10, 0.75, 0.80] axcPos = [0.87, 0.10, 0.10, 0.70] axTMat = None tempPos = [] elif SXR and not any([TMat,Chi2N,Mu,R,Nit]): fW,fH = 8,12 f = plt.figure(figsize=(fW,fH),facecolor=axCol) axInvPos = [0.10, 0.30, 0.70, 0.65] axcPos = [0.82, 0.30, 0.10, 0.55] tempPos = [[0.10, 0.05, 0.85, 0.20]] tempylab = [r"SXR (mW)"] axTMat = None elif SXR and TMat and not any([Chi2N,Mu,R,Nit]): fW,fH = 16,10 f = plt.figure(figsize=(fW,fH),facecolor=axCol) axInvPos = [0.05, 0.06, 0.32, 0.80] axcPos = [0.38, 0.06, 0.03, 0.70] tempPos = [[0.50, 0.06, 0.47, 0.40]] tempylab = [r"SXR (mW)"] TMatPos = [0.50, 0.55, 0.47, 0.40] TMatylab = r"SXR (mW)" elif not SXR and any([Chi2N,Mu,R,Nit]): fW,fH = 16,10 f = plt.figure(figsize=(fW,fH),facecolor=axCol) axInvPos = [0.05, 0.06, 0.35, 0.80] axcPos = [0.41, 0.06, 0.04, 0.70] tempylab = [r"Nb. iterations", r"$\chi^2_N$", r"Reg. param. (a.u.)", r"Obj. func. (a.u.)"] tempPos = [[0.50, 0.75, 0.47, 0.21], [0.50, 0.52, 0.47, 0.21], [0.50, 0.29, 0.47, 0.21], [0.50, 0.06, 0.47, 0.21]] temps = [Nit,Chi2N,Mu,R] for ii in range(0,len(temps)): if not temps[ii]: del tempPos[ii] del tempylab[ii] axTMat = None else: fW,fH = 18,12 f = plt.figure(figsize=(fW,fH),facecolor=axCol) axInvPos = [0.05, 0.05, 0.32, 0.80] axcPos = [0.38, 0.05, 0.03, 0.70] tempylab = [r"SXR (mW)", r"Nb. iterations", r"$\mathbf{\chi^2_N}$", r"Reg. param. (a.u.)", r"Obj. func. (a.u.)"] tempPos = [[0.50, 0.61, 0.47, 0.17], [0.50, 0.47, 0.47, 0.12], [0.50, 0.33, 0.47, 0.12], [0.50, 0.19, 0.47, 0.12], [0.50, 0.05, 0.47, 0.12]] temps = [SXR,Nit,Chi2N,Mu,R] for ii in range(0,len(temps)): if not temps[ii]: del tempPos[ii] del tempylab[ii] if TMat: TMatPos = [0.50, 0.81, 0.47, 0.17] TMatylab = r"SXR (mW)" else: axTMat = None if TMat: axTMat = f.add_axes(TMatPos, frameon=True, axisbg=axCol) axTMat.set_ylabel(TMatylab, fontsize=12, fontweight='bold') Laxtemp = [] if len(tempPos)>0: ypos = np.array([pp[1] for pp in tempPos]) indmin = np.argmin(ypos) for ii in range(0,len(tempPos)): Laxtemp.append(f.add_axes(tempPos[ii], frameon=True, axisbg=axCol)) Laxtemp[-1].set_ylabel(tempylab[ii], fontsize=12, fontweight='bold') if not ii == indmin: Laxtemp[-1].set_xticklabels([]) Laxtemp[np.argmin(ypos)].set_xlabel(r"t (s)", fontsize=12, fontweight='bold') axInv = f.add_axes(axInvPos, frameon=True, axisbg=axCol) axInv.set_xlabel(r"R (m)", fontsize=12, fontweight='bold') axInv.set_ylabel(r"Z (m)", fontsize=12, fontweight='bold') axInv.axis('equal') axc = f.add_axes(axcPos, frameon=True, axisbg=axCol) return axInv, axTMat, Laxtemp, axc
def Plot_Inv_FFTPow_DefAxes(NPts=6, a4=False): (fW,fH,fdpi,axCol) = (11.69,8.27,80,'w') if a4 else (18,12,80,'w') f = plt.figure(figsize=(fW,fH),facecolor=axCol,dpi=fdpi) axInv = f.add_axes([0.05, 0.05, 0.32, 0.80], frameon=True, axisbg=axCol) axc = f.add_axes([0.38, 0.05, 0.03, 0.70], frameon=True, axisbg=axCol) axRetro = f.add_axes([0.50, 0.81, 0.47, 0.17], frameon=True, axisbg=axCol) axSXR = f.add_axes([0.50, 0.61, 0.47, 0.17], frameon=True, axisbg=axCol) axInv.set_xlabel(r"R (m)", fontsize=12, fontweight='bold') axInv.set_ylabel(r"Z (m)", fontsize=12, fontweight='bold') axInv.axis('equal') axRetro.set_xlabel(r"Channels"), axRetro.set_ylabel(r"SXR (mW)") axSXR.set_ylabel(r"SXR (mW)") Lax = [] if NPts <= 4: N2 = 1 Hei = (0.58-0.05)/NPts - (NPts-1)*Dis for ii in range(0,NPts): Lax.append(f.add_axes([0.50, 0.58-(ii+1)*Hei-ii*Dis, 0.47, Hei], frameon=True, axisbg=axCol)) Lax[-1].set_ylabel(r"Freq. (kHz)", fontsize=12, fontweight='bold') Lax[-1].grid(True) Lax[-1].set_xlabel(r"time (s)", fontsize=12, fontweight='bold') else: N2, Dis = int(np.ceil(NPts/2.)), 0.03 Hei = (0.58-0.05-(N2-1)*Dis)/N2 LaxPos = [[[0.50, 0.58-(ii+1)*Hei-ii*Dis, 0.22, Hei],[0.75, 0.58-(ii+1)*Hei-ii*Dis, 0.22, Hei]] for ii in range(0,N2)] #LaxPos = list(itt.chain._from_iterable(LaxPos)) for ii in range(0,N2): Lax.append(f.add_axes(LaxPos[ii][0], frameon=True, axisbg=axCol)) Lax[-1].set_ylabel(r"Freq. (kHz)", fontsize=12, fontweight='bold') Lax[-1].grid(True) Lax.append(f.add_axes(LaxPos[ii][1], frameon=True, axisbg=axCol)) Lax[-1].grid(True) Lax[-1].set_xticklabels([]), Lax[-1].set_yticklabels([]) Lax[-2].set_xticklabels([]) Lax[-2].set_xlabel(r"time (s)", fontsize=12, fontweight='bold') Lax[-1].set_xlabel(r"time (s)", fontsize=12, fontweight='bold') return axInv, axc, axRetro, axSXR, Lax """ ############################################################################### ############################################################################### ############################################################################### Defaults settings of ToFu_PostTreat ############################################################################### ############################################################################### """ # --- Plotting dictionaries and parameters ------ InvPlotSubP = 0.01 InvPlotSubMode = 'abs' InvPlotF = 'contour' #'imshow' InvLvls = 30 Invdict = {'cmap':plt.cm.YlOrRd,'edgecolor':None} Tempd = {'ls':'-','c':'k'} Retrod = {'ls':'-'} vlined = {'c':'k','ls':'--','lw':1.} InvSXRd = {'ls':'-','c':'k','lw':1.} InvSigmad = {'facecolor':(0.8,0.8,0.8,0.7),'lw':0.} InvPlot_LPath = [((1.70,0.),(1.,0.)), ((1.70,0.),(0.,1.)), ((1.70,0.20),(1.,0.)), ((1.70,-0.20),(1.,0.)), ((1.55,0.),(0.,1.)), ((1.85,0.),(0.,1.))] InvPlot_dl = 0.0025 InvPlot_LCol = ['b','r','g','m','y','c'] TFPT_prop = {'Deriv':0, 'indt0':0, 't0':None, 'DVect':BF2_DVect_DefR, 'SubP':InvPlotSubP, 'SubMode':InvPlotSubMode, 'InvPlotFunc':InvPlotF, 'InvLvls':InvLvls, 'Invd':Invdict, 'vlined':vlined, 'SXRd':InvSXRd, 'Sigmad':InvSigmad, 'Tempd':Tempd, 'Retrod':Retrod, 'VMinMax':[None,None], 'Com':'', 'Norm':False, 'a4':False} TFPT_propbasic = {} TFPT_proptechnical = {} TFPT_propprofiles= {'LPath':InvPlot_LPath, 'dl':InvPlot_dl} TFPT_propbasic.update(TFPT_prop) TFPT_proptechnical.update(TFPT_prop) TFPT_propprofiles.update(TFPT_prop) TFPT_Lprop = {'basic':TFPT_propbasic, 'technical':TFPT_proptechnical, 'profiles':TFPT_propprofiles, 'sawtooth':None} InvAnimIntervalms = 100 InvAnimBlit = True InvAnimRepeat = True InvAnimRepeatDelay = 500 InvAnimTimeScale = 1.e2 # -------------- Figures ------------------------
[docs]def Plot_Inv_Basic_DefAxes(a4=False, dpi=80): axCol = 'w' (fW,fH) = (16,10) if not a4 else (11.69,8.27) f = plt.figure(figsize=(fW,fH),facecolor=axCol,dpi=dpi) axInv = f.add_axes([0.05, 0.06, 0.32, 0.80], frameon=True, axisbg=axCol) axc = f.add_axes([0.38, 0.06, 0.03, 0.70], frameon=True, axisbg=axCol) axTMat = f.add_axes([0.50, 0.55, 0.47, 0.40], frameon=True, axisbg=axCol) axSig = f.add_axes([0.50, 0.06, 0.47, 0.40], frameon=True, axisbg=axCol) axTxt = f.add_axes([0.05, 0.86, 0.32, 0.04], frameon=False, axisbg='none') axInv.set_xlabel(r"R (m)", fontsize=12, fontweight='bold') axInv.set_ylabel(r"Z (m)", fontsize=12, fontweight='bold') axTMat.set_ylabel(r"Signal (mW)", fontsize=12, fontweight='bold') axSig.set_ylabel(r"Signal (mW)", fontsize=12, fontweight='bold') axSig.set_xlabel(r"t (s)", fontsize=12, fontweight='bold') axTxt.set_xticks([]), axTxt.set_yticks([]) axTxt.set_xticklabels([]), axTxt.set_yticklabels([]) axc.set_title(r"$\epsilon$ (W/m^3)", size=11) axInv.axis('equal') return axInv, axTMat, axSig, axc, axTxt
[docs]def Plot_Inv_Technical_DefAxes(a4=False, dpi=80): axCol = 'w' (fW,fH) = (18,12) if not a4 else (11.69,8.27) f = plt.figure(figsize=(fW,fH),facecolor=axCol,dpi=dpi) axInv = f.add_axes([0.05, 0.05, 0.32, 0.80], frameon=True, axisbg=axCol) axc = f.add_axes([0.38, 0.05, 0.03, 0.70], frameon=True, axisbg=axCol) axTMat = f.add_axes([0.50, 0.81, 0.47, 0.17], frameon=True, axisbg=axCol) axSig = f.add_axes([0.50, 0.61, 0.47, 0.17], frameon=True, axisbg=axCol) axNit = f.add_axes([0.50, 0.47, 0.47, 0.12], frameon=True, axisbg=axCol) axChi2N = f.add_axes([0.50, 0.33, 0.47, 0.12], frameon=True, axisbg=axCol) axMu = f.add_axes([0.50, 0.19, 0.47, 0.12], frameon=True, axisbg=axCol) axR = f.add_axes([0.50, 0.05, 0.47, 0.12], frameon=True, axisbg=axCol) axTxt = f.add_axes([0.05, 0.86, 0.32, 0.04], frameon=False, axisbg='none') axInv.set_xlabel(r"R (m)", fontsize=12, fontweight='bold'), axInv.set_ylabel(r"Z (m)", fontsize=12, fontweight='bold') axTMat.set_ylabel(r"Signal (mW)", fontsize=12, fontweight='bold'), axSig.set_ylabel(r"Signal (mW)", fontsize=12, fontweight='bold') axNit.set_ylabel(r"Nb. iterations", fontsize=12, fontweight='bold') axChi2N.set_ylabel(r"$\mathbf{\chi^2_N}$", fontsize=12, fontweight='bold') axMu.set_ylabel(r"Reg. param. (a.u.)", fontsize=12, fontweight='bold') axR.set_xlabel(r"t (s)", fontsize=12, fontweight='bold'), axR.set_ylabel(r"Obj. func. (a.u.)", fontsize=12, fontweight='bold') axTxt.set_xticks([]), axTxt.set_yticks([]), axTxt.set_xticklabels([]), axTxt.set_yticklabels([]) axc.set_title(r"$\epsilon$ (W/m^3)", size=11) axInv.axis('equal') return axInv, axTMat, [axSig,axNit,axChi2N,axMu,axR], axc, axTxt
[docs]def Plot_Inv_Profiles_DefAxes(NL=4, a4=False, dpi=80): axCol = 'w' (fW,fH) = (18,12) if not a4 else (11.69,8.27) f = plt.figure(figsize=(fW,fH),facecolor=axCol,dpi=dpi) axInv = f.add_axes([0.05, 0.05, 0.32, 0.80], frameon=True, axisbg=axCol) axc = f.add_axes([0.38, 0.05, 0.03, 0.70], frameon=True, axisbg=axCol) axTMat = f.add_axes([0.50, 0.83, 0.47, 0.15], frameon=True, axisbg=axCol) axSig = f.add_axes([0.50, 0.65, 0.47, 0.15], frameon=True, axisbg=axCol) axInv.set_xlabel(r"R (m)", fontsize=12, fontweight='bold'), axInv.set_ylabel(r"Z (m)", fontsize=12, fontweight='bold') axTMat.set_ylabel(r"Signal (mW)", fontsize=12, fontweight='bold'), axSig.set_ylabel(r"Signal (mW)", fontsize=12, fontweight='bold') LaxP, RefUp, RefDo, Dz = [], 0.60, 0.05, 0.05 nl = (NL+1)/2 H = (RefUp-RefDo - (nl-1)*Dz)/nl for ii in range(0,NL): cc = ii/nl il = ii-cc*nl ax = f.add_axes([0.50 + cc*0.25, RefUp-(il+1)*H-il*Dz, 0.22, H], frameon=True, axisbg=axCol) LaxP.append(ax) if il == nl-1: LaxP[ii].set_xlabel(r"Length (m)", fontsize=12, fontweight='bold') if cc==0: LaxP[ii].set_ylabel(r"$\mathbf{\epsilon^{\eta}}$ (W/m^3)", fontsize=12, fontweight='bold') axTxt = f.add_axes([0.05, 0.86, 0.32, 0.04], frameon=False, axisbg='none') axTxt.set_xticks([]), axTxt.set_yticks([]), axTxt.set_xticklabels([]), axTxt.set_yticklabels([]) axc.set_title(r"$\epsilon$ (W/m^3)", size=11) axInv.set_aspect(aspect='equal',adjustable='datalim') return axInv, axTMat, axSig, LaxP, axc, axTxt
[docs]def Plot_Inv_Compare_Basic_DefAxes(N=2, a4=False, dpi=80): MR, ML, DX = 0.08, 0.06, 0.04 W = (1.-(MR+ML)-(N-1)*DX)/N axCol = 'w' (fW,fH) = (16,10) if not a4 else (11.69,8.27) f = plt.figure(figsize=(fW,fH),facecolor=axCol,dpi=dpi) axTMat = f.add_axes([0.55, 0.06, 0.44, 0.34], frameon=True, axisbg=axCol) axSig = f.add_axes([0.06, 0.06, 0.44, 0.34], frameon=True, axisbg=axCol) axc = f.add_axes([1.-MR+0.01, 0.46, 0.02, 0.44], frameon=True, axisbg=axCol) LaxInv, LaxTxt = [], [] for ii in range(0,N): LaxInv.append(f.add_axes([ML+ii*(DX+W), 0.46, W, 0.44], frameon=True, axisbg=axCol)) LaxTxt.append(f.add_axes([ML+ii*(DX+W), 0.90, W, 0.03], frameon=False, axisbg='none')) LaxInv[ii].set_xlabel(r"R (m)", fontsize=12, fontweight='bold') if ii==0: LaxInv[ii].set_ylabel(r"Z (m)", fontsize=12, fontweight='bold') LaxTxt[ii].set_xticks([]), LaxTxt[ii].set_yticks([]) LaxTxt[ii].set_xticklabels([]), LaxTxt[ii].set_yticklabels([]) LaxInv[ii].axis('equal') #axTMat.set_ylabel(r"Signal (mW)", fontsize=12, fontweight='bold') axc.set_title(r"$\epsilon$ (W/m^3)", size=11) axSig.set_ylabel(r"Signal (mW)", fontsize=12, fontweight='bold') axSig.set_xlabel(r"t (s)", fontsize=12, fontweight='bold') axTMat.set_xlabel(r"Chan.", fontsize=12, fontweight='bold') return LaxInv, axTMat, axSig, axc, LaxTxt
[docs]def Plot_Inv_Compare_Technical_DefAxes(N=2, a4=False, dpi=80): MR, ML, DX = 0.06, 0.05, 0.04 W = (1.-(MR+ML)-(N-1)*DX)/N axCol = 'w' (fW,fH) = (18,12) if not a4 else (11.69,8.27) f = plt.figure(figsize=(fW,fH),facecolor=axCol,dpi=dpi) axTMat = f.add_axes([0.05, 0.26, 0.28, 0.17], frameon=True, axisbg=axCol) axSig = f.add_axes([0.05, 0.05, 0.28, 0.17], frameon=True, axisbg=axCol) axNit = f.add_axes([0.38, 0.05, 0.28, 0.18], frameon=True, axisbg=axCol) axChi2N = f.add_axes([0.38, 0.25, 0.28, 0.18], frameon=True, axisbg=axCol) axMu = f.add_axes([0.70, 0.05, 0.28, 0.18], frameon=True, axisbg=axCol) axR = f.add_axes([0.70, 0.25, 0.28, 0.18], frameon=True, axisbg=axCol) axc = f.add_axes([1.-MR+0.01, 0.46, 0.02, 0.44], frameon=True, axisbg=axCol) LaxInv, LaxTxt = [], [] for ii in range(0,N): LaxInv.append(f.add_axes([ML+ii*(DX+W), 0.48, W, 0.42], frameon=True, axisbg=axCol)) LaxTxt.append(f.add_axes([ML+ii*(DX+W), 0.90, W, 0.03], frameon=False, axisbg='none')) LaxInv[ii].set_xlabel(r"R (m)", fontsize=12, fontweight='bold') if ii==0: LaxInv[ii].set_ylabel(r"Z (m)", fontsize=12, fontweight='bold') LaxTxt[ii].set_xticks([]), LaxTxt[ii].set_yticks([]) LaxTxt[ii].set_xticklabels([]), LaxTxt[ii].set_yticklabels([]) LaxInv[ii].axis('equal') #axTMat.set_ylabel(r"Signal (mW)", fontsize=12, fontweight='bold') axc.set_title(r"$\epsilon$ (W/m^3)", size=11) axSig.set_ylabel(r"Signal (mW)", fontsize=12, fontweight='bold') axSig.set_xlabel(r"t (s)", fontsize=12, fontweight='bold') axTMat.set_xlabel(r"Chan.", fontsize=12, fontweight='bold') axNit.set_xlabel(r"t (s)"), axNit.set_ylabel(r"$N_{it}$") axChi2N.set_ylabel(r"$\chi^2_N$") axMu.set_xlabel(r"t (s)"), axMu.set_ylabel(r"Reg. param. (a.u.)") axR.set_ylabel(r"Obj. func. (a.u.)") return LaxInv, axTMat, [axSig,axNit,axChi2N,axMu,axR], axc, LaxTxt
[docs]def Plot_Inv_Compare_Profiles_DefAxes(N=2, NL=4, a4=False, dpi=80): MR, ML, DX = 0.06, 0.05, 0.04 W = (1.-(MR+ML)-(N-1)*DX)/N axCol = 'w' (fW,fH) = (18,12) if not a4 else (11.69,8.27) f = plt.figure(figsize=(fW,fH),facecolor=axCol,dpi=dpi) axTMat = f.add_axes([0.05, 0.29, 0.28, 0.20], frameon=True, axisbg=axCol) axSig = f.add_axes([0.05, 0.05, 0.28, 0.20], frameon=True, axisbg=axCol) axc = f.add_axes([1.-MR+0.01, 0.52, 0.02, 0.38], frameon=True, axisbg=axCol) LaxInv, LaxTxt = [], [] for ii in range(0,N): LaxInv.append(f.add_axes([ML+ii*(DX+W), 0.54, W, 0.38], frameon=True, axisbg=axCol)) LaxTxt.append(f.add_axes([ML+ii*(DX+W), 0.92, W, 0.03], frameon=False, axisbg='none')) LaxInv[ii].set_xlabel(r"R (m)", fontsize=12, fontweight='bold') if ii==0: LaxInv[ii].set_ylabel(r"Z (m)", fontsize=12, fontweight='bold') LaxTxt[ii].set_xticks([]), LaxTxt[ii].set_yticks([]) LaxTxt[ii].set_xticklabels([]), LaxTxt[ii].set_yticklabels([]) LaxInv[ii].axis('equal') LaxP, LaxPbis, RefUp, RefDo, Dz = [], [], 0.49, 0.05, 0.04 nl = (NL+1)/2 H = (RefUp-RefDo - (nl-1)*Dz)/nl for ii in range(0,NL): cc = ii/nl il = ii-cc*nl ax = f.add_axes([0.38 + cc*0.32, RefUp-(il+1)*H-il*Dz, 0.28, H], frameon=True, axisbg=axCol) LaxP.append(ax) #LaxPbis.append(ax.twiny()) if il == nl-1: LaxP[ii].set_xlabel(r"Length (m)", fontsize=12, fontweight='bold') if cc==0: LaxP[ii].set_ylabel(r"$\mathbf{\epsilon^{\eta}}$ (W/m^3)", fontsize=12, fontweight='bold') #axTMat.set_ylabel(r"Signal (mW)", fontsize=12, fontweight='bold') axc.set_title(r"$\epsilon$ (W/m^3)", size=11) axSig.set_ylabel(r"Signal (mW)", fontsize=12, fontweight='bold') axSig.set_xlabel(r"t (s)", fontsize=12, fontweight='bold') axTMat.set_xlabel(r"Chan.", fontsize=12, fontweight='bold') return LaxInv, axTMat, axSig, LaxP, LaxPbis, axc, LaxTxt
[docs]def Plot_Inv_FFTPow_DefAxes(NPts=6, a4=False): (fW,fH,fdpi,axCol) = (11.69,8.27,80,'w') if a4 else (18,12,80,'w') f = plt.figure(figsize=(fW,fH),facecolor=axCol,dpi=fdpi) axInv = f.add_axes([0.05, 0.05, 0.32, 0.80], frameon=True, axisbg=axCol) axc = f.add_axes([0.38, 0.05, 0.03, 0.70], frameon=True, axisbg=axCol) axRetro = f.add_axes([0.50, 0.81, 0.47, 0.17], frameon=True, axisbg=axCol) axSXR = f.add_axes([0.50, 0.61, 0.47, 0.17], frameon=True, axisbg=axCol) axInv.set_xlabel(r"R (m)", fontsize=12, fontweight='bold') axInv.set_ylabel(r"Z (m)", fontsize=12, fontweight='bold') axInv.axis('equal') axRetro.set_xlabel(r"Channels"), axRetro.set_ylabel(r"SXR (mW)") axSXR.set_ylabel(r"SXR (mW)") Lax = [] if NPts <= 4: N2 = 1 Hei = (0.58-0.05)/NPts - (NPts-1)*Dis for ii in range(0,NPts): Lax.append(f.add_axes([0.50, 0.58-(ii+1)*Hei-ii*Dis, 0.47, Hei], frameon=True, axisbg=axCol)) Lax[-1].set_ylabel(r"Freq. (kHz)", fontsize=12, fontweight='bold') Lax[-1].grid(True) Lax[-1].set_xlabel(r"time (s)", fontsize=12, fontweight='bold') else: N2, Dis = int(np.ceil(NPts/2.)), 0.03 Hei = (0.58-0.05-(N2-1)*Dis)/N2 LaxPos = [[[0.50, 0.58-(ii+1)*Hei-ii*Dis, 0.22, Hei],[0.75, 0.58-(ii+1)*Hei-ii*Dis, 0.22, Hei]] for ii in range(0,N2)] #LaxPos = list(itt.chain._from_iterable(LaxPos)) for ii in range(0,N2): Lax.append(f.add_axes(LaxPos[ii][0], frameon=True, axisbg=axCol)) Lax[-1].set_ylabel(r"Freq. (kHz)", fontsize=12, fontweight='bold') Lax[-1].grid(True) Lax.append(f.add_axes(LaxPos[ii][1], frameon=True, axisbg=axCol)) Lax[-1].grid(True) Lax[-1].set_xticklabels([]), Lax[-1].set_yticklabels([]) Lax[-2].set_xticklabels([]) Lax[-2].set_xlabel(r"time (s)", fontsize=12, fontweight='bold') Lax[-1].set_xlabel(r"time (s)", fontsize=12, fontweight='bold') return axInv, axc, axRetro, axSXR, Lax