MFIX  2016-1
adjust_a_u_g.f
Go to the documentation of this file.
1 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
2 ! C
3 ! Module name: ADJUST_A_U_g(A_m, B_m, IER) C
4 ! Purpose: Handle the special case of the center coefficient in C
5 ! U_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_u_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 usr !just to ensure that this module gets compiled early on
38  USE compar
39  USE sendrecv
40  USE fun_avg
41  USE functions
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 I, IP, IJK, IJKE, IMJK
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_x_eq(0)) RETURN
65 !
66 !!!!$omp parallel do private(I,IP,IJK,IJKE,IMJK)
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  ijke = east_of(ijk)
78  ip = ip1(i_of(ijk))
79  IF (rop_g(ijke)*ayz_u(ijk) > small_number) THEN
80  b_m(ijk,m) = sqrt((-b_m(ijk,m)/(rop_g(ijke)*avg_x_e(one,zero,&
81  ip)*ayz_u(ijk))))
82  ELSE
83  b_m(ijk,m) = zero
84  ENDIF
85  ELSE IF (b_m(ijk,m) > zero) THEN
86  i = i_of(ijk)
87  imjk = im_of(ijk)
88  IF (rop_g(ijk)*ayz_u(imjk) > small_number) THEN
89  b_m(ijk,m) = sqrt(b_m(ijk,m)/(rop_g(ijk)*avg_x_e(zero,one,i)*&
90  ayz_u(imjk)))
91  ELSE
92  b_m(ijk,m) = zero
93  ENDIF
94  ENDIF
95  ENDIF
96  END DO
97 
98  RETURN
99  END SUBROUTINE adjust_a_u_g
100 
101 !// Comments on the modifications for DMP version implementation
102 !// 350 Changed do loop limits: 1,ijkmax2-> ijkstart3, ijkend3
103 !// 400 Added sendrecv module for COMMunication
integer, dimension(:), allocatable ip1
Definition: indices_mod.f:50
integer, dimension(:), allocatable i_of
Definition: indices_mod.f:45
integer ijkend3
Definition: compar_mod.f:80
double precision, parameter one
Definition: param1_mod.f:29
integer dimension_3
Definition: param_mod.f:11
logical, dimension(0:dim_m) momentum_x_eq
Definition: run_mod.f:74
double precision, dimension(:), allocatable ayz_u
Definition: geometry_mod.f:218
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
Definition: usr_mod.f:1
integer ijkstart3
Definition: compar_mod.f:80
integer west
Definition: param_mod.f:33
integer top
Definition: param_mod.f:45
subroutine adjust_a_u_g(A_M, B_M)
Definition: adjust_a_u_g.f:22
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