MFIX  2016-1
source_rop_g.f
Go to the documentation of this file.
1 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
2 ! C
3 ! Subroutine: SOURCE_ROP_g C
4 ! Purpose: Determine source terms for continuity equation. C
5 ! C
6 ! Notes: The off-diagonal coefficients are positive. The center C
7 ! coefficient and the source vector are negative. C
8 ! See conv_rop_g for additional details. C
9 ! C
10 ! Author: M. Syamlal Date: 2 -JUL-96 C
11 ! Reviewer: Date: C
12 ! C
13 ! Literature/Document References: C
14 ! Variables referenced: C
15 ! Variables modified: C
16 ! Local variables: C
17 ! C
18 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
19 
20  SUBROUTINE source_rop_g(A_M, B_M)
21 
22 !-----------------------------------------------
23 ! Modules
24 !-----------------------------------------------
25  USE param
26  USE param1
27  USE parallel
28  USE fldvar
29  USE rxns
30  USE run
31  USE geometry
32  USE indices
33  USE pgcor
34  USE compar
35  USE functions
36  IMPLICIT NONE
37 !-----------------------------------------------
38 ! Dummy arguments
39 !-----------------------------------------------
40 ! Septadiagonal matrix A_m
41  DOUBLE PRECISION, INTENT(INOUT) :: A_m(dimension_3, -3:3, 0:dimension_m)
42 ! Vector b_m
43  DOUBLE PRECISION, INTENT(INOUT) :: B_m(dimension_3, 0:dimension_m)
44 !-----------------------------------------------
45 ! Local variables
46 !-----------------------------------------------
47 ! DEL dot V
48  DOUBLE PRECISION :: DEL_V
49 ! Mass source
50  DOUBLE PRECISION :: Src
51 ! Indices
52  INTEGER :: I, J, K, IJK, IMJK, IJMK, IJKM
53 ! error message
54  CHARACTER(LEN=80) :: LINE
55 
56 !-----------------------------------------------
57 
58 !!$omp parallel do private( I, J, K, IJK, IMJK, IJMK, IJKM, DEL_V, &
59 !!$omp& Src, LINE) &
60 !!$omp& schedule(static)
61  DO ijk = ijkstart3, ijkend3
62  IF (fluid_at(ijk) .AND. phase_4_p_g(ijk)/=0) THEN
63  i = i_of(ijk)
64  j = j_of(ijk)
65  k = k_of(ijk)
66  imjk = im_of(ijk)
67  ijmk = jm_of(ijk)
68  ijkm = km_of(ijk)
69 
70  del_v = u_g(ijk)*ayz(ijk) - u_g(imjk)*ayz(imjk) + &
71  v_g(ijk)*axz(ijk) - v_g(ijmk)*axz(ijmk) + &
72  w_g(ijk)*axy(ijk) - w_g(ijkm)*axy(ijkm)
73 
74  IF (rop_g(ijk) > zero) THEN
75  src = vol(ijk)*zmax((-sum_r_g(ijk)))/rop_g(ijk)
76  ELSE
77  src = zero
78  ENDIF
79 
80  a_m(ijk,0,0) = -(a_m(ijk,east,0)+a_m(ijk,west,0)+a_m(ijk,north,0)+&
81  a_m(ijk,south,0)+a_m(ijk,top,0)+a_m(ijk,bottom,0)+&
82  vol(ijk)*odt+zmax(del_v)+src)
83  b_m(ijk,0) = -(rop_go(ijk)*vol(ijk)*odt+&
84  zmax((-del_v))*rop_g(ijk)+&
85  zmax(sum_r_g(ijk))*vol(ijk))
86 
87  IF (abs(a_m(ijk,0,0)) < small_number) THEN
88  IF (abs(b_m(ijk,0)) < small_number) THEN
89  a_m(ijk,0,0) = -one
90  b_m(ijk,0) = zero
91  ELSE
92 !!$omp critical
93  WRITE (line, '(A,I6,A,I1,A,G12.5)') 'Error: At IJK = ', ijk, &
94  ' M = ', 0, ' A = 0 and b = ', b_m(ijk,0)
95  CALL write_error ('SOURCE_ROP_g', line, 1)
96 !!$omp end critical
97  ENDIF
98  ENDIF
99  ELSE
100 ! set the value of rop_g in all wall and flow boundary cells to what is
101 ! known for that cell
102  a_m(ijk,east,0) = zero
103  a_m(ijk,west,0) = zero
104  a_m(ijk,north,0) = zero
105  a_m(ijk,south,0) = zero
106  a_m(ijk,top,0) = zero
107  a_m(ijk,bottom,0) = zero
108  a_m(ijk,0,0) = -one
109  b_m(ijk,0) = -rop_g(ijk)
110  ENDIF
111  ENDDO
112 
113  RETURN
114  END SUBROUTINE source_rop_g
115 
116 
integer, dimension(:), allocatable i_of
Definition: indices_mod.f:45
integer ijkend3
Definition: compar_mod.f:80
Definition: pgcor_mod.f:1
double precision, parameter one
Definition: param1_mod.f:29
integer dimension_3
Definition: param_mod.f:11
subroutine write_error(NAME, LINE, LMAX)
Definition: write_error.f:21
double precision, dimension(:), allocatable axy
Definition: geometry_mod.f:210
Definition: rxns_mod.f:1
double precision, dimension(:), allocatable sum_r_g
Definition: rxns_mod.f:28
integer east
Definition: param_mod.f:29
double precision, dimension(:), allocatable ayz
Definition: geometry_mod.f:206
integer, dimension(:), allocatable k_of
Definition: indices_mod.f:47
subroutine source_rop_g(A_M, B_M)
Definition: source_rop_g.f:21
integer, dimension(:), allocatable j_of
Definition: indices_mod.f:46
double precision, parameter small_number
Definition: param1_mod.f:24
double precision odt
Definition: run_mod.f:54
integer north
Definition: param_mod.f:37
double precision, dimension(:), allocatable v_g
Definition: fldvar_mod.f:99
integer south
Definition: param_mod.f:41
double precision, dimension(:), allocatable w_g
Definition: fldvar_mod.f:111
Definition: run_mod.f:13
double precision, dimension(:), allocatable axz
Definition: geometry_mod.f:208
Definition: param_mod.f:2
double precision, dimension(:), allocatable rop_go
Definition: fldvar_mod.f:41
integer, dimension(:), allocatable phase_4_p_g
Definition: pgcor_mod.f:22
integer ijkstart3
Definition: compar_mod.f:80
integer west
Definition: param_mod.f:33
double precision, dimension(:), allocatable u_g
Definition: fldvar_mod.f:87
integer top
Definition: param_mod.f:45
double precision, dimension(:), allocatable vol
Definition: geometry_mod.f:212
integer dimension_m
Definition: param_mod.f:18
double precision, dimension(:), allocatable rop_g
Definition: fldvar_mod.f:38
integer bottom
Definition: param_mod.f:49
double precision, parameter zero
Definition: param1_mod.f:27