MODULE CDAS1
REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: indt,ce,ce1,ce2
real dzz
ENDMODULE CDAS1
PROGRAM cs
USE CDAS1
IMPLICIT NONE
integer i,j,k,n,maxx,maxy,maxz,x1,x2,y1,y2,z1,z2
real time1,time2
dzz=0.6
maxz=80;maxy=80;maxx=80
allocate(indt(maxx,maxy,maxz),ce(0:maxx,0:maxy,0:maxz),ce1(0:maxx,0:maxy,0:maxz),ce2(0:maxx,0:maxy,0:maxz))
indt=0;ce=0
x1=10;x2=30 y1=10;y2=40
z1=15;z2=35
do k=1,maxz
do j=1,maxy
do i=1,maxx
if(i>x1.and.i<x2) indt(i,j,k)=1
if(j>y1.and.j<y2) indt(i,j,k)=1
if(k>z1.and.k<z2) indt(i,j,k)=1
enddo
enddo
enddo
call CPU_TIME(time1)
do n=1,1000
do k=1,maxz
do j=1,maxy
do i=1,maxx
if( indt(i,j,k)==1) cycle
ce(i,j,k)=ce1(i,j,k)-ce2(i,j-1,k)
enddo
enddo
enddo
enddo
call CPU_TIME(time2)
print*,'time',time2-time1
ENDPROGRAM cs
necrohan 发表于 2021-2-6 10:42
if( indt(i,j,k)==1)then
ce(i,j,k)=ce(i,j,k)
else
indt=0;ce=0
do k=1,maxz
do j=1,maxy
do i=1,39
indt(i,j,k)=1
enddo
do i=40,maxx
ce(i,j,k)=dzz
end do
enddo
enddo
1.png (51.36 KB, 下载次数: 290)
2.png (51.64 KB, 下载次数: 277)
MODULE CDAS1
REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: indt,ce
real dzz
ENDMODULE CDAS1
PROGRAM cs
USE CDAS1
IMPLICIT NONE
integer maxx,maxy,maxz
real time1,time2
dzz=0.6
maxz=80;maxy=80;maxx=80
allocate(indt(maxx,maxy,maxz),ce(maxx,maxy,maxz))
indt=0;ce=0
indt(:39,:,:)=1
call CPU_TIME(time1)
where(indt==1) ce=dzz
call CPU_TIME(time2)
print*,'time',time2-time1
ENDPROGRAM cs
欢迎光临 Fortran Coder (http://bbs.fcode.cn/) | Powered by Discuz! X3.2 |