You are on page 1of 26

!ifort -fpe0 -CB -traceback !

Linux
!ifort /fpe:0 /CB /traceback !Windows

PROGRAM COMPRESSIBLE_ANNULI
IMPLICIT NONE

INTEGER, PARAMETER :: nX =
61 ,&

nY = 91 ,&

nZ = 133 ,&

maxiter = 10 ,&

maxstep = 500000

DOUBLE PRECISION, PARAMETER :: dt = 1.0E-3


,&

Re = 100.0d0 ,&

Pr = 0.72d0 ,&

gama = 1.4d0 ,&

M = 0.3d0 ,&

Br = 0.0d0 ,&

Fr = 1.0d0 ,&

Bt = 0.0d0

LOGICAL, PARAMETER :: correlation =


.true. ,&

timehistory = .false. ,&

restart = .false.

INTEGER ::
nstep, iter
INTEGER ::
i,j,k,im1,im2,im3,ip1,ip2,ip3,jm1,jm2,jm3,jp1,jp2,jp3

DOUBLE PRECISION ::
drk,dtheta,dz,invdrk,invdtheta,invdz,d,time,Pi,dy
DOUBLE PRECISION ::
Pe,Urgt,Ulft,Vrgt,Vlft,Wrgt,Wlft
DOUBLE PRECISION ::
divrho,divrhou,divrhow,Energy
DOUBLE PRECISION ::
RKa(2),df(3),db(3),RKb(2)
DOUBLE PRECISION ::
x3(nZ),rinner=0.625d0,router=1.625d0

DOUBLE PRECISION, DIMENSION(nZ,nY,nX) ::


rho,rhou,rhov,rhow,rhoh,U,V,W,H,T,P,E,J2,J3,J4,J5
DOUBLE PRECISION, DIMENSION(nZ,nY,nX) ::
rho_old,rhou_old,rhov_old,rhow_old,rhoh_old
DOUBLE PRECISION, DIMENSION(nZ,nY,nX) ::
divV,tourr,toutt,touzz,tourt,tourz,touzt
DOUBLE PRECISION, DIMENSION(nZ,nY,nX) :: F1c,G1c,H1c
DOUBLE PRECISION, DIMENSION(nZ,nY,nX) :: Fc1,Fc2,Fc3,Fc4,Fc5
DOUBLE PRECISION, DIMENSION(nZ,nY,nX) :: Gc1,Gc2,Gc3,Gc4,Gc5
DOUBLE PRECISION, DIMENSION(nZ,nY,nX) :: Hc1,Hc2,Hc3,Hc4,Hc5
DOUBLE PRECISION, DIMENSION(nZ,nY,nX) :: F2c,G2c,H2c,F2d,G2d,H2d
DOUBLE PRECISION, DIMENSION(nZ,nY,nX) :: F3c,G3c,H3c,F3d,G3d,H3d
DOUBLE PRECISION, DIMENSION(nZ,nY,nX) :: F4c,G4c,H4c,F4d,G4d,H4d
DOUBLE PRECISION, DIMENSION(nZ,nY,nX) :: F5c,G5c,H5c,F5d,G5d,H5d

DOUBLE PRECISION, DIMENSION(nZ,nY,nX) :: F2dd,F3dd,F4dd,F5dd


DOUBLE PRECISION, DIMENSION(nZ,nY,nX) :: G2dd,G3dd,G4dd,G5dd
DOUBLE PRECISION, DIMENSION(nZ,nY,nX) :: H2dd,H3dd,H4dd,H5dd

DOUBLE PRECISION, DIMENSION(nZ,nY,nX) :: mu,kt,Vsound,Fluxi,Fluxo

DOUBLE PRECISION, DIMENSION(nX,nY,nZ,5) :: R,Rold_0,Rold_1,Rold_2,Rold_3

DOUBLE PRECISION, DIMENSION(nX) :: invr


DOUBLE PRECISION, DIMENSION(nY) :: sint,cost

DOUBLE PRECISION, ALLOCATABLE, DIMENSION(:) :: Jac,rk,x1,x2

ALLOCATE(x2(nY))
ALLOCATE(x1(nX))
ALLOCATE(jac(nX))
ALLOCATE(rk(nX))
!----------------------------------------------------------------------------------
-------------------------------------------
!IF (restart .eqv. .true.) THEN
!OPEN(UNIT=13,FILE='3DCMP.tp',STATUS = 'unknown')
!READ(13,01) time,nstep
!WRITE(*,01) time,nstep
!READ(13,*)
!READ(13,021)nZ,nY,nX
!WRITE(*,021)nZ,nY,nX
!ENDIF

!----------------------------------------------------------------------------------
-------------------------------------------
RKa(1) =
0.0d0
RKa(2) =
1.0d0
RKb(1) =
0.50d0
Pi =
4.0d0*datan(1.0d0)

!----------------------------------------------------------------------------------
------------------------------------------
!Mesh Generation
!----------------------------------------------------------------------------------
------------------------------------------

rk(1) = 0.0d0
x2(2) = 0.0d0
x3(2) =
0.0d0
x3(nZ-1) = 6.0d0
dtheta =
2.0d0*Pi/dble(nY-2)

DO j=2,nY-2
x2(j+1) =
x2(j)+dtheta
ENDDO

x2(nY) =
x2(2)

drk =
1.0d0/dble(nx-1)
invdrk =
1.0d0/dble(drk)

DO k=1,nX-1
rk(k+1) =
rk(k)+drk

ENDDO

dz =
6.0d0/dble(nZ-2)
DO i=2,nZ-2
x3(i+1) =
x3(i)+dz
ENDDO

DO k=1,nX
x1(k) =
rinner+(router-rinner)*0.50d0*(1.0d0-dCos(rk(k)*Pi))
invr(k) =
1.0d0/x1(k)
Jac(k) =
0.50d0*Pi*(router-rinner)* dSin(rk(k)*Pi)
!Jac2(i) =
0.50d0*Pi*Pi*(router-rinner)*dCos(rk(k)*Pi)

ENDDO

DO j=2,nY-1
sint(j) =
dsin(x2(j))!sin(theta)
cost(j) =
dcos(x2(j))!cos(theta)
ENDDO
!----------------------------------------------------------------------------------
--------
!IF(mod(nstep,1)==0) THEN
OPEN(UNIT=7,FILE="mesh.tp")
WRITE(7,03) 'TITLE ="',time,nstep,'"'
WRITE(7,*) 'Variables =,"x","y","z"'
WRITE(7,04) 'ZONE k=',nX,',j=',nY-1,',i=',nZ-
2,',DATAPACKING="POINT"'

DO k=1,nX
DO j=2,nY
DO i=2,nz-1
WRITE(7,93)
x1(k)*dcos(x2(j)),x1(k)*dsin(x2(j)),x3(i)
ENDDO
ENDDO
ENDDO

CLOSE(7)

!ENDIF

!----------------------------------------------------------------------------------
-------------------------------------------------
db(1) = x1(nX)-x1(nX-1)
db(2) = x1(nX-1)-x1(nX-2)

df(1) = x1(2)-x1(1)
df(2) = x1(3)-x1(2)

DO k=1,nX
DO j=2,nY-1
DO i=2,nZ-1

rho(i,j,k) = 1.0d0
U(i,j,k) = 0.01d0
V(i,j,k) = 0.01d0
W(i,j,k) = 0.01d0
T(i,j,k) = 0.5d0
ENDDO
ENDDO
ENDDO

!----------------------------------------------------------------------------------
-------------------------------------------------
Vsound(:,:,:) = dsqrt( (T(:,:,:)) )
mu(:,:,:) = (T(:,:,:))**0.7d0
kt(:,:,:) = (T(:,:,:))**0.7d0

!----------------------------------------------------------------------------------
--------------------------------------------------
!SOLUTION VECTOR
rhou(:,:,:) = rho(:,:,:)*U(:,:,:)
rhov(:,:,:) = rho(:,:,:)*V(:,:,:)
rhow(:,:,:) = rho(:,:,:)*W(:,:,:)
rhoH(:,:,:) = rho(:,:,:)*H(:,:,:)
!----------------------------------------------------------------------------------
-------------------------------------------------
DO k=2,nX
Jac(k) = 1.0d0/Jac(k)
ENDDO

nstep=0
!
===================================================================================
================================================
!IF (restart .eqv. .true. ) GOTO 123

! 123 CONTINUE
!----------------------------------------------------------------------------------
-----------------------------------------------
DO WHILE (nstep<maxstep)

!IF(id==0 .and. mod(nstep,10)==0) call cpu_time(tstart)


nstep = nstep + 1
time = time + dt
WRITE(*,*) nstep
!----------------------------------------------------------------------------------
-------------------------------------------------

rho_old(:,:,:) = rho(:,:,:)
rhou_old(:,:,:) = rhou(:,:,:)
rhov_old(:,:,:) = rhov(:,:,:)
rhow_old(:,:,:) = rhow(:,:,:)
rhoh_old(:,:,:) = rhoh(:,:,:)

DO iter=1,maxiter

