File: N:\mfix\model\adjust_a_v_g.f

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
100