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

1     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv!
2     !                                                                      !
3     !  Subroutinee: SET_PARAMETERS                                         !
4     !  Purpose: Set parameters used in array allocations.                  !
5     !                                                                      !
6     !  Author: J.Musser                                  Date: 17-APR-14   !
7     !                                                                      !
8     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^!
9           SUBROUTINE SET_PARAMETERS
10     
11     ! Global Varialbes:
12     !---------------------------------------------------------------------//
13     ! Number of TFM solids
14           use physprop, only: MMAX
15     ! Number of DES solids
16           use discretelement, only: DES_MMAX
17     ! Number of species
18           use physprop, only: NMAX
19     ! Number of scalar equations
20           use scalars, only: NSCALAR
21     
22     ! Domain indices.
23           use geometry, only: IMAX3, JMAX3, KMAX3, IJKMAX3
24     
25     ! Rank specific decompositions.
26           use compar, only: IJKSIZE3_ALL
27           USE compar, only: iStart3, iEnd3, iStart4, iEnd4
28           USE compar, only: jStart3, jEnd3, jStart4, jEnd4
29           USE compar, only: kStart3, kEnd3, kStart4, kEnd4
30     
31     ! Global Parameters:
32     !---------------------------------------------------------------------//
33     ! Total number of solids phases
34           use param, only: DIMENSION_M
35     ! Maximum number of species.
36           use param, only: DIMENSION_N_g ! Gas
37           use param, only: DIMENSION_N_s ! Solids
38     ! Maximum number of user-defined scalars
39           use param, only: DIMENSION_SCALAR
40           use param, only: DIM_SCALAR2
41     ! Dimension for the upper triangle of an MxM matrix
42           use param1, only: DIMENSION_LM
43     ! Total number of species
44           use param1, only: DIMENSION_N_all
45     ! Parameter constants.
46           use param1, only: UNDEFINED_I
47     ! Axis decomposition
48           USE param, only: DIMENSION_I, DIMENSION_J, DIMENSION_K
49           USE param, only: DIMENSION_3, DIMENSION_4
50           USE param, only: DIMENSION_3G, DIMENSION_3L, DIMENSION_3P
51     
52     ! MPI-Domain decompoint and rank flags.
53           use compar, only: NODESI, NODESJ, NODESK, myPE
54     ! Flag for POST_MFIX
55           use cdist, only: bDoing_postmfix
56     
57     
58           IMPLICIT NONE
59     
60     ! Local Variables:
61     !---------------------------------------------------------------------//
62     ! Loop index
63           INTEGER :: M, MMAX_TOT
64     !......................................................................!
65     
66     ! The total number of solids.
67           DIMENSION_M = MAX(1, merge(MMAX,MMAX+DES_MMAX,bDoing_postmfix))
68     
69     ! Number of gas phase species.
70           DIMENSION_N_g = merge(NMAX(0), 1, NMAX(0) /= UNDEFINED_I)
71     
72     ! Number of solids phase species. (Max over all phases)
73           DIMENSION_N_s = 1
74     
75           MMAX_TOT = merge(MMAX, MMAX+DES_MMAX, bDoing_postMFIX)
76           DO M = 1, MMAX_TOT
77              IF(NMAX(M) /= UNDEFINED_I) &
78                 DIMENSION_N_s = max(DIMENSION_N_s, NMAX(M))
79           ENDDO
80     
81     ! Max number of species over all phases
82           DIMENSION_N_all = max(DIMENSION_N_g, DIMENSION_N_s)
83     
84     ! Size of MxM upper triangular matrix.
85           DIMENSION_LM = (DIMENSION_M * (DIMENSION_M-1)/2)+1
86     
87     ! Number of scalar equations.
88           DIMENSION_SCALAR = NSCALAR
89           DIM_SCALAR2 = 2*NSCALAR
90     
91     
92     
93     ! Set DIMENSION_x variables.
94           DIMENSION_I = IMAX3
95           DIMENSION_J = JMAX3
96           DIMENSION_K = KMAX3
97     
98           DIMENSION_3 = (kEnd3-kStart3+1)*(jEnd3-jStart3+1)*(iEnd3-iStart3+1)
99           DIMENSION_4 = (kEnd4-kStart4+1)*(jEnd4-jStart4+1)*(iEnd4-iStart4+1)
100     
101           DIMENSION_3G = IJKMAX3            ! Global IJK array
102           DIMENSION_3L = IJKSIZE3_ALL(myPE) ! Local IJK array
103           DIMENSION_3P = merge(DIMENSION_3, 1, .NOT.bDoing_PostMFIX)
104     
105     
106           RETURN
107           END SUBROUTINE SET_PARAMETERS
108     
109