32 . ITHGRP,NTHGRP2,WA_SIZE,INDEX_WA_SPRING,SITHBUF)
37 use element_mod ,
only : nixr
41#include "implicit_f.inc"
51 INTEGER,
INTENT(IN) :: SITHBUF
52 INTEGER IPARG(NPARG,*),ITHBUF(*),IXR(NIXR,*),
53 . igeo(npropgi,*),ithgrp(nithgr,*),nthgrp2
54 INTEGER,
INTENT(inout) :: WA_SIZE
55 INTEGER,
DIMENSION(2*NTHGRP2+1),
INTENT(inout) :: INDEX_WA_SPRING
57 TYPE (ELBUF_STRUCT_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
68 INTEGER :: II, I, N, IH, NG, ITY, MTE, K, IP,
69 . nel,nft,iprop,igtyp,j,jj(6)
70 INTEGER :: NN,IAD,IADV,NVAR,ITYP,NITER,J_FIRST
71 INTEGER,
DIMENSION(NTHGRP2) :: INDEX_RESSORT
73 TYPE(g_bufel_) ,
POINTER :: GBUF
94 index_ressort(1:nthgrp2) = 0
108 DO WHILE (ithbuf(ih+nn) /= ispmd .AND. ih < iad+nn)
111 IF (ih >= iad+nn)
GOTO 666
115 gbuf => elbuf_tab(ng)%GBUF
120 igtyp = igeo(11,iprop)
125 jj(k) = (k-1)*nel + 1
138 ii = ((ih-1) - iad)*nvar
139 DO WHILE (ithbuf(ih+nn) /= ispmd .AND. ih < iad+nn)
143 IF (ih > iad+nn)
GOTO 666
144 wa_size = wa_size + nvar + 1
147 ELSEIF (igtyp == 26)
THEN
156 ii = ((ih-1) - iad)*nvar
157 DO WHILE (ithbuf(ih+nn) /= ispmd .AND. ih < iad+nn)
161 IF (ih > iad+nn)
GOTO 666
162 wa_size = wa_size + nvar + 1
165 ELSEIF (igtyp == 27)
THEN
174 ii = ((ih-1) - iad)*nvar
175 DO WHILE (ithbuf(ih+nn) /= ispmd .AND. ih < iad+nn)
179 IF (ih > iad+nn)
GOTO 666
180 wa_size = wa_size + nvar + 1
183 ELSEIF( igtyp == 12)
THEN
192 ii = ((ih-1) - iad)*nvar
193 DO WHILE (ithbuf(ih+nn) /= ispmd .AND. ih < iad+nn)
198 IF (ih > iad+nn)
GOTO 666
199 wa_size = wa_size + nvar + 1
202 ELSEIF (igtyp == 8 .OR. igtyp == 13 .OR. igtyp == 25
203 . .OR. igtyp == 23 )
THEN
213 ii = ((ih-1) - iad)*nvar
214 DO WHILE (ithbuf(ih+nn) /= ispmd .AND. ih < iad+nn)
218 IF (ih > iad+nn)
GOTO 666
219 wa_size = wa_size + nvar + 1
222 ELSEIF (igtyp >= 29)
THEN
223 IF (igtyp <= 31 .OR. igtyp == 35 .OR. igtyp == 36. or.
238 IF (ih > iad+nn)
GOTO 666
239 wa_size = wa_size + nvar + 1
242 ELSEIF (igtyp == 32)
THEN
252 ii = ((ih-1) - iad)*nvar
253 DO WHILE (ithbuf(ih+nn) /= ispmd .AND. ih < iad+nn)
257 IF (ih > iad+nn)
GOTO 666
258 wa_size = wa_size + nvar + 1
261 ELSEIF (igtyp == 33 .OR. igtyp == 45)
THEN
272 DO WHILE (ithbuf(ih+nn) /= ispmd .AND. ih < iad+nn)
276 IF (ih > iad+nn)
GOTO 666
277 wa_size = wa_size + nvar + 1
286 index_ressort(niter) = wa_size
294 IF(bool.EQV..true.)
THEN
295 IF( index_ressort(i)/=0 )
THEN
305 index_wa_spring(j) = index_ressort(j_first)
307 index_wa_spring(j) = j_first
308 DO i=j_first+1,nthgrp2
309 IF( index_ressort(i)-index_ressort(i-1)>0 )
THEN
311 index_wa_spring(j) = index_ressort(i)
313 index_wa_spring(j) = i
317 index_wa_spring(2*nthgrp2+1) = j
subroutine thres_count(iparg, ithbuf, elbuf_tab, igeo, ixr, ithgrp, nthgrp2, wa_size, index_wa_spring, sithbuf)