DO k=2,nX-1
DO j=2,nY-1
DO i=2,nZ-1
!----------------------------------------------------------------
---------------------------------------------------------
im1 = i-1
IF (i.eq.2) im1 = nZ-1
im2 = im1-1
IF (i.eq.3) im2 = nZ-1
!----------------------------------------------------------------
---------------------------------------------------------
jm1 = j-1
IF (j.eq.2) jm1 = nY-1
jm2 = jm1-1
IF (j.eq.3) jm2 = nY-1
!----------------------------------------------------------------
---------------------------------------------------------
ip1 = i+1
IF (i.eq.nZ-1) ip1 = 2
ip2 = ip1+1
IF (i.eq.nZ-2) ip2 = 2
!----------------------------------------------------------------
---------------------------------------------------------
jp1 = j+1
IF (j.eq.nY-1) jp1 = 2
jp2 = jp1+1
IF (j.eq.nY-2) jp2 = 2
!
===================================================================================
=========================================================================
!Discretization of Convective Terms
!
===================================================================================
=========================================================================
Pe = Re*abs(rhou(i,j,k))*drk*jac(k)/mu(i,j,k)

IF(k .lt. 3 .or. k .gt. (nX-2)) THEN


!First Order Differencing near inner and outer walls

F1c(i,j,k) = ( U(i,j,k+1)*rho(i,j,k+1) - U(i,j,k-1)*rho(i,j,k-1) )


*invdrk*jac(k)*0.50d0
F2c(i,j,k) = ( U(i,j,k+1)*rhou(i,j,k+1) - U(i,j,k-1)*rhou(i,j,k-1) )
*invdrk*jac(k)*0.50d0
F3c(i,j,k) = ( U(i,j,k+1)*rhov(i,j,k+1) - U(i,j,k-1)*rhov(i,j,k-1) )
*invdrk*jac(k)*0.50d0
F4c(i,j,k) = ( U(i,j,k+1)*rhow(i,j,k+1) - U(i,j,k-1)*rhow(i,j,k-1) )
*invdrk*jac(k)*0.50d0
F5c(i,j,k) = ( U(i,j,k+1)*rhoh(i,j,k+1) - U(i,j,k-1)*rhoh(i,j,k-1) )
*invdrk*jac(k)*0.50d0

ELSEIF (Pe > 2.0d0 ) THEN


!Quadratic Upwind Interpolation for Convection Kinematics (QUICK) Scheme

Urgt = ( U(i,j,k)+U(i,j,k+1) )*0.50d0


Ulft = ( U(i,j,k)+U(i,j,k-1) )*0.50d0

IF (Urgt > 0.0d0 .and. Ulft > 0.0d0) THEN

F1c(i,j,k) = ( Urgt * ( 6.0d0*rho(i,j,k) + 3.0d0*rho(i,j,k+1) -


1.0d0*rho(i,j,k-1) ) - &
Ulft * ( 6.0d0*rho(i,j,k-
1) + 3.0d0*rho(i,j,k) - 1.0d0*rho(i,j,k-2) ) ) * invdrk*jac(k)/8.0d0

F2c(i,j,k) = ( Urgt * ( 6.0d0*rhou(i,j,k) + 3.0d0*rhou(i,j,k+1) -


1.0d0*rhou(i,j,k-1) ) - &
Ulft * ( 6.0d0*rhou(i,j,k-
1) + 3.0d0*rhou(i,j,k) - 1.0d0*rhou(i,j,k-2) ) ) * invdrk*jac(k)/8.0d0

F3c(i,j,k) = ( Urgt * ( 6.0d0*rhov(i,j,k) + 3.0d0*rhov(i,j,k+1) -


1.0d0*rhov(i,j,k-1) ) - &
Ulft * ( 6.0d0*rhov(i,j,k-
1) + 3.0d0*rhov(i,j,k) - 1.0d0*rhov(i,j,k-2) ) ) * invdrk*jac(k)/8.0d0

F4c(i,j,k) = ( Urgt * ( 6.0d0*rhow(i,j,k) + 3.0d0*rhow(i,j,k+1) -


1.0d0*rhow(i,j,k-1) ) - &
Ulft * ( 6.0d0*rhow(i,j,k-
1) + 3.0d0*rhow(i,j,k) - 1.0d0*rhow(i,j,k-2) ) ) * invdrk*jac(k)/8.0d0

F5c(i,j,k) = ( Urgt * ( 6.0d0*rhoh(i,j,k) + 3.0d0*rhoh(i,j,k+1) -


1.0d0*rhoh(i,j,k-1) ) - &
Ulft * ( 6.0d0*rhoh(i,j,k-
1) + 3.0d0*rhoh(i,j,k) - 1.0d0*rhoh(i,j,k-2) ) ) * invdrk*jac(k)/8.0d0
ENDIF

IF (Urgt < 0.0d0 .and. Ulft < 0.0d0) THEN

F1c(i,j,k) = ( Urgt * ( 6.0d0*rho(i,j,k+1) + 3.0d0*rho(i,j,k) -


1.0d0*rho(i,j,k+2) ) - &
Ulft * ( 6.0d0*rho(i,j,k)
+ 3.0d0*rho(i,j,k-1) - 1.0d0*rho(i,j,k+1) ) ) * invdrk*jac(k)/8.0d0

F2c(i,j,k) = ( Urgt * ( 6.0d0*rhou(i,j,k+1) + 3.0d0*rhou(i,j,k) -


1.0d0*rhou(i,j,k+2) ) - &
Ulft * ( 6.0d0*rhou(i,j,k)
+ 3.0d0*rhou(i,j,k-1) - 1.0d0*rhou(i,j,k+1) ) ) * invdrk*jac(k)/8.0d0

F3c(i,j,k) = ( Urgt * ( 6.0d0*rhov(i,j,k+1) + 3.0d0*rhov(i,j,k) -


1.0d0*rhov(i,j,k+2) ) - &
Ulft * ( 6.0d0*rhov(i,j,k)
+ 3.0d0*rhov(i,j,k-1) - 1.0d0*rhov(i,j,k+1) ) ) * invdrk*jac(k)/8.0d0

F4c(i,j,k) = ( Urgt * ( 6.0d0*rhow(i,j,k+1) + 3.0d0*rhow(i,j,k) -


1.0d0*rhow(i,j,k+2) ) - &
Ulft * ( 6.0d0*rhow(i,j,k)
+ 3.0d0*rhow(i,j,k-1) - 1.0d0*rhow(i,j,k+1) ) ) * invdrk*jac(k)/8.0d0

F5c(i,j,k) = ( Urgt * ( 6.0d0*rhoh(i,j,k+1) + 3.0d0*rhoh(i,j,k) -


1.0d0*rhoh(i,j,k+2) ) - &
Ulft * ( 6.0d0*rhoh(i,j,k)
+ 3.0d0*rhoh(i,j,k-1) - 1.0d0*rhoh(i,j,k+1) ) ) * invdrk*jac(k)/8.0d0
ENDIF

IF (Urgt < 0.0d0 .and. Ulft > 0.0d0) THEN

F1c(i,j,k) = ( Urgt * ( 6.0d0*rho(i,j,k+1) + 3.0d0*rho(i,j,k) -


1.0d0*rho(i,j,k+2) ) - &
Ulft * ( 6.0d0*rho(i,j,k-
1) + 3.0d0*rho(i,j,k) - 1.0d0*rho(i,j,k-2) ) ) * invdrk*jac(k)/8.0d0

F2c(i,j,k) = ( Urgt * ( 6.0d0*rhou(i,j,k+1) + 3.0d0*rhou(i,j,k) -


1.0d0*rhou(i,j,k+2) ) - &
Ulft * ( 6.0d0*rhou(i,j,k-
1) + 3.0d0*rhou(i,j,k) - 1.0d0*rhou(i,j,k-2) ) ) * invdrk*jac(k)/8.0d0

F3c(i,j,k) = ( Urgt * ( 6.0d0*rhov(i,j,k+1) + 3.0d0*rhov(i,j,k) -


1.0d0*rhov(i,j,k+2) ) - &
Ulft * ( 6.0d0*rhov(i,j,k-
1) + 3.0d0*rhov(i,j,k) - 1.0d0*rhov(i,j,k-2) ) ) * invdrk*jac(k)/8.0d0

F4c(i,j,k) = ( Urgt * ( 6.0d0*rhow(i,j,k+1) + 3.0d0*rhow(i,j,k) -


1.0d0*rhow(i,j,k+2) ) - &
Ulft * ( 6.0d0*rhow(i,j,k-
1) + 3.0d0*rhow(i,j,k) - 1.0d0*rhow(i,j,k-2) ) ) * invdrk*jac(k)/8.0d0

F5c(i,j,k) = ( Urgt * ( 6.0d0*rhoh(i,j,k+1) + 3.0d0*rhoh(i,j,k) -


1.0d0*rhoh(i,j,k+2) ) - &
Ulft * ( 6.0d0*rhoh(i,j,k-
1) + 3.0d0*rhoh(i,j,k) - 1.0d0*rhoh(i,j,k-2) ) ) * invdrk*jac(k)/8.0d0
ENDIF
IF (Urgt > 0.0d0 .and. Ulft < 0.0d0) THEN

F1c(i,j,k) = ( Urgt * ( 6.0d0*rho(i,j,k) + 3.0d0*rho(i,j,k+1) -


1.0d0*rho(i,j,k-1) ) - &
Ulft * ( 6.0d0*rho(i,j,k)
+ 3.0d0*rho(i,j,k-1) - 1.0d0*rho(i,j,k+1) ) ) * invdrk*jac(k)/8.0d0

F2c(i,j,k) = ( Urgt * ( 6.0d0*rhou(i,j,k) + 3.0d0*rhou(i,j,k+1) -


1.0d0*rhou(i,j,k-1) ) - &
Ulft * ( 6.0d0*rhou(i,j,k)
+ 3.0d0*rhou(i,j,k-1) - 1.0d0*rhou(i,j,k+1) ) ) * invdrk*jac(k)/8.0d0

