32 SUBROUTINE spgrhead(KXSP ,IXSP ,IPARG ,PM ,IPART,
33 2 IPARTSP ,EADD ,CEPSP ,ND ,IPM ,
34 3 IGEO ,SPBUF ,SPH2SOL ,
35 4 SOL2SPH ,IRST ,MAT_PARAM ,IXSPS)
45#include "implicit_f.inc"
49#include "vect01_c.inc"
57 INTEGER,
DIMENSION(KVOISPH,NUMSPH),
INTENT(INOUT) :: IXSPS
58 INTEGER KXSP(NISP,*),IPARG(NPARG,*),IXSP(KVOISPH,*),
59 . IPART(LIPART1,*),IPARTSP(*), EADD(*), CEPSP(*),
60 . ipm(npropmi,nummat), igeo(npropgi,numgeo),
61 . nd, sph2sol(*), sol2sph(2,*), irst(3,nsphsol)
62 my_real pm(npropm,nummat), spbuf(nspbuf,numsph)
63 TYPE() ,
DIMENSION(NUMMAT),
INTENT(IN) :: MAT_PARAM
67 INTEGER NE, NG, MT, MLN, I, J, MODE, II0, JJ0,
68 . II, JJ, II1, JJ1, II2, JJ2, II3, JJ3, II4, JJ4,
69 . N, IGTYP,IORDER,IPRT,ISLEEP,IUN,IFAIL,IEOS, IKIND, STAT,
70 . jale_from_mat, jale_from_prop
72 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: ITRI
73 INTEGER,
DIMENSION(:),
ALLOCATABLE :: INDEX
74 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: INUM
75 INTEGER,
DIMENSION(:),
ALLOCATABLE :: XEP
76 my_real,
DIMENSION(:,:),
ALLOCATABLE :: rnum
81 INTEGER MY_SHIFTL,MY_SHIFTR,MY_AND
82 EXTERNAL MY_SHIFTL,MY_SHIFTR,MY_AND
83 my_real,
EXTERNAL :: GET_U_GEO
89 CALL my_alloc(itri,7,numsph)
90 CALL my_alloc(index,2*numsph)
91 CALL my_alloc(inum,13,numsph)
92 CALL my_alloc(xep,numsph)
93 CALL my_alloc(rnum,nspbuf,numsph)
124 ixsps(j,i) = ixsp(j,i)
131 mln =nint(pm(19,abs(mt)))
134 isorth=
min(iun,igeo(2,ng))
138 iorder=get_u_geo(5,ng)
146 jale_from_mat = nint(pm(72,mt))
147 jale_from_prop = igeo(62,ng)
148 jale =
max(jale_from_mat, jale_from_prop)
151 IF(jale==0.AND.mln/=18)jlag=1
160 IF (mat_param(mt)%NFAIL > 0) ifail = 1
162 jthe=my_shiftl(jthe,1)
163 jtur=my_shiftl(jtur,2)
164 jeul=my_shiftl(jeul,3)
165 jlag=my_shiftl(jlag,4)
166 jale=my_shiftl(jale,5)
171 IF(mln<28.OR.mln==36.OR.mln==46.OR.mln==47)mln=0
172 mln = my_shiftl(mln,21)
173 ifail = my_shiftl(ifail
174 itri(2,i)=mln+jale+jlag+jeul+jtur+jthe+ifail
180 iorder= my_shiftl(iorder,0)
181 isorth= my_shiftl(isorth,2)
182 israt = my_shiftl(israt,3)
183 ieos = my_shiftl(ieos,5)
185 itri(5,i)=iorder+israt+isorth+ieos
191 CALL my_orders( mode, work, itri, index, numsph , 7)
194 ipartsp(i)= inum(1,index(i))
195 kxsp(1,i) = inum(2,index(i))
196 kxsp(2,i) = inum(3,index(i))
197 kxsp(3,i) = inum(4,index(i))
198 kxsp(4,i) = inum(5,index(i))
199 kxsp(5,i) = inum(6,index(i))
200 kxsp(6,i) = inum(7,index(i))
201 kxsp(7,i) = inum(8,index
202 kxsp(8,i) = inum(9,index(i))
206 spbuf(j,i) = rnum(j,index(i))
211 cepsp(i) = xep(index(i))
216 ixsp(j,i) = ixsps(j,index(i))
223 inum(10,i)=sph2sol(i)
224 IF(i >= first_sphsol .AND. i < first_sphsol+nsphsol)
THEN
225 inum(11,i)=irst(1,i-first_sphsol+1)
226 inum(12,i)=irst(2,i-first_sphsol+1)
227 inum(13,i)=irst(3,i-first_sphsol+1)
232 sph2sol(i) = inum(10,index(i))
233 IF(i >= first_sphsol .AND. i < first_sphsol+nsphsol)
THEN
235 irst(1,i-first_sphsol+1)=inum(11,index(i))
236 irst(2,i-first_sphsol+1)=inum(12,index(i))
237 irst(3,i-first_sphsol+1)=inum(13,index(i))
246 n=sph2sol(first_sphsol)
248 sol2sph(2,n)=sol2sph(1,n)+1
249 DO i=first_sphsol+1,first_sphsol+nsphsol-1
250 IF(sph2sol(i)==n)
THEN
251 sol2sph(2,n)=sol2sph(2,n)+1
255 sol2sph(2,n)=sol2sph(1,n)+1
268 jj0=itri(1,index(i-1))
270 jj=itri(2,index(i-1))
272 jj1=itri(3,index(i-1))
274 jj2=itri(4,index(i-1))
276 jj3=itri(5,index(i-1))
278 jj4=itri(6,index(i-1))
279 IF((ii0==0.AND.ii0/=jj0) .OR. ii/=jj .OR. ii1/=jj1.OR.ii2/=jj2 .OR. ii3/=jj3.OR.ii4/=jj4)
THEN
284 eadd(nd+1) = numsph+1
287 ne = ne + eadd(n+1)-eadd(n)