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, L, K, IUN, IFRA, N1,IPLY,IDIR
60 INTEGER :: NN,IAD,IADV,NVAR,ITYP,NITER,J_FIRST
61 INTEGER, DIMENSION(NTHGRP2) :: INDEX_NOD
62
64 . xl(3),dl(3),vl(3),al(3),vrl(3),arl(3),od(3),vo(3),ao(3),
65 . vrg(3),arg(3)
66 DATA iun/1/
67
68
69
70
71
72
73 wa_size = 0
74 index_nod(1:nthgrp2) = 0
75
76 DO n=1,nthgrp2
77 ityp=ithgrp(2,n)
78 nn =ithgrp(4,n)
79 iad =ithgrp(5,n)
81 iadv=ithgrp(7,n)
82 IF(ityp==0)THEN
83 IF(iroddl/=0)THEN
84 ii=0
85 DO j=iad,iad+nn-1
86 i=ithbuf(j)
87 isk = 1 + ithbuf(j+nn)
88 condition = (i <= 0)
89 IF(.NOT. condition) condition = (weight(i) == 0)
90 IF (condition) THEN
91
92 ELSEIF(isk==1)THEN
93
94
95 wa_size = wa_size +
nvar + 1
96 ELSEIF(isk<=numskw+1+nsubmod)THEN
97
98 wa_size = wa_size +
nvar + 1
99 ELSE
100
101
102 wa_size = wa_size +
nvar + 1
103 ENDIF
104 ENDDO
105 ELSE
106
107 ii=0
108 DO j=iad,iad+nn-1
109 i=ithbuf(j)
110 isk = 1 + ithbuf(j+nn)
111 condition = (i <= 0)
112 IF(.NOT. condition) condition = (weight(i) == 0)
113 IF (condition) THEN
114
115 ELSEIF(isk==1)THEN
116
117 wa_size = wa_size +
nvar + 1
118 ELSEIF(isk<=numskw+1+nsubmod)THEN
119
120
121 wa_size = wa_size +
nvar + 1
122 ELSE
123
124
125 wa_size = wa_size +
nvar + 1
126 ENDIF
127 ENDDO
128 ENDIF
129 index_nod(n) = wa_size
130 ENDIF
131 ENDDO
132
133 j_first = 0
134 bool = .true.
135 DO i=1,nthgrp2
136 IF(bool.EQV..true.) THEN
137 IF( index_nod(i)/=0 ) THEN
138 bool = .false.
139 j_first = i
140 ENDIF
141 ENDIF
142 ENDDO
143
144 j = 0
145 IF(j_first>0) THEN
146 j=j+1
147 index_wa_nod(j) = index_nod(j_first)
148 j=j+1
149 index_wa_nod(j) = j_first
150 DO i=j_first+1,nthgrp2
151 IF( index_nod(i)-index_nod(i-1)>0 ) THEN
152 j=j+1
153 index_wa_nod(j) = index_nod(i)
154 j=j+1
155 index_wa_nod(j) = i
156 ENDIF
157 ENDDO
158 ENDIF
159 index_wa_nod(2*nthgrp2+1) = j
160
161
162
163 RETURN
integer function nvar(text)