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

1     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv!
2     !                                                                      !
3     !  Subroutine: CHECK_NUMERICS                                          !
4     !  Purpose: Check the numerics control namelist section                !
5     !                                                                      !
6     !  Author: P. Nicoletti                               Date: 27-NOV-91  !
7     !                                                                      !
8     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^!
9           SUBROUTINE CHECK_NUMERICS
10     
11     
12     ! Global Variables:
13     !---------------------------------------------------------------------//
14     ! Flag: Use the Fourth-order scheme
15           use run, only: FPFOI
16     ! Flag: Use the Chi-scheme
17           use run, only: CHI_SCHEME
18     ! Flag: Set optimal LEQ solver parameters for parallel runs.
19           use leqsol, only: OPT_PARALLEL
20     ! Discretization scheme for various equations
21           USE run, only: DISCRETIZE
22     ! Solve system transpose
23           use leqsol, only: DO_TRANSPOSE
24     ! Minimize dot porducts in BiCGSTAB
25           use leqsol, only: MINIMIZE_DOTPRODUCTS
26     ! Report solver stats.
27           use leqsol, only: SOLVER_STATISTICS
28     ! Controls reduction of global sums for residuals.
29           use run, only: DEBUG_RESID
30     ! Linear equation, preconditioner sweep method.
31           use leqsol, only: LEQ_SWEEP
32     ! Linear equation solution method.
33           use leqsol, only: LEQ_METHOD
34     ! Calculate dot-products more efficiently for serial runs.
35           use parallel, only: IS_SERIAL
36     
37     
38     ! Global Parameters:
39     !---------------------------------------------------------------------//
40     ! NONE
41     
42     ! Global Module proceedures:
43     !---------------------------------------------------------------------//
44           use error_manager
45     
46     
47           IMPLICIT NONE
48     
49     
50     ! Local Variables:
51     !---------------------------------------------------------------------//
52     ! Loop counter
53           INTEGER :: L
54     
55     
56     !......................................................................!
57     
58     
59     ! Initialize the error manager.
60           CALL INIT_ERR_MSG("CHECK_NUMERICS")
61     
62     
63     ! Check  Fourth-order scheme requirements.
64           IF (FPFOI) THEN
65              DO L = 1,8
66                 IF(DISCRETIZE(L) <= 1) THEN
67                    WRITE(ERR_MSG,2000)
68                    CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
69                 ENDIF
70              ENDDO
71      2000 FORMAT('Error 2000: Fourth-order scheme (FPFOI) requireds ',     &
72              'DISCRETIZE >= 2',/'for all equations. Please correct the ',  &
73              'mfix.dat file.')
74           ENDIF
75     
76     
77     ! Check chi scheme requirements.
78           IF(CHI_SCHEME)THEN
79              IF(DISCRETIZE(7) .NE. 3 .AND. DISCRETIZE(7).NE.6) THEN
80                 WRITE(ERR_MSG,2001)
81                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
82      2001 FORMAT('Error 2001: CHI_SCHEME for species equations is only ',  &
83              'implemented',/'for SMART and MUSCL discretization schemes ', &
84              '[DISCRTIZE(7)].',/'Please correct the mfix.dat file.')
85             ENDIF
86           ENDIF
87     
88     
89     ! Set the optimizations for DMP runs.
90           IF (OPT_PARALLEL) THEN
91              IS_SERIAL = .FALSE.
92              DO_TRANSPOSE = .FALSE.
93              MINIMIZE_DOTPRODUCTS = .TRUE.
94              SOLVER_STATISTICS = .TRUE.
95              DEBUG_RESID = .FALSE.
96              LEQ_SWEEP(1:2) = 'ASAS'
97              LEQ_METHOD(1:2) = 2
98              LEQ_METHOD(3:9) = 1
99           ENDIF
100     
101     ! Finalize the error msg.
102           CALL FINL_ERR_MSG
103     
104           RETURN
105     
106           END SUBROUTINE CHECK_NUMERICS
107