MFIX  2016-1
get_philoss.f
Go to the documentation of this file.
1 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
2 ! C
3 ! Module name: GET_PHILOSS(LOSS) C
4 ! Purpose: Determine the total loss of sclar Phi through reactor wallsC
5 ! C
6 ! Author: M. Syamlal Date: 9-MAY-97 C
7 ! Reviewer: Date: C
8 ! C
9 ! Revision Number: C
10 ! Purpose: C
11 ! Author: Date: dd-mmm-yy C
12 ! Reviewer: Date: dd-mmm-yy C
13 ! C
14 ! Literature/Document References: C
15 ! C
16 ! Variables referenced: IMAX2, JMAX2, KMAX2, MMAX, ROP_s, DX, DY, DZ, C
17 ! X, IMIN1, JMIN1. KMIN1 C
18 ! Variables modified: I, J, K, M, IJK C
19 ! C
20 ! Local variables: None C
21 ! C
22 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
23 !
24  SUBROUTINE get_philoss(PHI,DIFF,BC_PHI_W,BC_HW_PHI,BC_C_PHI,LOSS)
25 !...Translated by Pacific-Sierra Research VAST-90 2.06G5 12:17:31 12/09/98
26 !...Switches: -xf
27 !
28 ! Include param.inc file to specify parameter values
29 !
30 !-----------------------------------------------
31 ! M o d u l e s
32 !-----------------------------------------------
33  USE param
34  USE param1
35  USE physprop
36  USE geometry
37  USE fldvar
38  USE bc
39  USE indices
40  USE energy
41  USE compar
42  USE functions
43  IMPLICIT NONE
44 !-----------------------------------------------
45 ! G l o b a l P a r a m e t e r s
46 !-----------------------------------------------
47 !-----------------------------------------------
48 ! D u m m y A r g u m e n t s
49 !-----------------------------------------------
50 !
51 ! scalar
52  DOUBLE PRECISION Phi(dimension_3)
53 !
54 ! scalar diffusion coefficient
55  DOUBLE PRECISION Diff(dimension_3)
56 !
57 ! scalar value at wall
58  DOUBLE PRECISION BC_Phi_w(dimension_bc)
59 !
60 ! wall transfer coefficient
61  DOUBLE PRECISION BC_hw_Phi(dimension_bc)
62 !
63 ! wall flux coefficient
64  DOUBLE PRECISION BC_C_Phi(dimension_bc)
65 !
66 ! scalar loss thorugh wall
67  DOUBLE PRECISION LOSS
68 !
69 ! Indices
70  INTEGER L, I, J, K, IJK, IJKE, IJKW, IJKN, IJKS
71  INTEGER IJKT, IJKB
72 !
73 ! Indices
74  INTEGER I1, I2, J1, J2, K1, K2
75 !-----------------------------------------------
76 
77  loss = zero
78 
79  DO l = 1, dimension_bc
80  IF (bc_defined(l)) THEN
81  IF (bc_type_enum(l)==no_slip_wall .OR. bc_type_enum(l)==free_slip_wall&
82  .OR. bc_type_enum(l)==par_slip_wall) THEN
83  i1 = bc_i_w(l)
84  i2 = bc_i_e(l)
85  j1 = bc_j_s(l)
86  j2 = bc_j_n(l)
87  k1 = bc_k_b(l)
88  k2 = bc_k_t(l)
89  DO k = k1, k2
90  DO j = j1, j2
91  DO i = i1, i2
92  IF(.NOT.is_on_mype_owns(i,j,k)) cycle
93  IF (dead_cell_at(i,j,k)) cycle ! skip dead cells
94  ijk = funijk(i,j,k)
95  IF (fluid_at(east_of(ijk))) THEN
96  ijke = east_of(ijk)
97  IF (bc_hw_phi(l) == undefined) THEN
98  loss = loss + diff(ijke)*ayz(ijk)*(phi(east_of(&
99  ijke))-phi(ijke))*odx_e(ip1(i))
100  ELSE
101  loss = loss + diff(ijke)*ayz(ijk)*(bc_hw_phi(l)*(&
102  phi(ijke)-bc_phi_w(l))-bc_c_phi(l))
103  ENDIF
104  ELSE IF (fluid_at(west_of(ijk))) THEN
105  ijkw = west_of(ijk)
106  IF (bc_hw_phi(l) == undefined) THEN
107  loss = loss - diff(ijkw)*ayz(ijkw)*(phi(ijkw)-phi&
108  (west_of(ijkw)))*odx_e(im1(im1(i)))
109  ELSE
110  loss = loss + diff(ijkw)*ayz(ijkw)*(bc_hw_phi(l)*&
111  (phi(ijkw)-bc_phi_w(l))-bc_c_phi(l))
112  ENDIF
113  ELSE IF (fluid_at(north_of(ijk))) THEN
114  ijkn = north_of(ijk)
115  IF (bc_hw_phi(l) == undefined) THEN
116  loss = loss + diff(ijkn)*axz(ijk)*(phi(north_of(&
117  ijkn))-phi(ijkn))*ody_n(jp1(j))
118  ELSE
119  loss = loss + diff(ijkn)*axz(ijk)*(bc_hw_phi(l)*(&
120  phi(ijkn)-bc_phi_w(l))-bc_c_phi(l))
121  ENDIF
122  ELSE IF (fluid_at(south_of(ijk))) THEN
123  ijks = south_of(ijk)
124  IF (bc_hw_phi(l) == undefined) THEN
125  loss = loss + diff(ijks)*axz(jm_of(ijk))*(phi(&
126  ijks)-phi(south_of(ijks)))*ody_n(jm1(jm1(j)))
127  ELSE
128  loss = loss + diff(ijks)*axz(jm_of(ijk))*(&
129  bc_hw_phi(l)*(phi(ijks)-bc_phi_w(l))-bc_c_phi(&
130  l))
131  ENDIF
132  ELSE IF (fluid_at(top_of(ijk))) THEN
133  ijkt = top_of(ijk)
134  IF (bc_hw_phi(l) == undefined) THEN
135  loss = loss + diff(ijkt)*axy(ijk)*(phi(top_of(&
136  ijkt))-phi(ijkt))*ox(i)*odz_t(kp1(k))
137  ELSE
138  loss = loss + diff(ijkt)*axy(ijk)*(bc_hw_phi(l)*(&
139  phi(ijkt)-bc_phi_w(l))-bc_c_phi(l))
140  ENDIF
141  ELSE IF (fluid_at(bottom_of(ijk))) THEN
142  ijkb = bottom_of(ijk)
143  IF (bc_hw_phi(l) == undefined) THEN
144  loss = loss + diff(ijkb)*axy(km_of(ijk))*(phi(&
145  ijkb)-phi(bottom_of(ijkb)))*ox(i)*odz_t(km1(&
146  km1(k)))
147  ELSE
148  loss = loss + diff(ijkb)*axy(km_of(ijk))*(&
149  bc_hw_phi(l)*(phi(ijkb)-bc_phi_w(l))-bc_c_phi(&
150  l))
151  ENDIF
152  ENDIF
153  END DO
154  END DO
155  END DO
156  ENDIF
157  ENDIF
158  END DO
159  RETURN
160  END SUBROUTINE get_philoss
161 
162 !// Comments on the modifications for DMP version implementation
163 !// 001 Include header file and common declarations for parallelization
integer, dimension(:), allocatable ip1
Definition: indices_mod.f:50
integer, dimension(dimension_bc) bc_k_b
Definition: bc_mod.f:70
integer dimension_3
Definition: param_mod.f:11
double precision, dimension(:), allocatable axy
Definition: geometry_mod.f:210
integer, dimension(dimension_bc) bc_i_w
Definition: bc_mod.f:54
integer, dimension(dimension_bc) bc_j_n
Definition: bc_mod.f:66
integer, dimension(:), allocatable im1
Definition: indices_mod.f:50
integer, parameter dimension_bc
Definition: param_mod.f:61
integer, dimension(dimension_bc) bc_type_enum
Definition: bc_mod.f:146
double precision, parameter undefined
Definition: param1_mod.f:18
double precision, dimension(:), allocatable ayz
Definition: geometry_mod.f:206
double precision, dimension(:), allocatable ody_n
Definition: geometry_mod.f:123
subroutine get_philoss(PHI, DIFF, BC_PHI_W, BC_HW_PHI, BC_C_PHI, LOSS)
Definition: get_philoss.f:25
integer, dimension(dimension_bc) bc_k_t
Definition: bc_mod.f:74
logical, dimension(:,:,:), allocatable dead_cell_at
Definition: compar_mod.f:127
double precision, dimension(:), allocatable odx_e
Definition: geometry_mod.f:121
integer, dimension(:), allocatable jm1
Definition: indices_mod.f:51
integer, dimension(dimension_bc) bc_j_s
Definition: bc_mod.f:62
double precision, dimension(:), allocatable ox
Definition: geometry_mod.f:140
integer, dimension(:), allocatable jp1
Definition: indices_mod.f:51
logical, dimension(dimension_bc) bc_defined
Definition: bc_mod.f:207
integer, dimension(:), allocatable kp1
Definition: indices_mod.f:52
double precision, dimension(:), allocatable axz
Definition: geometry_mod.f:208
Definition: param_mod.f:2
integer, dimension(:), allocatable km1
Definition: indices_mod.f:52
double precision, dimension(:), allocatable odz_t
Definition: geometry_mod.f:125
integer, dimension(dimension_bc) bc_i_e
Definition: bc_mod.f:58
double precision, parameter zero
Definition: param1_mod.f:27
Definition: bc_mod.f:23