| 查看: 548 | 回复: 3 | |||
| 当前主题已经存档。 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
[交流]
【求助】一个计算库伦相互作用能的fortran程序的并行化(2)
|
|||
|
c------------------------------------------------- c end if c if(myid==2)then c*** calculate the energy of bond bond interaction c---------------------------------------------- do in=natom+1,natombond xic = x(in) yic = y(in) zic = z(in) xi = x(in) - xic yi = y(in) - yic zi = z(in) - zic c2scale= 0.0d0 c4scale= 0.57d0 c3scale=0.0d0 do j = natom+1, na cscale(j) = 0.57d0 end do do j = 1, nbond12(in) cscale(bond12(j,in)) = c2scale end do do j = 1, nbdatom12(in) cscale(bdatom12(j,in)) = c2scale if(atomlp(1,bdatom12(j,in)).ne.0)then cscale(atomlp(1,bdatom12(j,in))) &=c2scale endif if(atomlp(2,bdatom12(j,in)).ne.0) then cscale(atomlp(2,bdatom12(j,in))) &=c2scale endif if(atompie(1,bdatom12(j,in)).ne.0) & cscale(atompie(1,bdatom12(j,in)))=c2scale if(atompie(2,bdatom12(j,in)).ne.0) & cscale(atompie(2,bdatom12(j,in)))=c2scale end do do j = 1, nbdatom13(in) cscale(bdatom13(j,in)) = c3scale if(atomlp(1,bdatom13(j,in)).ne.0) then cscale(atomlp(1,bdatom13(j,in))) &=c3scale endif if(atomlp(2,bdatom13(j,in)).ne.0)then cscale(atomlp(2,bdatom13(j,in))) &=c3scale endif if(atompie(1,bdatom13(j,in)).ne.0) & cscale(atompie(1,bdatom13(j,in)))=c3scale if(atompie(2,bdatom13(j,in)).ne.0) & cscale(atompie(2,bdatom13(j,in)))=c3scale end do do j = 1, nbond13(in) cscale(bond13(j,in)) = c3scale end do fi = f * pchg(in) do kk = in+1, naTOMBOND+NLP xc = xic - x(kk) yc = yic - y(kk) zc = zic - z(kk) if (use_image) call image (xc,yc,zc,0) rc2 = xc*xc + yc*yc + zc*zc xr = xc + xi - x(kk) + x(kk) yr = yc + yi - y(kk) + y(kk) zr = zc + zi - z(kk) + z(kk) r2 = xr*xr + yr*yr + zr*zr r = sqrt(r2) fik = fi * pchg(kk) * cscale(kk) c WRITE(*,*) AM(IN),AM(KK),CSCALE(KK),R if ((molcule(in).eq.obj.and.molcule(kk).ne.obj).or. &(molcule(in).ne.obj.and.molcule(kk).eq.obj))then fik = fik*lamp2 endif e = fik / r if(kk.le.natombond)then if (molcule(bdatom12(1,in)) .ne. molcule(bdatom12(1,kk))) then einter = einter + e end if else if (molcule(bdatom12(1,in)) .ne. molcule(lpatom(kk))) then einter = einter + e end if endif if ((molcule(in).eq.obj.and.molcule(kk).ne.obj).or. &(molcule(in).ne.obj.and.molcule(kk).eq.obj))then eintero = eintero + e end if if ((molcule(in).eq.obj.and.molcule(kk).eq.obj))then eintrao = eintrao + e end if if(abs(e).gt.800)then write(*,*) ii,kk,molcule(II),molcule(kk) endif c write(11,*) 'bond-bond',e c------------------------------------- end do do kk = NATOMBOND+NLP+1, na xc = xic - x(kk) yc = yic - y(kk) zc = zic - z(kk) if (use_image) call image (xc,yc,zc,0) rc2 = xc*xc + yc*yc + zc*zc xr = xc + xi - x(kk) + x(kk) yr = yc + yi - y(kk) + y(kk) zr = zc + zi - z(kk) + z(kk) r2 = xr*xr + yr*yr + zr*zr r = sqrt(r2) fik = fi * pchg(kk) * cscale(kk) if ((molcule(in).eq.obj.and.molcule(kk).ne.obj).or. &(molcule(in).ne.obj.and.molcule(kk).eq.obj))then fik = fik*lamp2 endif e = fik / r if (molcule(bdatom12(1,in)) .ne. molcule(PIEatom(kk))) then einter = einter + e endif if ((molcule(in).eq.obj.and.molcule(kk).ne.obj).or. &(molcule(in).ne.obj.and.molcule(kk).eq.obj))then eintero = eintero + e end if if ((molcule(in).eq.obj.and.molcule(kk).eq.obj))then eintrao = eintrao + e end if if(abs(e).gt.800)then write(*,*) ii,kk,molcule(II),molcule(kk) endif c write(11,*) 'b-lp,pi',e ec1 = ec1 + e end do end do c----------------------------------------------------- end if if(myid==3)then c------------------------------------------------------ c write(12,*) 'bond',ec1 c*** calculate the energy of lp lpPIE interaction do in=natombond+1,natombond+nlp xic = x(in) yic = y(in) zic = z(in) xi = x(in) - xic yi = y(in) - yic zi = z(in) - zic c2scale= 0.0d0 c4scale= 0.57d0 c3scale=0.0d0 do j = natomBOND+1, na cscale(j) = 0.57d0 end do pi=lpatom(in) do j=1,2 if(atomlp(j,pi).ne.in.AND.NATOMLP(PI).NE.1) &cscale(atomlp(j,pi))=0.0d0 enddo DO J=1,NATOMPIE(PI) CSCALE(ATOMPIE(J,PI))=0.0D0 ENDDO do j=1,n12(pi) DO K=1,NATOMLP(I12(J,PI)) cscale(atomlp(K,i12(j,pi)))=c2scale ENDDO DO K=1,NATOMPIE(I12(J,PI)) cscale(atompie(K,i12(j,pi)))=c2scale ENDDO enddo do j=1,n13(pi) DO K=1,NATOMLP(I13(J,PI)) cscale(atomlp(K,i13(j,pi)))=c3scale ENDDO DO K=1,NATOMPIE(I13(J,PI)) cscale(atompie(K,i13(j,pi)))=c3scale ENDDO enddo fi = f * pchg(in) do kk = in+1, naTOMBOND+NLP xc = xic - x(kk) yc = yic - y(kk) zc = zic - z(kk) if (use_image) call image (xc,yc,zc,0) rc2 = xc*xc + yc*yc + zc*zc xr = xc + xi - x(kk) + x(kk) yr = yc + yi - y(kk) + y(kk) zr = zc + zi - z(kk) + z(kk) r2 = xr*xr + yr*yr + zr*zr r = sqrt(r2) fik = fi * pchg(kk) * cscale(kk) if ((molcule(in).eq.obj.and.molcule(kk).ne.obj).or. &(molcule(in).ne.obj.and.molcule(kk).eq.obj))then fik = fik*lamp2 endif e = fik / r if (molcule(lpatom(in)) .ne. molcule(lpatom(kk))) then einter = einter + e end if if ((molcule(in).eq.obj.and.molcule(kk).ne.obj).or. &(molcule(in).ne.obj.and.molcule(kk).eq.obj))then eintero = eintero + e end if if ((molcule(in).eq.obj.and.molcule(kk).eq.obj))then eintrao = eintrao + e end if if(abs(e).gt.800)then write(*,*) ii,kk,molcule(II),molcule(kk) endif c write(11,*) 'lp-lp',e ec1 = ec1 + e end do do kk = naTOMBOND+NLP+1,NA xc = xic - x(kk) yc = yic - y(kk) zc = zic - z(kk) if (use_image) call image (xc,yc,zc,0) rc2 = xc*xc + yc*yc + zc*zc xr = xc + xi - x(kk) + x(kk) yr = yc + yi - y(kk) + y(kk) zr = zc + zi - z(kk) + z(kk) r2 = xr*xr + yr*yr + zr*zr r = sqrt(r2) fik = fi * pchg(kk) * cscale(kk) if ((molcule(in).eq.obj.and.molcule(kk).ne.obj).or. &(molcule(in).ne.obj.and.molcule(kk).eq.obj))then fik = fik*lamp2 endif e = fik / r if (molcule(lpatom(in)) .ne. molcule(PIEatom(kk))) then einter = einter + e end if if ((molcule(in).eq.obj.and.molcule(kk).ne.obj).or. &(molcule(in).ne.obj.and.molcule(kk).eq.obj))then eintero = eintero + e end if if ((molcule(in).eq.obj.and.molcule(kk).eq.obj))then eintrao = eintrao + e end if if(abs(e).gt.800)then write(*,*) ii,kk,molcule(II),molcule(kk) endif c write(11,*) 'lp-pie',e ec1 = ec1 + e end do end do c-------------------------------------------------------- c end if c if(myid==4)then c-------------------------------------------------------- c write(12,*) 'lp',ec1 do in=natombond+nlp+1,na-1 xic = x(in) yic = y(in) zic = z(in) xi = x(in) - xic yi = y(in) - yic zi = z(in) - zic c2scale= 0.0d0 c4scale= 0.57d0 c3scale=0.0d0 do j = natom+1, na cscale(j) = 0.57d0 end do pi=pieatom(in) do j=1,2 if(atompie(j,pi).ne.iN)cscale(atompie(j,pi))=0.0d0 enddo do j=1,n12(pi) DO K=1,NATOMPIE(I12(J,PI)) cscale(atompie(K,i12(j,pi)))=c2scale ENDDO enddo do j=1,n13(pi) DO K=1,NATOMPIE(I13(J,PI)) cscale(atompie(K,i13(j,pi)))=c3scale ENDDO enddo fi = f * pchg(in) do kk = in+1, na xc = xic - x(kk) yc = yic - y(kk) zc = zic - z(kk) if (use_image) call image (xc,yc,zc,0) rc2 = xc*xc + yc*yc + zc*zc xr = xc + xi - x(kk) + x(kk) yr = yc + yi - y(kk) + y(kk) zr = zc + zi - z(kk) + z(kk) r2 = xr*xr + yr*yr + zr*zr r = sqrt(r2) fik = fi * pchg(kk) * cscale(kk) if ((molcule(in).eq.obj.and.molcule(kk).ne.obj).or. &(molcule(in).ne.obj.and.molcule(kk).eq.obj))then fik = fik*lamp2 endif e = fik / r if (molcule(PIEatom(in)) .ne. molcule(PIEatom(kk))) then einter = einter + e end if if ((molcule(in).eq.obj.and.molcule(kk).ne.obj).or. &(molcule(in).ne.obj.and.molcule(kk).eq.obj))then eintero = eintero + e end if if ((molcule(in).eq.obj.and.molcule(kk).eq.obj))then eintrao = eintrao + e end if if(abs(e).gt.800)then write(*,*) ii,kk,molcule(II),molcule(kk) endif c write(11,*) 'pie-pie',e ec1 = ec1 + e end do end do c write(12,*) 'pie',ec1 c---------------------------------------- endif c 以下为计算力的程序不需要并行(由于字数要求已省略) c--------------------------------------- ecry=ecry+ec1 if (.not. use_replica) goto 111 c*****calculate the interaction with other cells with abeem charges explictly dielec |
» 猜你喜欢
导师想让我从独立一作变成了共一第一
已经有5人回复
博士读完未来一定会好吗
已经有20人回复
到新单位后,换了新的研究方向,没有团队,持续积累2区以上论文,能申请到面上吗
已经有11人回复
读博
已经有4人回复
JMPT 期刊投稿流程
已经有4人回复
心脉受损
已经有5人回复
Springer期刊投稿求助
已经有4人回复
小论文投稿
已经有3人回复
Bioresource Technology期刊,第一次返修的时候被退回好几次了
已经有9人回复
申请2026年博士
已经有6人回复
snoopyzhao
至尊木虫 (职业作家)
- 程序强帖: 16
- 应助: 157 (高中生)
- 贵宾: 0.02
- 金币: 18844.7
- 红花: 29
- 帖子: 3803
- 在线: 1422.4小时
- 虫号: 183750
- 注册: 2006-02-13
- 专业: 污染生态化学
3楼2009-05-18 22:48:40













回复此楼