F3c(i,j,k) = ( Urgt * ( 6.0d0*rhov(i,j,k) + 3.0d0*rhov(i,j,k+1) -


1.0d0*rhov(i,j,k-1) ) - &
Ulft * ( 6.0d0*rhov(i,j,k)
+ 3.0d0*rhov(i,j,k-1) - 1.0d0*rhov(i,j,k+1) ) ) * invdrk*jac(k)/8.0d0

F4c(i,j,k) = ( Urgt * ( 6.0d0*rhow(i,j,k) + 3.0d0*rhow(i,j,k+1) -


1.0d0*rhow(i,j,k-1) ) - &
Ulft * ( 6.0d0*rhow(i,j,k)
+ 3.0d0*rhow(i,j,k-1) - 1.0d0*rhow(i,j,k+1) ) ) * invdrk*jac(k)/8.0d0

F5c(i,j,k) = ( Urgt * ( 6.0d0*rhoh(i,j,k) + 3.0d0*rhoh(i,j,k+1) -


1.0d0*rhoh(i,j,k-1) ) - &
Ulft * ( 6.0d0*rhoh(i,j,k)
+ 3.0d0*rhoh(i,j,k-1) - 1.0d0*rhoh(i,j,k+1) ) ) * invdrk*jac(k)/8.0d0
ENDIF

ELSE

!Fourth Order Central Differencing

F1c(i,j,k) = U(i,j,k) * ( - 1.0d0*rho(i,j,k+2) +


8.0d0*rho(i,j,k+1) - 8.0d0*rho(i,j,k-1) + 1.0d0*rho(i,j,k-2) ) *
invdrk*jac(k)/12.0d0
F2c(i,j,k) = U(i,j,k) * ( - 1.0d0*rhou(i,j,k+2) +
8.0d0*rhou(i,j,k+1) - 8.0d0*rhou(i,j,k-1) + 1.0d0*rhou(i,j,k-2) ) *
invdrk*jac(k)/12.0d0
F3c(i,j,k) = U(i,j,k) * ( - 1.0d0*rhov(i,j,k+2) +
8.0d0*rhov(i,j,k+1) - 8.0d0*rhov(i,j,k-1) + 1.0d0*rhov(i,j,k-2) ) *
invdrk*jac(k)/12.0d0
F4c(i,j,k) = U(i,j,k) * ( - 1.0d0*rhow(i,j,k+2) +
8.0d0*rhow(i,j,k+1) - 8.0d0*rhow(i,j,k-1) + 1.0d0*rhow(i,j,k-2) ) *
invdrk*jac(k)/12.0d0
F5c(i,j,k) = U(i,j,k) * ( - 1.0d0*rhoh(i,j,k+2) +
8.0d0*rhoh(i,j,k+1) - 8.0d0*rhoh(i,j,k-1) + 1.0d0*rhoh(i,j,k-2) ) *
invdrk*jac(k)/12.0d0
ENDIF

!----------------------------------------------------------------------------------
-----------------------------------------------------------------------

Pe = Re*abs(rhov(i,j,k))*x1(k)*dtheta/mu(i,j,k)

IF (Pe > 2.0d0) THEN


!Quadratic Upwind Interpolation for Convection Kinematics (QUICK) Scheme

Vrgt = ( V(i,j,k)+V(i,jp1,k) )*0.50d0


Vlft = ( V(i,j,k)+V(i,jm1,k) )*0.50d0
IF (Vrgt > 0.0d0 .and. Vlft > 0.0d0) THEN

G1c(i,j,k) = ( Vrgt * ( 6.0d0*rho(i,j,k) + 3.0d0*rho(i,jp1,k) -


1.0d0*rho(i,jm1,k) ) - &
Vlft *
( 6.0d0*rho(i,jm1,k) + 3.0d0*rho(i,j,k) - 1.0d0*rho(i,jm2,k) ) ) * invdtheta/8.0d0

G2c(i,j,k) = ( Vrgt * ( 6.0d0*rhou(i,j,k) + 3.0d0*rhou(i,jp1,k) -


1.0d0*rhou(i,jm1,k) ) - &
Vlft *
( 6.0d0*rhou(i,jm1,k) + 3.0d0*rhou(i,j,k) - 1.0d0*rhou(i,jm2,k) ) ) *
invdtheta/8.0d0

G3c(i,j,k) = ( Vrgt * ( 6.0d0*rhov(i,j,k) + 3.0d0*rhov(i,jp1,k) -


1.0d0*rhov(i,jm1,k) ) - &
Vlft *
( 6.0d0*rhov(i,jm1,k) + 3.0d0*rhov(i,j,k) - 1.0d0*rhov(i,jm2,k) ) ) *
invdtheta/8.0d0

G4c(i,j,k) = ( Vrgt * ( 6.0d0*rhow(i,j,k) + 3.0d0*rhow(i,jp1,k) -


1.0d0*rhow(i,jm1,k) ) - &
Vlft *
( 6.0d0*rhow(i,jm1,k) + 3.0d0*rhow(i,j,k) - 1.0d0*rhow(i,jm2,k) ) ) *
invdtheta/8.0d0

G5c(i,j,k) = ( Vrgt * ( 6.0d0*rhoh(i,j,k) + 3.0d0*rhoh(i,jp1,k) -


1.0d0*rhoh(i,jm1,k) ) - &
Vlft *
( 6.0d0*rhoh(i,jm1,k) + 3.0d0*rhoh(i,j,k) - 1.0d0*rhoh(i,jm2,k) ) ) *
invdtheta/8.0d0
ENDIF

IF (Vrgt < 0.0d0 .and. Vlft < 0.0d0) THEN

G1c(i,j,k) = ( Vrgt * ( 6.0d0*rho(i,jp1,k) + 3.0d0*rho(i,j,k) -


1.0d0*rho(i,jp2,k) ) - &
Vlft * ( 6.0d0*rho(i,j,k)
+ 3.0d0*rho(i,jm1,k) - 1.0d0*rho(i,jp1,k) ) ) * invdtheta/8.0d0

G2c(i,j,k) = ( Vrgt * ( 6.0d0*rhou(i,jp1,k) + 3.0d0*rhou(i,j,k) -


1.0d0*rhou(i,jp2,k) ) - &
Vlft * ( 6.0d0*rhou(i,j,k)
+ 3.0d0*rhou(i,jm1,k) - 1.0d0*rhou(i,jp1,k) ) ) * invdtheta/8.0d0

G3c(i,j,k) = ( Vrgt * ( 6.0d0*rhov(i,jp1,k) + 3.0d0*rhov(i,j,k) -


1.0d0*rhov(i,jp2,k) ) - &
Vlft * ( 6.0d0*rhov(i,j,k)
+ 3.0d0*rhov(i,jm1,k) - 1.0d0*rhov(i,jp1,k) ) ) * invdtheta/8.0d0

G4c(i,j,k) = ( Vrgt * ( 6.0d0*rhow(i,jp1,k) + 3.0d0*rhow(i,j,k) -


1.0d0*rhow(i,jp2,k) ) - &
Vlft * ( 6.0d0*rhow(i,j,k)
+ 3.0d0*rhow(i,jm1,k) - 1.0d0*rhow(i,jp1,k) ) ) * invdtheta/8.0d0

G5c(i,j,k) = ( Vrgt * ( 6.0d0*rhoh(i,jp1,k) + 3.0d0*rhoh(i,j,k) -


1.0d0*rhoh(i,jp2,k) ) - &
Vlft * ( 6.0d0*rhoh(i,j,k)
+ 3.0d0*rhoh(i,jm1,k) - 1.0d0*rhoh(i,jp1,k) ) ) * invdtheta/8.0d0
ENDIF

IF (Vrgt < 0.0d0 .and. Vlft > 0.0d0) THEN

G1c(i,j,k) = ( Vrgt * ( 6.0d0*rho(i,jp1,k) + 3.0d0*rho(i,j,k) -


1.0d0*rho(i,jp2,k) ) - &
Vlft *
( 6.0d0*rho(i,jm1,k) + 3.0d0*rho(i,j,k) - 1.0d0*rho(i,jm2,k) ) ) * invdtheta/8.0d0

G2c(i,j,k) = ( Vrgt * ( 6.0d0*rhou(i,jp1,k) + 3.0d0*rhou(i,j,k) -


1.0d0*rhou(i,jp2,k) ) - &
Vlft *
( 6.0d0*rhou(i,jm1,k) + 3.0d0*rhou(i,j,k) - 1.0d0*rhou(i,jm2,k) ) ) *
invdtheta/8.0d0

G3c(i,j,k) = ( Vrgt * ( 6.0d0*rhov(i,jp1,k) + 3.0d0*rhov(i,j,k) -


1.0d0*rhov(i,jp2,k) ) - &
Vlft *
( 6.0d0*rhov(i,jm1,k) + 3.0d0*rhov(i,j,k) - 1.0d0*rhov(i,jm2,k) ) ) *
invdtheta/8.0d0

G4c(i,j,k) = ( Vrgt * ( 6.0d0*rhow(i,jp1,k) + 3.0d0*rhow(i,j,k) -


1.0d0*rhow(i,jp2,k) ) - &
Vlft *
( 6.0d0*rhow(i,jm1,k) + 3.0d0*rhow(i,j,k) - 1.0d0*rhow(i,jm2,k) ) ) *
invdtheta/8.0d0

