def allocate_coeff( s ): CpmlNonKappa.allocate_coeff( s ) if s.Npmlx == s.Npml or s.Npmlx == 0: pass else: s.bEx = sc.zeros( 2*(s.Npmlx+1), 'f' ) s.aEx = sc.zeros( 2*(s.Npmlx+1), 'f' ) s.bHx = sc.zeros( 2*(s.Npmlx+1), 'f' ) s.aHx = sc.zeros( 2*(s.Npmlx+1), 'f' ) Nsum = s.Nx_sum_list Nrsum = s.Nx_reverse_sum_list if myrank <= s.f_end_rank: pt0 = Nsum[myrank-1] + 1 slE = slH = slice( pt0, pt0 + s.Npmlx ) s.bEx[1:s.Npmlx+1] = s.bE[slE] s.aEx[1:s.Npmlx+1] = s.aE[slE] s.bHx[1:s.Npmlx+1] = s.bH[slH] s.aHx[1:s.Npmlx+1] = s.aH[slH] elif myrank >= s.b_start_rank: pt0 = Nrsum[myrank+1] slE = slice( -pt0 -s.Npmlx -1, -pt0 -1 ) slH = slice( -pt0 -s.Npmlx, -pt0 ) if myrank == Nnode-1: slH = slice( -s.Npmlx, None ) s.bEx[s.Npmlx+1:-1] = s.bE[slE] s.aEx[s.Npmlx+1:-1] = s.aE[slE] s.bHx[s.Npmlx+2:] = s.bH[slH] s.aHx[s.Npmlx+2:] = s.aH[slH]
def allocate_coeff(s): CpmlNonKappa.allocate_coeff(s) if s.Npmlx == s.Npml or s.Npmlx == 0: pass else: s.bEx = sc.zeros(2 * (s.Npmlx + 1), 'f') s.aEx = sc.zeros(2 * (s.Npmlx + 1), 'f') s.bHx = sc.zeros(2 * (s.Npmlx + 1), 'f') s.aHx = sc.zeros(2 * (s.Npmlx + 1), 'f') Nsum = s.Nx_sum_list Nrsum = s.Nx_reverse_sum_list if myrank <= s.f_end_rank: pt0 = Nsum[myrank - 1] + 1 slE = slH = slice(pt0, pt0 + s.Npmlx) s.bEx[1:s.Npmlx + 1] = s.bE[slE] s.aEx[1:s.Npmlx + 1] = s.aE[slE] s.bHx[1:s.Npmlx + 1] = s.bH[slH] s.aHx[1:s.Npmlx + 1] = s.aH[slH] elif myrank >= s.b_start_rank: pt0 = Nrsum[myrank + 1] slE = slice(-pt0 - s.Npmlx - 1, -pt0 - 1) slH = slice(-pt0 - s.Npmlx, -pt0) if myrank == Nnode - 1: slH = slice(-s.Npmlx, None) s.bEx[s.Npmlx + 1:-1] = s.bE[slE] s.aEx[s.Npmlx + 1:-1] = s.aE[slE] s.bHx[s.Npmlx + 2:] = s.bH[slH] s.aHx[s.Npmlx + 2:] = s.aH[slH]
S.epr_x[50:101, 50:100, :] = epr S.epr_y[50:100, 50:101, :] = epr S.epr_z[50:100, 50:100, :] = epr S.set_coeff() Drude.pfreq_x[50:101, 50:100, :] = pfreq Drude.pfreq_y[50:100, 50:101, :] = pfreq Drude.pfreq_z[50:100, 50:100, :] = pfreq Drude.gamma_x[50:101, 50:100, :] = gamma Drude.gamma_y[50:100, 50:101, :] = gamma Drude.gamma_z[50:100, 50:100, :] = gamma Drude.set_coeff() Cpml.set_space(S) Cpml.allocate_psi() Cpml.allocate_coeff() #-------------------------------------------------------------------- print '-' * 47 print 'N(%d, %d, %d)' % (S.Nx, S.Ny, S.Nz) print 'dx = %g' % S.dx print 'dt = %g' % S.dt print 'Npml = %g' % Cpml.Npml print '' S.print_memory_usage() Drude.print_memory_usage() Cpml.print_memory_usage() print '-' * 47 #-------------------------------------------------------------------- # Graphic
S.epr_x[50:101,50:100,:] = epr S.epr_y[50:100,50:101,:] = epr S.epr_z[50:100,50:100,:] = epr S.set_coeff() Drude.pfreq_x[50:101,50:100,:] = pfreq Drude.pfreq_y[50:100,50:101,:] = pfreq Drude.pfreq_z[50:100,50:100,:] = pfreq Drude.gamma_x[50:101,50:100,:] = gamma Drude.gamma_y[50:100,50:101,:] = gamma Drude.gamma_z[50:100,50:100,:] = gamma Drude.set_coeff() Cpml.set_space( S ) Cpml.allocate_psi() Cpml.allocate_coeff() #-------------------------------------------------------------------- print '-'*47 print 'N(%d, %d, %d)' % (S.Nx, S.Ny, S.Nz) print 'dx = %g' % S.dx print 'dt = %g' % S.dt print 'Npml = %g' % Cpml.Npml print '' S.print_memory_usage() Drude.print_memory_usage() Cpml.print_memory_usage() print '-'*47 #-------------------------------------------------------------------- # Graphic