Example #1
0
	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]
Example #2
0
    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