G5c(i,j,k) = ( Vrgt * ( 6.0d0*rhoh(i,jp1,k) + 3.0d0*rhoh(i,j,k) -


1.0d0*rhoh(i,jp2,k) ) - &
Vlft *
( 6.0d0*rhoh(i,jm1,k) + 3.0d0*rhoh(i,j,k) - 1.0d0*rhoh(i,jm2,k) ) ) *
invdtheta/8.0d0
ENDIF

IF (Vrgt > 0.0d0 .and. Vlft < 0.0d0) THEN

G1c(i,j,k) = ( Vrgt * ( 6.0d0*rho(i,j,k) + 3.0d0*rho(i,jp1,k) -


1.0d0*rho(i,jm1,k) ) - &
Vlft * ( 6.0d0*rho(i,j,k)
+ 3.0d0*rho(i,jm1,k) - 1.0d0*rho(i,jp1,k) ) ) * invdtheta/8.0d0

G2c(i,j,k) = ( Vrgt * ( 6.0d0*rhou(i,j,k) + 3.0d0*rhou(i,jp1,k) -


1.0d0*rhou(i,jm1,k) ) - &
Vlft * ( 6.0d0*rhou(i,j,k)
+ 3.0d0*rhou(i,jm1,k) - 1.0d0*rhou(i,jp1,k) ) ) * invdtheta/8.0d0

G3c(i,j,k) = ( Vrgt * ( 6.0d0*rhov(i,j,k) + 3.0d0*rhov(i,jp1,k) -


1.0d0*rhov(i,jm1,k) ) - &
Vlft * ( 6.0d0*rhov(i,j,k)
+ 3.0d0*rhov(i,jm1,k) - 1.0d0*rhov(i,jp1,k) ) ) * invdtheta/8.0d0

G4c(i,j,k) = ( Vrgt * ( 6.0d0*rhow(i,j,k) + 3.0d0*rhow(i,jp1,k) -


1.0d0*rhow(i,jm1,k) ) - &
Vlft * ( 6.0d0*rhow(i,j,k)
+ 3.0d0*rhow(i,jm1,k) - 1.0d0*rhow(i,jp1,k) ) ) * invdtheta/8.0d0

G5c(i,j,k) = ( Vrgt * ( 6.0d0*rhoh(i,j,k) + 3.0d0*rhoh(i,jp1,k) -


1.0d0*rhoh(i,jm1,k) ) - &
Vlft * ( 6.0d0*rhoh(i,j,k)
+ 3.0d0*rhoh(i,jm1,k) - 1.0d0*rhoh(i,jp1,k) ) ) * invdtheta/8.0d0
ENDIF

ELSE

!Fourth Order Central Differencing

G1c(i,j,k) = V(i,j,k) * ( - 1.0d0*rho(i,jp2,k) +


8.0d0*rho(i,jp1,k) - 8.0d0*rho(i,jm1,k) + 1.0d0*rho(i,jm2,k) ) *
invdtheta/12.0d0
G2c(i,j,k) = V(i,j,k) * ( - 1.0d0*rhou(i,jp2,k) +
8.0d0*rhou(i,jp1,k) - 8.0d0*rhou(i,jm1,k) + 1.0d0*rhou(i,jm2,k) ) *
invdtheta/12.0d0
G3c(i,j,k) = V(i,j,k) * ( - 1.0d0*rhov(i,jp2,k) +
8.0d0*rhov(i,jp1,k) - 8.0d0*rhov(i,jm1,k) + 1.0d0*rhov(i,jm2,k) ) *
invdtheta/12.0d0
G4c(i,j,k) = V(i,j,k) * ( - 1.0d0*rhow(i,jp2,k) +
8.0d0*rhow(i,jp1,k) - 8.0d0*rhow(i,jm1,k) + 1.0d0*rhow(i,jm2,k) ) *
invdtheta/12.0d0
G5c(i,j,k) = V(i,j,k) * ( - 1.0d0*rhoh(i,jp2,k) +
8.0d0*rhoh(i,jp1,k) - 8.0d0*rhoh(i,jm1,k) + 1.0d0*rhoh(i,jm2,k) ) *
invdtheta/12.0d0

ENDIF
!----------------------------------------------------------------------------------
----------------------------------------------------------------------

Pe = Re*abs(rhow(i,j,k))*dz/mu(i,j,k)

IF (Pe > 2.0d0) THEN


!Quadratic Upwind Interpolation for Convection Kinematics (QUICK) Scheme

Wrgt = ( W(i,j,k)+W(ip1,j,k) )*0.50d0


Wlft = ( W(i,j,k)+W(im1,j,k) )*0.50d0

IF (Wrgt > 0.0d0 .and. Wlft > 0.0d0) THEN

H1c(i,j,k) = ( Wrgt * ( 6.0d0*rho(i,j,k) + 3.0d0*rho(ip1,j,k) -


1.0d0*rho(im1,j,k) ) - &
Wlft *
( 6.0d0*rho(im1,j,k) + 3.0d0*rho(i,j,k) - 1.0d0*rho(im2,j,k) ) ) * invdz/8.0d0

H2c(i,j,k) = ( Wrgt * ( 6.0d0*rhou(i,j,k) + 3.0d0*rhou(ip1,j,k) -


1.0d0*rhou(im1,j,k) ) - &
Wlft *
( 6.0d0*rhou(im1,j,k) + 3.0d0*rhou(i,j,k) - 1.0d0*rhou(im2,j,k) ) ) * invdz/8.0d0

H3c(i,j,k) = ( Wrgt * ( 6.0d0*rhov(i,j,k) + 3.0d0*rhov(ip1,j,k) -


1.0d0*rhov(im1,j,k) ) - &
Wlft *
( 6.0d0*rhov(im1,j,k) + 3.0d0*rhov(i,j,k) - 1.0d0*rhov(im2,j,k) ) ) * invdz/8.0d0

H4c(i,j,k) = ( Wrgt * ( 6.0d0*rhow(i,j,k) + 3.0d0*rhow(ip1,j,k) -


1.0d0*rhow(im1,j,k) ) - &
Wlft *
( 6.0d0*rhow(im1,j,k) + 3.0d0*rhow(i,j,k) - 1.0d0*rhow(im2,j,k) ) ) * invdz/8.0d0

H5c(i,j,k) = ( Wrgt * ( 6.0d0*rhoh(i,j,k) + 3.0d0*rhoh(ip1,j,k) -


1.0d0*rhoh(im1,j,k) ) - &
Wlft *
( 6.0d0*rhoh(im1,j,k) + 3.0d0*rhoh(i,j,k) - 1.0d0*rhoh(im2,j,k) ) ) * invdz/8.0d0
ENDIF

IF (Wrgt < 0.0d0 .and. Wlft < 0.0d0) THEN

H1c(i,j,k) = ( Wrgt * ( 6.0d0*rho(ip1,j,k) + 3.0d0*rho(i,j,k) -


1.0d0*rho(ip2,j,k) ) - &
Wlft *
( 6.0d0*rho(i,j,k) + 3.0d0*rho(im1,j,k) - 1.0d0*rho(ip1,j,k) ) ) * invdz/8.0d0

H2c(i,j,k) = ( Wrgt * ( 6.0d0*rhou(ip1,j,k) + 3.0d0*rhou(i,j,k) -


1.0d0*rhou(ip2,j,k) ) - &
Wlft *
( 6.0d0*rhou(i,j,k) + 3.0d0*rhou(im1,j,k) - 1.0d0*rhou(ip1,j,k) ) ) * invdz/8.0d0

H3c(i,j,k) = ( Wrgt * ( 6.0d0*rhov(ip1,j,k) + 3.0d0*rhov(i,j,k) -


1.0d0*rhov(ip2,j,k) ) - &
Wlft *
( 6.0d0*rhov(i,j,k) + 3.0d0*rhov(im1,j,k) - 1.0d0*rhov(ip1,j,k) ) ) * invdz/8.0d0

H4c(i,j,k) = ( Wrgt * ( 6.0d0*rhow(ip1,j,k) + 3.0d0*rhow(i,j,k) -


1.0d0*rhow(ip2,j,k) ) - &
Wlft *
( 6.0d0*rhow(i,j,k) + 3.0d0*rhow(im1,j,k) - 1.0d0*rhow(ip1,j,k) ) ) * invdz/8.0d0

H5c(i,j,k) = ( Wrgt * ( 6.0d0*rhoh(ip1,j,k) + 3.0d0*rhoh(i,j,k) -


1.0d0*rhoh(ip2,j,k) ) - &
Wlft *
( 6.0d0*rhoh(i,j,k) + 3.0d0*rhoh(im1,j,k) - 1.0d0*rhoh(ip1,j,k) ) ) * invdz/8.0d0
ENDIF

IF (Wrgt < 0.0d0 .and. Wlft > 0.0d0) THEN

H1c(i,j,k) = ( Wrgt * ( 6.0d0*rho(ip1,j,k) + 3.0d0*rho(i,j,k) -


1.0d0*rho(ip2,j,k) ) - &
Wlft *
( 6.0d0*rho(im1,j,k) + 3.0d0*rho(i,j,k) - 1.0d0*rho(im2,j,k) ) ) * invdz/8.0d0

H2c(i,j,k) = ( Wrgt * ( 6.0d0*rhou(ip1,j,k) + 3.0d0*rhou(i,j,k) -


1.0d0*rhou(ip2,j,k) ) - &
Wlft *
( 6.0d0*rhou(im1,j,k) + 3.0d0*rhou(i,j,k) - 1.0d0*rhou(im2,j,k) ) ) * invdz/8.0d0

