MFIX  2016-1
cn_extrapol.f
Go to the documentation of this file.
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 (:)
double precision, dimension(:,:), allocatable v_s
Definition: fldvar_mod.f:105
double precision, dimension(:,:), allocatable v_so
Definition: fldvar_mod.f:108
double precision, dimension(:,:), allocatable trd_s_c
Definition: trace_mod.f:6
integer ijkend3
Definition: compar_mod.f:80
double precision, dimension(:), allocatable ep_g
Definition: fldvar_mod.f:15
double precision, dimension(:,:,:), allocatable x_so
Definition: fldvar_mod.f:84
double precision, dimension(:,:), allocatable w_s
Definition: fldvar_mod.f:117
logical, dimension(0:dim_m) species_eq
Definition: run_mod.f:115
double precision, dimension(:), allocatable t_g
Definition: fldvar_mod.f:63
double precision, dimension(:,:), allocatable scalar
Definition: fldvar_mod.f:155
double precision, dimension(:), allocatable ep_go
Definition: fldvar_mod.f:23
double precision, dimension(:), allocatable v_go
Definition: fldvar_mod.f:102
double precision, dimension(:,:), allocatable t_so
Definition: fldvar_mod.f:72
double precision, dimension(:), allocatable t_go
Definition: fldvar_mod.f:69
double precision, dimension(:), allocatable u_go
Definition: fldvar_mod.f:90
double precision, dimension(:,:), allocatable u_s
Definition: fldvar_mod.f:93
double precision, dimension(:,:), allocatable scalaro
Definition: fldvar_mod.f:158
double precision, dimension(:,:), allocatable theta_mo
Definition: fldvar_mod.f:152
integer mmax
Definition: physprop_mod.f:19
double precision, dimension(:,:), allocatable trd_s_co
Definition: trace_mod.f:12
double precision, dimension(:,:,:), allocatable x_s
Definition: fldvar_mod.f:78
double precision, dimension(:,:), allocatable t_s
Definition: fldvar_mod.f:66
double precision, dimension(:,:), allocatable x_g
Definition: fldvar_mod.f:75
double precision, dimension(:,:), allocatable theta_m
Definition: fldvar_mod.f:149
double precision, dimension(:), allocatable v_g
Definition: fldvar_mod.f:99
double precision, dimension(:), allocatable w_g
Definition: fldvar_mod.f:111
double precision, dimension(:,:), allocatable u_so
Definition: fldvar_mod.f:96
double precision, dimension(:,:), allocatable rop_so
Definition: fldvar_mod.f:54
Definition: run_mod.f:13
double precision, dimension(:,:), allocatable w_so
Definition: fldvar_mod.f:120
double precision, dimension(:), allocatable w_go
Definition: fldvar_mod.f:114
Definition: param_mod.f:2
integer, dimension(0:dim_m) nmax
Definition: physprop_mod.f:119
subroutine cn_extrapol
Definition: cn_extrapol.f:48
double precision, dimension(:), allocatable rop_go
Definition: fldvar_mod.f:41
logical energy_eq
Definition: run_mod.f:100
double precision, dimension(:,:), allocatable x_go
Definition: fldvar_mod.f:81
integer ijkstart3
Definition: compar_mod.f:80
double precision, dimension(:), allocatable u_g
Definition: fldvar_mod.f:87
integer nscalar
Definition: scalars_mod.f:7
double precision, dimension(:,:), allocatable rop_s
Definition: fldvar_mod.f:51
Definition: trace_mod.f:1
logical granular_energy
Definition: run_mod.f:112
double precision, dimension(:), allocatable ro_g
Definition: fldvar_mod.f:32
double precision, dimension(:), allocatable rop_g
Definition: fldvar_mod.f:38
double precision, dimension(:), allocatable ro_go
Definition: fldvar_mod.f:35