Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 谁能帮我解决一下径向分布函数的问题?_Python_Physics - Fatal编程技术网

Python 谁能帮我解决一下径向分布函数的问题?

Python 谁能帮我解决一下径向分布函数的问题?,python,physics,Python,Physics,我已经使用python编写了径向分布函数代码。下面是代码 NumHUA = 1 ; NumEMI = 17 RMax = 20.0 ; binr = 0.20 ; NumBins = int(RMax/binr) dt = 10 rdf = np.zeros((NumBins, 3), float) RDFOutput = open('rdf.txt','w') for t in range(Nsteps): step = t + 1 if step%100 == 0:

我已经使用python编写了径向分布函数代码。下面是代码

NumHUA = 1 ; NumEMI = 17
RMax = 20.0 ; binr = 0.20 ; NumBins = int(RMax/binr)
dt = 10
rdf = np.zeros((NumBins, 3), float)
RDFOutput = open('rdf.txt','w')
for t in range(Nsteps):
    step = t + 1
    if step%100 == 0:
        print(f"Calculation of RDF {step}/{Nsteps} steps")
    cnt = np.zeros(NumBins, int)
    for i in range(NumHUA):
        xHUA = HUACM[t, 0] ; yHUA = HUACM[t, 1] ; zHUA = HUACM[t, 2]
        for j in range(NumEMI):
            xEMI = EMICM[t, j, 0] ; yEMI = EMICM[t, j, 1] ; zEMI = EMICM[t, j, 2]
            dx = xEMI - xHUA ; dy = yEMI - yHUA ; dz = zEMI - zHUA
            if abs(dx) > box[t,0]: dx -= box[t,0]*round(dx/box[t,0])
            if abs(dy) > box[t,1]: dy -= box[t,1]*round(dy/box[t,1])
            if abs(dz) > box[t,2]: dz -= box[t,2]*round(dz/box[t,2])
            dr = np.sqrt(dx*dx + dy*dy + dz*dz)
            if dr < RMax: BinNumber = int(dr/binr) ; cnt[BinNumber] += 1

    Volume = box[t,0]*box[t,1]*box[t,2]
    BulkDensity = NumEMI/Volume
    for i in range(NumBins):
        rIn = binr*i
        rOut = binr*(i+1)
        r = 0.5*(rIn + rOut)
        dN = cnt[i]
        dv = (4.0/3.0)*np.pi*(rOut**3 - rIn**3)
        trdf = dN/dv/BulkDensity/NumHUA
        rdf[i,0] = rIn
        rdf[i,1] += trdf
        ii = max(i-1,0)
        rdf[i,2] = rdf[ii, 2] + trdf*dv*BulkDensity
rdf[:,1] /= Nsteps/dt
for i in range(NumBins):
    r = rdf[i,0]
    gr = rdf[i,1]
    cn = rdf[i,2]
    RDFOutput.write(f'{r:.3f}\t{gr:.3f}\t{cn:.3f}\n')
RDFOutput.close()
NumHUA=1;努梅米=17
RMax=20.0;binr=0.20;NumBins=int(RMax/binr)
dt=10
rdf=np.零((NumBins,3),浮点)
RDFOutput=open('rdf.txt','w')
对于范围内的t(Nsteps):
阶跃=t+1
如果步骤%100==0:
打印(f“RDF{step}/{Nsteps}步骤的计算”)
cnt=np.zero(NumBins,int)
对于范围内的i(NumHUA):
xHUA=HUACM[t,0];yHUA=HUACM[t,1];zHUA=HUACM[t,2]
对于范围内的j(numei):
xEMI=EMICM[t,j,0];yEMI=EMICM[t,j,1];zEMI=EMICM[t,j,2]
dx=xEMI-xHUA;dy=叶米-yHUA;dz=泽米卓
如果abs(dx)>box[t,0]:dx-=box[t,0]*圆形(dx/box[t,0])
如果abs(dy)>box[t,1]:dy-=box[t,1]*圆形(dy/box[t,1])
如果abs(dz)>box[t,2]:dz-=box[t,2]*圆形(dz/box[t,2])
dr=np.sqrt(dx*dx+dy*dy+dz*dz)
如果dr

从输出中,我可以从参考中获得相似的RDF峰值,但峰值高度不同。您能给我一些建议吗?

请创建一个新的示例,并更清楚地解释您期望的结果以及实际结果的不同之处。此外,由于每行有多个语句,并且变量名晦涩难懂,代码对其他人来说很难理解。我想指出,“空格”是一个关键,它有助于阅读代码(您自己)如果你用它来将运算符与值和变量分开,而不是像这样:
value=a*b*some_more
这样做:
value=a*b*some_more
,如果你使用合理的变量名也会很好