H3c(i,j,k) = ( Wrgt * ( 6.0d0*rhov(ip1,j,k) + 3.0d0*rhov(i,j,k) -


1.0d0*rhov(ip2,j,k) ) - &
Wlft *
( 6.0d0*rhov(im1,j,k) + 3.0d0*rhov(i,j,k) - 1.0d0*rhov(im2,j,k) ) ) * invdz/8.0d0

H4c(i,j,k) = ( Wrgt * ( 6.0d0*rhow(ip1,j,k) + 3.0d0*rhow(i,j,k) -


1.0d0*rhow(ip2,j,k) ) - &
Wlft *
( 6.0d0*rhow(im1,j,k) + 3.0d0*rhow(i,j,k) - 1.0d0*rhow(im2,j,k) ) ) * invdz/8.0d0

H5c(i,j,k) = ( Wrgt * ( 6.0d0*rhoh(ip1,j,k) + 3.0d0*rhoh(i,j,k) -


1.0d0*rhoh(ip2,j,k) ) - &
Wlft *
( 6.0d0*rhoh(im1,j,k) + 3.0d0*rhoh(i,j,k) - 1.0d0*rhoh(im2,j,k) ) ) * invdz/8.0d0
ENDIF
IF (Wrgt > 0.0d0 .and. Wlft < 0.0d0) THEN

H1c(i,j,k) = ( Wrgt * ( 6.0d0*rho(i,j,k) + 3.0d0*rho(ip1,j,k) -


1.0d0*rho(im1,j,k) ) - &
Wlft *
( 6.0d0*rho(i,j,k) + 3.0d0*rho(im1,j,k) - 1.0d0*rho(ip1,j,k) ) ) * invdz/8.0d0

H2c(i,j,k) = ( Wrgt * ( 6.0d0*rhou(i,j,k) + 3.0d0*rhou(ip1,j,k) -


1.0d0*rhou(im1,j,k) ) - &
Wlft *
( 6.0d0*rhou(i,j,k) + 3.0d0*rhou(im1,j,k) - 1.0d0*rhou(ip1,j,k) ) ) * invdz/8.0d0

H3c(i,j,k) = ( Wrgt * ( 6.0d0*rhov(i,j,k) + 3.0d0*rhov(ip1,j,k) -


1.0d0*rhov(im1,j,k) ) - &
Wlft *
( 6.0d0*rhov(i,j,k) + 3.0d0*rhov(im1,j,k) - 1.0d0*rhov(ip1,j,k) ) ) * invdz/8.0d0

H4c(i,j,k) = ( Wrgt * ( 6.0d0*rhow(i,j,k) + 3.0d0*rhow(ip1,j,k) -


1.0d0*rhow(im1,j,k) ) - &
Wlft *
( 6.0d0*rhow(i,j,k) + 3.0d0*rhow(im1,j,k) - 1.0d0*rhow(ip1,j,k) ) ) * invdz/8.0d0

H5c(i,j,k) = ( Wrgt * ( 6.0d0*rhoh(i,j,k) + 3.0d0*rhoh(ip1,j,k) -


1.0d0*rhoh(im1,j,k) ) - &
Wlft *
( 6.0d0*rhoh(i,j,k) + 3.0d0*rhoh(im1,j,k) - 1.0d0*rhoh(ip1,j,k) ) ) * invdz/8.0d0
ENDIF

ELSE

!Fourth Order Central Differencing

H1c(i,j,k) = W(i,j,k) * ( - 1.0d0*rho(ip2,j,k) +


8.0d0*rho(ip1,j,k) - 8.0d0*rho(im1,j,k) + 1.0d0*rho(im2,j,k) ) * invdz/12.0d0
H2c(i,j,k) = W(i,j,k) * ( - 1.0d0*rhou(ip2,j,k) +
8.0d0*rhou(ip1,j,k) - 8.0d0*rhou(im1,j,k) + 1.0d0*rhou(im2,j,k) ) * invdz/12.0d0
H3c(i,j,k) = W(i,j,k) * ( - 1.0d0*rhov(ip2,j,k) +
8.0d0*rhov(ip1,j,k) - 8.0d0*rhov(im1,j,k) + 1.0d0*rhov(im2,j,k) ) * invdz/12.0d0
H4c(i,j,k) = W(i,j,k) * ( - 1.0d0*rhow(ip2,j,k) +
8.0d0*rhow(ip1,j,k) - 8.0d0*rhow(im1,j,k) + 1.0d0*rhow(im2,j,k) ) * invdz/12.0d0
H5c(i,j,k) = W(i,j,k) * ( - 1.0d0*rhoh(ip2,j,k) +
8.0d0*rhoh(ip1,j,k) - 8.0d0*rhoh(im1,j,k) + 1.0d0*rhoh(im2,j,k) ) * invdz/12.0d0

ENDIF

ENDDO
ENDDO
ENDDO

!
===================================================================================
====================================================================
!Defining diffusive terms in the interior domain
!
===================================================================================
====================================================================
DO k=2,nX-1
DO j=2,nY-1
DO i=2,nZ-1
!----------------------------------------------------------------
---------------------------------------------------------
im1 = i-1
IF (i.eq.2) im1 = nZ-1
im2 = im1-1
IF (i.eq.3) im2 = nZ-1
!----------------------------------------------------------------
---------------------------------------------------------
jm1 = j-1
IF (j.eq.2) jm1 = nY-1
jm2 = jm1-1
IF (j.eq.3) jm2 = nY-1
!----------------------------------------------------------------
---------------------------------------------------------
ip1 = i+1
IF (i.eq.nZ-1) ip1 = 2
ip2 = ip1+1
IF (i.eq.nZ-2) ip2 = 2
!----------------------------------------------------------------
---------------------------------------------------------
jp1 = j+1
IF (j.eq.nY-1) jp1 = 2
jp2 = jp1+1
IF (j.eq.nY-2) jp2 = 2

!----------------------------------------------------------------------------------
---------------------------------------------------------------------
!Defining divV, Shear stresses, Reynolds number and other parameters
!----------------------------------------------------------------------------------
---------------------------------------------------------------------
divV(i,j,k) = ( ((U(i,j,k+1) - U(i,j,k-1))*invdrk*jac(k))
+ U(i,j,k)*invr(k)*2.0d0 + ((V(i,jp1,k) - V(i,jm1,k))*invdtheta*invr(k)) + &

((W(ip1,j,k)-W(im1,j,k))*invdz) )*0.5d0

tourr(i,j,k) = mu(i,j,k)*((U(i,j,k+1) - U(i,j,k-


1))*invdrk*jac(k))

toutt(i,j,k) = mu(i,j,k)*( ((V(i,jp1,k) -


V(i,jm1,k))*invdtheta) + U(i,j,k)*invr(k)*2.0d0 )

touzz(i,j,k) = mu(i,j,k)*((W(ip1,j,k) -
W(im1,j,k))*invdz)

tourt(i,j,k) = mu(i,j,k)*( ((U(i,jp1,k) -


U(i,jm1,k))*invdtheta*invr(k)) + ((V(i,j,k+1) - V(i,j,k-1))*invdrk*jac(k)) - &
V(i,j,k)*invr(k)*2.0d0 )
*0.5d0

tourz(i,j,k) = mu(i,j,k)*( ((W(i,j,k+1) - W(i,j,k-


1))*invdrk*jac(k)) - ((U(ip1,j,k) - U(im1,j,k))*invdz) )*0.5d0

touzt(i,j,k) = mu(i,j,k)*( ((W(i,jp1,k) -


W(i,jm1,k))*invdtheta*invr(k)) - ((V(ip1,j,k) - V(im1,j,k))*invdz) )*0.5d0

!----------------------------------------------------------------------------------
---------------------------------------------------------------------------
F2d(i,j,k) = p(i,j,k) +
( 2.0d0*mu(i,j,k)*divV(i,j,k)/3.0d0 - tourr(i,j,k) )/Re

F3d(i,j,k) = -tourt(i,j,k)/Re

F4d(i,j,k) = -tourz(i,j,k)/Re

F5d(i,j,k) = -gama*kt(i,j,k)*( T(i,j,k+1) - T(i,j,k-1)


)*0.5d0*invdrk*jac(k)/(Re*Pr) + gama*(gama-1.0d0)*(M**2) * &
(
2.0d0*mu(i,j,k)*U(i,j,k)*divV(i,j,k)/3.0d0 - ( U(i,j,k)*tourr(i,j,k) +
V(i,j,k)*toutt(i,j,k) + W(i,j,k)*touzz(i,j,k) ) )/Re

!----------------------------------------------------------------------------------
---------------------------------------------------------------------------

G2d(i,j,k) = -tourt(i,j,k)/Re

G3d(i,j,k) = p(i,j,k) +
( 2.0d0*mu(i,j,k)*divV(i,j,k)/3.0d0 - toutt(i,j,k) )/Re

G4d(i,j,k) = -touzt(i,j,k)/Re

G5d(i,j,k) = -gama*kt(i,j,k)*( T(i,jp1,k) - T(i,jm1,k)


)*0.50d0*invr(k)*invdtheta/(Re*Pr) + gama*(gama-1.0d0)*(M**2) * &
(
2.0d0*mu(i,j,k)*V(i,j,k)*divV(i,j,k)/3.0d0 - ( U(i,j,k)*tourr(i,j,k) +
V(i,j,k)*toutt(i,j,k) + W(i,j,k)*touzz(i,j,k) ) )/Re

!----------------------------------------------------------------------------------
---------------------------------------------------------------------------

H2d(i,j,k) = -tourz(i,j,k)/Re

