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