Professional Documents
Culture Documents
Linux
!ifort /fpe:0 /CB /traceback !Windows
PROGRAM COMPRESSIBLE_ANNULI
IMPLICIT NONE
INTEGER, PARAMETER :: nX =
61 ,&
nY = 91 ,&
nZ = 133 ,&
maxiter = 10 ,&
maxstep = 500000
Re = 100.0d0 ,&
Pr = 0.72d0 ,&
M = 0.3d0 ,&
Br = 0.0d0 ,&
Fr = 1.0d0 ,&
Bt = 0.0d0
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
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)
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)
ELSE
!----------------------------------------------------------------------------------
-----------------------------------------------------------------------
Pe = Re*abs(rhov(i,j,k))*x1(k)*dtheta/mu(i,j,k)
ELSE
ENDIF
!----------------------------------------------------------------------------------
----------------------------------------------------------------------
Pe = Re*abs(rhow(i,j,k))*dz/mu(i,j,k)
ELSE
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
touzz(i,j,k) = mu(i,j,k)*((W(ip1,j,k) -
W(im1,j,k))*invdz)
!----------------------------------------------------------------------------------
---------------------------------------------------------------------------
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
!----------------------------------------------------------------------------------
---------------------------------------------------------------------------
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
!----------------------------------------------------------------------------------
---------------------------------------------------------------------------
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
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
!----------------------------------------------------------------
---------------------------------------------------------
!----------------------------------------------------------------------------------
--------------------------------------------------------------------------
!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
!----------------------------------------------------------------
---------------------------------------------------------
!
===================================================================================
=========================================================================
!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
!----------------------------------------------------------------
---------------------------------------------------------
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) )
!----------------------------------------------------------------------------------
---------------------------------------------------------------------------------
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
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,:,:)
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)) ) + &
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)) ) + &
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)
!
===================================================================================
===================================================================
! 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
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))