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

1           MODULE leqsol
2     
3           use param, only: DIM_EQS
4     
5     ! Maximum number of outer iterations
6           INTEGER :: MAX_NIT
7     
8     ! Automatic adjustment of leq parameters possible (set in iterate after
9     ! the completion of first iteration).
10           LOGICAL :: LEQ_ADJUST
11     
12     ! Maximum number of linear equation solver iterations
13           INTEGER :: LEQ_IT(DIM_EQS)
14     
15     ! Linear equation solver method
16           INTEGER :: LEQ_METHOD(DIM_EQS)
17     
18     ! Total Iterations
19           INTEGER :: ITER_TOT(DIM_EQS) = 0
20     
21     ! Linear equation solver sweep direction
22           CHARACTER(LEN=4) :: LEQ_SWEEP(DIM_EQS)
23     
24     ! Linear equation solver tolerance
25           DOUBLE PRECISION :: LEQ_TOL(DIM_EQS)
26     
27     ! Preconditioner option
28           CHARACTER(LEN=4) :: LEQ_PC(DIM_EQS)
29     
30     ! Option to minimize dot products
31           LOGICAL :: MINIMIZE_DOTPRODUCTS
32     
33     ! Option to transpose A_m
34           LOGICAL :: DO_TRANSPOSE
35     
36     ! Frequency of convergence check in BiCGStab
37           INTEGER :: ICHECK_BICGS
38     
39     ! Optimize for massively parallel machine
40           LOGICAL :: OPT_PARALLEL
41     
42     ! Linear and non-linear solver statistics
43           LOGICAL :: SOLVER_STATISTICS
44     
45           CONTAINS
46     
47     !----------------------------------------------------------------------!
48     !                                                                      !
49     !                                                                      !
50     !                                                                      !
51     !----------------------------------------------------------------------!
52           SUBROUTINE REPORT_SOLVER_STATS(TNIT, STEPS)
53     
54           use error_manager
55     
56           IMPLICIT NONE
57     
58           INTEGER, INTENT(IN) :: TNIT, STEPS
59     
60           INTEGER :: LC
61     
62           WRITE(ERR_MSG,1100) iVal(TNIT), iVal(TNIT/STEPS)
63           CALL FLUSH_ERR_MSG(HEADER=.FALSE., FOOTER=.FALSE.)
64     
65      1100 FORMAT(/2x,'Total number of non-linear iterations: ', A,/2x,&
66              'Average number per time-step: ',A)
67     
68           WRITE(ERR_MSG,1200)
69           CALL FLUSH_ERR_MSG(HEADER=.FALSE., FOOTER=.FALSE.)
70     
71      1200 FORMAT(2x,'|',10('-'),'|',13('-'),'|',14('-'),'|',/&
72              2x,'| Equation |  Number of  |  Avg Solves  |',/&
73              2x,'|  Number  |   Solves    |   for NIT    |',/&
74              2x,'|',10('-'),'|',13('-'),'|',14('-'),'|')
75     
76           DO LC = 1, DIM_EQS
77              WRITE(ERR_MSG,1201) LC, ITER_TOT(LC), ITER_TOT(LC)/TNIT
78              CALL FLUSH_ERR_MSG(HEADER=.FALSE., FOOTER=.FALSE.)
79           ENDDO
80     
81      1201 FORMAT(2x,'|',3x,I3,4x,'|',2x,I9,2x,'|',2x,I10,2x,'|',/ &
82              2x,'|',10('-'),'|',13('-'),'|',14('-'),'|')
83     
84     
85           RETURN
86           END SUBROUTINE REPORT_SOLVER_STATS
87     
88     
89           END MODULE leqsol
90