71 2 MS ,W ,ELBUF_TAB ,WA ,FV ,
72 3 STIFN ,PLD ,BUFMAT ,PARTSAV ,NLOC_DMG ,
73 4 FSAV ,DT2T ,IADS ,IPARG ,NPC ,
74 5 NELTST ,ITYPTST ,IPART ,ITAB ,ISKY ,
75 6 BUFGEO ,FSKYI ,XFRAME ,KXSP ,IXSP ,
76 7 NOD2SP ,IPARTSP ,SPBUF ,ISPCOND ,ISPSYM ,
78 9 WASPH ,LPRTSPH ,LONFSPH ,WASPACT ,ISPHIO ,
79 A VSPHIO ,SPHVELN ,ITASK ,IPM ,GRESAV ,
80 B GRTH ,IGRTH ,TABLE ,LGAUGE ,GAUGE ,
81 C NGROUNC ,IGROUNC ,IXS ,IRST ,SOL2SPH ,
82 D SPH2SOL ,FSKYV ,FSKY ,IGEO ,TEMP ,
83 E FTHE ,FTHESKYI ,SPHG_F6 ,WSMCOMP ,SOL2SPH_TYP,
84 F MAT_ELEM ,OUTPUT ,SPH_IORD1 ,SNPC ,STF,
85 G SBUFMAT ,IDTMINS ,NSVOIS ,IRESP ,MAXFUNC ,
86 . IMON_MAT ,USERL_AVAIL,impl_s ,idyna ,
87 . DT ,GLOB_THERM,SPH_WORK ,WFEXT ,sensors )
98 USE output_mod ,
ONLY : output_
103 use element_mod ,
only : nixs
107#include "implicit_f.inc"
108#include "comlock.inc"
112#include "mvsiz_p.inc"
116#include "com01_c.inc"
117#include "com04_c.inc"
118#include "com08_c.inc"
120#include "param_c.inc"
121#include "parit_c.inc"
122#include "vect01_c.inc"
123#include "scr07_c.inc"
124#include "scr17_c.inc"
126#include "units_c.inc"
127#include "scr02_c.inc"
128#include "scr18_c.inc"
132 TYPE(timer_),
INTENT(INOUT) :: TIMERS
133 INTEGER,
INTENT(IN) :: SNPC
134 INTEGER,
INTENT(IN) :: STF
135 INTEGER,
INTENT(IN) :: SBUFMAT
136 INTEGER,
INTENT(IN) :: NSVOIS
137 INTEGER,
INTENT(IN) :: IDTMINS
138 INTEGER ,
INTENT(IN) :: IRESP
139 INTEGER ,
INTENT(IN) :: MAXFUNC
140 INTEGER,
INTENT(IN) :: IMPL_S
141 INTEGER,
INTENT(IN) :: IDYNA
142 INTEGER,
INTENT(IN) :: USERL_AVAIL
143 INTEGER,
INTENT(IN) :: IMON_MAT
144 INTEGER IPART(LIPART1,*) ,NPC(*), IPARG(NPARG,*),IADS(8,*),
145 . NELTST, ITYPTST, IPARTSP(*), ISKY(*), ITAB(*),IPM(*),
146 . KXSP(NISP,*),IXSP(KVOISPH,*),NOD2SP(*),
147 . ISPCOND(NISPCOND,*),ISPSYM(NSPCOND,*),
149 . LPRTSPH(2,0:NPART),LONFSPH(*),WASPACT(*),ISPHIO(NISPHIO,*),
150 . itask,grth(*),igrth(*), lgauge(3,*), ngrounc, igrounc(*),
151 . ixs(nixs,*), irst(3,*), sol2sph(2,*), sph2sol(*), sol2sph_typ(*)
152 INTEGER,
INTENT(IN) :: SPH_IORD1
154 . x(3,*), v(3,*), ms(*), w(*), pm(npropm,*), geo(npropg,*),
155 . bufmat(*), bufgeo(*), pld(*) ,
156 . fsav(nthvki,*), wa(*), fv(*), a(3,*),
157 . partsav(*), stifn(*), fskyi(lskyi,4) ,
158 . xframe(nxframe,*), spbuf(nspbuf,*), xspsym(3,*), vspsym(3,*),
159 . dt2t, wasph(*), vsphio(*),
160 . sphveln(*),gresav(*), gauge(llgauge,*),
161 . fskyv(lsky,8),fsky(8,lsky),temp(*),fthe(*),ftheskyi(*),wsmcomp(*)
163 TYPE (ELBUF_STRUCT_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
164 TYPE (NLOCAL_STR_) ,
TARGET :: NLOC_DMG
165 DOUBLE PRECISION SPHG_F6(4,6,NBGAUGE)
167 TYPE(OUTPUT_),
INTENT(INOUT) :: OUTPUT
168 TYPE (MAT_ELEM_) ,
INTENT(INOUT) :: MAT_ELEM
169 TYPE (DT_),
INTENT(IN) :: DT
170 type(glob_therm_) ,
intent(inout) :: glob_therm
171 TYPE (SPH_WORK_),
INTENT(INOUT) :: SPH_WORK
172 type (sensors_) ,
intent(in) :: sensors
173 DOUBLE PRECISION,
INTENT(INOUT) :: WFEXT
178 INTEGER I, N, NG, NVC, K, ISTRA,
179 . KAD, NELEM, NEL, OFFSET, NSG,
180 . inod,mx,ns,kvnorm,myadrn,adrn, nisky_l,
181 . nsol, nski, n1, n2, n3, n4, n5, n6, n7, n8,
182 . k1, k2, k3, k4, k5, k6, k7, k8, ir, is, it, nsphdir, stat,
186 . phi1,phi2,phi3,phi4,phi5,phi6,phi7,phi8,
189 my_real,
DIMENSION(MVSIZ,6) :: svis
191 TYPE(g_bufel_) ,
POINTER :: GBUF
194 . A_GAUSS(9,9),A_GAUSS_TETRA(9,9)
202 3 -.666666666666666,0. ,0.666666666666666,
211 6 -.833333333333333,-.5 ,-.166666666666666,
212 6 0.166666666666666,0.5 ,0.833333333333333,
214 7 -.857142857142857,-.571428571428571,-.285714285714285,
215 7 0. ,0.285714285714285,0.571428571428571,
216 7 0.857142857142857,0. ,0. ,
217 8 -.875 ,-.625 ,-.375 ,
218 8 -.125 ,0.125 ,0.375,
220 9 -.888888888888888,-.666666666666666,-.444444444444444,
221 9 -.222222222222222,0. ,0.222222222222222,
222 9 0.444444444444444,0.666666666666666,0.888888888888888/
225 1 0.250000000000000,0.000000000000000,0.000000000000000,
226 1 0.000000000000000,0.000000000000000,0.000000000000000,
227 1 0.000000000000000,0.000000000000000,0.000000000000000,
228 2 0.166666666666667,0.500000000000000,0.000000000000000,
229 2 0.000000000000000,0.000000000000000,0.000000000000000,
230 2 0.000000000000000,0.000000000000000,0.000000000000000,
231 3 0.125000000000000,0.375000000000000,0.625000000000000,
232 3 0.000000000000000,0.000000000000000,0.000000000000000,
233 3 0.000000000000000,0.000000000000000,0.000000000000000,
234 4 0.100000000000000,0.300000000000000,0.500000000000000,
235 4 0.700000000000000,0.000000000000000,0.000000000000000,
236 4 0.000000000000000,0.000000000000000,0.000000000000000,
237 5 0.083333333333333,0.250000000000000,0.416666666666667,
238 5 0.583333333333333,0.750000000000000,0.000000000000000,
239 5 0.000000000000000,0.000000000000000,0.000000000000000,
240 6 0.071428571428571,0.214285714285714,0.357142857142857,
241 6 0.500000000000000,0.642857142857143,0.785714285714286,
242 6 0.000000000000000,0.000000000000000,0.000000000000000,
243 7 0.062500000000000,0.187500000000000,0.312500000000000,
244 7 0.437500000000000,0.562500000000000,0.687500000000000,
245 7 0.812500000000000,0.000000000000000,0.000000000000000,
246 8 0.055555555555556,0.166666666666667,0.277777777777778,
247 8 0.388888888888889,0.500000000000000,0.611111111111111,
248 8 0.722222222222222,0.833333333333333,0.000000000000000,
249 9 0.050000000000000,0.150000000000000,0.250000000000000,
250 9 0.350000000000000,0.450000000000000,0.550000000000000,
251 9 0.650000000000000,0.750000000000000,0.850000000000000/
268 ALLOCATE(sph_work%WASIGSM(6*nsphsym))
269 sph_work%WASIGSM = zero
271 IF(itask==0 .AND. nspmd > 1)
THEN
272 ALLOCATE(sph_work%WAR(10,
nsphr))
273 ALLOCATE(sph_work%WTR(
nsphr))
274 ALLOCATE(sph_work%WGR(3,
nsphr))
275 ALLOCATE(sph_work%LAMBDR(
nsphr))
276 ALLOCATE(sph_work%WAR2(9,
nsphr))
282 DO n=itask+1,numsph,nthread
283 wa(kwasph*(n-1)+10)=spbuf(2,n)
286 IF( (glob_therm%ITHERM/=0) .OR. (glob_therm%ITHERM_FE/=0))
THEN
288 ALLOCATE(sph_work%WT(numsph))
289 ALLOCATE(sph_work%WGRADT(3*numsph))
290 ALLOCATE(sph_work%WLAPLT(numsph))
291 ALLOCATE(sph_work%LAMBDA(numsph))
292 ALLOCATE(sph_work%WGRADTSM(3*nsphsym))
301 IF(ngdone>ngroup)
THEN
302#include "lockoff.inc"
307#include "lockoff.inc"
309 IF(iparg(8,ng)==1)
GOTO 50
311 DO nelem = 1,iparg(2,ng),nvsiz
316 2 mtn ,nel ,nft ,iad ,ity ,
317 3 npt ,jale ,ismstr ,jeul ,jtur ,
318 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
319 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
320 6 irep ,iint ,igtyp ,israt ,isrot ,
321 7 icsen ,isorth ,isorthg ,ifailure,jsms )
323 llt=
min(nvsiz,nel-nelem+1)
326 gbuf => elbuf_tab(ng)%GBUF
331 sph_work%WT(n)=gbuf%TEMP(i)
332 mx =ipart(1,ipartsp(n))
333 IF(sph_work%WT(n)<=pm(80,mx))
THEN
334 sph_work%LAMBDA(n)=pm(75,mx)+pm(76,mx)*sph_work%WT(n)
336 sph_work%LAMBDA(n)=pm(77,mx)+pm(78,mx)*sph_work%WT(n)
340 ELSEIF (jthe < 0)
THEN
345 sph_work%WT(n)=temp(inod)
346 mx =ipart(1,ipartsp(n))
347 IF(sph_work%WT(n)<=pm(80,mx))
THEN
348 sph_work%LAMBDA(n)=pm(75,mx)+pm(76,mx)*sph_work%WT(n)
350 sph_work%LAMBDA(n)=pm(77,mx)+pm(78,mx)*sph_work%WT(n)
352 sph_work%LAMBDA(n)=sph_work%LAMBDA(n)*glob_therm%THEACCFACT
359 sph_work%LAMBDA(n)=zero
376 CALL spmd_sphgett(sph_work%WT,sph_work%WTR,sph_work%LAMBDA,sph_work%LAMBDR)
393 IF(ngdone>ngroup)
THEN
394#include "lockoff.inc"
399#include "lockoff.inc"
401 IF(iparg(8,ng)==1)
GOTO 60
403 DO nelem = 1,iparg(2,ng),nvsiz
408 2 mtn ,nel ,nft ,iad ,ity ,
409 3 npt ,jale ,ismstr ,jeul
411 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
412 6 irep ,iint ,igtyp ,israt ,isrot ,
413 7 icsen ,isorth ,isorthg ,ifailure,jsms )
415 llt=
min(nvsiz,nel-nelem+1)
416 IF(ity==51.AND.jthe/=0)
THEN
419 1 x ,ms ,spbuf ,kxsp ,ixsp ,
420 2 nod2sp ,ispsym ,xspsym ,wa ,wasph ,
421 3 sph_work%WT,sph_work%WTR,sph_work%WGRADT , lft, llt, nft)
437 CALL spmd_sphgetg(sph_work%WGRADT,wasph,sph_work%WGR,sph_iord1)
451 1 ispsym ,wasph ,ispcond ,xframe ,wsmcomp,
452 2 geo ,ipart ,ipartsp ,waspact ,itask )
458 1 ispcond, xframe, ispsym, xspsym,
459 2 sph_work%WGRADT, sph_work%WGRADTSM,waspact, sph_work%WGR,
467 IF(ngdone>ngroup)
THEN
468#include "lockoff.inc"
473#include "lockoff.inc"
475 IF(iparg(8,ng)==1)
GOTO 70
477 DO nelem = 1,iparg(2,ng),nvsiz
482 2 mtn ,nel ,nft ,iad ,ity ,
483 3 npt ,jale ,ismstr ,jeul ,jtur ,
484 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
485 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
486 6 irep ,iint ,igtyp ,israt ,isrot ,
487 7 icsen ,isorth ,isorthg ,ifailure,jsms )
489 llt=
min(nvsiz,nel-nelem+1)
490 IF(ity==51.AND.jthe==1)
THEN
493 1 x ,ms ,spbuf ,kxsp ,ixsp ,
494 2 nod2sp ,ispsym ,xspsym ,wa ,wasph
495 3 sph_work%WGRADT ,sph_work%WGR ,sph_work%WGRADTSM ,sph_work%WLAPLT ,wsmcomp,
496 4 sph_work%LAMBDA ,sph_work%LAMBDR, lft, llt, nft )
498 gbuf => elbuf_tab(ng)%GBUF
504 vi =spbuf(12,n)/
max(em20,rhoi)
505 gbuf%EINT(i) = gbuf%EINT(i)
506 . + vi*sph_work%WLAPLT(n)*dt1/
max
509 ELSEIF(ity==51.AND.jthe==-1)
THEN
512 1 x ,ms ,spbuf ,kxsp ,ixsp ,
513 2 nod2sp ,ispsym ,xspsym ,wa ,wasph ,
514 3 sph_work%WGRADT ,sph_work%WGR ,sph_work%WGRADTSM ,sph_work%WLAPLT ,wsmcomp
515 4 sph_work%LAMBDA ,sph_work%LAMBDR ,lft,llt,nft )
517 gbuf => elbuf_tab(ng)%GBUF
524 vi =spbuf(12,n)/
max(em20
525 wa(myadrn+15) = vi*sph_work%WLAPLT(n)*dt1
540 IF(itask==0)
DEALLOCATE(sph_work%WT, sph_work%WGRADT, sph_work%WLAPLT
554 IF(ngdone>ngroup)
THEN
555#include "lockoff.inc"
560#include "lockoff.inc"
562 IF(iparg(8,ng)==1)
GOTO 100
564 DO nelem = 1,iparg(2,ng),nvsiz
567 nft =iparg(3,ng) + offset
571 llt=
min(nvsiz,nel-nelem+1)
572 isph2sol=iparg(69,ng)
575 1 x ,v ,ms ,spbuf ,itab ,
576 2 kxsp ,ixsp ,nod2sp ,ispsym ,xspsym ,
577 3 vspsym ,iparg ,wa ,wasph )
603 2 spbuf ,itab ,kxsp ,ixsp ,nod2sp ,
604 3 isphio ,ipart ,ipartsp ,waspact ,wa ,
605 4 wasph(kvnorm), sph_work%WAR2 )
621 IF(ngdone>ngroup)
THEN
622#include
"lockoff.inc"
627#include "lockoff.inc"
629 IF(iparg(8,ng)==1)
GOTO 250
631 DO nelem = 1,iparg(2,ng),nvsiz
636 2 mtn ,nel ,nft ,iad ,ity ,
637 3 npt ,jale ,ismstr ,jeul ,jtur ,
638 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
639 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
640 6 irep ,iint ,igtyp ,israt ,isrot ,
641 7 icsen ,isorth ,isorthg ,ifailure,jsms )
643 llt=
min(nvsiz,nel-nelem+1)
650 isph2sol=iparg(69,ng)
651 iexpan = iparg(49,ng)
658 CALL spstres(timers,elbuf_tab,ng ,
659 1 pm ,geo ,x ,v ,ms ,
660 2 w ,spbuf ,wa ,nloc_dmg ,
661 3 itab ,pld ,bufmat ,bufgeo ,partsav ,
662 4 fsav ,dt2t ,iparg ,npc ,kxsp ,
663 5 ixsp ,nod2sp ,neltst ,ityptst ,ipart ,
664 6 ipartsp ,fv ,nel ,ipm ,gresav ,
665 7 grth ,igrth ,table ,istra ,voln ,
666 8 igeo ,iexpan ,temp ,itask ,sph2sol ,
667 9 mat_elem ,ibid ,output ,snpc ,stf ,
668 a sbufmat, svis ,nsvois ,idtmins ,iresp,
669 . idel7ng, idel7nok ,idtmin ,maxfunc ,lipart1,
670 . imon_mat, userl_avail,impl_s,
671 v idyna, dt ,glob_therm,sensors)
691 . x ,spbuf ,ixs ,kxsp ,ipartsp ,
692 . irst ,elbuf_tab,iparg ,ngrounc ,igrounc ,
700 ALLOCATE(sph_work%STAB(7,numsph+
nsphr+nsphsym+1),stat=stat)
709 1 itask ,iparg ,ngrounc ,igrounc ,kxsp ,
710 2 ispcond ,ispsym ,waspact ,sph2sol ,wa ,
711 3 sph_work%WASIGSM,sph_work%WAR ,sph_work%STAB ,ixsp ,nod2sp ,
712 4 spbuf ,x ,ipart ,ipartsp ,xspsym )
724 CALL spmd_sphgetw(spbuf,wasph,wa,sph_work%WAR,sph_iord1)
736 2 spbuf ,itab ,kxsp ,ixsp ,nod2sp ,
737 3 isphio ,vsphio ,npc ,pld ,pm ,
738 4 iparg ,elbuf_tab,ipart ,ipartsp ,waspact ,
739 5 wasph(kvnorm),wa ,sphveln ,sph_work%WAR, wfext)
744 CALL spmd_sphgetw(spbuf,wasph,wa,sph_work%WAR,sph_iord1)
753 CALL spsgsym(ispcond ,xframe ,ispsym ,xspsym ,vspsym ,
754 2 wa ,sph_work%WASIGSM,waspact,sph_work%WAR )
763 DO ns=itask+1,nsphact,nthread
771 IF (glob_therm%ITHERM==0)
773 1 ispsym ,wasph ,ispcond ,xframe ,wsmcomp,
774 2 geo ,ipart ,ipartsp ,waspact ,itask )
783 DO ns=itask+1,nsphact,nthread
796 1 itask ,iparg ,ngrounc ,igrounc ,kxsp ,
797 2 ispcond ,ispsym ,waspact ,sph2sol ,wa ,
798 3 sph_work%WASIGSM,sph_work%WAR ,sph_work%STAB ,ixsp ,nod2sp ,
809 IF(ngdone>ngroup)
THEN
810#include "lockoff.inc"
815#include "lockoff.inc"
818 IF(iparg(8,ng)==1)
GOTO 350
820 DO nelem = 1,iparg(2,ng),nvsiz
823 nft =iparg(3,ng) + offset
826 isph2sol=iparg(69,ng)
829 llt=
min(nvsiz,nel-nelem+1)
833 1 pm ,geo ,x ,v ,ms ,
834 2 spbuf ,itab ,pld ,bufmat ,bufgeo ,
835 3 partsav ,fsav ,dt2t ,iparg ,npc ,
836 4 kxsp ,ixsp ,nod2sp ,neltst ,ityptst ,
837 5 ipart ,ipartsp ,ispcond ,xframe ,ispsym ,
838 6 xspsym ,vspsym ,wa ,sph_work%WASIGSM,wasph ,
839 7 wsmcomp,waspact,sph_work%WAR ,sph_work%STAB, wfext)
853 IF (glob_therm%ITHERM_FE > 0)
THEN
855 DO ns=itask+1,nsphact,nthread
859 a(1,inod)=a(1,inod)+wa(myadrn+10)
860 a(2,inod)=a(2,inod)+wa(myadrn+11)
861 a(3,inod)=a(3,inod)+wa(myadrn+12)
862 stifn(inod)=stifn(inod)+wa(myadrn+7)
863 fthe(inod)=fthe(inod)+wa(myadrn+15)
866 DO ns=itask+1,nsphact,nthread
870 fskyi(nisky_l+ns,1)=wa(myadrn+10)
871 fskyi(nisky_l+ns,2)=wa(myadrn+11)
872 fskyi(nisky_l+ns,3)=wa(myadrn+12)
873 fskyi(nisky_l+ns,4)=wa(myadrn+7)
874 ftheskyi(nisky_l+ns)=wa(myadrn+15)
875 isky(nisky_l+ns) =inod
877 IF(itask==0) nisky = nisky + nsphact
881 DO ns=itask+1,nsphact,nthread
885 a(1,inod)=a(1,inod)+wa(myadrn+10)
886 a(2,inod)=a(2,inod)+wa(myadrn+11)
887 a(3,inod)=a(3,inod)+wa(myadrn+12)
888 stifn(inod)=stifn(inod)+wa(myadrn+7)
891 DO ns=itask+1,nsphact,nthread
895 fskyi(nisky_l+ns,1)=wa(myadrn+10)
896 fskyi(nisky_l+ns,2)=wa(myadrn+11)
897 fskyi(nisky_l+ns,3)=wa(myadrn+12)
898 fskyi(nisky_l+ns,4)=wa(myadrn+7)
899 isky(nisky_l+ns) =inod
901 IF(itask==0) nisky = nisky + nsphact
906 DO ns=itask+1,nsphact,nthread
909 IF(sph2sol(n)==0)
THEN
911 a(1,inod)=a(1,inod)+wa(myadrn+10)
912 a(2,inod)=a(2,inod)+wa(myadrn+11)
913 a(3,inod)=a(3,inod)+wa(myadrn+12)
914 stifn(inod)=stifn(inod)+wa(myadrn+7)
915 ELSEIF (sol2sph_typ(sph2sol(n))==4)
THEN
926 ir=irst(1,n-first_sphsol+1)
927 is=irst(2,n-first_sphsol+1)
928 it=irst(3,n-first_sphsol+1)
929 nsphdir=igeo(37,ixs(10,nsol))
931 ksi = a_gauss_tetra(ir,nsphdir)
932 eta = a_gauss_tetra(is,nsphdir)
933 zeta = a_gauss_tetra(it,nsphdir)
940 a(1,n1)=a(1,n1)+phi1*wa(myadrn+10)
941 a(2,n1)=a(2,n1)+phi1*wa(myadrn+11)
942 a(3,n1)=a(3,n1)+phi1*wa(myadrn+12)
943 stifn(n1)=stifn(n1)+phi1*wa(myadrn+7)
945 a(1,n2)=a(1,n2)+phi2*wa(myadrn+10)
946 a(2,n2)=a(2,n2)+phi2*wa(myadrn+11)
947 a(3,n2)=a(3,n2)+phi2*wa(myadrn+12)
948 stifn(n2)=stifn(n2)+phi2*wa(myadrn+7)
950 a(1,n3)=a(1,n3)+phi3*wa(myadrn+10)
951 a(2,n3)=a(2,n3)+phi3*wa(myadrn+11)
952 a(3,n3)=a(3,n3)+phi3*wa(myadrn+12)
953 stifn(n3)=stifn(n3)+phi3*wa(myadrn+7)
955 a(1,n4)=a(1,n4)+phi4*wa(myadrn+10)
956 a(2,n4)=a(2,n4)+phi4*wa(myadrn+11)
957 a(3,n4)=a(3,n4)+phi4*wa(myadrn+12)
958 stifn(n4)=stifn(n4)+phi4*wa(myadrn+7)
975 ir=irst(1,n-first_sphsol+1)
976 is=irst(2,n-first_sphsol+1)
977 it=irst(3,n-first_sphsol+1)
978 nsphdir=nint((sol2sph(2,nsol)-sol2sph(1,nsol))**third)
980 ksi = a_gauss(ir,nsphdir)
981 eta = a_gauss(is,nsphdir)
982 zeta = a_gauss(it,nsphdir)
984 phi1=one_over_8*(one-ksi)*(one-eta)*(one-zeta)
985 phi2=one_over_8*(one-ksi)*(one-eta)*(one+zeta)
986 phi3=one_over_8*(one+ksi)*(one-eta)*(one+zeta)
987 phi4=one_over_8*(one+ksi)*(one-eta)*(one-zeta)
988 phi5=one_over_8*(one-ksi)*(one+eta)*(one-zeta)
989 phi6=one_over_8*(one-ksi)*(one+eta)*(one+zeta)
990 phi7=one_over_8*(one+ksi)*(one+eta)*(one+zeta)
991 phi8=one_over_8*(one+ksi)*(one+eta)*(one-zeta)
993 a(1,n1)=a(1,n1)+phi1*wa(myadrn+10)
994 a(2,n1)=a(2,n1)+phi1*wa(myadrn+11)
995 a(3,n1)=a(3,n1)+phi1*wa(myadrn+12)
996 stifn(n1)=stifn(n1)+phi1*wa(myadrn+7)
998 a(1,n2)=a(1,n2)+phi2*wa(myadrn+10)
999 a(2,n2)=a(2,n2)+phi2*wa(myadrn+11)
1000 a(3,n2)=a(3,n2)+phi2*wa(myadrn+12)
1001 stifn(n2)=stifn(n2)+phi2*wa(myadrn+7)
1003 a(1,n3)=a(1,n3)+phi3*wa(myadrn+10)
1004 a(2,n3)=a(2,n3)+phi3*wa(myadrn+11)
1005 a(3,n3)=a(3,n3)+phi3*wa(myadrn+12)
1006 stifn(n3)=stifn(n3)+phi3*wa(myadrn+7)
1008 a(1,n4)=a(1,n4)+phi4*wa(myadrn+10)
1009 a(2,n4)=a(2,n4)+phi4*wa(myadrn+11)
1010 a(3,n4)=a(3,n4)+phi4*wa(myadrn+12)
1011 stifn(n4)=stifn(n4)+phi4*wa(myadrn+7)
1013 a(1,n5)=a(1,n5)+phi5*wa(myadrn+10)
1014 a(2,n5)=a(2,n5)+phi5*wa(myadrn+11)
1015 a(3,n5)=a(3,n5)+phi5*wa(myadrn+12)
1016 stifn(n5)=stifn(n5)+phi5*wa(myadrn+7)
1018 a(1,n6)=a(1,n6)+phi6*wa(myadrn+10)
1019 a(2,n6)=a(2,n6)+phi6*wa(myadrn+11)
1020 a(3,n6)=a(3,n6)+phi6*wa(myadrn+12)
1021 stifn(n6)=stifn(n6)+phi6*wa(myadrn+7)
1023 a(1,n7)=a(1,n7)+phi7*wa(myadrn+10)
1024 a(2,n7)=a(2,n7)+phi7*wa(myadrn+11)
1025 a(3,n7)=a(3,n7)+phi7*wa(myadrn+12)
1026 stifn(n7)=stifn(n7)+phi7*wa(myadrn+7)
1028 a(1,n8)=a(1,n8)+phi8*wa(myadrn+10)
1029 a(2,n8)=a(2,n8)+phi8*wa(myadrn+11)
1030 a(3,n8)=a(3,n8)+phi8*wa(myadrn+12)
1031 stifn(n8)=stifn(n8)+phi8*wa(myadrn+7)
1040 myadrn =kwasph*(n-1)
1041 IF(sph2sol(n)==0)
THEN
1044 fskyi(nisky_l+nski,1)=wa(myadrn+10)
1045 fskyi(nisky_l+nski,2)=wa(myadrn+11)
1046 fskyi(nisky_l+nski,3)=wa(myadrn+12)
1047 fskyi(nisky_l+nski,4)=wa(myadrn+7)
1048 isky(nisky_l+nski) =inod
1049 ELSEIF (sol2sph_typ(sph2sol(n))==4)
THEN
1060 ir=irst(1,n-first_sphsol+1)
1061 is=irst(2,n-first_sphsol+1)
1062 it=irst(3,n-first_sphsol+1)
1063 nsphdir=igeo(37,ixs(10,nsol))
1065 ksi = a_gauss_tetra(ir,nsphdir)
1066 eta = a_gauss_tetra(is,nsphdir)
1067 zeta = a_gauss_tetra(it,nsphdir)
1074 fsky(1,k1)=fsky(1,k1)+phi1*wa(myadrn+10)
1075 fsky(2,k1)=fsky(2,k1)+phi1*wa(myadrn+11)
1076 fsky(3,k1)=fsky(3,k1)+phi1*wa(myadrn+12)
1077 fsky(4,k1)=fsky(4,k1)+phi1*wa(myadrn+7)
1079 fsky(1,k2)=fsky(1,k2)+phi2*wa(myadrn+10)
1080 fsky(2,k2)=fsky(2,k2)+phi2*wa(myadrn+11)
1081 fsky(3,k2)=fsky(3,k2)+phi2*wa(myadrn+12)
1082 fsky(4,k2)=fsky(4,k2)+phi2*wa(myadrn+7)
1084 fsky(1,k3)=fsky(1,k3)+phi3*wa(myadrn+10)
1085 fsky(2,k3)=fsky(2,k3)+phi3*wa(myadrn+11)
1086 fsky(3,k3)=fsky(3,k3)+phi3*wa(myadrn+12)
1087 fsky(4,k3)=fsky(4,k3)+phi3*wa(myadrn+7)
1089 fsky(1,k4)=fsky(1,k4)+phi4*wa(myadrn+10)
1090 fsky(2,k4)=fsky(2,k4)+phi4*wa(myadrn+11)
1091 fsky(3,k4)=fsky(3,k4)+phi4*wa(myadrn+12)
1092 fsky(4,k4)=fsky(4,k4)+phi4*wa(myadrn+7)
1109 ir=irst(1,n-first_sphsol+1)
1110 is=irst(2,n-first_sphsol+1)
1111 it=irst(3,n-first_sphsol+1)
1113 nsphdir=nint((sol2sph(2,nsol)-sol2sph(1,nsol))**third)
1114 ksi = a_gauss(ir,nsphdir)
1115 eta = a_gauss(is,nsphdir)
1116 zeta = a_gauss(it,nsphdir)
1118 phi1=one_over_8*(one-ksi)*(one-eta)*(one-zeta)
1119 phi2=one_over_8*(one-ksi)*(one-eta)*(one+zeta)
1120 phi3=one_over_8*(one+ksi)*(one-eta)*(one+zeta)
1121 phi4=one_over_8*(one+ksi)*(one-eta)*(one-zeta)
1122 phi5=one_over_8*(one-ksi)*(one+eta)*(one-zeta)
1123 phi6=one_over_8*(one-ksi)*(one+eta)*(one+zeta)
1124 phi7=one_over_8*(one+ksi)*(one+eta)*(one+zeta)
1125 phi8=one_over_8*(one+ksi)*(one+eta)*(one-zeta)
1127 fsky(1,k1)=fsky(1,k1)+phi1*wa(myadrn+10)
1128 fsky(2,k1)=fsky(2,k1)+phi1*wa(myadrn+11)
1129 fsky(3,k1)=fsky(3,k1)+phi1*wa(myadrn
1130 fsky(4,k1)=fsky(4,k1)+phi1*wa(myadrn+7)
1132 fsky(1,k2)=fsky(1,k2)+phi2*wa(myadrn+10)
1133 fsky(2,k2)=fsky(2,k2)+phi2*wa(myadrn+11)
1134 fsky(3,k2)=fsky(3,k2)+phi2*wa(myadrn+12)
1135 fsky(4,k2)=fsky(4,k2)+phi2*wa(myadrn+7)
1137 fsky(1,k3)=fsky(1,k3)+phi3*wa(myadrn+10)
1138 fsky(2,k3)=fsky(2,k3)+phi3*wa(myadrn+11)
1139 fsky(3,k3)=fsky(3,k3)+phi3*wa(myadrn+12)
1140 fsky(4,k3)=fsky(4,k3)+phi3*wa(myadrn+7)
1142 fsky(1,k4)=fsky(1,k4)+phi4*wa(myadrn+10)
1143 fsky(2,k4)=fsky(2,k4)+phi4*wa(myadrn+11)
1144 fsky(3,k4)=fsky(3,k4)+phi4*wa(myadrn+12)
1145 fsky(4,k4)=fsky(4,k4)+phi4*wa(myadrn+7)
1147 fsky(1,k5)=fsky(1,k5)+phi5*wa(myadrn+10)
1148 fsky(2,k5)=fsky(2,k5)+phi5*wa(myadrn+11)
1149 fsky(3,k5)=fsky(3,k5)+phi5*wa(myadrn+12)
1150 fsky(4,k5)=fsky(4,k5)+phi5*wa(myadrn+7)
1152 fsky(1,k6)=fsky(1,k6)+phi6*wa(myadrn+10)
1153 fsky(2,k6)=fsky(2,k6)+phi6*wa(myadrn+11)
1154 fsky(3,k6)=fsky(3,k6)+phi6*wa(myadrn+12)
1155 fsky(4,k6)=fsky(4,k6)+phi6*wa(myadrn+7)
1157 fsky(1,k7)=fsky(1,k7)+phi7*wa(myadrn+10)
1158 fsky(2,k7)=fsky(2,k7)+phi7*wa(myadrn+11)
1159 fsky(3,k7)=fsky(3,k7)+phi7*wa(myadrn+12)
1160 fsky(4,k7)=fsky(4,k7)+phi7*wa(myadrn+7)
1162 fsky(1,k8)=fsky(1,k8)+phi8*wa(myadrn+10)
1163 fsky(2,k8)=fsky(2,k8)+phi8*wa(myadrn+11)
1164 fsky(3,k8)=fsky(3,k8)+phi8*wa(myadrn+12)
1165 fsky(4,k8)=fsky(4,k8)+phi8*wa(myadrn+7)
1170 nisky = nisky + nski
1178 DO ns=itask+1,nsphact,nthread
1180 spbuf(10,n)=spbuf(10,n)+dt05*spbuf(11,n)
1185 CALL spgauge(lgauge ,gauge ,kxsp ,ixsp ,
1186 1 spbuf ,iparg ,elbuf_tab,ispsym ,xspsym,
1187 2 nod2sp ,x ,itask ,wa ,sph_work%WASIGSM,
1188 3 sph_work%WAR ,sphg_f6)
1199 IF(itask==0)
DEALLOCATE(sph_work%STAB, sph_work%WASIGSM)
1200 IF(itask==0 .AND. nspmd > 1)
THEN
1201 DEALLOCATE(sph_work%WAR, sph_work%WTR, sph_work%WGR, sph_work%LAMBDR, sph_work%WAR2)
1208 . .OR.idtmin(51)==5))
THEN
1210#include "lockon.inc"
1211 IF(ngdone>ngroup)
THEN
1212#include "lockoff.inc"
1217#include "lockoff.inc"
1219 IF(iparg(8,ng)==1)
GOTO 400
1221 DO nelem = 1,iparg(2,ng),nvsiz
1224 2 mtn ,nel ,nft ,kad ,ity ,
1225 3 npt ,jale ,ismstr ,jeul ,jtur ,
1226 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
1227 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
1228 6 irep ,iint ,igtyp ,israt ,isrot ,
1229 7 icsen ,isorth ,isorthg ,ifailure,jsms )
1231 llt=
min(nvsiz,nel-nelem+1)
1233 gbuf => elbuf_tab(ng)%GBUF
1236 IF(kxsp(2,n)<=0)
GOTO 500
1239 dtx =dtfac1(51)*sqrt(two*ms(inod)/
max(em20,wa(adrn)))
1240 IF(dtx>dtmin1(51))
GO TO 500
1241 IF(idtmin(51)==1)
THEN
1243#include "lockon.inc"
1245 .
' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SPH PARTICLE'
1247 .
' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SPH PARTICLE'
1248#include "lockoff.inc"
1249 ELSEIF(idtmin(51)==2)
THEN
1250 IF (gbuf%OFF(k)/=zero)
THEN
1253#include "lockon.inc"
1257 .
' -- DELETE SPH PARTICLE',kxsp(nisp,n)
1259 .
' -- DELETE SPH PARTICLE',kxsp(nisp,n)
1260#include "lockoff.inc"
1262 ELSEIF(idtmin(51)==5)
THEN
1264#include "lockon.inc"
1266 .
' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SPH PARTICLE'
1268 .
' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SPH PARTICLE'
1269#include "lockoff.inc"
1291 1 x ,v ,ms ,spbuf ,itab ,
1292 2 kxsp ,ixsp ,nod2sp ,wa ,waspact ,
1293 3 itask ,ipartsp ,ipart)