File: /nfs/home/0/users/jenkins/mfix.git/model/parse_resid_string.f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 SUBROUTINE PARSE_RESID_STRING()
21
22
23
24
25
26
27
28
29 USE param
30 USE param1
31 USE physprop
32 USE residual
33 USE funits
34 USE compar
35 IMPLICIT NONE
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 INTEGER L, L1
52
53
54 CHARACTER(LEN=80) LINE
55
56
57 LOGICAL STRING_DEFINED
58
59
60
61
62
63
64
65
66
67
68 IF(GROUP_RESID) THEN
69
70 RESID_GRP_STRING(HYDRO_GRP) = 'HYDRO'
71 RESID_GRP_STRING(THETA_GRP) = 'THETA'
72 RESID_GRP_STRING(ENERGY_GRP) = 'ENERGY'
73 RESID_GRP_STRING(SPECIES_GRP) = 'SPECIES'
74 RESID_GRP_STRING(SCALAR_GRP) = 'SCALAR'
75 RESID_GRP_STRING(KE_GRP) = 'K-EPS.'
76
77 RESID_STRING = UNDEFINED_C
78 RESID_INDEX(8,1) = UNDEFINED_I
79
80 RETURN
81 ENDIF
82
83 STRING_DEFINED = .FALSE.
84 DO L = 1, MAX_RESID_INDEX
85 IF (RESID_STRING(L) /= UNDEFINED_C) STRING_DEFINED = .TRUE.
86 END DO
87 IF (.NOT.STRING_DEFINED) THEN
88 RESID_STRING(1) = 'P0'
89 RESID_STRING(2) = 'P1'
90 RESID_STRING(3) = 'U0'
91 RESID_STRING(4) = 'V0'
92 RESID_STRING(5) = 'U1'
93 RESID_STRING(6) = 'V1'
94 ENDIF
95
96
97 DO L = 1, MAX_RESID_INDEX
98 RESID_INDEX(L,1) = UNDEFINED_I
99 STRING_DEFINED = .FALSE.
100 DO L1 = 1, NPREFIX
101
102 IF (RESID_STRING(L)(1:1) == RESID_PREFIX(L1)) THEN
103 RESID_INDEX(L,1) = L1
104 STRING_DEFINED = .TRUE.
105 EXIT
106 ENDIF
107 END DO
108 IF (STRING_DEFINED) THEN
109
110 (L,2) = ICHAR(RESID_STRING(L)(2:2)) - 48
111
112 IF (RESID_INDEX(L,2)<0 .OR. RESID_INDEX(L,2)>MMAX) THEN
113 WRITE (LINE, '(A, A1, A, A4, A)') 'Error: Phase index ', &
114 RESID_STRING(L)(2:2), ' in RESID_STRING ', RESID_STRING(L), &
115 ' out of bounds.'
116 CALL WRITE_ERROR ('PARSE_RESID_STRING', LINE, 1)
117 ENDIF
118
119 IF (RESID_STRING(L)(1:1)=='G' .AND. RESID_INDEX(L,2)==0) THEN
120
121 WRITE (LINE, '(A, A1, A, A4, A)') 'Error: Phase index ', &
122 RESID_STRING(L)(2:2), ' in RESID_STRING ', RESID_STRING(L), &
123 ' should be > 0.'
124 CALL WRITE_ERROR ('PARSE_RESID_STRING', LINE, 1)
125 ENDIF
126 IF (RESID_STRING(L)(1:1) == 'X') RESID_INDEX(L,1) = RESID_X + &
127 (ICHAR(RESID_STRING(L)(3:3)) - 48) * 10 &
128 + ICHAR(RESID_STRING(L)(4:4)) - 48 - 1
129 ENDIF
130 END DO
131 RETURN
132 END SUBROUTINE PARSE_RESID_STRING
133
134
135
136