1 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv! 2 ! Subroutine name: CALC_RRATE_DES ! 3 ! ! 4 ! Author: J.Musser Date: 16-May-11 ! 5 ! ! 6 ! Purpose: This routine manages gas-solid reactions for the continuum ! 7 ! phase. Reactions are calculated from the DEM and the continuum ! 8 ! variables are integrated over the solids time step. These values ! 9 ! are then applied to the continuum phase by distributing them over ! 10 ! the full fluid time step. This ensures that mass is conserved ! 11 ! between the TFM/DEM and observes the variable time step within the ! 12 ! TFM. ! 13 ! ! 14 ! Although mass is conserved, the two models (TFM/DEM) are out of ! 15 ! sync. The general approach is as follows. ! 16 ! ! 17 ! Time: T0 ! 18 ! TFM-A) Hydrodynamcics (gas phase) [stationary solids] ! 19 ! TFM-B) Homogeneous (gas phase) reactions ! 20 ! TFM-C) < Do Nothing > ! 21 ! TFM-C) Apply gas/DEM reactions from T0 to TFM << [out of sync] ! 22 ! TFM-D) Updated TFM variables: Time (T0 --> T1) ! 23 ! DEM-E) Particle/Particle/Wall collisions ! 24 ! DEM-F) Hydrodynamics [constant gas field] ! 25 ! DEM-G) Calculate heterogeneous (gas/DEM) reactions ! 26 ! DEM-H) Update DEM variables: Time (T0 --> T0.1) ! 27 ! * Repeat DEM-[E-H] until T0.x=T1 (T0 -> T0.1 -> T0.2 -> ... -> T1) ! 28 ! ! 29 ! TFM/DEM are at the same physical time (T1). ! 30 ! ! 31 ! Time: T1 ! 32 ! TFM-A) Hydrodynamcics (gas phase) [stationary solids] ! 33 ! TFM-B) Homogeneous (gas phase) reactions ! 34 ! TFM-C) Apply gas/DEM reactions from T0 to TFM << [out of sync] ! 35 ! ... ! 36 ! ! 37 ! ! 38 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^! 39 SUBROUTINE CALC_RRATE_DES(CLEAR) 40 41 USE compar 42 USE des_rxns 43 USE discretelement 44 USE energy 45 USE fldvar 46 USE geometry 47 USE interpolation 48 USE param1 49 USE physprop 50 USE run 51 USE rxns 52 USE usr 53 54 IMPLICIT NONE 55 56 ! Passed Variables 57 !---------------------------------------------------------------------// 58 LOGICAL, INTENT(IN) :: CLEAR 59 60 ! Local variables 61 !---------------------------------------------------------------------// 62 DOUBLE PRECISION DEM_to_TFM 63 INTEGER IJK 64 65 66 ! Initialize global storage arrays to zero 67 !---------------------------------------------------------------------// 68 IF(CLEAR) THEN 69 SUM_R_G(:) = ZERO 70 HOR_G(:) = ZERO 71 R_GP(:,:) = ZERO 72 ROX_GC(:,:) = ZERO 73 R_PHASE(:,:) = ZERO 74 ENDIF 75 76 77 DO IJK = IJKSTART3, IJKEND3 78 DEM_to_TFM = DT * VOL(IJK) 79 R_gp(IJK,:) = R_gp(IJK,:) + & 80 DES_R_gp(IJK,:)/DEM_to_TFM 81 WHERE(X_g(IJK,:) > SMALL_NUMBER) 82 RoX_gc(IJK,:) = RoX_gc(IJK,:) + & 83 DES_R_gc(IJK,:) / (DEM_to_TFM * X_g(IJK,:)) 84 ELSEWHERE 85 RoX_gc(IJK,:) = RoX_gc(IJK,:) + 1.0d-9/DEM_to_TFM 86 ENDWHERE 87 R_PHASE(IJK,:) = R_PHASE(IJK,:) + & 88 DES_R_PHASE(IJK,:) / DEM_to_TFM 89 SUM_R_g(IJK) = SUM_R_g(IJK) + & 90 DES_SUM_R_g(IJK) / DEM_to_TFM 91 HOR_g(IJK) = HOR_g(IJK) + & 92 DES_HOR_g(IJK) / DEM_to_TFM 93 ENDDO 94 95 RETURN 96 97 98 END SUBROUTINE CALC_RRATE_DES 99 100 101 102 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv! 103 ! Subroutine name: CALC_RRATE_DES ! 104 ! ! 105 ! Purpose: This routine manages gas-solid reactions for the continuum ! 106 ! phase. ! 107 ! ! 108 ! Author: J.Musser Date: 16-May-11 ! 109 ! ! 110 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^! 111 SUBROUTINE ZERO_RRATE_DES 112 113 USE des_rxns 114 115 IMPLICIT NONE 116 117 DES_R_gp(:,:) = ZERO 118 DES_R_gc(:,:) = ZERO 119 DES_R_PHASE(:,:) = ZERO 120 DES_HOR_G(:) = ZERO 121 DES_SUM_R_g(:) = ZERO 122 123 RETURN 124 END SUBROUTINE ZERO_RRATE_DES 125