Академический Документы
Профессиональный Документы
Культура Документы
program simulador
double precision, allocatable, dimension(:,:) :: cau, p, matriz,copiamatriz
double precision, allocatable, dimension(:) :: presiont,pivote
double precision:: lx,ly,h,o,k,c,u,t,d1,d2,divisor,multi,dx,dy,tiempo,dt,dz
integer :: nx,ny,i,j,pas,pasos,n,z,k2
!abre el archivo datos.txt
open (unit=11, file='datos.txt',status='old',action='read')
read(11,*)nx,ny
read(11,*)lx,ly,h
read(11,*)k
read(11,*)o
read(11,*)c
read(11,*)u
read(11,*)t
read(11,*)pasos
close(11)
dx=lx/nx
dy=ly/ny
dt=t/pasos
dz=h
k2=1
matriz(:,:)=0
do i=nx,1,-1
do j=1,ny,1
if(i>1)then
!caso 1
if(i<nx .and. j==ny)then
matriz(k2-1,k2)=dy**2
matriz(k2,k2)=-1*(dy**2+2*(dx**2)+d1)
matriz(k2+ny,k2)=dx**2
matriz(k2-ny,k2)=dx**2
end if
!caso 2
if(i<nx.and.j==1)then
matriz(k2,k2)=-1*(dy**2+2*(dx**2)+d1)
matriz(k2+1,k2)=dy**2
matriz(k2+ny,k2)=dx**2
matriz(k2-ny,k2)=dx**2
end if
!caso 9
if(i<nx.and.j>1 .and. j<ny)then
matriz(k2+1,k2)=dy**2
matriz(k2,k2)=-1*(2*(dy**2)+2*(dx**2)+d1)
matriz(k2-1,k2)=dy**2
matriz(k2+ny,k2)=dx**2
matriz(k2-ny,k2)=dx**2
end if
end if
if(i==1)then
!caso 3
if(j>1 .and. j<ny)then
matriz(k2+1,k2)=dy**2
matriz(k2,k2)=-1*(2*(dy**2)+dx**2+d1)
matriz(k2-1,k2)=dy**2
matriz(k2-ny,k2)=dx**2
end if
!caso 5
if(j==1)then
matriz(k2+1,k2)=dy**2
matriz(k2,k2)=-1*(dy**2+(dx**2)+d1)
matriz(k2-ny,k2)=dx**2
end if
!caso 7
if(j==ny)then
matriz(k2-1,k2)=dy**2
matriz(k2,k2)=-1*(dy**2+(dx**2)+d1)
matriz(k2-ny,k2)=dx**2
end if
end if
if(i==nx)then
!caso 4
if(j>1 .and. j<ny)then
matriz(k2+1,k2)=dy**2
matriz(k2,k2)=-1*(2*(dy**2)+dx**2+d1)
matriz(k2-1,k2)=dy**2
matriz(k2+ny,k2)=dx**2
end if
!caso 6
if(j==1)then
matriz(k2+1,k2)=dy**2
matriz(k2,k2)=-1*((dy**2)+dx**2+d1)
matriz(k2+ny,k2)=dx**2
end if
!caso 8
if(j==ny)then
matriz(k2+ny,k2)=dx**2
matriz(k2-1,k2)=dy**2
matriz(k2,k2)=-1*((dy**2)+dx**2+d1)
end if
end if
matriz(ny*nx+1,k2)=-d1*p(j,i)-d2*cau(j,i)
k2=k2+1
end do
end do