|
|
¡¾´ð°¸¡¿Ó¦Öú»ØÌû
¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¸Ðл²ÎÓ룬ӦÖúÖ¸Êý +1 ben_ladeng: ½ð±Ò+2, ÇëÄÍÐĵȴýÂ¥Ö÷ÆÀ·Ö 2014-01-30 08:22:13 gzb1220: ½ð±Ò+10, ¡ï¡ï¡ïºÜÓаïÖú, лл£¬Õâ¶Î³ÌÐòÊDz»ÊÇͨ¹ý²î·Ö·¨½â³öÀ´µÄ£¿ 2014-02-02 07:55:05 1592203609: ·ÂÕæEPI+1 2014-02-22 17:04:33
·½³ÌµÄÕâ¸öд·¨µÚÒ»´Î¿´µ½£¬Ï£ÍûÎÒÀí½âµÄÊǶԵģ¬À©É¢·½³Ì
ÊýÖµ¼¼ÊõÉÏ˵£¬Èç¹ûÊÇ½á¹¹Íø¸ñºÜÈÝÒ׾͵õ½½á¹û£¬ÏÂÃæÊÇFortran³ÌÐò£¬Ï£Íû¶ÔÄãÓÐÓá£Ò»¹²Á½¸öÎļþ£¬main.f90ºÍpara.dat¡£Äã×¼±¸ºÃÖ®ºóÔÚĿ¼Ï½¨Á¢OutºÍInit£¬¼´¿É±àÒëÔËÐС£½á¹ûÔÚOutÀïÃæ£¬ÓÃTecplot¿ÉÒÔÖ±½Ó²é¿´
!main.f90
!==================================================================
!==FDM diffusion equation======================================
!==\partial T /\partial t =(\partial^2 T /\partial x^2+ \partial^2 T /\partial y^2)
!========Initally developed by onesupeng===================================
!==============2010.2.2=========================================
!==========================================================
program main
include "./para.dat"
real*8::T1(nx,ny),T2(nx,ny),T3(nx,ny),Tnp1(nx,ny),Tnm1(nx,ny),right1(nx,ny),right2(nx,ny)
integer::i,j,nstep,nplot,ntime
character*8::title
PI=4.0*atan(1.0)
!ÏÂÃæÊDzÎÊý
kappa=0.05
dx=Lx/(Nx-1)
dy=Ly/(Ny-1)
do i=1,Nx
do j=1,Nx
x(i,j)=0.0+(i-1)*dx
y(i,j)=0.0+(j-1)*dy
right1(i,j)=0.0
right2(i,j)=0.0
V(i,j)=0.0d0
U(i,j)=0.0d0
enddo
enddo
ds=2.0*PI/Ns
do i=1,ns
xs(i)=Lx/2+cos(2*PI/ns*(i-1))
ys(i)=Ly/2+sin(2*PI/ns*(i-1))
enddo
dt=0.00001
timestop=5.0
Nplot=100
nstep=1
open(unit=1,file='./Init/Init.dat')
write(1,*)'variables= "x" "Y"'
write(1,*)'ZONE F=POINT I=',Nx,' J=',Ny
do j=1,ny
do i=1,nx
write(1,*)x(i,j),y(i,j)
enddo
enddo
write(1,*)'variables= "x" "Y"'
write(1,*)'ZONE F=POINT I=',Ns,' J=',1
do i=1,ns
write(1,*)xs(i),ys(i)
enddo
close(1)
!stop
!Ê¡À¼äÑ­»µ¿ªÊ¼
nstep=0
do while(dt*nstep.LE.timestop)
nstep=nstep+1
if(mod(nstep,10).eq.0)write(*,*)"nstep=",nstep
do i=1,ns
Tb(i)=1.0d0
enddo
!call ACTION1
do i=1+1,nx-1
do j=1+1,ny-1
right2(i,j)=right1(i,j)
right1(i,j)=(Tn(i+1,j)-2.0*Tn(i,j)+Tn(i-1,j))/dx**2+(Tn(i,j+1)-2.0*Tn(i,j)+Tn(i,j-1))/dy**2
enddo
enddo
if(Nstep.eq.1)then
do i=1+1,nx-1
do j=1+1,ny-1
Tnp1(i,j)=Tn(i,j)+right1(i,j)*dt
enddo
enddo
else
do i=1+1,nx-1
do j=1+1,ny-1
Tnp1(i,j)=Tn(i,j)+0.5*(3*right1(i,j)-right2(i,j))*dt
enddo
enddo
endif
do i=1,nx
Tnp1(i,1)=1.0 !Tnp1(i,2)
Tnp1(i,ny)=Tnp1(i,ny-1)
enddo
do j=1,ny
Tnp1(1,j)=Tnp1(2,j)
Tnp1(nx,j)=Tnp1(nx-1,j)
enddo
do i=1,nx
do j=1,ny
Tnm1(i,j)=Tn(i,j)
Tn(i,j)=Tnp1(i,j)
enddo
enddo
if(mod(nstep,nplot).eq.0)then
write(title,'(i8.8)')nstep
open(unit=1,file='./Out/out'//title//'.dat')
write(1,*)'variables= "x" "Y" "T"'
write(1,*)'ZONE F=POINT I=',Nx,' J=',Ny
do j=1,ny
do i=1,nx
write(1,*)x(i,j),y(i,j),Tn(i,j)
enddo
enddo
write(1,*)'variables= "x" "Y" "Tn(i,j)"'
write(1,*)'ZONE F=POINT I=',Ns,' J=',1
do i=1,ns
write(1,*)xs(i),ys(i),F(i)
enddo
close(1)
endif
enddo !do
end
!para.dat
implicit none
integer,parameter::Nx=201,Ny=201
integer,parameter::Ns=314
real*8,parameter::Lx=10.0d0,Ly=10.0d0
real*8::kappa,PI
real*8::dt,timestop,dx,dy,ds
real*8::x(nx,ny),y(nx,ny),U(nx,ny),V(nx,ny),Fib(nx,ny)
real*8::xs(ns),ys(ns),F(ns),Tb(NS)
real*8::Tn(nx,ny)
common/para/kappa,PI,dt,timestop,dx,dy,ds
common/field/x,y,U,V,Fib,Tn
common/lag/xs,ys,F,Tb |
|