MFIX  2016-1
adjust_a_w_g.f
Go to the documentation of this file.
1 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
2 ! C
3 ! Module name: ADJUST_A_W_g(A_m, B_m, IER) C
4 ! Purpose: Handle the special case of the center coefficient in C
5 ! W_g momentum eq. becoming zero. C
6 ! C
7 ! C
8 ! Author: M. Syamlal Date: 2-AUG-96 C
9 ! Reviewer: Date: C
10 ! C
11 ! C
12 ! Literature/Document References: C
13 ! C
14 ! Variables referenced: C
15 ! Variables modified: C
16 ! C
17 ! Local variables: C
18 ! C
19 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
20 !
21  SUBROUTINE adjust_a_w_g(A_M, B_M)
22 !...Translated by Pacific-Sierra Research VAST-90 2.06G5 12:17:31 12/09/98
23 !...Switches: -xf
24 !
25 ! Include param.inc file to specify parameter values
26 !
27 !-----------------------------------------------
28 ! M o d u l e s
29 !-----------------------------------------------
30  USE param
31  USE param1
32  USE parallel
33  USE fldvar
34  USE geometry
35  USE run
36  USE indices
37  USE compar
38  USE sendrecv
39  USE fun_avg
40  USE functions
41 
42  IMPLICIT NONE
43 !-----------------------------------------------
44 ! G l o b a l P a r a m e t e r s
45 !-----------------------------------------------
46 !-----------------------------------------------
47 ! D u m m y A r g u m e n t s
48 !-----------------------------------------------
49 !
50 ! Indices
51  INTEGER IJK, IJKT, IJKM
52 !
53 ! Phase index
54  INTEGER M
55 !
56 ! Septadiagonal matrix A_m
57  DOUBLE PRECISION A_m(dimension_3, -3:3, 0:dimension_m)
58 !
59 ! Vector b_m
60  DOUBLE PRECISION B_m(dimension_3, 0:dimension_m)
61 !!-----------------------------------------------
62 
63  m = 0
64  IF (.NOT.momentum_z_eq(0)) RETURN
65 !
66 !!!!$omp$ parallel do private(IJK,IJKT,IJKM)
67  DO ijk = ijkstart3, ijkend3
68  IF (abs(a_m(ijk,0,m)) < small_number) THEN
69  a_m(ijk,east,m) = zero
70  a_m(ijk,west,m) = zero
71  a_m(ijk,north,m) = zero
72  a_m(ijk,south,m) = zero
73  a_m(ijk,top,m) = zero
74  a_m(ijk,bottom,m) = zero
75  a_m(ijk,0,m) = -one
76  IF (b_m(ijk,m) < zero) THEN
77  ijkt = top_of(ijk)
78  IF (rop_g(ijkt)*axy_w(ijk) > small_number) THEN
79  b_m(ijk,m) = sqrt((-b_m(ijk,m)/(rop_g(ijkt)*avg_z_t(one,zero)&
80  *axy_w(ijk))))
81  ELSE
82  b_m(ijk,m) = zero
83  ENDIF
84  ELSE IF (b_m(ijk,m) > zero) THEN
85  ijkm = km_of(ijk)
86  IF (rop_g(ijk)*axy_w(ijkm) > small_number) THEN
87  b_m(ijk,m) = sqrt(b_m(ijk,m)/(rop_g(ijk)*avg_z_t(zero,one)*&
88  axy_w(ijkm)))
89  ELSE
90  b_m(ijk,m) = zero
91  ENDIF
92  ENDIF
93  ENDIF
94  END DO
95  RETURN
96  END SUBROUTINE adjust_a_w_g
97 
98 !// Comments on the modifications for DMP version implementation
99 !// 350 Changed do loop limits: 1,ijkmax2-> ijkstart3, ijkend3
100 !// 400 Added sendrecv module for COMMunication
integer ijkend3
Definition: compar_mod.f:80
double precision, parameter one
Definition: param1_mod.f:29
integer dimension_3
Definition: param_mod.f:11
subroutine adjust_a_w_g(A_M, B_M)
Definition: adjust_a_w_g.f:22
logical, dimension(0:dim_m) momentum_z_eq
Definition: run_mod.f:80
integer east
Definition: param_mod.f:29
double precision, parameter small_number
Definition: param1_mod.f:24
integer north
Definition: param_mod.f:37
integer south
Definition: param_mod.f:41
Definition: run_mod.f:13
Definition: param_mod.f:2
integer ijkstart3
Definition: compar_mod.f:80
integer west
Definition: param_mod.f:33
double precision, dimension(:), allocatable axy_w
Definition: geometry_mod.f:240
integer top
Definition: param_mod.f:45
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