File: N:\mfix\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 scales
58           USE constant
59           USE physprop
60           USE fldvar
61           USE scalars
62           USE trace
63           USE run
64           USE geometry
65           USE indices
66           USE compar
67           USE mpi_utility
68           USE functions
69           IMPLICIT NONE
70     !-----------------------------------------------
71     !   G l o b a l   P a r a m e t e r s
72     !-----------------------------------------------
73     !-----------------------------------------------
74     !   L o c a l   P a r a m e t e r s
75     !-----------------------------------------------
76     !-----------------------------------------------
77     !   L o c a l   V a r i a b l e s
78     !-----------------------------------------------
79     !
80     !                    Indices
81           INTEGER :: M, IJK
82     !-----------------------------------------------
83     !
84     !!!$omp    parallel do private(IJK)
85           DO ijk = IJKSTART3, IJKEND3
86     !          IF(.NOT.IS_ON_myPE_OWNS(I_OF(IJK), J_OF(IJK), K_OF(IJK))) CYCLE
87               EP_G(ijk)   = 2.*EP_G(ijk) - EP_GO(ijk)
88     !AE TIME Pressure is not postprocessed/calculated in the current implementation
89     !          P_G(ijk)    = 2.*P_G(ijk)  - P_GO(ijk)
90     !          P_STAR(ijk) = 2.*P_STAR(ijk) - P_STARO(ijk)
91               RO_G(ijk)   = 2.*RO_G(ijk) - RO_GO(ijk)
92               ROP_G(ijk)  = 2.*ROP_G(ijk)- ROP_GO(ijk)
93               U_G(ijk) = 2.*U_G(ijk) - U_GO(ijk)
94               V_G(ijk) = 2.*V_G(ijk) - V_GO(ijk)
95               W_G(ijk) = 2.*W_G(ijk) - W_GO(ijk)
96               IF (ENERGY_EQ) T_G(ijk) = 2.*T_G(ijk) - T_GO(ijk)
97     
98     !AE TIME Update P_g with state equation based on extrapolated ro_g, T_g
99     !          EOSG = UNSCALE(PG)*MW/(GAS_CONST*TG)
100     !          IF (.NOT.WALL_AT(IJK)) THEN
101     !             P_G(ijk) = ((RO_G(ijk)*(GAS_CONST*T_G(ijk))/MW_MIX_G(IJK))- P_ref)/P_scale
102     !             P_G(ijk) = ((RO_G(ijk)*(GAS_CONST*T_G(ijk))/MW_MIX_G(IJK)))
103     !         ENDIF
104     
105               IF (SPECIES_EQ(0)) THEN
106                 IF (NMAX(0) > 0) THEN
107                   X_G(ijk,:NMAX(0)) = 2.*X_G(ijk,:NMAX(0)) - X_GO(ijk,:NMAX(0))
108                 ENDIF
109               ENDIF
110     
111               IF (NScalar > 0) THEN
112                 Scalar(ijk,:NScalar) = 2.*Scalar(ijk,:NScalar) - ScalarO(ijk,:NScalar)
113               ENDIF
114     
115               DO M = 1, MMAX
116                 ROP_S(ijk,M) = 2.*ROP_S(ijk,M) - ROP_SO(ijk,M)
117                 IF (ENERGY_EQ) T_S(ijk,M) = 2.*T_S(ijk,M) - T_SO(ijk,M)
118                 IF (GRANULAR_ENERGY) THEN
119                   THETA_M(ijk,M) = 2.*THETA_M(ijk,M) - THETA_MO(ijk,M)
120                   TRD_S_C(ijk,M) = 2.*TRD_S_C(ijk,M) - TRD_S_CO(ijk,M)
121                 ENDIF
122                 U_S(ijk,M) = 2.*U_S(ijk,M) - U_SO(ijk,M)
123                 V_S(ijk,M) = 2.*V_S(ijk,M) - V_SO(ijk,M)
124                 W_S(ijk,M) = 2.*W_S(ijk,M) - W_SO(ijk,M)
125                 IF (SPECIES_EQ(M)) THEN
126                   IF (NMAX(M) > 0) THEN
127                     X_S(ijk,M,:NMAX(M)) = 2.*X_S(ijk,M,:NMAX(M)) - X_SO(ijk,M,:NMAX(M))
128                   ENDIF
129                 ENDIF
130               END DO
131     
132     
133           END DO
134     
135     
136           RETURN
137           END SUBROUTINE CN_EXTRAPOL
138     
139     !// Comments on the modifications for DMP version implementation
140     !// 120 Replaced the index for initialization: (:IJKMAX2) to just (:)
141