File: RELATIVE:/../../../mfix.git/model/check_data/check_bc_dem.f

1     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv!
2     ! minimum amount of geometry data.                                     !
3     !                                                                      !
4     ! Subroutine: CHECK_BC_DEM                                             !
5     ! Author: J.Musser                                    Date: 01-Mar-14  !
6     !                                                                      !
7     ! Purpose: Determine if BCs are "DEFINED" and that they contain the    !
8     ! minimum amount of geometry data.                                     !
9     !                                                                      !
10     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv!
11           SUBROUTINE CHECK_BC_DEM(M_TOT)
12     
13     ! Global Variables:
14     !---------------------------------------------------------------------//
15     ! User specified BC
16           use bc, only: BC_TYPE
17     ! User specified: BC geometry
18           use bc, only: BC_EP_s
19     ! Use specified flag for ignoring PO BC for discrete solids
20           USE bc, only: BC_PO_APPLY_TO_DES
21     ! Solids phase identifier
22           use run, only: SOLIDS_MODEL
23     ! Number of DEM inlet/outlet BCs detected.
24           use des_bc, only: DEM_BCMI, DEM_BCMO
25     !
26           use des_bc, only: DEM_BCMI_MAP
27           use des_bc, only: DEM_BCMO_MAP
28     ! Global Parameters:
29     !---------------------------------------------------------------------//
30     ! The max number of BCs.
31           use param, only: DIMENSION_BC
32     ! Parameter constants
33           use param1, only: ZERO, UNDEFINED
34     
35     ! Use the error manager for posting error messages.
36     !---------------------------------------------------------------------//
37           use error_manager
38     
39     
40           IMPLICIT NONE
41     
42     
43     ! Passed Arguments:
44     !---------------------------------------------------------------------//
45     ! Total number of solids phases.
46           INTEGER, INTENT(in) :: M_TOT
47     
48     ! Local Variables:
49     !---------------------------------------------------------------------//
50     ! loop/variable indices
51           INTEGER :: BCV, M
52     !......................................................................!
53     
54     
55     ! Initialize the error manager.
56           CALL INIT_ERR_MSG("CHECK_BC_DEM")
57     
58     ! Initialize
59           DEM_BCMI = 0
60           DEM_BCMO = 0
61     
62     ! Loop over all BCs looking for DEM solids inlets/outlets
63           DO BCV = 1, DIMENSION_BC
64     
65              SELECT CASE (TRIM(BC_TYPE(BCV)))
66     
67     ! Determine the number of mass inlets that contain DEM solids.
68              CASE ('MASS_INFLOW')
69                 M_LP: DO M=1,M_TOT
70                    IF(SOLIDS_MODEL(M)=='DEM' .AND.                         &
71                       BC_EP_s(BCV,M) > ZERO) THEN
72                       DEM_BCMI = DEM_BCMI + 1
73                       DEM_BCMI_MAP(DEM_BCMI) = BCV
74                       EXIT M_LP
75                    ENDIF
76                 ENDDO M_LP
77     
78     ! Count the number of pressure outflows.
79              CASE ('P_OUTFLOW','MASS_OUTFLOW')
80                 IF(BC_PO_APPLY_TO_DES(BCV)) then
81                    DEM_BCMO = DEM_BCMO + 1
82                    DEM_BCMO_MAP(DEM_BCMO) = BCV
83                 ENDIF
84     
85     ! Flag CG_MI as an error if DEM solids are present.
86              CASE ('CG_MI')
87                 DO M=1,M_TOT
88                    IF(SOLIDS_MODEL(M)=='DEM') THEN
89                       IF(BC_EP_s(BCV,M) /= UNDEFINED .AND.                 &
90                          BC_EP_s(BCV,M) > ZERO) THEN
91                          WRITE(ERR_MSG,1100) trim(iVar('BC_TYPE',BCV)),    &
92                             'GC_MI'
93                          CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
94                       ENDIF
95                    ENDIF
96                 ENDDO
97     
98              CASE ('CG_PO')
99                 WRITE(ERR_MSG,1100) trim(iVar('BC_TYPE',BCV)), 'GC_PO'
100                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
101     
102              CASE ('OUTFLOW', 'P_INFLOW')
103                 WRITE(ERR_MSG,1100) trim(iVar('BC_TYPE',BCV)),             &
104                    trim(BC_TYPE(BCV))
105                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
106     
107              END SELECT
108     
109           ENDDO
110     
111           CALL FINL_ERR_MSG
112     
113           RETURN
114     
115      1100 FORMAT('Error 1100: Unsupported boundary condition specified ',  &
116              'with',/'DEM simulation: ',A,' = ',A,/'Please correct the ',&
117              'mfix.dat file.')
118     
119           END SUBROUTINE CHECK_BC_DEM
120