31 SUBROUTINE thpout(IPARG , NTHGRP2 , ITHGRP ,GEO, IXP,
32 . ITHBUF, ELBUF_TAB, WA )
37 use element_mod ,
only : nixp
41#include "implicit_f.inc"
52 INTEGER IPARG(NPARG,*),ITHBUF(*)
53 INTEGER,
INTENT(in) :: NTHGRP2
54 INTEGER,
DIMENSION(NITHGR,*),
INTENT(in) :: ITHGRP
55 INTEGER,
DIMENSION(NIXP,NUMELP) ,
INTENT(IN):: IXP
61 TYPE (ELBUF_STRUCT_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
65 INTEGER II,I,K,L,N,IP,IH,NG,IPT,NPT,ITY,MTE,JJ,IK,
66 . ilayer,nel,nft,igtyp,ipa,kk(3)
67 INTEGER :: NITER,IAD,NN,IADV,NVAR,ITYP,IJK,PID
70 .
area,areapt,sx,sxy,szx,idx
71 TYPE(g_bufel_) ,
POINTER :: GBUF
73 TYPE(l_bufel_) ,
POINTER :: LBUF
94 DO WHILE (ithbuf(ih+nn) /= ispmd .AND. ih < iad+nn)
97 IF (ih >= iad+nn)
GOTO 666
102 gbuf => elbuf_tab(ng)%GBUF
110 IF (igtyp == 18)
THEN
123 IF (igtyp == 3)
area = geo(1,pid)
124 IF(igtyp == 18 )
THEN
134 ii = ((ih-1) - iad)*nvar
135 DO WHILE (ithbuf(ih+nn) /= ispmd .AND. ih < iad+nn)
139 IF (ih > iad+nn)
GOTO 666
141 DO l=iadv,iadv+nvar-1
144 IF (ithbuf(l) == 1)
THEN
146 ELSEIF(ithbuf(l) == 2)
THEN
147 wa(ijk)=gbuf%FOR(kk(1)+i)
148 ELSEIF (ithbuf(l) == 3)
THEN
149 wa(ijk)=gbuf%FOR(kk(2)+i)
150 ELSEIF (ithbuf(l) == 4)
THEN
151 wa(ijk)=gbuf%FOR(kk(3)+i)
152 ELSEIF (ithbuf(l) == 5)
THEN
153 wa(ijk)=gbuf%MOM(kk(1)+i)
154 ELSEIF (ithbuf(l) == 6)
THEN
155 wa(ijk)=gbuf%MOM(kk(2)+i)
156 ELSEIF (ithbuf(l) == 7)
THEN
157 wa(ijk)=gbuf%MOM(kk(3)+i)
158 ELSEIF (ithbuf(l) == 8)
THEN
159 wa(ijk)=gbuf%EINT(i) + gbuf%EINT(i+nel)
160 ELSEIF (ithbuf(l) == 9)
THEN
164 sx = gbuf%FOR(kk(1)+i)/
area
166 ELSEIF(igtyp == 18 )
THEN
167 IF (elbuf_tab(ng)%BUFLY(ilayer)%L_SIG > 0)
THEN
169 areapt = geo(ipa+ipt,pid)
170 lbuf => elbuf_tab(ng)%BUFLY(ilayer)%LBUF(1,1,ipt)
171 wa(ijk) = wa(ijk)+ lbuf%SIG(kk(1)+i) * areapt/
area
175 ELSEIF (ithbuf(l) == 10)
THEN
179 sxy = gbuf%FOR(kk(2)+i)/
area
181 ELSEIF(igtyp == 18 )
THEN
182 IF (elbuf_tab(ng)%BUFLY(ilayer)%L_SIG > 0)
THEN
184 areapt = geo(ipa+ipt,pid)
185 lbuf => elbuf_tab(ng)%BUFLY(ilayer)%LBUF(1,1,ipt)
186 wa(ijk) = wa(ijk)+ lbuf%SIG(kk(2)+i)*areapt/
area
190 ELSEIF (ithbuf(l) == 11)
THEN
194 szx = gbuf%FOR(kk(3)+i)/
area
196 ELSEIF(igtyp == 18 )
THEN
197 IF (elbuf_tab(ng)%BUFLY(ilayer)%L_SIG > 0)
THEN
199 areapt = geo(ipa+ipt,pid)
200 lbuf => elbuf_tab(ng)%BUFLY(ilayer)%LBUF(1,1,ipt)
201 wa(ijk) = wa(ijk)+ lbuf%SIG(kk(3)+i) * areapt/
area
205 ELSEIF (ithbuf(l) > 11 .AND.ithbuf(l) <= 254 )
THEN
206 IF(igtyp == 18 )
THEN
207 idx = (ithbuf(l) - 12)/ 3
210 ik = mod((ithbuf(l) - 12),3) + 1
211 lbuf => elbuf_tab(ng)%BUFLY(ilayer)%LBUF(1,1,ipt)
212 wa(ijk) = lbuf%SIG(kk(ik)+i)
214 ELSEIF (ithbuf(l) == 255)
THEN
220 ELSEIF(igtyp == 18 )
THEN
221 IF (elbuf_tab(ng)%BUFLY(ilayer)%L_PLA > 0)
THEN
223 areapt = geo(ipa+ipt,pid)
224 lbuf => elbuf_tab(ng)%BUFLY(ilayer)%LBUF(1,1,ipt)
225 wa(ijk) = wa(ijk)+ lbuf%PLA(i) * areapt/
area
229 ELSEIF (ithbuf(l) > 255 .AND.ithbuf(l) <= 336 )
THEN
230 IF(igtyp == 18 )
THEN
231 IF (elbuf_tab(ng)%BUFLY(ilayer)%L_PLA > 0)
THEN
232 ipt = ithbuf(l) - 255
233 lbuf => elbuf_tab(ng)%BUFLY(ilayer)%LBUF(1,1,ipt)
234 wa(ijk) = lbuf%PLA(i)
237 ELSEIF (ithbuf(l) == 337 )
THEN
238 IF(gbuf%G_EPSD>0)
THEN