File: N:\mfix\model\check_data\check_run_control.f

1     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv!
2     !                                                                      !
3     !  Subroutine: CHECK_RUN_CONTROL                                       !
4     !  Purpose: Check the run control namelist section                     !
5     !                                                                      !
6     !  Author: P.Nicoletti                                Date: 27-NOV-91  !
7     !          J.Musser                                   Date: 31-JAN-14  !
8     !                                                                      !
9     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^!
10           SUBROUTINE CHECK_RUN_CONTROL
11     
12     
13     ! Global Variables:
14     !---------------------------------------------------------------------//
15     ! New or restart
16           USE run, only: RUN_TYPE
17     ! Brief description of simulation.
18           USE run, only: DESCRIPTION
19     ! Simulation units: SI, CGS
20           USE run, only: UNITS
21     ! Simulation start/stop times.
22           USE run, only: TIME, TSTOP
23     ! Time step size, one over time step size.
24           USE run, only: DT, ODT, STEADY_STATE
25     ! Flag: Use K-Epsilon turbulence model.
26           USE run, only: K_EPSILON
27           USE run, only: ishii, jackson
28     ! Turbulence lenghth scale and viscosity bound.
29           use constant, only: L_SCALE0, MU_GMAX
30     
31     ! Global Parameters:
32     !---------------------------------------------------------------------//
33           USE param1, only: UNDEFINED, UNDEFINED_C
34           USE param1, only: ONE, ZERO
35     
36     ! Global Module procedures:
37     !---------------------------------------------------------------------//
38           USE error_manager
39     
40           IMPLICIT NONE
41     
42     
43     ! Local Variables:
44     !---------------------------------------------------------------------//
45     
46     
47     !......................................................................!
48     
49     
50     ! Initialize the error manager.
51           CALL INIT_ERR_MSG("CHECK_RUN_CONTROL")
52     
53     
54     ! Clear out the run description if not specified.
55           IF (DESCRIPTION == UNDEFINED_C) DESCRIPTION = ' '
56     
57     ! Verify UNITS input.
58           IF(UNITS == UNDEFINED_C) THEN
59              WRITE(ERR_MSG,1000) 'UNITS'
60              CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
61           ELSEIF((UNITS /= 'CGS') .AND. (UNITS /= 'SI')) THEN
62              WRITE(ERR_MSG,1001) 'UNITS', UNITS
63              CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
64           ENDIF
65     
66     ! Verify that DT is valid.
67           IF (DT < ZERO) THEN
68              WRITE(ERR_MSG,1002) 'DT', DT
69              CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
70     
71     ! Steady-state simulation.
72           ELSEIF(DT == UNDEFINED .OR. DT == ZERO) THEN
73              STEADY_STATE = .TRUE.
74              DT = ZERO
75              ODT = ZERO
76              TIME = ZERO
77     
78     ! Transient simulation.
79           ELSE
80              STEADY_STATE = .FALSE.
81     ! Calculate reciprocal of initial timestep.
82              ODT = ONE/DT
83     ! Verify the remaining time settings.
84              IF (TIME == UNDEFINED) THEN
85                 WRITE(ERR_MSG,1000) 'TIME'
86                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
87     
88              ELSEIF (TSTOP == UNDEFINED) THEN
89                 WRITE(ERR_MSG,1000) 'TSTOP'
90                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
91     
92              ELSEIF (TIME < ZERO) THEN
93                 WRITE(ERR_MSG,1002)'TIME', TIME
94                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
95     
96              ELSEIF (TSTOP < ZERO) THEN
97                 WRITE(ERR_MSG,1002) 'TSTOP', TSTOP
98                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
99              ENDIF
100           ENDIF
101     
102     ! Verify the run type.
103           IF(.NOT.(RUN_TYPE=='NEW' .OR. RUN_TYPE=='RESTART_1'              &
104              .OR. RUN_TYPE=='RESTART_2')) THEN
105              WRITE(ERR_MSG,1001) 'RUN_TYPE', RUN_TYPE
106              CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
107           ENDIF
108     
109     ! Turbulence model:
110           IF (K_Epsilon .AND. L_SCALE0 /= ZERO) THEN
111              WRITE(ERR_MSG,2001)
112              CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
113      2001 FORMAT('Error 2001: Cannot set K_EPSILON = .T. and specify ',    &
114              'L_SCALE0 /= ZERO')
115           ENDIF
116     
117     ! Ishii and jackson form of governing equations cannot both be invoked
118           IF (ISHII .AND. JACKSON) THEN
119              WRITE(ERR_MSG,2002)
120              CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
121      2002 FORMAT('Error 2002: Cannot set both ISHII = .T. and JACKSON = ',&
122                  '.T.',/,'Please correct the mfix.dat file.')
123           ENDIF
124     
125     !  Check whether MU_gmax is specified for turbulence (sof)
126           IF (K_Epsilon .AND. MU_GMAX==UNDEFINED) THEN
127              WRITE(ERR_MSG, 1000) 'MU_GMAX'
128              CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
129           ENDIF
130     
131     ! Clear the error manager
132           CALL FINL_ERR_MSG
133     
134           RETURN
135     
136      1000 FORMAT('Error 1000: Required input not specified: ',A,/'Please ',&
137              'correct the mfix.dat file.')
138     
139      1001 FORMAT('Error 1001: Illegal or unknown input: ',A,' = ',A,/      &
140              'Please correct the mfix.dat file.')
141     
142      1002 FORMAT('Error 1002: Illegal or unknown input: ',A,' = ',G14.4,/  &
143              'Please correct the mfix.dat file.')
144     
145      1003 FORMAT('Error 1003: Illegal or unknown input: ',A,' = ',I4,/     &
146              'Please correct the mfix.dat file.')
147     
148           END SUBROUTINE CHECK_RUN_CONTROL
149     
150     
151     
152