File: /nfs/home/0/users/jenkins/mfix.git/model/cn_extrapol.f

1     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
2     !                                                                      C
3     !  Module name: CN_EXTRAPOL                                            C
4     !                                                                      C
5     !  Purpose: Performs the explicit extrapolation phase when             C
6     !           Crank-Nicholson based second order accurate time           C
7     !           integration is activated (CN_ON = TRUE)                    C
8     !                                                                      C
9     !           Make sure dt is set to dt/2 when CN_ON=T                   C
10     !                                                                      C
11     !  Author: Aeolus Research, Inc. (A.Gel)             Date: APR-30-01   C
12     !                                                                      C
13     !  Literature/Document References:                                     C
14     !                                                                      C
15     !  Variables referenced: ROP_g, EP_g, ROP_s, IJKMAX2, MMAX, U_s, V_s,  C
16     !                        W_s                                           C
17     !                                                                      C
18     !  Variables modified: 19 field variables are time integrated
19     !                      EP_g , EP_go  : Void fraction at t & t-dt time  C
20     !                      P_G , P_go    : Gas pressure at t & t-dt time   C
21     !                      P_star,P_staro: Solids pressure that maintains  C
22     !                                      EP_g >= EP_star                 C
23     !                      RO_g , RO_go  : Gas density                     C
24     !                      ROP_g , ROP_go: Macroscopic gas density         C
25     !                      U_g , U_go    : x-component of gas velocity     C
26     !                      V_g , V_go    : y-component of gas velocity     C
27     !                      W_g , W_go    : z-component of gas velocity     C
28     !                      T_g , T_go    : Gas phase temperature           C
29     !                      X_g , X_go    : Gas species mass fraction       C
30     !                      Scalar,Scalaro: User-defined Scalars            C
31     !                      ROP_s , ROP_so: Macroscopic density of solids   C
32     !                                      phases                          C
33     !                      T_s , T_so    : Solid phase temperature         C
34     !                      THETA_m,THETA_mo: Granular temperature of m^th  C
35     !                                        phase                         C
36     !                      trD_S_C, trD_S_Co: trace of D_s                 C
37     !                      U_s , U_so    : x-component of solid velocity   C
38     !                      V_s , V_so    : y-component of solid velocity   C
39     !                      W_s , W_so    : z-component of solid velocity   C
40     !                      X_s , X_so    : Solid species mass fraction     C
41     !                                                                      C
42     !                                                                      C
43     !  Local variables: NONE                                               C
44     !                                                                      C
45     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
46     !
47           SUBROUTINE CN_EXTRAPOL
48     !...Translated by Pacific-Sierra Research VAST-90 2.06G5  12:17:31  12/09/98
49     !...Switches: -xf
50     !
51     !-----------------------------------------------
52     !   M o d u l e s
53     !-----------------------------------------------
54           USE param
55           USE param1
56           USE parallel
57           USE matrix
58           USE scales
59           USE constant
60           USE physprop
61           USE fldvar
62           USE scalars
63           USE trace
64           USE run
65           USE geometry
66           USE indices
67           USE compar
68           USE mpi_utility
69           USE functions
70           IMPLICIT NONE
71     !-----------------------------------------------
72     !   G l o b a l   P a r a m e t e r s
73     !-----------------------------------------------
74     !-----------------------------------------------
75     !   L o c a l   P a r a m e t e r s
76     !-----------------------------------------------
77     !-----------------------------------------------
78     !   L o c a l   V a r i a b l e s
79     !-----------------------------------------------
80     !
81     !                    Indices
82           INTEGER :: M, IJK
83     !-----------------------------------------------
84     !
85     !!!$omp    parallel do private(IJK)
86           DO ijk = IJKSTART3, IJKEND3
87     !          IF(.NOT.IS_ON_myPE_OWNS(I_OF(IJK), J_OF(IJK), K_OF(IJK))) CYCLE
88               EP_G(ijk)   = 2.*EP_G(ijk) - EP_GO(ijk)
89     !AE TIME Pressure is not postprocessed/calculated in the current implementation
90     !          P_G(ijk)    = 2.*P_G(ijk)  - P_GO(ijk)
91     !          P_STAR(ijk) = 2.*P_STAR(ijk) - P_STARO(ijk)
92               RO_G(ijk)   = 2.*RO_G(ijk) - RO_GO(ijk)
93               ROP_G(ijk)  = 2.*ROP_G(ijk)- ROP_GO(ijk)
94               U_G(ijk) = 2.*U_G(ijk) - U_GO(ijk)
95               V_G(ijk) = 2.*V_G(ijk) - V_GO(ijk)
96               W_G(ijk) = 2.*W_G(ijk) - W_GO(ijk)
97               IF (ENERGY_EQ) T_G(ijk) = 2.*T_G(ijk) - T_GO(ijk)
98     
99     !AE TIME Update P_g with state equation based on extrapolated ro_g, T_g
100     !          EOSG = UNSCALE(PG)*MW/(GAS_CONST*TG)
101     !          IF (.NOT.WALL_AT(IJK)) THEN
102     !             P_G(ijk) = ((RO_G(ijk)*(GAS_CONST*T_G(ijk))/MW_MIX_G(IJK))- P_ref)/P_scale
103     !             P_G(ijk) = ((RO_G(ijk)*(GAS_CONST*T_G(ijk))/MW_MIX_G(IJK)))
104     !         ENDIF
105     
106               IF (SPECIES_EQ(0)) THEN
107                 IF (NMAX(0) > 0) THEN
108                   X_G(ijk,:NMAX(0)) = 2.*X_G(ijk,:NMAX(0)) - X_GO(ijk,:NMAX(0))
109                 ENDIF
110               ENDIF
111     
112               IF (NScalar > 0) THEN
113                 Scalar(ijk,:NScalar) = 2.*Scalar(ijk,:NScalar) - ScalarO(ijk,:NScalar)
114               ENDIF
115     
116               DO M = 1, MMAX
117                 ROP_S(ijk,M) = 2.*ROP_S(ijk,M) - ROP_SO(ijk,M)
118                 IF (ENERGY_EQ) T_S(ijk,M) = 2.*T_S(ijk,M) - T_SO(ijk,M)
119                 IF (GRANULAR_ENERGY) THEN
120                   THETA_M(ijk,M) = 2.*THETA_M(ijk,M) - THETA_MO(ijk,M)
121                   TRD_S_C(ijk,M) = 2.*TRD_S_C(ijk,M) - TRD_S_CO(ijk,M)
122                 ENDIF
123                 U_S(ijk,M) = 2.*U_S(ijk,M) - U_SO(ijk,M)
124                 V_S(ijk,M) = 2.*V_S(ijk,M) - V_SO(ijk,M)
125                 W_S(ijk,M) = 2.*W_S(ijk,M) - W_SO(ijk,M)
126                 IF (SPECIES_EQ(M)) THEN
127                   IF (NMAX(M) > 0) THEN
128                     X_S(ijk,M,:NMAX(M)) = 2.*X_S(ijk,M,:NMAX(M)) - X_SO(ijk,M,:NMAX(M))
129                   ENDIF
130                 ENDIF
131               END DO
132     
133     
134           END DO
135     
136     
137           RETURN
138           END SUBROUTINE CN_EXTRAPOL
139     
140     !// Comments on the modifications for DMP version implementation
141     !// 120 Replaced the index for initialization: (:IJKMAX2) to just (:)
142