File: /nfs/home/0/users/jenkins/mfix.git/model/des/set_geometry_des.f

1     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv!
2     !                                                                      !
3     !  Subroutine: SET_GEOMETRY_DES                                        !
4     !  Author:   R.Garg                                   Date: 19-Mar-14  !
5     !                                                                      !
6     !  Purpose: Allocate des arrays that are based on Eulerian grid.       !
7     !                                                                      !
8     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^!
9           SUBROUTINE SET_GEOMETRY_DES
10     
11     
12     ! Global Variables:
13     !---------------------------------------------------------------------//
14     ! Arrays for DEM simulations delineating cell edges.
15           use discretelement, only: XE, YN, ZT, DIMN
16     ! Domain bounds (max/min).
17           use discretelement, only: EX2, TY2, NZ2, WX1, BY1, SZ1
18     ! Fluid grid cell dimensions and mesh size
19           USE geometry, only: DX, IMIN3, IMIN2, IMAX2
20           USE geometry, only: DY, JMIN3, JMIN2, JMAX2
21           USE geometry, only: DZ, KMIN3, KMIN2, KMAX2
22     ! Number of particles in the I/J/K direction
23           use param, only: DIMENSION_I, DIMENSION_J, DIMENSION_K
24     
25     ! Global Parameters:
26     !---------------------------------------------------------------------//
27           use param1, only: ZERO
28     
29     ! Module proceedures.
30     !---------------------------------------------------------------------//
31           use mpi_utility
32           use error_manager
33     
34           IMPLICIT NONE
35     
36     ! Local Variables:
37     !---------------------------------------------------------------------//
38     ! Generic loop indices
39           INTEGER :: I, J, K
40     ! Error Flag
41           INTEGER :: IER
42     !......................................................................!
43     
44     ! Initialize the error manager.
45           CALL INIT_ERR_MSG("SET_GEOMETRY_DES")
46     
47           Allocate( XE (0:DIMENSION_I), STAT=IER )
48           Allocate( YN (0:DIMENSION_J), STAT=IER )
49           Allocate( ZT (0:DIMENSION_K), STAT=IER )
50     
51     ! Collect the error flags from all ranks. If all allocaitons were
52     ! successfull, do nothing. Otherwise, flag the error and abort.
53           CALL GLOBAL_ALL_SUM(IER)
54     
55     
56     ! Set boundary edges.
57     ! In some instances wx1,ex2, etc have been used and in others
58     ! xlength,zero, etc are used. the code should be modified for
59     ! consistency throughout
60           EX2 = XLENGTH;    WX1 = ZERO  ! East/West
61           TY2 = YLENGTH;    BY1 = ZERO  ! North/South
62           NZ2 = ZLENGTH;    SZ1 = ZERO  ! Top/Bottom
63     
64     ! Initialize arrays.
65           XE(:) = ZERO
66           YN(:) = ZERO
67           ZT(:) = ZERO
68     
69     ! Each loop starts at 2 and goes to max+2 (i.e., imin1=2, imax2=imax+2)
70     ! However, the indices range to include ghost cells (0-imax2) to avoid
71     ! multiple if statements in particles_in_cell
72           XE(IMIN2-1) = ZERO-DX(IMIN2)
73           DO I = IMIN2, IMAX2
74              XE(I) = XE(I-1) + DX(I)
75           ENDDO
76     
77           YN(JMIN2-1) = ZERO-DY(JMIN2)
78           DO J  = JMIN2, JMAX2
79              YN(J) = YN(J-1) + DY(J)
80           ENDDO
81     
82           IF(DIMN.EQ.3) THEN
83              ZT(KMIN2-1) = ZERO-DZ(KMIN2)
84              DO K = KMIN2, KMAX2
85                 ZT(K) = ZT(K-1) + DZ(K)
86              ENDDO
87           ENDIF
88     
89           CALL FINL_ERR_MSG
90     
91           RETURN
92           END SUBROUTINE SET_GEOMETRY_DES
93