31
32
33
35
36
37
38#include "implicit_f.inc"
39
40
41
42#include "com01_c.inc"
43#include "com04_c.inc"
44#include "param_c.inc"
45#include "submodel.inc"
46
47
48
49 INTEGER,INTENT(IN) :: SITHBUF
50 INTEGER ITHBUF(*),WEIGHT(NUMNOD)
51 INTEGER, INTENT(inout) :: WA_SIZE,NTHGRP2
52 INTEGER, DIMENSION(2*NTHGRP2+1), INTENT(inout) :: INDEX_WA_NOD
53 INTEGER, DIMENSION(NITHGR,*), INTENT(in) :: ITHGRP
54
55
56
57
58 LOGICAL :: BOOL,CONDITION
59 INTEGER :: N, I, J, ISK, II, IUN
60 INTEGER :: NN, IAD, IADV, NVAR, ITYP, J_FIRST
61 INTEGER, DIMENSION(NTHGRP2) :: INDEX_NOD
62 DATA iun/1/
63
64
65
66
67
68
69 wa_size = 0
70 index_nod(1:nthgrp2) = 0
71
72 DO n=1,nthgrp2
73 ityp=ithgrp(2,n)
74 nn =ithgrp(4,n)
75 iad =ithgrp(5,n)
77 iadv=ithgrp(7,n)
78 IF(ityp==0)THEN
79 IF(iroddl/=0)THEN
80 ii=0
81 DO j=iad,iad+nn-1
82 i=ithbuf(j)
83 isk = 1 + ithbuf(j+nn)
84 condition = (i <= 0)
85 IF(.NOT. condition) condition = (weight(i) == 0)
86 IF (condition) THEN
87
88 ELSEIF(isk==1)THEN
89
90
91 wa_size = wa_size +
nvar + 1
92 ELSEIF(isk<=numskw+1+nsubmod)THEN
93
94 wa_size = wa_size +
nvar + 1
95 ELSE
96
97
98 wa_size = wa_size +
nvar + 1
99 ENDIF
100 ENDDO
101 ELSE
102
103 ii=0
104 DO j=iad,iad+nn-1
105 i=ithbuf(j)
106 isk = 1 + ithbuf(j+nn)
107 condition = (i <= 0)
108 IF(.NOT. condition) condition = (weight(i) =
109 IF (condition) THEN
110
111 ELSEIF(isk==1)THEN
112
113 wa_size = wa_size +
nvar + 1
114 ELSEIF(isk<=numskw+1+nsubmod)THEN
115
116
117 wa_size = wa_size
118 ELSE
119
120
121 wa_size = wa_size +
nvar + 1
122 ENDIF
123 ENDDO
124 ENDIF
125 index_nod(n) = wa_size
126 ENDIF
127 ENDDO
128
129 j_first = 0
130 bool = .true.
131 DO i=1,nthgrp2
132 IF(bool.EQV..true.) THEN
133 IF( index_nod(i)/=0 ) THEN
134 bool = .false.
135 j_first = i
136 ENDIF
137 ENDIF
138 ENDDO
139
140 j = 0
141 IF(j_first>0) THEN
142 j=j+1
143 index_wa_nod(j) = index_nod(j_first)
144 j=j+1
145 index_wa_nod(j) = j_first
146 DO i=j_first+1,nthgrp2
147 IF( index_nod(i)-index_nod(i-1)>0 ) THEN
148 j=j+1
149 index_wa_nod(j) = index_nod(i)
150 j=j+1
151 index_wa_nod(j) = i
152 ENDIF
153 ENDDO
154 ENDIF
155 index_wa_nod(2*nthgrp2+1) = j
156
157
158
159 RETURN
integer function nvar(text)