32
33
34
35 USE elbufdef_mod
36
37
38
39#include "implicit_f.inc"
40
41
42
43#include "com01_c.inc"
44#include "task_c.inc"
45#include "param_c.inc"
46
47
48
49 INTEGER IPARG(NPARG,*),ITHBUF(*)
50 INTEGER, INTENT(in) :: NTHGRP2
51 INTEGER, DIMENSION(NITHGR,*), INTENT(in) :: ITHGRP
53 . wa(*)
54
55 TYPE (ELBUF_STRUCT_), TARGET, DIMENSION(NGROUP) ::
56
57
58
59 INTEGER II,I,N,IH,NG,ITY,MTE,K,L,LWA,NEL,NFT,J,IP
60 INTEGER :: NITER,IAD,NN,IADV,NVAR,ITYP,IJK
61
62 TYPE(G_BUFEL_) ,POINTER :: GBUF
63
64
65
66
67 ijk = 0
68 DO niter=1,nthgrp2
69 ityp=ithgrp(2,niter)
70 nn =ithgrp(4,niter)
71 iad =ithgrp(5,niter)
73 iadv=ithgrp(7,niter)
74 ii=0
75 IF(ityp==4)THEN
76
77 ii=0
78 ih=iad
79 DO WHILE (ithbuf(ih+nn) /= ispmd .AND. ih < iad+nn)
80 ih = ih + 1
81 ENDDO
82 IF (ih >= iad+nn) GOTO 666
83 DO ng=1,ngroup
84 ity=iparg(5,ng)
85 gbuf => elbuf_tab(ng)%GBUF
86 IF (ity == 4) THEN
87 mte=iparg(1,ng)
88 nel=iparg(2,ng)
89 nft=iparg(3,ng)
90 DO i=1,nel
91 n=i+nft
92 k=ithbuf(ih)
93 ip=ithbuf(ih+nn)
94 IF (k == n) THEN
95 ih=ih+1
96 ii = ((ih-1) - iad)*
nvar
97 DO WHILE (ithbuf(ih+nn) /= ispmd .AND. ih < iad+nn)
98 ih = ih + 1
99 ENDDO
100 IF (ih > iad+nn) GOTO 666
101 DO l=iadv,iadv+
nvar-1
102 k=ithbuf(l)
103 ijk=ijk+1
104 IF (ithbuf(l) == 1) THEN
105 wa(ijk)=gbuf%OFF(i)
106 ELSEIF (ithbuf(l) == 2) THEN
107 wa(ijk)=gbuf%FOR(i)
108 ELSEIF (ithbuf(l) == 3) THEN
109 wa(ijk)=gbuf%EINT(i)
110 ELSEIF (ithbuf(l) == 4THEN
111 wa(ijk)=gbuf%AREA(i)
112 ELSEIF (ithbuf(l) == 5) THEN
113 wa(ijk)=gbuf%LENGTH(i)
114 ELSEIF (ithbuf(l) == 6) THEN
115 IF (mte == 1) THEN
116 wa(ijk)=zero
117 ELSE
118 wa(ijk)=gbuf%PLA(i)
119 ENDIF
120 ENDIF
121 ENDDO
122 ijk = ijk + 1
123 wa(ijk) = ii
124 ENDIF
125 ENDDO
126 ENDIF
127 ENDDO
128 666 continue
129
130 ENDIF
131 ENDDO
132
133 RETURN
integer function nvar(text)