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