MFIX  2016-1
adjust_a_v_g.f
Go to the documentation of this file.
1 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
2 ! C
3 ! Module name: ADJUST_A_V_g(A_m, B_m, IER) C
4 ! Purpose: Handle the special case of the center coefficient in C
5 ! V_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_v_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  IMPLICIT NONE
42 !-----------------------------------------------
43 ! G l o b a l P a r a m e t e r s
44 !-----------------------------------------------
45 !-----------------------------------------------
46 ! D u m m y A r g u m e n t s
47 !-----------------------------------------------
48 !
49 ! Indices
50  INTEGER IJK, IJKN, IJMK
51 !
52 ! Phase index
53  INTEGER M
54 !
55 ! Septadiagonal matrix A_m
56  DOUBLE PRECISION A_m(dimension_3, -3:3, 0:dimension_m)
57 !
58 ! Vector b_m
59  DOUBLE PRECISION B_m(dimension_3, 0:dimension_m)
60 !-----------------------------------------------
61 
62  m = 0
63  IF (.NOT.momentum_y_eq(0)) RETURN
64 !
65 !!!!$omp parallel do private(IJK,IJKN,IJMK)
66  DO ijk = ijkstart3, ijkend3
67  IF (abs(a_m(ijk,0,m)) < small_number) THEN
68  a_m(ijk,east,m) = zero
69  a_m(ijk,west,m) = zero
70  a_m(ijk,north,m) = zero
71  a_m(ijk,south,m) = zero
72  a_m(ijk,top,m) = zero
73  a_m(ijk,bottom,m) = zero
74  a_m(ijk,0,m) = -one
75  IF (b_m(ijk,m) < zero) THEN
76  ijkn = north_of(ijk)
77  IF (rop_g(ijkn)*axz(ijk) > small_number) THEN
78  b_m(ijk,m) = sqrt((-b_m(ijk,m)/(rop_g(ijkn)*avg_y_n(one,zero)&
79  *axz(ijk))))
80  ELSE
81  b_m(ijk,m) = zero
82  ENDIF
83  ELSE IF (b_m(ijk,m) > zero) THEN
84  ijmk = jm_of(ijk)
85  IF (rop_g(ijk)*axz(ijk) > small_number) THEN
86  b_m(ijk,m) = sqrt(b_m(ijk,m)/(rop_g(ijk)*avg_y_n(zero,one)*&
87  axz(ijk)))
88  ELSE
89  b_m(ijk,m) = zero
90  ENDIF
91  ENDIF
92  ENDIF
93  END DO
94  RETURN
95  END SUBROUTINE adjust_a_v_g
96 
97 !// Comments on the modifications for DMP version implementation
98 !// 350 change do loop limits: 1,ijkmax2-> ijkstart3, ijkend3
99 !// 400 Added sendrecv module for COMMunication
logical, dimension(0:dim_m) momentum_y_eq
Definition: run_mod.f:77
integer ijkend3
Definition: compar_mod.f:80
double precision, parameter one
Definition: param1_mod.f:29
integer dimension_3
Definition: param_mod.f:11
integer east
Definition: param_mod.f:29
subroutine adjust_a_v_g(A_M, B_M)
Definition: adjust_a_v_g.f:22
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
double precision, dimension(:), allocatable axz
Definition: geometry_mod.f:208
Definition: param_mod.f:2
integer ijkstart3
Definition: compar_mod.f:80
integer west
Definition: param_mod.f:33
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