1 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC 2 ! C 3 ! Subroutine: SOLID_DRAG C 4 ! Purpose: Accounting for the equal and opposite drag force on a C 5 ! continuous solids phase due to discrete solid particles by C 6 ! introducing the drag as a source term. Face centered. C 7 ! C 8 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C 9 SUBROUTINE SOLID_DRAG_U(A_M, B_M) 10 11 !----------------------------------------------- 12 ! Modules 13 !----------------------------------------------- 14 USE param 15 USE param1 16 USE matrix 17 USE geometry 18 USE physprop 19 USE indices 20 USE compar 21 USE discretelement 22 USE fun_avg 23 USE functions 24 25 IMPLICIT NONE 26 !----------------------------------------------- 27 ! Dummy Arguments 28 !----------------------------------------------- 29 ! Septadiagonal matrix A_m 30 DOUBLE PRECISION :: A_M(DIMENSION_3, -3:3, 0:DIMENSION_M) 31 ! Vector b_m 32 DOUBLE PRECISION :: B_M(DIMENSION_3, 0:DIMENSION_M) 33 !----------------------------------------------- 34 ! Local Variables 35 !----------------------------------------------- 36 ! Indices 37 INTEGER :: IJK, IJKE, I 38 ! Solids phase indices 39 INTEGER :: M 40 !----------------------------------------------- 41 42 ! currently no difference between interpolated and non-interpolated 43 ! implementation of solid-solid drag 44 45 DO M = 1, MMAX 46 DO IJK = IJKSTART3, IJKEND3 47 IF(FLUID_AT(IJK)) THEN 48 49 I = I_OF(IJK) 50 IJKE = EAST_OF(IJK) 51 52 A_M(IJK,0,M) = A_M(IJK,0,M) - VOL_U(IJK) * & 53 AVG_X(SDRAG_AM(IJK,M), SDRAG_AM(IJKE,M), I) 54 55 B_M(IJK,M) = B_M(IJK,M) - VOL_U(IJK) * & 56 AVG_X(SDRAG_BM(IJK,1,M), SDRAG_BM(IJKE,1,M), I) 57 58 ENDIF ! end if (fluid_at(ijk)) 59 ENDDO ! end do (ijk=ijkstart3,ijkend3) 60 ENDDO ! end do (cm=1,mmax) 61 62 63 RETURN 64 END SUBROUTINE SOLID_DRAG_U 65 66 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC 67 ! C 68 ! Subroutine: SOLID_DRAG C 69 ! Purpose: Accounting for the equal and opposite drag force on a C 70 ! continuous solids phase due to discrete solid particles by C 71 ! introducing the drag as a source term. Face centered. C 72 ! C 73 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C 74 75 SUBROUTINE SOLID_DRAG_V(A_M, B_M) 76 77 !----------------------------------------------- 78 ! Modules 79 !----------------------------------------------- 80 USE param 81 USE param1 82 USE matrix 83 USE geometry 84 USE physprop 85 USE indices 86 USE compar 87 USE discretelement 88 USE fun_avg 89 USE functions 90 91 IMPLICIT NONE 92 !----------------------------------------------- 93 ! Dummy Arguments 94 !----------------------------------------------- 95 ! Septadiagonal matrix A_m 96 DOUBLE PRECISION :: A_M(DIMENSION_3, -3:3, 0:DIMENSION_M) 97 ! Vector b_m 98 DOUBLE PRECISION :: B_M(DIMENSION_3, 0:DIMENSION_M) 99 !----------------------------------------------- 100 ! Local Variables 101 !----------------------------------------------- 102 ! Indices 103 INTEGER :: IJK, IJKN, J 104 ! Solids phase indices 105 INTEGER :: M 106 107 DO M = 1, MMAX 108 DO IJK = IJKSTART3, IJKEND3 109 IF(FLUID_AT(IJK)) THEN 110 J = J_OF(IJK) 111 IJKN = NORTH_OF(IJK) 112 113 A_M(IJK,0,M) = A_M(IJK,0,M) - VOL_V(IJK) * & 114 AVG_Y(SDRAG_AM(IJK,M), SDRAG_AM(IJKN,M), J) 115 116 B_M(IJK,M) = B_M(IJK,M) - VOL_V(IJK) * & 117 AVG_Y(SDRAG_BM(IJK,2,M), SDRAG_BM(IJKN,2,M), J) 118 119 ENDIF ! end if (fluid_at(ijk)) 120 ENDDO ! end do (ijk=ijkstart3,ijkend3) 121 ENDDO ! end do (cm=1,mmax) 122 123 124 RETURN 125 END SUBROUTINE SOLID_DRAG_V 126 127 128 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC 129 ! C 130 ! Subroutine: SOLID_DRAG_W C 131 ! Purpose: Accounting for the equal and opposite drag force on a C 132 ! continuous solids phase due to discrete solid particles by C 133 ! introducing the drag as a source term. Face centered. C 134 ! C 135 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C 136 137 SUBROUTINE SOLID_DRAG_W(A_M, B_M) 138 139 !----------------------------------------------- 140 ! Modules 141 !----------------------------------------------- 142 USE param 143 USE param1 144 USE matrix 145 USE geometry 146 USE physprop 147 USE indices 148 USE compar 149 USE discretelement 150 USE fun_avg 151 USE functions 152 153 IMPLICIT NONE 154 !----------------------------------------------- 155 ! Dummy Arguments 156 !----------------------------------------------- 157 ! Septadiagonal matrix A_m 158 DOUBLE PRECISION :: A_M(DIMENSION_3, -3:3, 0:DIMENSION_M) 159 ! Vector b_m 160 DOUBLE PRECISION :: B_M(DIMENSION_3, 0:DIMENSION_M) 161 !----------------------------------------------- 162 ! Local Variables 163 !----------------------------------------------- 164 ! Indices 165 INTEGER :: IJK, IJKT, K 166 ! Solids phase indices 167 INTEGER :: M 168 169 170 DO M = 1, MMAX 171 DO IJK = IJKSTART3, IJKEND3 172 IF(FLUID_AT(IJK)) THEN 173 IJKT = TOP_OF(IJK) 174 K = K_OF(IJK) 175 176 A_M(IJK,0,M) = A_M(IJK,0,M) + VOL_W(IJK) * & 177 AVG_Z(SDRAG_AM(IJK,M), SDRAG_AM(IJKT,M), K) 178 B_M(IJK,M) = B_M(IJK,M) + VOL_W(IJK) * & 179 AVG_Z(SDRAG_BM(IJK,3,M), SDRAG_BM(IJKT,3,M), K) 180 181 ENDIF ! end if (fluid_at(ijk)) 182 ENDDO ! end do (ijk=ijkstart3,ijkend3) 183 ENDDO ! end do (cm=1,mmax) 184 185 186 RETURN 187 END SUBROUTINE SOLID_DRAG_W 188