本文整理汇总了Python中gpaw.grid_descriptor.GridDescriptor.refine方法的典型用法代码示例。如果您正苦于以下问题:Python GridDescriptor.refine方法的具体用法?Python GridDescriptor.refine怎么用?Python GridDescriptor.refine使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类gpaw.grid_descriptor.GridDescriptor
的用法示例。
在下文中一共展示了GridDescriptor.refine方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: get_combined_data
# 需要导入模块: from gpaw.grid_descriptor import GridDescriptor [as 别名]
# 或者: from gpaw.grid_descriptor.GridDescriptor import refine [as 别名]
def get_combined_data(self, qmdata=None, cldata=None, spacing=None):
if qmdata is None:
qmdata = self.density.rhot_g
if cldata is None:
cldata = self.classical_material.charge_density
if spacing is None:
spacing = self.cl.gd.h_cv[0, 0]
spacing_au = spacing / Bohr # from Angstroms to a.u.
# Collect data from different processes
cln = self.cl.gd.collect(cldata)
qmn = self.qm.gd.collect(qmdata)
clgd = GridDescriptor(self.cl.gd.N_c,
self.cl.cell,
False,
serial_comm,
None)
if world.rank == 0:
cln *= self.classical_material.sign
# refine classical part
while clgd.h_cv[0, 0] > spacing_au * 1.50: # 45:
cln = Transformer(clgd, clgd.refine()).apply(cln)
clgd = clgd.refine()
# refine quantum part
qmgd = GridDescriptor(self.qm.gd.N_c,
self.qm.cell,
False,
serial_comm,
None)
while qmgd.h_cv[0, 0] < clgd.h_cv[0, 0] * 0.95:
qmn = Transformer(qmgd, qmgd.coarsen()).apply(qmn)
qmgd = qmgd.coarsen()
assert np.all(qmgd.h_cv == clgd.h_cv), " Spacings %.8f (qm) and %.8f (cl) Angstroms" % (qmgd.h_cv[0][0] * Bohr, clgd.h_cv[0][0] * Bohr)
# now find the corners
r_gv_cl = clgd.get_grid_point_coordinates().transpose((1, 2, 3, 0))
cind = self.qm.corner1 / np.diag(clgd.h_cv) - 1
n = qmn.shape
# print 'Corner points: ', self.qm.corner1*Bohr, ' - ', self.qm.corner2*Bohr
# print 'Calculated points: ', r_gv_cl[tuple(cind)]*Bohr, ' - ', r_gv_cl[tuple(cind+n+1)]*Bohr
cln[cind[0] + 1:cind[0] + n[0] + 1,
cind[1] + 1:cind[1] + n[1] + 1,
cind[2] + 1:cind[2] + n[2] + 1] += qmn
world.barrier()
return cln, clgd
示例2: go
# 需要导入模块: from gpaw.grid_descriptor import GridDescriptor [as 别名]
# 或者: from gpaw.grid_descriptor.GridDescriptor import refine [as 别名]
def go(comm, ngpts, repeat, narrays, out, prec):
N_c = np.array((ngpts, ngpts, ngpts))
a = 10.0
gd = GridDescriptor(N_c, (a, a, a), comm=comm))
gdcoarse = gd.coarsen()
gdfine = gd.refine()
kin1 = Laplace(gd, -0.5, 1).apply
laplace = Laplace(gd, -0.5, 2)
kin2 = laplace.apply
restrict = Transformer(gd, gdcoarse, 1).apply
interpolate = Transformer(gd, gdfine, 1).apply
precondition = Preconditioner(gd, laplace, np_float)
a1 = gd.empty(narrays)
a1[:] = 1.0
a2 = gd.empty(narrays)
c = gdcoarse.empty(narrays)
f = gdfine.empty(narrays)
T = [0, 0, 0, 0, 0]
for i in range(repeat):
comm.barrier()
kin1(a1, a2)
comm.barrier()
t0a = time()
kin1(a1, a2)
t0b = time()
comm.barrier()
t1a = time()
kin2(a1, a2)
t1b = time()
comm.barrier()
t2a = time()
for A, C in zip(a1,c):
restrict(A, C)
t2b = time()
comm.barrier()
t3a = time()
for A, F in zip(a1,f):
interpolate(A, F)
t3b = time()
comm.barrier()
if prec:
t4a = time()
for A in a1:
precondition(A, None, None, None)
t4b = time()
comm.barrier()
T[0] += t0b - t0a
T[1] += t1b - t1a
T[2] += t2b - t2a
T[3] += t3b - t3a
if prec:
T[4] += t4b - t4a
if mpi.rank == 0:
out.write(' %2d %2d %2d' % tuple(gd.parsize_c))
out.write(' %12.6f %12.6f %12.6f %12.6f %12.6f\n' %
tuple([t / repeat / narrays for t in T]))
out.flush()
示例3: GridDescriptor
# 需要导入模块: from gpaw.grid_descriptor import GridDescriptor [as 别名]
# 或者: from gpaw.grid_descriptor.GridDescriptor import refine [as 别名]
from time import time
from gpaw.transformers import Transformer
from gpaw.grid_descriptor import GridDescriptor
from gpaw.mpi import world
ngpts = 80
N_c = (ngpts, ngpts, ngpts)
a = 10.0
gd = GridDescriptor(N_c, (a, a, a))
gdfine = gd.refine()
interpolate = Transformer(gd, gdfine, 3).apply
a1 = gd.empty()
a1[:] = 1.0
f = gdfine.empty()
ta = time()
r = 600
for i in range(r):
interpolate(a1, f)
tb = time()
n = 8 * (1 + 2 + 4) * ngpts**3
print '%.3f GFlops' % (r * n / (tb - ta) * 1e-9)
"""
python: 0.330 GFlops
mpirun -np 2 gpaw-python: 0.500 GFlops
gpaw-python + OMP: 0.432 GFlops
"""
示例4: abstract_boundary
# 需要导入模块: from gpaw.grid_descriptor import GridDescriptor [as 别名]
# 或者: from gpaw.grid_descriptor.GridDescriptor import refine [as 别名]
def abstract_boundary(self):
# Abtract the effective potential, hartree potential, and average density
#out from the electrode calculation.
map = {'-': '0', '+': '1'}
data = self.tio.read_data(filename='Lead_' +
map[self.direction], option='Lead')
nn = data['fine_N_c'][2]
ns = data['nspins']
N_c = data['N_c']
cell_cv = data['cell_cv']
pbc_c = data['pbc_c']
#parsize_c = data['parsize_c']
if type(parsize_domain) is int:
parsize_c = None
assert parsize_domain == self.domain_comm.size
else:
parsize_c = parsize_domain
if parsize_c is None:
parsize_c = decompose_domain(N_c, self.domain_comm.size)
parsize_c = np.array(parsize_c)
d1 = N_c[0] // 2
d2 = N_c[1] // 2
vHt_g = data['vHt_g']
vt_sg = data['vt_sg']
nt_sg = data['nt_sg']
rhot_g = data['rhot_g']
vt_sG = data['vt_sG']
nt_sG = data['nt_sG']
self.D_asp = data['D_asp']
self.dH_asp = data['dH_asp']
gd = GridDescriptor(N_c, cell_cv, pbc_c, self.domain_comm, parsize_c)
finegd = gd.refine()
self.boundary_vHt_g = None
self.boundary_vHt_g1 = None
self.boundary_vt_sg_line = None
self.boundary_nt_sg = None
self.boundary_rhot_g_line = None
self.boundary_vt_sG = None
self.boundary_nt_sG = None
if self.tio.domain_comm.rank == 0:
self.boundary_vHt_g = self.slice(nn, vHt_g)
self.boundary_nt_sg = self.slice(nn, nt_sg)
if self.direction == '-':
other_direction= '+'
else:
other_direction= '-'
h = self.h_cz / 2.0
b_vHt_g0 = self.boundary_vHt_g.copy()
b_vHt_g1 = self.boundary_vHt_g.copy()
self.boundary_vHt_g = interpolate_array(b_vHt_g0,
finegd, h,
self.direction)
self.boundary_vHt_g1 = interpolate_array(b_vHt_g1,
finegd, h,
other_direction)
vt_sg = interpolate_array(vt_sg, finegd,
h, self.direction)
self.boundary_vt_sg_line = aa1d(vt_sg)
self.boundary_nt_sg = interpolate_array(self.boundary_nt_sg,
finegd, h, self.direction)
rhot_g = interpolate_array(rhot_g, finegd, h, self.direction)
self.boundary_rhot_g_line = aa1d(rhot_g)
nn /= 2
h *= 2
self.boundary_vt_sG = self.slice(nn, vt_sG)
self.boundary_nt_sG = self.slice(nn, nt_sG)
self.boundary_vt_sG = interpolate_array(self.boundary_vt_sG,
gd, h, self.direction)
self.boundary_nt_sG = interpolate_array(self.boundary_nt_sG,
gd, h, self.direction)
示例5: GridDescriptor
# 需要导入模块: from gpaw.grid_descriptor import GridDescriptor [as 别名]
# 或者: from gpaw.grid_descriptor.GridDescriptor import refine [as 别名]
from gpaw.transformers import Transformer
import numpy.random as ra
from gpaw.grid_descriptor import GridDescriptor
p = 0
n = 20
gd1 = GridDescriptor((n, n, n), (8.0, 8.0, 8.0), pbc_c=p)
a1 = gd1.zeros()
ra.seed(8)
a1[:] = ra.random(a1.shape)
gd2 = gd1.refine()
a2 = gd2.zeros()
i = Transformer(gd1, gd2).apply
i(a1, a2)
assert abs(gd1.integrate(a1) - gd2.integrate(a2)) < 1e-10
r = Transformer(gd2, gd1).apply
a2[0] = 0.0
a2[:, 0] = 0.0
a2[:, :, 0] = 0.0
a2[-1] = 0.0
a2[:, -1] = 0.0
a2[:, :, -1] = 0.0
r(a2, a1)
assert abs(gd1.integrate(a1) - gd2.integrate(a2)) < 1e-10
示例6: Copyright
# 需要导入模块: from gpaw.grid_descriptor import GridDescriptor [as 别名]
# 或者: from gpaw.grid_descriptor.GridDescriptor import refine [as 别名]
# Copyright (C) 2003 CAMP
# Please see the accompanying LICENSE file for further information.
from __future__ import print_function
from gpaw.grid_descriptor import GridDescriptor
from gpaw.transformers import Transformer
import time
n = 6
gda = GridDescriptor((n, n, n))
gdb = gda.refine()
gdc = gdb.refine()
a = gda.zeros()
b = gdb.zeros()
c = gdc.zeros()
inter = Transformer(gdb, gdc, 2).apply
restr = Transformer(gdb, gda, 2).apply
t = time.clock()
for i in range(8 * 300):
inter(b, c)
print(time.clock() - t)
t = time.clock()
for i in range(8 * 3000):
restr(b, a)
print(time.clock() - t)
示例7: Copyright
# 需要导入模块: from gpaw.grid_descriptor import GridDescriptor [as 别名]
# 或者: from gpaw.grid_descriptor.GridDescriptor import refine [as 别名]
# Copyright (C) 2003 CAMP
# Please see the accompanying LICENSE file for further information.
import numpy as np
from gpaw.grid_descriptor import GridDescriptor
from gpaw.transformers import Transformer
n = 20
gd = GridDescriptor((n,n,n))
np.random.seed(8)
a = gd.empty()
a[:] = np.random.random(a.shape)
gd2 = gd.refine()
b = gd2.zeros()
for k in [2, 4, 6, 8]:
inter = Transformer(gd, gd2, k // 2).apply
inter(a, b)
assert abs(gd.integrate(a) - gd2.integrate(b)) < 1e-14
gd2 = gd.coarsen()
b = gd2.zeros()
for k in [2, 4, 6, 8]:
restr = Transformer(gd, gd2, k // 2).apply
restr(a, b)
assert abs(gd.integrate(a) - gd2.integrate(b)) < 1e-14
# complex versions
a = gd.empty(dtype=complex)
a.real = np.random.random(a.shape)