H3d(i,j,k) = -touzt(i,j,k)/Re

H4d(i,j,k) = p(i,j,k) +
( 2.0d0*mu(i,j,k)*divV(i,j,k)/3.0d0 - touzz(i,j,k) )/Re

H5d(i,j,k) = -gama*kt(i,j,k)*( T(ip1,j,k) - T(im1,j,k)


)*0.50d0*invdz/(Re*Pr) + gama*(gama-1.0d0)*(M**2) * &
(
2.0d0*mu(i,j,k)*W(i,j,k)*divV(i,j,k)/3.0d0 - ( U(i,j,k)*tourr(i,j,k) +
V(i,j,k)*toutt(i,j,k) + W(i,j,k)*touzz(i,j,k) ) )/Re

ENDDO
ENDDO
ENDDO

!----------------------------------------------------------------------------------
-------------------------------------------------------------------------
!Defining diffusive terms on the inner cylinder wall
!----------------------------------------------------------------------------------
-------------------------------------------------------------------------
!IF() THEN
DO j=2,nY-1
DO i=2,nZ-1
!----------------------------------------------------------------
---------------------------------------------------------
im1 = i-1
IF (i.eq.2) im1 = nZ-1
im2 = im1-1
IF (i.eq.3) im2 = nZ-1
!----------------------------------------------------------------
---------------------------------------------------------
jm1 = j-1
IF (j.eq.2) jm1 = nY-1
jm2 = jm1-1
IF (j.eq.3) jm2 = nY-1
!----------------------------------------------------------------
---------------------------------------------------------
ip1 = i+1
IF (i.eq.nZ-1) ip1 = 2
ip2 = ip1+1
IF (i.eq.nZ-2) ip2 = 2
!----------------------------------------------------------------
---------------------------------------------------------
jp1 = j+1
IF (j.eq.nY-1) jp1 = 2
jp2 = jp1+1
IF (j.eq.nY-2) jp2 = 2
!----------------------------------------------------------------
---------------------------------------------------------

F2d(i,j,1) = p(i,j,1) + mu(i,j,1) * ( ( U(i,j,2) -


U(i,j,1) )*(-4.0d0)/df(1) + U(i,j,1)*4.0d0*invr(1) + ( V(i,jp1,1) - V(i,jm1,1) )
*invr(1)*invdtheta + &
( W(ip1,j,1) -
W(im1,j,1) )*invdz ) / (3.0d0*Re)

F3d(i,j,1) = mu(i,j,1) * ( ( U(i,jp1,1) -


U(i,jm1,1) ) * 0.50d0*invdtheta*invr(1) + ( v(i,j,2) - V(i,j,1) )/df(1) -
V(i,j,1)*invr(1) )/Re

F4d(i,j,1) = -mu(i,j,1) * ( ( W(i,j,2) -


W(i,j,1) )/df(1) + ( U(ip1,j,1) - U(im1,j,1) )*2.0d0*invdz )/Re

F5d(i,j,1) = -gama*kt(i,j,1)*( T(i,j,2) - T(i,j,1) )/


(df(1)*Re*Pr) + gama*(gama-1.0d0)*(M**2) * &
(
-4.0d0*U(i,j,1)*( U(i,j,2) - U(i,j,1) )/(3.0d0*df(1)) - V(i,j,1)*( U(i,jp1,1) -
U(i,jm1,1) )*0.50d0*invdtheta*invr(1) - &

W(i,j,1)*( U(ip1,j,1) - U(im1,j,1) )*0.50d0*invdz +


4.0d0*(U(i,j,1)*U(i,j,1))*invr(1)/3.0d0 - &

V(i,j,1)*( V(i,j,2) - V(i,j,1) )/df(1) + U(i,j,1)*( V(i,jp1,1) - V(i,jm1,1) )


*invdtheta*invr(1)/3.0d0 + (V(i,j,1)*V(i,j,1))*invr(1) - &

W(i,j,1)*( W(i,j,2) - W(i,j,1) )/df(1) )*mu(i,j,1)/Re


ENDDO
ENDDO
!ENDIF

!----------------------------------------------------------------------------------
--------------------------------------------------------------------------
!Defining diffusive terms on the outer cylinder wall
!----------------------------------------------------------------------------------
--------------------------------------------------------------------------

!IF() THEN
DO j=2,nY-1
DO i=2,nZ-1
!----------------------------------------------------------------
---------------------------------------------------------
im1 = i-1
IF (i.eq.2) im1 = nZ-1
im2 = im1-1
IF (i.eq.3) im2 = nZ-1
!----------------------------------------------------------------
---------------------------------------------------------
jm1 = j-1
IF (j.eq.2) jm1 = nY-1
jm2 = jm1-1
IF (j.eq.3) jm2 = nY-1
!----------------------------------------------------------------
---------------------------------------------------------
ip1 = i+1
IF (i.eq.nZ-1) ip1 = 2
ip2 = ip1+1
IF (i.eq.nZ-2) ip2 = 2
!----------------------------------------------------------------
---------------------------------------------------------
jp1 = j+1
IF (j.eq.nY-1) jp1 = 2
jp2 = jp1+1
IF (j.eq.nY-2) jp2 = 2
!----------------------------------------------------------------
---------------------------------------------------------

F2d(i,j,nX) = p(i,j,nX) + mu(i,j,nX) * ( ( U(i,j,nX) -


U(i,j,nX-1) )*(-4.0d0)/db(1) + U(i,j,nX)*4.0d0*invr(nX) + ( V(i,jp1,nX) -
V(i,jm1,nX) )*invr(nX)*invdtheta + &
( W(ip1,j,nX) -
W(im1,j,nX) )*invdz ) / (3.0d0*Re)

F3d(i,j,nX) = mu(i,j,nX) * ( ( U(i,jp1,nX) -


U(i,jm1,nX) ) * 0.50d0*invdtheta*invr(nX) + ( V(i,j,nX) - V(i,j,nX-1) )/db(1) -
V(i,j,nX)*invr(nX) )/Re

F4d(i,j,nX) = -mu(i,j,nX) * ( ( W(i,j,nX) - W(i,j,nX-1)


)/db(1) + ( U(ip1,j,nX) - U(im1,j,nX) )*2.0d0*invdz )/Re

F5d(i,j,nX) = -gama*kt(i,j,nX)*( T(i,j,nX) - T(i,j,nX-


1) )/(db(1)*Re*Pr) + gama*(gama-1.0d0)*(M**2) * &
(
-4.0d0*U(i,j,nX)*( U(i,j,nX) - U(i,j,nX-1) )/(3.0d0*db(1)) -
V(i,j,nX)*( U(i,jp1,nX) - U(i,jm1,nX) )*0.50d0*invdtheta*invr(nX) - &

W(i,j,nX)*( U(ip1,j,nX) - U(im1,j,nX) )*0.50d0*invdz +


4.0d0*(U(i,j,nX)*U(i,j,nX))*invr(nX)/3.0d0 - &

V(i,j,nX)*( V(i,j,nX) - V(i,j,nX-1) )/db(1) + U(i,j,nX)*( V(i,jp1,nX) -


V(i,jm1,nX) )*invdtheta*invr(nX)/3.0d0 + (V(i,j,nX)*V(i,j,nX))*invr(nX) - &
W(i,j,nX)*( W(i,j,nX) - W(i,j,nX-1) )/db(1) )*mu(i,j,nX)/Re
ENDDO
ENDDO
!ENDIF

!
===================================================================================
=========================================================================
!Discretization of Diffusive Terms
!
===================================================================================
=========================================================================
DO k=2,nX-1
DO j=2,nY-1
DO i=2,nZ-1
!----------------------------------------------------------------
---------------------------------------------------------
im1 = i-1
IF (i.eq.2) im1 = nZ-1
im2 = im1-1
IF (i.eq.3) im2 = nZ-1
!----------------------------------------------------------------
---------------------------------------------------------
jm1 = j-1
IF (j.eq.2) jm1 = nY-1
jm2 = jm1-1
IF (j.eq.3) jm2 = nY-1
!----------------------------------------------------------------
---------------------------------------------------------
ip1 = i+1
IF (i.eq.nZ-1) ip1 = 2
ip2 = ip1+1
IF (i.eq.nZ-2) ip2 = 2
!----------------------------------------------------------------
---------------------------------------------------------
jp1 = j+1
IF (j.eq.nY-1) jp1 = 2
jp2 = jp1+1
IF (j.eq.nY-2) jp2 = 2
!----------------------------------------------------------------
---------------------------------------------------------

F2dd(i,j,k) = ( F2d(i,j,k+1) - F2d(i,j,k-1) )


*0.50d0*invdrk*jac(k)
F3dd(i,j,k) = ( F3d(i,j,k+1) - F3d(i,j,k-1) )
*0.50d0*invdrk*jac(k)
F4dd(i,j,k) = ( F4d(i,j,k+1) - F4d(i,j,k-1) )
*0.50d0*invdrk*jac(k)
F5dd(i,j,k) = ( F5d(i,j,k+1) - F5d(i,j,k-1) )
*0.50d0*invdrk*jac(k)

G2dd(i,j,k) = ( G2d(i,jp1,k) - G2d(i,jm1,k) )


