30 SUBROUTINE thpout(IPARG , NTHGRP2 , ITHGRP ,GEO, IXP,
31 . ITHBUF, ELBUF_TAB, WA )
39#include "implicit_f.inc"
50 INTEGER IPARG(NPARG,*),ITHBUF(*)
51 INTEGER,
INTENT(in) :: NTHGRP2
52 INTEGER,
DIMENSION(NITHGR,*),
INTENT(in) :: ITHGRP
53 INTEGER,
DIMENSION(NIXP,NUMELP) ,
INTENT(IN):: IXP
59 TYPE (ELBUF_STRUCT_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
63 INTEGER II,I,K,L,N,IP,IH,NG,IPT,NPT,ITY,MTE,JJ,IK,
64 . ilayer,nel,nft,igtyp,ipa,kk(3)
65 INTEGER :: NITER,IAD,NN,IADV,NVAR,ITYP,IJK,PID
68 .
area,areapt,sx,sxy,szx,idx
69 TYPE(g_bufel_) ,
POINTER :: GBUF
70 TYPE(buf_lay_) ,
POINTER :: BUFLY
71 TYPE(l_bufel_) ,
POINTER :: LBUF
92 DO WHILE (ithbuf(ih+nn) /= ispmd .AND. ih < iad+nn)
95 IF (ih >= iad+nn)
GOTO 666
100 gbuf => elbuf_tab(ng)%GBUF
108 IF (igtyp == 18)
THEN
121 IF (igtyp == 3)
area = geo(1,pid)
122 IF(igtyp == 18 )
THEN
132 ii = ((ih-1) - iad)*nvar
133 DO WHILE (ithbuf(ih+nn) /= ispmd .AND. ih < iad+nn)
137 IF (ih > iad+nn)
GOTO 666
139 DO l=iadv,iadv+nvar-1
142 IF (ithbuf(l) == 1)
THEN
144 ELSEIF(ithbuf(l) == 2)
THEN
145 wa(ijk)=gbuf%FOR(kk(1)+i)
146 ELSEIF (ithbuf(l) == 3)
THEN
147 wa(ijk)=gbuf%FOR(kk(2)+i)
148 ELSEIF (ithbuf(l) == 4)
THEN
149 wa(ijk)=gbuf%FOR(kk(3)+i)
150 ELSEIF (ithbuf(l) == 5)
THEN
151 wa(ijk)=gbuf%MOM(kk(1)+i)
152 ELSEIF (ithbuf(l) == 6)
THEN
153 wa(ijk)=gbuf%MOM(kk(2)+i)
154 ELSEIF (ithbuf(l) == 7)
THEN
155 wa(ijk)=gbuf%MOM(kk(3)+i)
156 ELSEIF (ithbuf(l) == 8)
THEN
157 wa(ijk)=gbuf%EINT(i) + gbuf%EINT(i+nel)
158 ELSEIF (ithbuf(l) == 9)
THEN
162 sx = gbuf%FOR(kk(1)+i)/
area
164 ELSEIF(igtyp == 18 )
THEN
165 IF (elbuf_tab(ng)%BUFLY(ilayer)%L_SIG > 0)
THEN
167 areapt = geo(ipa+ipt,pid)
168 lbuf => elbuf_tab(ng)%BUFLY(ilayer)%LBUF(1,1,ipt)
169 wa(ijk) = wa(ijk)+ lbuf%SIG(kk(1)+i) * areapt/
area
173 ELSEIF (ithbuf(l) == 10)
THEN
177 sxy = gbuf%FOR(kk(2)+i)/
area
179 ELSEIF(igtyp == 18 )
THEN
180 IF (elbuf_tab(ng)%BUFLY(ilayer)%L_SIG > 0)
THEN
182 areapt = geo(ipa+ipt,pid)
183 lbuf => elbuf_tab(ng)%BUFLY(ilayer)%LBUF(
184 wa(ijk) = wa(ijk)+ lbuf%SIG(kk(2)+i)*areapt/
area
188 ELSEIF (ithbuf(l) == 11)
THEN
192 szx = gbuf%FOR(kk(3)+i)
194 ELSEIF(igtyp == 18 )
THEN
195 IF (elbuf_tab(ng)%BUFLY(ilayer)%L_SIG > 0)
THEN
198 lbuf => elbuf_tab(ng)%BUFLY(ilayer)%LBUF(1,1,ipt)
199 wa(ijk) = wa(ijk)+ lbuf%SIG(kk(3)+i) * areapt/
area
203 ELSEIF (ithbuf(l) > 11 .AND.ithbuf(l) <= 254 )
THEN
204 IF(igtyp == 18 )
THEN
205 idx = (ithbuf(l) - 12)/ 3
208 ik = mod((ithbuf(l) - 12),3) + 1
209 lbuf => elbuf_tab(ng)%BUFLY(ilayer
210 wa(ijk) = lbuf%SIG(kk(ik)+i
212 ELSEIF (ithbuf(l) == 255)
THEN
218 ELSEIF(igtyp == 18 )
THEN
219 IF (elbuf_tab(ng)%BUFLY(ilayer
THEN
221 areapt = geo(ipa+ipt,pid)
222 lbuf => elbuf_tab(ng)%BUFLY(ilayer)%LBUF(1,
223 wa(ijk) = wa(ijk)+ lbuf%PLA(i) * areapt/
area
227 ELSEIF (ithbuf(l) > 255 .AND.ithbuf(l) <= 336 )
THEN
228 IF(igtyp == 18 )
THEN
229 IF (elbuf_tab(ng)%BUFLY(ilayer)%L_PLA > 0)
THEN
230 ipt = ithbuf(l) - 255
231 lbuf => elbuf_tab(ng)%BUFLY(ilayer
232 wa(ijk) = lbuf%PLA(i)
235 ELSEIF (ithbuf(l) == 337 )
THEN
236 IF(gbuf%G_EPSD>0)
THEN