From 05835d22c88f57e78ba4aa16b0293bf082816d1a Mon Sep 17 00:00:00 2001 From: Guillaume Demesy <guillaume.demesy@fresnel.fr> Date: Tue, 14 Feb 2023 17:42:16 +0100 Subject: [PATCH] choose theta or phi plots --- .../grating3D_postplot_Mmatrix.py | 108 ++++++++++-------- 1 file changed, 59 insertions(+), 49 deletions(-) diff --git a/DiffractionGratings/grating3D_postplot_Mmatrix.py b/DiffractionGratings/grating3D_postplot_Mmatrix.py index 96f1697..5b7b783 100644 --- a/DiffractionGratings/grating3D_postplot_Mmatrix.py +++ b/DiffractionGratings/grating3D_postplot_Mmatrix.py @@ -24,29 +24,38 @@ def load_getdp_integral(fname): return temp[:,1]+1j*temp[:,2] nb_lam = 50 -nb_phi = 51 +nb_angle = 51 FLAG_TOT = 0 -respath = 'res_Matrix_nb_lam%g_nb_phi%g_total0/'%(nb_lam,nb_phi-1) -rpp = np.zeros((nb_lam,nb_phi),dtype=complex) -rps = np.zeros((nb_lam,nb_phi),dtype=complex) -rsp = np.zeros((nb_lam,nb_phi),dtype=complex) -rss = np.zeros((nb_lam,nb_phi),dtype=complex) -efft1_pin = np.zeros((9,nb_lam,nb_phi),dtype=complex) -efft2_pin = np.zeros((9,nb_lam,nb_phi),dtype=complex) -effr1_pin = np.zeros((9,nb_lam,nb_phi),dtype=complex) -effr2_pin = np.zeros((9,nb_lam,nb_phi),dtype=complex) -Qscat_pin = np.zeros((nb_lam,nb_phi)) -efft1_sin = np.zeros((9,nb_lam,nb_phi),dtype=complex) -efft2_sin = np.zeros((9,nb_lam,nb_phi),dtype=complex) -effr1_sin = np.zeros((9,nb_lam,nb_phi),dtype=complex) -effr2_sin = np.zeros((9,nb_lam,nb_phi),dtype=complex) -Qscat_sin = np.zeros((nb_lam,nb_phi)) - - -tab_lam = np.linspace(495,1200,nb_lam) -tab_phi = np.linspace(0,360,nb_phi) + +flag_study = 'theta' +# flag_study = 'phi' + +respath = 'res_Matrix_nb_lam%g_nb_%s%g_total0/'%(nb_lam,flag_study,nb_angle) + +rpp = np.zeros((nb_lam,nb_angle),dtype=complex) +rps = np.zeros((nb_lam,nb_angle),dtype=complex) +rsp = np.zeros((nb_lam,nb_angle),dtype=complex) +rss = np.zeros((nb_lam,nb_angle),dtype=complex) +efft1_pin = np.zeros((9,nb_lam,nb_angle),dtype=complex) +efft2_pin = np.zeros((9,nb_lam,nb_angle),dtype=complex) +effr1_pin = np.zeros((9,nb_lam,nb_angle),dtype=complex) +effr2_pin = np.zeros((9,nb_lam,nb_angle),dtype=complex) +Qscat_pin = np.zeros((nb_lam,nb_angle)) +efft1_sin = np.zeros((9,nb_lam,nb_angle),dtype=complex) +efft2_sin = np.zeros((9,nb_lam,nb_angle),dtype=complex) +effr1_sin = np.zeros((9,nb_lam,nb_angle),dtype=complex) +effr2_sin = np.zeros((9,nb_lam,nb_angle),dtype=complex) +Qscat_sin = np.zeros((nb_lam,nb_angle)) + + +lambda_min = 400 +lambda_max = 1200 +angledeg_max = 50 + +tab_lam = np.linspace(lambda_min,lambda_max,nb_lam) +tab_angle = np.linspace(0,angledeg_max,nb_angle) tab_hnu = 2*scc.pi*scc.c/(tab_lam*1e-9/scc.hbar*scc.eV) -M = np.zeros((4,4,len(tab_lam),len(tab_phi)),dtype=complex) +M = np.zeros((4,4,nb_lam,nb_angle),dtype=complex) ### Convention used e.g. in https://doi.org/10.1364/JOSAB.36.000E78 @@ -61,27 +70,27 @@ str_reftrans = 'r' for i in range(nb_lam): print(i) - for j in range(nb_phi-1): - rpp[i,j] = load_getdp_integral(respath+str_reftrans+'_pin_pout_lam%g_phi%g.out'%(i,j)) - rss[i,j] = load_getdp_integral(respath+str_reftrans+'_sin_sout_lam%g_phi%g.out'%(i,j)) - rps[i,j] = load_getdp_integral(respath+str_reftrans+'_sin_pout_lam%g_phi%g.out'%(i,j)) - rsp[i,j] = load_getdp_integral(respath+str_reftrans+'_pin_sout_lam%g_phi%g.out'%(i,j)) - efft1_pin[:,i,j] = load_getdp_integral(respath+'eff_t1_lam%g_phi%g_psi0.out'%(i,j)) - efft2_pin[:,i,j] = load_getdp_integral(respath+'eff_t2_lam%g_phi%g_psi0.out'%(i,j)) - effr1_pin[:,i,j] = load_getdp_integral(respath+'eff_r1_lam%g_phi%g_psi0.out'%(i,j)) - effr2_pin[:,i,j] = load_getdp_integral(respath+'eff_r2_lam%g_phi%g_psi0.out'%(i,j)) - Qscat_pin[i,j] = np.real(load_getdp_integral(respath+'Q_scat_lam%g_phi%g_psi0.out'%(i,j))) - efft1_sin[:,i,j] = load_getdp_integral(respath+'eff_t1_lam%g_phi%g_psi1.out'%(i,j)) - efft2_sin[:,i,j] = load_getdp_integral(respath+'eff_t2_lam%g_phi%g_psi1.out'%(i,j)) - effr1_sin[:,i,j] = load_getdp_integral(respath+'eff_r1_lam%g_phi%g_psi1.out'%(i,j)) - effr2_sin[:,i,j] = load_getdp_integral(respath+'eff_r2_lam%g_phi%g_psi1.out'%(i,j)) - Qscat_sin[i,j] = np.real(load_getdp_integral(respath+'Q_scat_lam%g_phi%g_psi1.out'%(i,j))) - -## replicate data for phi=2\pi from phi=0 -rpp[:,-1] = rpp[:,0] -rss[:,-1] = rss[:,0] -rps[:,-1] = rps[:,0] -rsp[:,-1] = rsp[:,0] + for j in range(nb_angle): + rpp[i,j] = load_getdp_integral(respath+str_reftrans+'_pin_pout_lam%g_%s%g.out'%(i,flag_study,j)) + rss[i,j] = load_getdp_integral(respath+str_reftrans+'_sin_sout_lam%g_%s%g.out'%(i,flag_study,j)) + rps[i,j] = load_getdp_integral(respath+str_reftrans+'_sin_pout_lam%g_%s%g.out'%(i,flag_study,j)) + rsp[i,j] = load_getdp_integral(respath+str_reftrans+'_pin_sout_lam%g_%s%g.out'%(i,flag_study,j)) + efft1_pin[:,i,j] = load_getdp_integral(respath+'eff_t1_lam%g_%s%g_psi0.out'%(i,flag_study,j)) + efft2_pin[:,i,j] = load_getdp_integral(respath+'eff_t2_lam%g_%s%g_psi0.out'%(i,flag_study,j)) + effr1_pin[:,i,j] = load_getdp_integral(respath+'eff_r1_lam%g_%s%g_psi0.out'%(i,flag_study,j)) + effr2_pin[:,i,j] = load_getdp_integral(respath+'eff_r2_lam%g_%s%g_psi0.out'%(i,flag_study,j)) + Qscat_pin[i,j] = np.real(load_getdp_integral(respath+'Q_scat_lam%g_%s%g_psi0.out'%(i,flag_study,j))) + efft1_sin[:,i,j] = load_getdp_integral(respath+'eff_t1_lam%g_%s%g_psi1.out'%(i,flag_study,j)) + efft2_sin[:,i,j] = load_getdp_integral(respath+'eff_t2_lam%g_%s%g_psi1.out'%(i,flag_study,j)) + effr1_sin[:,i,j] = load_getdp_integral(respath+'eff_r1_lam%g_%s%g_psi1.out'%(i,flag_study,j)) + effr2_sin[:,i,j] = load_getdp_integral(respath+'eff_r2_lam%g_%s%g_psi1.out'%(i,flag_study,j)) + Qscat_sin[i,j] = np.real(load_getdp_integral(respath+'Q_scat_lam%g_%s%g_psi1.out'%(i,flag_study,j))) + +# ## replicate data for phi=2\pi from phi=0 +# rpp[:,-1] = rpp[:,0] +# rss[:,-1] = rss[:,0] +# rps[:,-1] = rps[:,0] +# rsp[:,-1] = rsp[:,0] T1_sin = np.sum(efft1_sin,axis=0) T2_sin = np.sum(efft2_sin,axis=0) @@ -119,7 +128,7 @@ M[4-1,4-1,:,:] = np.real(rpp*np.conj(rss)-rps*np.conj(rsp)) ### Energy balance fig, axes = plt.subplots(3, 2, figsize=(12,12)) -L,P = np.meshgrid(tab_lam,tab_phi,indexing='ij') +L,P = np.meshgrid(tab_lam,tab_angle,indexing='ij') for form in range(2): for pol in range(2): if form==0 and pol==0: @@ -144,7 +153,7 @@ for form in range(2): plt.savefig('BALANCE_FLAG_TOT%g.jpg'%FLAG_TOT) fig, axes = plt.subplots(3, 2, figsize=(12,12)) -L,P = np.meshgrid(tab_lam,tab_phi,indexing='ij') +L,P = np.meshgrid(tab_lam,tab_angle,indexing='ij') ax=axes[0,0];zplot = ax.pcolormesh(L,P,T00_sin.real );add_colorbar(zplot);ax.title.set_text('T00 sin') ax=axes[1,0];zplot = ax.pcolormesh(L,P,R00_sin.real );add_colorbar(zplot);ax.title.set_text('R00 sin') ax=axes[2,0];zplot = ax.pcolormesh(L,P,Qscat_sin.real);add_colorbar(zplot);ax.title.set_text('Abs sin') @@ -158,14 +167,15 @@ plt.savefig('BALANCE_new_code.jpg') fig, axes = plt.subplots(4, 4, subplot_kw=dict(projection='polar') ,figsize=(12,12)) flag_lam = False rlabel = r"$\hbar \nu$" if not flag_lam else r"$\lambda_0$" +anglelabel = r"$\varphi_0$" if flag_study=='phi' else r"$\theta_0$" which_r = tab_hnu if not flag_lam else tab_lam which_orig = 0 #if not flag_lam else 350 for i in range(4): for j in range(4): ax=axes[i,j] if i!=0 or j!=0: - sm=ax.contourf(tab_phi*np.pi/180,which_r,M[i,j]/M[0,0],cmap=plt.cm.bwr,levels=30,vmin=-1,vmax=1) - # sm=ax.contourf(tab_phi*np.pi/180,which_r,M[i,j]/M[0,0],cmap=plt.cm.bwr,levels=30) + sm=ax.contourf(tab_angle*np.pi/180,which_r,M[i,j]/M[0,0],cmap=plt.cm.bwr,levels=30,vmin=-1,vmax=1) + # sm=ax.contourf(tab_angle*np.pi/180,which_r,M[i,j]/M[0,0],cmap=plt.cm.bwr,levels=30) ax.text(0. , 1. , r"$M_{%d%d}$"%(i+1,j+1) , fontsize=16 , transform=ax.transAxes) ax.set_xticks([]) ax.set_yticks([]) @@ -173,14 +183,14 @@ for i in range(4): # cbar.ax.locator_params(nbins=5) # cbar.ax.tick_params(labelsize=14) else: - p00 = ax.contourf(tab_phi*np.pi/180,which_r,M[i,j]/M[0,0]-1,cmap=plt.cm.bwr,vmin=-1,vmax=1) + p00 = ax.contourf(tab_angle*np.pi/180,which_r,M[i,j]/M[0,0]-1,cmap=plt.cm.bwr,vmin=-1,vmax=1) ax.xaxis.label.set_color('C0') #setting up X-axis label color to yellow ax.yaxis.label.set_color('C3') #setting up Y-axis label color to blue ax.tick_params(axis='x', colors='C0') #setting up X-axis tick color to red ax.tick_params(axis='y', colors='C3') #setting up Y-axis tick color to black ax.set_rlabel_position(70) ax.tick_params(axis='both', which='major', labelsize=14) - ax.text(np.radians(22.5),tab_lam.max()*1.03,r"$\varphi_0$",fontsize=16,color='C0') + ax.text(np.radians(22.5),tab_lam.max()*1.03,anglelabel,fontsize=16,color='C0') ax.text(np.radians(90),ax.get_rmax()/1.3,rlabel, rotation=70,ha='center',va='center',fontsize=16,color='C3') norm = mpl.colors.Normalize(vmin=-1,vmax=1) @@ -188,7 +198,7 @@ for i in range(4): sm.set_array([]) ax.set_rorigin(which_orig) plt.subplots_adjust(top=0.92, bottom=0.08, left=0.10, right=0.95, hspace=0.25,wspace=0.35) -plt.savefig('Mmatrix_%s.jpg'%str_reftrans) +plt.savefig('Mmatrix_%s_%s.jpg'%(flag_study,str_reftrans)) # plt.savefig('Mmatrix.pdf',bbox_inches='tight',pad_inches=0) plt.show() -- GitLab