*0.50d0*invdtheta
G3dd(i,j,k) = ( G3d(i,jp1,k) - G3d(i,jm1,k) )
*0.50d0*invdtheta
G4dd(i,j,k) = ( G4d(i,jp1,k) - G4d(i,jm1,k) )
*0.50d0*invdtheta
G5dd(i,j,k) = ( G5d(i,jp1,k) - G5d(i,jm1,k) )
*0.50d0*invdtheta
H2dd(i,j,k) = ( H2d(ip1,j,k) - H2d(im1,j,k) )
*0.50d0*invdz
H3dd(i,j,k) = ( H3d(ip1,j,k) - H3d(im1,j,k) )
*0.50d0*invdz
H4dd(i,j,k) = ( H4d(ip1,j,k) - H4d(im1,j,k) )
*0.50d0*invdz
H5dd(i,j,k) = ( H5d(ip1,j,k) - H5d(im1,j,k) )
*0.50d0*invdz

ENDDO
ENDDO
ENDDO
!----------------------------------------------------------------------------------
------------------------------------------------------------------------
! Defining Source Terms and convective terms
!----------------------------------------------------------------------------------
------------------------------------------------------------------------
DO k=2,nX-1
DO j=2,nY-1
DO i=2,nZ-1
!----------------------------------------------------------------
---------------------------------------------------------
im1 = i-1
IF (i.eq.2) im1 = nZ-1
im2 = im1-1
IF (i.eq.3) im2 = nZ-1
!----------------------------------------------------------------
---------------------------------------------------------
jm1 = j-1
IF (j.eq.2) jm1 = nY-1
jm2 = jm1-1
IF (j.eq.3) jm2 = nY-1
!----------------------------------------------------------------
---------------------------------------------------------
ip1 = i+1
IF (i.eq.nZ-1) ip1 = 2
ip2 = ip1+1
IF (i.eq.nZ-2) ip2 = 2
!----------------------------------------------------------------
---------------------------------------------------------
jp1 = j+1
IF (j.eq.nY-1) jp1 = 2
jp2 = jp1+1
IF (j.eq.nY-2) jp2 = 2
!----------------------------------------------------------------
---------------------------------------------------------
J2(i,j,k) = rho(i,j,k)*Br/(Fr**2) +
rho(i,j,k)*(V(i,j,k)**2)*invr(k) - toutt(i,j,k)*invr(k)/Re + p(i,j,k)*invr(k) +
2.0d0*mu(i,j,k)*divV(i,j,k)/(3.0d0*Re)
J3(i,j,k) = rho(i,j,k)*Bt/(Fr**2) +
rho(i,j,k)*(U(i,j,k)*V(i,j,k))*invr(k) + tourt(i,j,k)*invr(k)/Re
J5(i,j,k) = gama*(gama-1.0d0)*(M**2) *
( rho(i,j,k)*Br*U(i,j,k) + rho(i,j,k)*Bt*V(i,j,k) )/(Fr**2)

Fc1(i,j,k) = rhou(i,j,k)
Fc2(i,j,k) = U(i,j,k) * rhou(i,j,k)
Fc3(i,j,k) = V(i,j,k) * rhou(i,j,k)
Fc4(i,j,k) = W(i,j,k) * rhou(i,j,k)
Fc5(i,j,k) = U(i,j,k) * rhoh(i,j,k)

Gc1(i,j,k) = rhov(i,j,k)
Gc2(i,j,k) = U(i,j,k) * rhov(i,j,k)
Gc3(i,j,k) = V(i,j,k) * rhov(i,j,k)
Gc4(i,j,k) = W(i,j,k) * rhov(i,j,k)
Gc5(i,j,k) = V(i,j,k) * rhoh(i,j,k)

Hc1(i,j,k) = rhow(i,j,k)
Hc2(i,j,k) = U(i,j,k) * rhow(i,j,k)
Hc3(i,j,k) = V(i,j,k) * rhow(i,j,k)
Hc4(i,j,k) = W(i,j,k) * rhow(i,j,k)
Hc5(i,j,k) = W(i,j,k) * rhoh(i,j,k)
ENDDO
ENDDO
ENDDO
!
===================================================================================
======================================================================
! Defining Residuals
!
===================================================================================
======================================================================
DO k=2,nX-1
DO j=2,nY-1
DO i=2,nZ-1
R(k,j,i,1) = -( Fc1(i,j,k) +
F1c(i,j,k) + G1c(i,j,k) + x1(k)*H1c(i,j,k) )
R(k,j,i,2) = x1(k)*J2(i,j,k)-( Fc2(i,j,k) +
F2dd(i,j,k) + F2c(i,j,k) + G2c(i,j,k) + G2dd(i,j,k) + x1(k)*H2c(i,j,k) -
x1(k)*H2dd(i,j,k) )
R(k,j,i,3) = x1(k)*J3(i,j,k)-( Fc3(i,j,k) +
F3dd(i,j,k) + F3c(i,j,k) + G3c(i,j,k) + G3dd(i,j,k) + x1(k)*H3c(i,j,k) -
x1(k)*H3dd(i,j,k) )
R(k,j,i,4) = -( Fc4(i,j,k) +
F4dd(i,j,k) + F4c(i,j,k) + G4c(i,j,k) + G4dd(i,j,k) + x1(k)*H4c(i,j,k) -
x1(k)*H4dd(i,j,k) )
R(k,j,i,5) = x1(k)*J5(i,j,k)-( Fc5(i,j,k) +
F5dd(i,j,k) + F5c(i,j,k) + G5c(i,j,k) + G5dd(i,j,k) + x1(k)*H5c(i,j,k) -
x1(k)*H5dd(i,j,k) )

!----------------------------------------------------------------------------------
---------------------------------------------------------------------------------

! Applying Runge-Kutta Method of Order 2


!----------------------------------------------------------------------------------
---------------------------------------------------------------------------------

IF (iter.eq.1) THEN
Rold_0(i,j,k,1) = R(i,j,k,1)
Rold_0(i,j,k,2) = R(i,j,k,2)
Rold_0(i,j,k,3) = R(i,j,k,3)
Rold_0(i,j,k,4) = R(i,j,k,4)
Rold_0(i,j,k,5) = R(i,j,k,5)

rho(i,j,k) = rho_old(i,j,k) +
dt*RKb(1)*Rold_0(i,j,k,1)
rhou(i,j,k) = rhou_old(i,j,k) +
dt*RKb(1)*Rold_0(i,j,k,2)
rhov(i,j,k) = rhou_old(i,j,k) +
dt*RKb(1)*Rold_0(i,j,k,3)
rhow(i,j,k) = rhou_old(i,j,k) +
dt*RKb(1)*Rold_0(i,j,k,4)
rhoh(i,j,k) = rhou_old(i,j,k) +
dt*RKb(1)*Rold_0(i,j,k,5)
ENDIF

IF (iter.eq.2) THEN
Rold_1(i,j,k,1) = R(i,j,k,1)
Rold_1(i,j,k,2) = R(i,j,k,2)
Rold_1(i,j,k,3) = R(i,j,k,3)
Rold_1(i,j,k,4) = R(i,j,k,4)
Rold_1(i,j,k,5) = R(i,j,k,5)

rho(i,j,k) = rho_old(i,j,k) +
dt*( RKa(1)*Rold_0(i,j,k,1) + RKa(2)*Rold_1(i,j,k,1) )
rhou(i,j,k) = rhou_old(i,j,k) +
dt*( RKa(1)*Rold_0(i,j,k,2) + RKa(2)*Rold_1(i,j,k,2) )
rhov(i,j,k) = rhou_old(i,j,k) +
dt*( RKa(1)*Rold_0(i,j,k,3) + RKa(2)*Rold_1(i,j,k,3) )
rhow(i,j,k) = rhou_old(i,j,k) +
dt*( RKa(1)*Rold_0(i,j,k,4) + RKa(2)*Rold_1(i,j,k,4) )
rhoh(i,j,k) = rhou_old(i,j,k) +
dt*( RKa(1)*Rold_0(i,j,k,5) + RKa(2)*Rold_1(i,j,k,5) )
ENDIF
ENDDO
ENDDO
ENDDO

!
===================================================================================
===========================================================================
! Boundary Conditions
!
===================================================================================
===========================================================================
rho(1,:,:) = rho(nZ-1,:,:)
rhou(1,:,:) = rhou(nZ-1,:,:)
rhov(1,:,:) = rhov(nZ-1,:,:)
rhow(1,:,:) = rhow(nZ-1,:,:)
rhoh(1,:,:) = rhoh(nZ-1,:,:)

rho(nZ,:,:) = rho(2,:,:)
rhou(nZ,:,:) = rhou(2,:,:)
rhov(nZ,:,:) = rhov(2,:,:)
rhow(nZ,:,:) = rhow(2,:,:)
rhoh(nZ,:,:) = rhoh(2,:,:)

rho(:,1,:) = rho(:,nY-1,:)
rhou(:,1,:) = rhou(:,nY-1,:)
rhov(:,1,:) = rhov(:,nY-1,:)
rhow(:,1,:) = rhow(:,nY-1,:)
rhoh(:,1,:) = rhoh(:,nY-1,:)

rho(:,nY,:) = rho(:,2,:)
rhou(:,nY,:) = rhou(:,2,:)
rhov(:,nY,:) = rhov(:,2,:)
rhow(:,nY,:) = rhow(:,2,:)
rhoh(:,nY,:) = rhoh(:,2,:)

! inner cylinder
U(1:nZ,1:nY,1) = 0.0d0
V(1:nZ,1:nY,1) = 1.0d0
W(1:nZ,1:nY,1) = 0.0d0
T(1:nZ,1:nY,1) = 1.0d0
! outer cylinder
U(1:nZ,1:nY,nX) = 0.0d0
V(1:nZ,1:nY,nX) = 0.0d0
W(1:nZ,1:nY,nX) = 0.0d0
T(1:nZ,1:nY,nX) = 1.0d0

