You are on page 1of 2

program setupmesh

implicit none
integer :: i,j,k
integer,parameter,dimension(3):: nP=[130,110,61]
double precision, dimension (nP(3)) :: x3,jac,jac2,invjac,Xi
double precision :: dXi, dx, dy, Pi, x1(nP(1)), x2(nP(2)), invdx, double
precision :: invdy, invdXi, rin=0.625d0, rout=1.625d0

Pi=4.d0*datan(1.0d0)
x1(1) = 0.0d0
x2(1) = 0.0d0
Xi(1) = 0.0d0
x3(1) = 0.0d0

x1(nP(1)) = 2.0d0
Xi(nP(3)) = rout-rin

dx = x1(nP(1))/dble(nP(1)-1)
dy = 2.0d0*Pi /dble(nP(2)-1)
dXi = Xi(nP(3))/dble(nP(3)-1)

invdx = 1.0d0/dx
invdy = 1.0d0/dy
invdXi = 1.0d0/dXi

do i=1,nP(1)-1
x1(i+1) = x1(i) + dx
enddo

do j=1,nP(2)-1
x2(j+1) = x2(j) + dy
enddo

do k=1,nP(3)-1
Xi(k+1) = Xi(k) + dXi
enddo

do k=1,nP(3)
x3(k) = rin + (rout-rin)*(1.0d0-dcos(Xi(k)*Pi))*0.50d0
jac(k) = (rout-rin)*Pi*dsin(Xi(k)*Pi)*0.50d0
jac2(k) = (rout-rin)*Pi*Pi*dcos(Xi(k)*Pi)*0.50d0
enddo

invJac(2:nP(3)) = 1.0d0/jac(2:nP(3))

OPEN (UNIT=10,FILE='Mesh.dat')

write(10,*) 'TITLE ="Mesh"'


write(10,*) 'Variables ="x","y","z"'
write(10,104) 'ZONE k=',nP(3),',j=',nP(2),',i=',nP(1),',DATAPACKING="POINT"'

do k=1,nP(3)
write(10,*)
do j=1,nP(2)
write(10,*)
do i=1,nP(1)
write(10,117) x1(i),x3(k)*dcos(x2(j)),x3(k)*dsin(x2(j))
end do
end do
enddo
close(10)

104 format(3(A,I3),A)
117 format(3(F10.4))

end program setupmesh

You might also like