def rcwa_assembly(dof,nG,bproj,theta,phi,planewave): ''' planewave:{'p_amp',...} ''' freqcmp = freq*(1+1j/2/Qabs) obj = rcwa.RCWA_obj(nG,L1,L2,freqcmp,theta,phi,verbose=0) obj.Add_LayerUniform(thick0,epsuniform) for i in range(Nlayer): obj.Add_LayerGrid(thickness[i],epsdiff,epsbkg,Mx,My) obj.Add_LayerUniform(thickN,epsuniform) obj.Init_Setup(Gmethod=0) obj.MakeExcitationPlanewave(planewave['p_amp'],planewave['p_phase'],planewave['s_amp'],planewave['s_phase'],order = 0) obj.GridLayer_getDOF(dof) return obj
def rcwa_assembly(dofold,freq,theta,phi,planewave): ''' planewave:{'p_amp',...} ''' df = f_symmetry(dofold,Mx,My,xsym,ysym,Nlayer=Nlayer) dof = b_filter(df,bproj) obj = rcwa.RCWA_obj(nG,L1,L2,freq,theta,phi,verbose=0) obj.Add_LayerUniform(thick0,epsuniform) epsdiff=[] for i in range(Nlayer): epsdiff.append(mstruct[i].epsilon(lam0/np.real(freq),x_type = 'lambda')-epsbkg) obj.Add_LayerGrid(thick[i],epsdiff[i],epsbkg,Nx,Ny) obj.Add_LayerUniform(thickN,epsuniform) obj.Init_Setup(Gmethod=0) obj.MakeExcitationPlanewave(planewave['p_amp'],planewave['p_phase'],planewave['s_amp'],planewave['s_phase'],order = 0) obj.GridLayer_getDOF(dof) return obj,dof,epsdiff
def rcwa_assembly(filling,freq,theta,phi,planewave): ''' planewave:{'p_amp',...} ''' dof = np.zeros((Nx,Ny),dtype=float) nx = int(filling*Nx) dof[:nx,:] = 1. obj = rcwa.RCWA_obj(nG,L1,L2,freq,theta,phi,verbose=0) obj.Add_LayerUniform(thick0,epsuniform) epsdiff=[] for i in range(Nlayer): epsdiff.append(mstruct[i].epsilon(lam0/np.real(freq),x_type = 'lambda')-epsbkg) obj.Add_LayerGrid(thick[i],epsdiff[i],epsbkg,Nx,Ny) obj.Add_LayerUniform(thickN,epsuniform) obj.Init_Setup(Gmethod=0) obj.MakeExcitationPlanewave(planewave['p_amp'],planewave['p_phase'],planewave['s_amp'],planewave['s_phase'],order = 0) obj.GridLayer_getDOF(dof.flatten()) return obj