!----------------------------------------------------------------------------------
----------------------------------------------------------
! Obtaining and Updating Primitive Variables
!----------------------------------------------------------------------------------
----------------------------------------------------------
do k=1,nX
do j=1,nY
do i=2,nZ-1

if(rho(i,j,k) == 0.0d0) then


print*, rho(i,j,k),i,j,k
stop
endif
enddo
enddo
enddo

U(2:nZ-1,:,:) = rhou(2:nZ-1,:,:)/rho(2:nZ-1,:,:)
V(2:nZ-1,:,:) = rhov(2:nZ-1,:,:)/rho(2:nZ-1,:,:)
W(2:nZ-1,:,:) = rhow(2:nZ-1,:,:)/rho(2:nZ-1,:,:)
H(2:nZ-1,:,:) = rhoh(2:nZ-1,:,:)/rho(2:nZ-1,:,:)

T(2:nZ-1,:,:) = H(2:nZ-1,:,:) - ( gama*(gama-


1.0d0)*M*M*0.5d0*( U(2:nZ-1,:,:)*U(2:nZ-1,:,:) + &
V(2:nZ-1,:,:)*V(2:nZ-
1,:,:) + W(2:nZ-1,:,:)*W(2:nZ-1,:,:) ) )

P(2:nZ-1,:,:) = ( rho(2:nZ-1,:,:)*T(2:nZ-1,:,:)/(gama*M*M) )

!
===================================================================================
===========================================================================
! Updating Pressure on the boundaries using momentum equation in radial
direction
!
===================================================================================
===========================================================================
!----------------------------------------------------------------------------------
----------------------------------------------------------------------------
! Inner cylinder wall
!----------------------------------------------------------------------------------
----------------------------------------------------------------------------
DO j=2,nY-1
DO i=2,nZ-1
!----------------------------------------------------------------
---------------------------------------------------------
im1 = i-1
IF (i.eq.2) im1 = nZ-1
im2 = im1-1
IF (i.eq.3) im2 = nZ-1
!----------------------------------------------------------------
---------------------------------------------------------
jm1 = j-1
IF (j.eq.2) jm1 = nY-1
jm2 = jm1-1
IF (j.eq.3) jm2 = nY-1
!----------------------------------------------------------------
---------------------------------------------------------
ip1 = i+1
IF (i.eq.nZ-1) ip1 = 2
ip2 = ip1+1
IF (i.eq.nZ-2) ip2 = 2
!----------------------------------------------------------------
---------------------------------------------------------
jp1 = j+1
IF (j.eq.nY-1) jp1 = 2
jp2 = jp1+1
IF (j.eq.nY-2) jp2 = 2
!----------------------------------------------------------------
---------------------------------------------------------

Fluxi(i,j,1) = -rho(i,j,1)*(x1(1)*Br/
(Fr**2)+V(i,j,1)**2) + ( (mu(i,j,2)+mu(i,j,1))*(U(i,j,2)-U(i,j,1))*x1(1)/
(3.0d0*Re*df(1)) ) + &

x1(2)*( rho(i,j,2)*(U(i,j,2)**2) - 2.0d0*(mu(i,j,3)+mu(i,j,2))*(U(i,j,3)-


U(i,j,2))/(3.0d0*Re*df(2)) ) - &

x1(1)*( rho(i,j,1)*(U(i,j,1)**2) - 2.0d0*(mu(i,j,2)+mu(i,j,1))*(U(i,j,2)-


U(i,j,1))/(3.0d0*Re*df(1)) )

p(i,j,1) = ( Fluxi(i,j,1)*df(1) +
p(i,j,2)*x1(2) ) / (df(1) + x1(1))
ENDDO
ENDDO
!----------------------------------------------------------------------------------
----------------------------------------------------------------------------
! Outer cylinder wall
!----------------------------------------------------------------------------------
----------------------------------------------------------------------------
DO j=2,nY-1
DO i=2,nZ-1
!----------------------------------------------------------------
---------------------------------------------------------
im1 = i-1
IF (i.eq.2) im1 = nZ-1
im2 = im1-1
IF (i.eq.3) im2 = nZ-1
!----------------------------------------------------------------
---------------------------------------------------------
jm1 = j-1
IF (j.eq.2) jm1 = nY-1
jm2 = jm1-1
IF (j.eq.3) jm2 = nY-1
!----------------------------------------------------------------
---------------------------------------------------------
ip1 = i+1
IF (i.eq.nZ-1) ip1 = 2
ip2 = ip1+1
IF (i.eq.nZ-2) ip2 = 2
!----------------------------------------------------------------
---------------------------------------------------------
jp1 = j+1
IF (j.eq.nY-1) jp1 = 2
jp2 = jp1+1
IF (j.eq.nY-2) jp2 = 2
!----------------------------------------------------------------
---------------------------------------------------------

Fluxo(i,j,nX) = -rho(i,j,nX)*(x1(nX)*Br/
(Fr**2)+V(i,j,nX)**2) + ( (mu(i,j,nX)+mu(i,j,nX-1))*(U(i,j,nX)-U(i,j,nX-1))*x1(nX)/
(3.0d0*Re*db(1)) ) + &

x1(nX)*( rho(i,j,nX)*(U(i,j,nX)**2) - 2.0d0*(mu(i,j,nX)+mu(i,j,nX-


1))*(U(i,j,nX)-U(i,j,nX-1))/(3.0d0*Re*db(1)) ) - &
x1(nX-
1)*( rho(i,j,nX-1)*(U(i,j,nX-1)**2) - 2.0d0*(mu(i,j,nX-1)+mu(i,j,nX-2))*(U(i,j,nX-
1)-U(i,j,nX-2))/(3.0d0*Re*db(2)) )

P(i,j,nX) = ( Fluxo(i,j,nX)*db(1) - P(i,j,nX-


1)*x1(nX-1) ) / (db(1) - x1(nX))

ENDDO
ENDDO

P(1,:,:) = P(nZ-1,:,:)
P(nZ,:,:) = P(2,:,:)

P(:,1,:) = P(:,nY-1,:)
P(:,nY,:) = P(:,2,:)

rho(:,:,1) = gama*M*M*P(:,:,1)/T(:,:,1)
rho(:,:,nX) = gama*M*M*P(:,:,nX)/T(:,:,nX)

Vsound(:,:,:) = dsqrt( (T(:,:,:)) )

ENDDO !time sub-loop

!
===================================================================================
===================================================================
! KINETIC ENERGY
!
===================================================================================
===================================================================

IF (MOD(nstep,1).eq.0) THEN

Energy = 0.0d0
DO k=2,nX-1
DO j=2,nY-1
DO i=2,nZ-1
Energy = Energy + U(i,j,k)**2.0d0 + V(i,j,k)**2.0d0 +
W(i,j,k)**2.0d0
ENDDO
ENDDO
ENDDO

Energy = Energy/dble( (nZ-2)*(nY-2)*(nX-2) )

OPEN(2,file='Kineticenergy.dat',access='append')
WRITE(2,112) time,Energy
CLOSE(2)

ENDIF

!
===================================================================================
===================================================================
! NON-PHYSICAL VALUES
!
===================================================================================
===================================================================

DO k=1,nX
DO j=1,nY
DO i=1,nZ
IF (rho(i,j,k).lt.0.0d0) write(*,*)
nstep,time,i,j,k,rho(i,j,k),U(i,j,k),V(i,j,k),W(i,j,k),H(i,j,k),T(i,j,k),P(i,j,k)
IF (T(i,j,k).lt.0.0d0) write(*,*)
nstep,time,i,j,k,rho(i,j,k),U(i,j,k),V(i,j,k),W(i,j,k),H(i,j,k),T(i,j,k),P(i,j,k)

IF (rho(i,j,k).lt.0.0d0) then
PRINT*, "rho negative"
STOP
ENDIF

IF (T(i,j,k).lt.0.0d0) then
PRINT*, "T negative"
STOP
ENDIF

ENDDO
ENDDO
ENDDO

!
===================================================================================
===================================================================
! Terminal Output
!
===================================================================================
===================================================================
WRITE(*,*)nstep,time,rho(nZ/2,nY/2,nX/2),rhou(nZ/2,nY/2,nX/2),rhov(nZ/2,nY/2,nX/2),
rhow(nZ/2,nY/2,nX/2)

ENDDO
!
===================================================================================
===================================================================
! FORMATS
!
===================================================================================
===================================================================
01 format(8X,F20.10,I9,1X)
02 format(7X,I3,3X,I3,3X,I6)
03 format(A,F20.10,I9,A)
04 format(A,I3,A,I3,A,I3,A)
21 format((1X,F14.7,1X,I9,1X,F14.7))
22 format((F12.5,1X,I9,3(1X,F7.4)))
23 format(A,F6.3,2(1X,A))
93 format(3(1X,F10.6),7(1X,E22.15))
94 format(3(1X,I3),7(1X,E22.15))
95 format(3(1X,F15.7))
99 format(6(1X,F15.7))
104 format(1(1X,F15.7))
105 format(9(1X,F15.7))
106 format(7(1X,F15.7))
107 format(9(1X,F15.7))
111 format(7(1X,F15.7))
112 format(2(1X,F15.7))
05 format(A,I3,A,I3,A,I3,A)
97 format(3(1X,F10.6),3(1X,E22.15))

END PROGRAM COMPRESSIBLE_ANNULI

You might also like