70 2 MS ,W ,ELBUF_TAB ,WA ,FV ,
71 3 STIFN ,PLD ,BUFMAT ,PARTSAV ,NLOC_DMG ,
72 4 FSAV ,DT2T ,IADS ,IPARG ,NPC ,
73 5 NELTST ,ITYPTST ,IPART ,ITAB ,ISKY ,
74 6 BUFGEO ,FSKYI ,XFRAME ,KXSP ,IXSP ,
75 7 NOD2SP ,IPARTSP ,SPBUF ,ISPCOND ,ISPSYM ,
77 9 WASPH ,LPRTSPH ,LONFSPH ,WASPACT ,ISPHIO ,
78 A VSPHIO ,SPHVELN ,ITASK ,IPM ,GRESAV ,
79 B GRTH ,IGRTH ,TABLE ,LGAUGE ,GAUGE ,
80 C NGROUNC ,IGROUNC ,IXS ,IRST ,SOL2SPH ,
81 D SPH2SOL ,FSKYV ,FSKY ,IGEO ,TEMP ,
82 E FTHE ,FTHESKYI ,SPHG_F6 ,WSMCOMP ,SOL2SPH_TYP,
83 F MAT_ELEM ,OUTPUT ,SPH_IORD1 ,SNPC ,STF,
84 G SBUFMAT ,IDTMINS ,NSVOIS ,IRESP ,MAXFUNC ,
85 . IMON_MAT ,USERL_AVAIL,impl_s ,idyna ,
86 . DT ,GLOB_THERM,SPH_WORK ,WFEXT ,sensors )
97 USE output_mod ,
ONLY : output_
105#include "implicit_f.inc"
106#include "comlock.inc"
110#include "mvsiz_p.inc"
114#include "com01_c.inc"
115#include "com04_c.inc"
116#include "com08_c.inc"
118#include "param_c.inc"
119#include "parit_c.inc"
120#include "vect01_c.inc"
121#include "scr07_c.inc"
122#include "scr17_c.inc"
124#include "units_c.inc"
125#include "scr02_c.inc"
126#include "scr18_c.inc"
130 TYPE(timer_),
INTENT(INOUT) :: TIMERS
131 INTEGER,
INTENT(IN) :: SNPC
132 INTEGER,
INTENT(IN) :: STF
133 INTEGER,
INTENT(IN) :: SBUFMAT
134 INTEGER,
INTENT(IN) :: NSVOIS
135 INTEGER,
INTENT(IN) :: IDTMINS
136 INTEGER ,
INTENT(IN) :: IRESP
137 INTEGER ,
INTENT(IN) :: MAXFUNC
138 INTEGER,
INTENT(IN) :: IMPL_S
139 INTEGER,
INTENT(IN) :: IDYNA
140 INTEGER,
INTENT(IN) :: USERL_AVAIL
141 INTEGER,
INTENT(IN) :: IMON_MAT
142 INTEGER IPART(LIPART1,*) ,NPC(*), IPARG(NPARG,*),IADS(8,*),
143 . NELTST, ITYPTST, IPARTSP(*), ISKY(*), ITAB(*),IPM(*),
144 . KXSP(NISP,*),IXSP(KVOISPH,*),NOD2SP(*),
145 . ISPCOND(NISPCOND,*),ISPSYM(NSPCOND,*),
147 . LPRTSPH(2,0:NPART),LONFSPH(*),WASPACT(*),ISPHIO(NISPHIO,*),
148 . itask,grth(*),igrth(*), lgauge(3,*), ngrounc, igrounc(*),
149 . ixs(nixs,*), irst(3,*), sol2sph(2,*), sph2sol(*), sol2sph_typ(*)
150 INTEGER,
INTENT(IN) :: SPH_IORD1
152 . x(3,*), v(3,*), ms(*), w(*), pm(npropm,*), geo(npropg,*),
153 . bufmat(*), bufgeo(*), pld(*) ,
154 . fsav(nthvki,*), wa(*), fv(*), a(3,*),
155 . partsav(*), stifn(*), fskyi(lskyi,4) ,
156 . xframe(nxframe,*), spbuf(nspbuf,*), xspsym(3,*), vspsym(3,*),
157 . dt2t, wasph(*), vsphio(*),
158 . sphveln(*),gresav(*), gauge(llgauge,*),
159 . fskyv(lsky,8),fsky(8,lsky),temp(*),fthe(*),ftheskyi(*),wsmcomp(*)
161 TYPE (ELBUF_STRUCT_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
162 TYPE (NLOCAL_STR_) ,
TARGET :: NLOC_DMG
163 DOUBLE PRECISION SPHG_F6(4,6,NBGAUGE)
164 TYPE(MATPARAM_STRUCT_) ,
DIMENSION(NUMMAT) :: MATPARAM_TAB
165 TYPE(OUTPUT_),
INTENT(INOUT) :: OUTPUT
166 TYPE (MAT_ELEM_) ,
INTENT(INOUT) :: MAT_ELEM
167 TYPE (DT_),
INTENT(IN) :: DT
168 type(glob_therm_) ,
intent(inout) :: glob_therm
169 TYPE (SPH_WORK_),
INTENT(INOUT) :: SPH_WORK
170 type (sensors_) ,
intent(in) :: sensors
171 DOUBLE PRECISION,
INTENT(INOUT) :: WFEXT
176 INTEGER I,N, IG, NG, NVC, MLW, JFT, JLT, K, ISTRA,
177 . KAD,IAD2,NF1,IPRI,NGLOC, NELEM, NEL, , NSG,
178 . inod,mx,ns,ksmcomp,kvnorm,myadrn,adrn, nisky_l,
179 . iprtsph, nsol, nski, n1, n2, n3, n4, n5, n6, n7, n8,
180 . k1, k2, k3, k4, k5, k6, k7, k8, ir, is, it, nsphdir, stat,
184 . phi1,phi2,phi3,phi4,phi5,phi6,phi7,phi8,
187 my_real,
DIMENSION(MVSIZ,6) :: svis
189 TYPE(g_bufel_) ,
POINTER :: GBUF
192 . A_GAUSS(9,9),A_GAUSS_TETRA(9,9)
200 3 -.666666666666666,0. ,0.666666666666666,
209 6 -.833333333333333,-.5 ,-.166666666666666,
210 6 0.166666666666666,0.5 ,0.833333333333333,
212 7 -.857142857142857,-.571428571428571,-.285714285714285,
213 7 0. ,0.285714285714285,0.571428571428571,
214 7 0.857142857142857,0. ,0. ,
215 8 -.875 ,-.625 ,-.375 ,
216 8 -.125 ,0.125 ,0.375,
218 9 -.888888888888888,-.666666666666666,-.444444444444444,
219 9 -.222222222222222,0. ,0.222222222222222,
220 9 0.444444444444444,0.666666666666666,0.888888888888888/
223 1 0.250000000000000,0.000000000000000,0.000000000000000,
224 1 0.000000000000000,0.000000000000000,0.000000000000000,
225 1 0.000000000000000,0.000000000000000,0.000000000000000,
226 2 0.166666666666667,0.500000000000000,0.000000000000000,
227 2 0.000000000000000,0.000000000000000,0.000000000000000,
228 2 0.000000000000000,0.000000000000000,0.000000000000000,
229 3 0.125000000000000,0.375000000000000,0.625000000000000,
230 3 0.000000000000000,0.000000000000000,0.000000000000000,
231 3 0.000000000000000,0.000000000000000,0.000000000000000,
232 4 0.100000000000000,0.300000000000000,0.500000000000000,
233 4 0.700000000000000,0.000000000000000,0.000000000000000,
234 4 0.000000000000000,0.000000000000000,0.000000000000000,
235 5 0.083333333333333,0.250000000000000,0.416666666666667,
236 5 0.583333333333333,0.750000000000000,0.000000000000000,
237 5 0.000000000000000,0.000000000000000,0.000000000000000,
238 6 0.071428571428571,0.214285714285714,0.357142857142857,
239 6 0.500000000000000,0.642857142857143,0.785714285714286,
240 6 0.000000000000000,0.000000000000000,0.000000000000000,
241 7 0.062500000000000,0.187500000000000,0.312500000000000,
242 7 0.437500000000000,0.562500000000000,0.687500000000000,
243 7 0.812500000000000,0.000000000000000,0.000000000000000,
244 8 0.055555555555556,0.166666666666667,0.277777777777778,
245 8 0.388888888888889,0.500000000000000,0.611111111111111,
246 8 0.722222222222222,0.833333333333333,0.000000000000000,
247 9 0.050000000000000,0.150000000000000,0.250000000000000,
248 9 0.350000000000000,0.450000000000000,0.550000000000000,
249 9 0.650000000000000,0.750000000000000,0.850000000000000/
266 ALLOCATE(sph_work%WASIGSM(6*nsphsym))
267 sph_work%WASIGSM = zero
269 IF(itask==0 .AND. nspmd > 1)
THEN
270 ALLOCATE(sph_work%WAR(10,
nsphr))
271 ALLOCATE(sph_work%WTR(
nsphr))
272 ALLOCATE(sph_work%WGR(3,
nsphr))
273 ALLOCATE(sph_work%LAMBDR(
nsphr))
274 ALLOCATE(sph_work%WAR2(9,
nsphr))
280 DO n=itask+1,numsph,nthread
281 wa(kwasph*(n-1)+10)=spbuf(2,n)
284 IF( (glob_therm%ITHERM/=0) .OR. (glob_therm%ITHERM_FE/=0))
THEN
286 ALLOCATE(sph_work%WT(numsph))
287 ALLOCATE(sph_work%WGRADT(3*numsph))
288 ALLOCATE(sph_work%WLAPLT(numsph))
289 ALLOCATE(sph_work%LAMBDA(numsph))
290 ALLOCATE(sph_work%WGRADTSM(3*nsphsym))
299 IF(ngdone>ngroup)
THEN
300#include "lockoff.inc"
305#include "lockoff.inc"
307 IF(iparg(8,ng)==1)
GOTO 50
309 DO nelem = 1,iparg(2,ng),nvsiz
314 2 mtn ,nel ,nft ,iad ,ity ,
315 3 npt ,jale ,ismstr ,jeul ,jtur ,
316 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
317 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
318 6 irep ,iint ,igtyp ,israt ,isrot ,
319 7 icsen ,isorth ,isorthg ,ifailure,jsms )
321 llt=
min(nvsiz,nel-nelem+1)
324 gbuf => elbuf_tab(ng)%GBUF
329 sph_work%WT(n)=gbuf%TEMP(i)
330 mx =ipart(1,ipartsp(n))
331 IF(sph_work%WT(n)<=pm(80,mx))
THEN
332 sph_work%LAMBDA(n)=pm(75,mx)+pm(76,mx)*sph_work%WT(n)
334 sph_work%LAMBDA(n)=pm(77,mx)+pm(78,mx)*sph_work%WT(n)
338 ELSEIF (jthe < 0)
THEN
343 sph_work%WT(n)=temp(inod)
344 mx =ipart(1,ipartsp(n))
345 IF(sph_work%WT(n)<=pm(80,mx))
THEN
346 sph_work%LAMBDA(n)=pm(75,mx)+pm(76,mx)*sph_work%WT(n)
348 sph_work%LAMBDA(n)=pm(77,mx)+pm(78,mx)*sph_work%WT(n)
350 sph_work%LAMBDA(n)=sph_work%LAMBDA(n)*glob_therm%THEACCFACT
357 sph_work%LAMBDA(n)=zero
374 CALL spmd_sphgett(sph_work%WT,sph_work%WTR,sph_work%LAMBDA,sph_work%LAMBDR
391 IF(ngdone>ngroup)
THEN
392#include
"lockoff.inc"
397#include "lockoff.inc"
399 IF(iparg(8,ng)==1)
GOTO 60
401 DO nelem = 1,iparg(2,ng),nvsiz
406 2 mtn ,nel ,nft ,iad ,ity ,
407 3 npt ,jale ,ismstr ,jeul ,jtur
408 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
409 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
410 6 irep ,iint ,igtyp ,israt ,isrot ,
411 7 icsen ,isorth ,isorthg ,ifailure,jsms )
413 llt=
min(nvsiz,nel-nelem+1)
414 IF(ity==51.AND.jthe/=0)
THEN
417 1 x ,ms ,spbuf ,kxsp ,ixsp ,
418 2 nod2sp ,ispsym ,xspsym ,wa ,wasph ,
419 3 sph_work%WT,sph_work%WTR,sph_work%WGRADT , lft, llt, nft)
435 CALL spmd_sphgetg(sph_work%WGRADT,wasph,sph_work%WGR,sph_iord1)
449 1 ispsym ,wasph ,ispcond ,xframe ,wsmcomp,
450 2 geo ,ipart ,ipartsp ,waspact ,itask )
456 1 ispcond, xframe, ispsym, xspsym,
457 2 sph_work%WGRADT, sph_work%WGRADTSM,waspact, sph_work%WGR,
465 IF(ngdone>ngroup)
THEN
466#include "lockoff.inc"
471#include
"lockoff.inc"
473 IF(iparg(8,ng)==1)
GOTO 70
475 DO nelem = 1,iparg(2,ng),nvsiz
480 2 mtn ,nel ,nft ,iad ,ity ,
481 3 npt ,jale ,ismstr ,jeul ,jtur
482 4 jthe ,jlag ,jmult ,jhbe ,jivf
483 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
484 6 irep ,iint ,igtyp ,israt ,isrot ,
485 7 icsen ,isorth ,isorthg ,ifailure,jsms
487 llt=
min(nvsiz,nel-nelem+1)
488 IF(ity==51.AND.jthe==1)
THEN
491 1 x ,ms ,spbuf ,kxsp ,ixsp ,
492 2 nod2sp ,ispsym ,xspsym ,wa ,wasph ,
493 3 sph_work%WGRADT ,sph_work%WGR ,sph_work%WGRADTSM ,sph_work%WLAPLT
494 4 sph_work%LAMBDA ,sph_work%LAMBDR, lft, llt, nft )
496 gbuf => elbuf_tab(ng)%GBUF
502 vi =spbuf(12,n)/
max(em20,rhoi)
503 gbuf%EINT(i) = gbuf%EINT(i)
504 . + vi*sph_work%WLAPLT(n)*dt1/
max(em20,gbuf%VOL(i))
507 ELSEIF(ity==51.AND.jthe==-1)
THEN
510 1 x ,ms ,spbuf ,kxsp ,ixsp ,
511 2 nod2sp ,ispsym ,xspsym ,wa ,wasph ,
512 3 sph_work%WGRADT ,sph_work%WGR ,sph_work%WGRADTSM ,sph_work%WLAPLT ,wsmcomp
513 4 sph_work%LAMBDA ,sph_work%LAMBDR ,lft,llt,nft )
515 gbuf => elbuf_tab(ng)%GBUF
522 vi =spbuf(12,n)/
max(em20,rhoi)
523 wa(myadrn+15) = vi*sph_work%WLAPLT(n)*dt1
538 IF(itask==0)
DEALLOCATE(sph_work%WT, sph_work%WGRADT, sph_work%WLAPLT, sph_work%LAMBDA, sph_work%WGRADTSM)
552 IF(ngdone>ngroup)
THEN
553#include "lockoff.inc"
558#include "lockoff.inc"
560 IF(iparg(8,ng)==1)
GOTO 100
562 DO nelem = 1,iparg(2,ng),nvsiz
565 nft =iparg(3,ng) + offset
569 llt=
min(nvsiz,nel-nelem+1)
570 isph2sol=iparg(69,ng)
573 1 x ,v ,ms ,spbuf ,itab ,
574 2 kxsp ,ixsp ,nod2sp ,ispsym ,xspsym ,
575 3 vspsym ,iparg ,wa ,wasph )
601 2 spbuf ,itab ,kxsp ,ixsp ,nod2sp ,
602 3 isphio ,ipart ,ipartsp ,waspact ,wa ,
603 4 wasph(kvnorm), sph_work%WAR2 )
619 IF(ngdone>ngroup)
THEN
620#include "lockoff.inc"
625#include "lockoff.inc"
627 IF(iparg(8,ng)==1)
GOTO 250
629 DO nelem = 1,iparg(2,ng),nvsiz
634 2 mtn ,nel ,nft ,iad ,ity ,
635 3 npt ,jale ,ismstr ,jeul ,jtur ,
636 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
637 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
638 6 irep ,iint ,igtyp ,israt ,isrot ,
639 7 icsen ,isorth ,isorthg ,ifailure,jsms )
641 llt=
min(nvsiz,nel-nelem+1)
648 isph2sol=iparg(69,ng)
649 iexpan = iparg(49,ng)
656 CALL spstres(timers,elbuf_tab,ng ,
658 2 w ,spbuf ,wa ,nloc_dmg ,
659 3 itab ,pld ,bufmat ,bufgeo ,partsav ,
660 4 fsav ,dt2t ,iparg ,npc ,kxsp ,
661 5 ixsp ,nod2sp ,neltst ,ityptst ,ipart ,
663 7 grth ,igrth ,table ,istra ,voln ,
665 9 mat_elem ,ibid ,output ,snpc ,stf ,
666 a sbufmat, svis ,nsvois ,idtmins ,iresp,
667 . idel7ng, idel7nok ,idtmin ,maxfunc ,lipart1,
668 . imon_mat, userl_avail,impl_s,
669 v idyna, dt ,glob_therm,sensors)
689 . x ,spbuf ,ixs ,kxsp ,ipartsp ,
690 . irst ,elbuf_tab,iparg ,ngrounc ,igrounc ,
698 ALLOCATE(sph_work%STAB(7,numsph+
nsphr+nsphsym+1),stat=stat)
707 1 itask ,iparg ,ngrounc ,igrounc ,kxsp ,
708 2 ispcond ,ispsym ,waspact ,sph2sol ,wa ,
709 3 sph_work%WASIGSM,sph_work%WAR ,sph_work%STAB ,ixsp ,nod2sp ,
710 4 spbuf ,x ,ipart ,ipartsp ,xspsym )
722 CALL spmd_sphgetw(spbuf,wasph,wa,sph_work%WAR,sph_iord1)
734 2 spbuf ,itab ,kxsp ,ixsp ,nod2sp ,
735 3 isphio ,vsphio ,npc ,pld ,pm ,
736 4 iparg ,elbuf_tab,ipart ,ipartsp ,waspact ,
737 5 wasph(kvnorm),wa ,sphveln ,sph_work%WAR, wfext)
742 CALL spmd_sphgetw(spbuf,wasph,wa,sph_work%WAR,sph_iord1)
751 CALL spsgsym(ispcond ,xframe ,ispsym ,xspsym ,vspsym ,
752 2 wa ,sph_work%WASIGSM,waspact,sph_work%WAR )
761 DO ns=itask+1,nsphact,nthread
769 IF (glob_therm%ITHERM==0)
771 1 ispsym ,wasph ,ispcond ,xframe ,wsmcomp
772 2 geo ,ipart ,ipartsp ,waspact ,itask )
781 DO ns=itask+1,nsphact,nthread
794 1 itask ,iparg ,ngrounc ,igrounc ,kxsp
795 2 ispcond ,ispsym ,waspact ,sph2sol ,wa ,
796 3 sph_work%WASIGSM,sph_work%WAR ,sph_work%STAB ,ixsp ,nod2sp ,
807 IF(ngdone>ngroup)
THEN
808#include "lockoff.inc"
813#include "lockoff.inc"
816 IF(iparg(8,ng)==1)
GOTO 350
818 DO nelem = 1,iparg(2,ng),nvsiz
821 nft =iparg(3,ng) + offset
824 isph2sol=iparg(69,ng)
827 llt=
min(nvsiz,nel-nelem+1)
831 1 pm ,geo ,x ,v ,ms ,
832 2 spbuf ,itab ,pld ,bufmat ,bufgeo ,
833 3 partsav ,fsav ,dt2t ,iparg ,npc ,
834 4 kxsp ,ixsp ,nod2sp ,neltst ,ityptst ,
835 5 ipart ,ipartsp ,ispcond ,xframe ,ispsym ,
836 6 xspsym ,vspsym ,wa ,sph_work%WASIGSM,wasph ,
837 7 wsmcomp,waspact,sph_work%WAR ,sph_work%STAB, wfext)
851 IF (glob_therm%ITHERM_FE > 0)
THEN
853 DO ns=itask+1,nsphact,nthread
857 a(1,inod)=a(1,inod)+wa(myadrn+10)
858 a(2,inod)=a(2,inod)+wa(myadrn+11)
859 a(3,inod)=a(3,inod)+wa(myadrn+12)
860 stifn(inod)=stifn(inod)+wa(myadrn+7)
861 fthe(inod)=fthe(inod)+wa(myadrn+15)
864 DO ns=itask+1,nsphact,nthread
868 fskyi(nisky_l+ns,1)=wa(myadrn+10)
869 fskyi(nisky_l+ns,2)=wa(myadrn+11)
870 fskyi(nisky_l+ns,3)=wa(myadrn+12)
871 fskyi(nisky_l+ns,4)=wa(myadrn+7)
872 ftheskyi(nisky_l+ns)=wa(myadrn+15)
873 isky(nisky_l+ns) =inod
875 IF(itask==0) nisky = nisky + nsphact
879 DO ns=itask+1,nsphact,nthread
883 a(1,inod)=a(1,inod)+wa(myadrn+10)
884 a(2,inod)=a(2,inod)+wa(myadrn+11)
885 a(3,inod)=a(3,inod)+wa(myadrn+12)
886 stifn(inod)=stifn(inod)+wa(myadrn+7)
889 DO ns=itask+1,nsphact,nthread
893 fskyi(nisky_l+ns,1)=wa(myadrn+10)
894 fskyi(nisky_l+ns,2)=wa(myadrn+11)
895 fskyi(nisky_l+ns,3)=wa(myadrn+12)
896 fskyi(nisky_l+ns,4)=wa(myadrn+7)
897 isky(nisky_l+ns) =inod
899 IF(itask==0) nisky = nisky + nsphact
904 DO ns=itask+1,nsphact,nthread
907 IF(sph2sol(n)==0)
THEN
909 a(1,inod)=a(1,inod)+wa(myadrn+10)
910 a(2,inod)=a(2,inod)+wa(myadrn+11)
911 a(3,inod)=a(3,inod)+wa(myadrn+12)
912 stifn(inod)=stifn(inod)+wa(myadrn+7)
913 ELSEIF (sol2sph_typ(sph2sol(n))==4)
THEN
924 ir=irst(1,n-first_sphsol+1)
925 is=irst(2,n-first_sphsol+1)
926 it=irst(3,n-first_sphsol+1)
927 nsphdir=igeo(37,ixs(10,nsol))
929 ksi = a_gauss_tetra(ir,nsphdir)
930 eta = a_gauss_tetra(is,nsphdir)
931 zeta = a_gauss_tetra(it,nsphdir)
938 a(1,n1)=a(1,n1)+phi1*wa(myadrn+10)
939 a(2,n1)=a(2,n1)+phi1*wa(myadrn+11)
940 a(3,n1)=a(3,n1)+phi1*wa(myadrn+12)
941 stifn(n1)=stifn(n1)+phi1*wa(myadrn+7)
944 a(2,n2)=a(2,n2)+phi2*wa(myadrn+11)
945 a(3,n2)=a(3,n2)+phi2*wa(myadrn+12)
946 stifn(n2)=stifn(n2)+phi2*wa(myadrn+7)
948 a(1,n3)=a(1,n3)+phi3*wa(myadrn+10)
949 a(2,n3)=a(2,n3)+phi3*wa(myadrn+11)
950 a(3,n3)=a(3,n3)+phi3*wa(myadrn+12)
951 stifn(n3)=stifn(n3)+phi3*wa(myadrn+7)
953 a(1,n4)=a(1,n4)+phi4*wa(myadrn+10)
954 a(2,n4)=a(2,n4)+phi4*wa(myadrn+11)
955 a(3,n4)=a(3,n4)+phi4*wa(myadrn+12)
956 stifn(n4)=stifn(n4)+phi4*wa(myadrn+7)
973 ir=irst(1,n-first_sphsol+1)
974 is=irst(2,n-first_sphsol+1)
975 it=irst(3,n-first_sphsol+1)
976 nsphdir=nint((sol2sph(2,nsol)-sol2sph(1,nsol))**third)
978 ksi = a_gauss(ir,nsphdir)
979 eta = a_gauss(is,nsphdir)
980 zeta = a_gauss(it,nsphdir)
982 phi1=one_over_8*(one-ksi)*(one-eta)*(one-zeta)
983 phi2=one_over_8*(one-ksi)*(one-eta)*(one+zeta)
984 phi3=one_over_8*(one+ksi)*(one-eta)*(one+zeta)
985 phi4=one_over_8*(one+ksi)*(one-eta)*(one-zeta)
986 phi5=one_over_8*(one-ksi)*(one+eta)*(one-zeta)
987 phi6=one_over_8*(one-ksi)*(one+eta)*(one+zeta)
988 phi7=one_over_8*(one+ksi)*(one+eta)*(one+zeta)
989 phi8=one_over_8*(one+ksi)*(one+eta)*(one-zeta)
991 a(1,n1)=a(1,n1)+phi1*wa(myadrn+10)
992 a(2,n1)=a(2,n1)+phi1*wa(myadrn+11)
993 a(3,n1)=a(3,n1)+phi1*wa(myadrn+12)
994 stifn(n1)=stifn(n1)+phi1*wa(myadrn+7)
996 a(1,n2)=a(1,n2)+phi2*wa(myadrn+10)
997 a(2,n2)=a(2,n2)+phi2*wa(myadrn+11)
998 a(3,n2)=a(3,n2)+phi2*wa(myadrn+12)
999 stifn(n2)=stifn(n2)+phi2*wa(myadrn+7)
1001 a(1,n3)=a(1,n3)+phi3*wa(myadrn+10)
1002 a(2,n3)=a(2,n3)+phi3*wa(myadrn+11)
1003 a(3,n3)=a(3,n3)+phi3*wa(myadrn+12)
1004 stifn(n3)=stifn(n3)+phi3*wa(myadrn+7)
1006 a(1,n4)=a(1,n4)+phi4*wa(myadrn+10)
1007 a(2,n4)=a(2,n4)+phi4*wa(myadrn+11)
1008 a(3,n4)=a(3,n4)+phi4*wa(myadrn+12)
1009 stifn(n4)=stifn(n4)+phi4*wa(myadrn+7)
1011 a(1,n5)=a(1,n5)+phi5*wa(myadrn+10)
1012 a(2,n5)=a(2,n5)+phi5*wa(myadrn+11)
1013 a(3,n5)=a(3,n5)+phi5*wa(myadrn+12)
1014 stifn(n5)=stifn(n5)+phi5*wa(myadrn+7)
1016 a(1,n6)=a(1,n6)+phi6*wa(myadrn+10)
1017 a(2,n6)=a(2,n6)+phi6*wa(myadrn+11)
1018 a(3,n6)=a(3,n6)+phi6*wa(myadrn+12)
1019 stifn(n6)=stifn(n6)+phi6*wa(myadrn+7)
1021 a(1,n7)=a(1,n7)+phi7*wa(myadrn+10)
1022 a(2,n7)=a(2,n7)+phi7*wa(myadrn+11)
1023 a(3,n7)=a(3,n7)+phi7*wa(myadrn+12)
1024 stifn(n7)=stifn(n7)+phi7*wa(myadrn+7)
1026 a(1,n8)=a(1,n8)+phi8*wa(myadrn+10)
1027 a(2,n8)=a(2,n8)+phi8*wa(myadrn+11)
1028 a(3,n8)=a(3,n8)+phi8*wa(myadrn+12)
1029 stifn(n8)=stifn(n8)+phi8*wa(myadrn+7)
1039 IF(sph2sol(n)==0)
THEN
1042 fskyi(nisky_l+nski,1)=wa(myadrn+10)
1043 fskyi(nisky_l+nski,2)=wa(myadrn+11)
1044 fskyi(nisky_l+nski,3)=wa(myadrn+12)
1045 fskyi(nisky_l+nski,4)=wa(myadrn+7)
1046 isky(nisky_l+nski) =inod
1047 ELSEIF (sol2sph_typ(sph2sol(n))==4)
THEN
1058 ir=irst(1,n-first_sphsol+1)
1059 is=irst(2,n-first_sphsol+1)
1060 it=irst(3,n-first_sphsol+1)
1061 nsphdir=igeo(37,ixs(10,nsol))
1063 ksi = a_gauss_tetra(ir,nsphdir)
1064 eta = a_gauss_tetra(is,nsphdir)
1065 zeta = a_gauss_tetra(it,nsphdir)
1072 fsky(1,k1)=fsky(1,k1)+phi1*wa(myadrn+10)
1073 fsky(2,k1)=fsky(2,k1)+phi1*wa(myadrn+11)
1074 fsky(3,k1)=fsky(3,k1)+phi1*wa(myadrn+12)
1075 fsky(4,k1)=fsky(4,k1)+phi1*wa(myadrn+7)
1077 fsky(1,k2)=fsky(1,k2)+phi2*wa(myadrn+10)
1078 fsky(2,k2)=fsky(2,k2)+phi2*wa(myadrn+11)
1079 fsky(3,k2)=fsky(3,k2)+phi2*wa(myadrn+12)
1080 fsky(4,k2)=fsky(4,k2)+phi2*wa(myadrn+7)
1082 fsky(1,k3)=fsky(1,k3)+phi3*wa(myadrn+10)
1083 fsky(2,k3)=fsky(2,k3)+phi3*wa(myadrn+11)
1084 fsky(3,k3)=fsky(3,k3)+phi3*wa(myadrn+12)
1085 fsky(4,k3)=fsky(4,k3)+phi3*wa(myadrn+7)
1087 fsky(1,k4)=fsky(1,k4)+phi4*wa(myadrn+10)
1088 fsky(2,k4)=fsky(2,k4)+phi4*wa(myadrn+11)
1089 fsky(3,k4)=fsky(3,k4)+phi4*wa(myadrn+12)
1090 fsky(4,k4)=fsky(4,k4)+phi4*wa(myadrn+7)
1107 ir=irst(1,n-first_sphsol+1)
1108 is=irst(2,n-first_sphsol+1)
1109 it=irst(3,n-first_sphsol+1)
1111 nsphdir=nint((sol2sph(2,nsol)-sol2sph(1,nsol))**third)
1112 ksi = a_gauss(ir,nsphdir)
1113 eta = a_gauss(is,nsphdir)
1114 zeta = a_gauss(it,nsphdir)
1116 phi1=one_over_8*(one-ksi)*(one-eta)*(one-zeta)
1117 phi2=one_over_8*(one-ksi)*(one-eta)*(one+zeta)
1118 phi3=one_over_8*(one+ksi)*(one-eta)*(one+zeta)
1119 phi4=one_over_8*(one+ksi)*(one-eta)*(one-zeta)
1120 phi5=one_over_8*(one-ksi)*(one+eta)*(one-zeta)
1121 phi6=one_over_8*(one-ksi)*(one+eta)*(one+zeta)
1122 phi7=one_over_8*(one+ksi)*(one+eta)*(one+zeta)
1123 phi8=one_over_8*(one+ksi)*(one+eta)*(one-zeta)
1125 fsky(1,k1)=fsky(1,k1)+phi1*wa(myadrn+10)
1126 fsky(2,k1)=fsky(2,k1)+phi1*wa(myadrn+11)
1127 fsky(3,k1)=fsky(3,k1)+phi1*wa(myadrn+12)
1128 fsky(4,k1)=fsky(4,k1)+phi1*wa(myadrn+7)
1130 fsky(1,k2)=fsky(1,k2)+phi2*wa(myadrn+10)
1131 fsky(2,k2)=fsky(2,k2)+phi2*wa(myadrn+11)
1132 fsky(3,k2)=fsky(3,k2)+phi2*wa(myadrn+12)
1133 fsky(4,k2)=fsky(4,k2)+phi2*wa(myadrn+7)
1135 fsky(1,k3)=fsky(1,k3)+phi3*wa(myadrn+10)
1136 fsky(2,k3)=fsky(2,k3)+phi3*wa(myadrn+11)
1137 fsky(3,k3)=fsky(3,k3)+phi3*wa(myadrn+12)
1138 fsky(4,k3)=fsky(4,k3)+phi3*wa(myadrn+7)
1140 fsky(1,k4)=fsky(1,k4)+phi4*wa(myadrn+10)
1141 fsky(2,k4)=fsky(2,k4)+phi4*wa(myadrn+11)
1142 fsky(3,k4)=fsky(3,k4)+phi4*wa(myadrn+12)
1143 fsky(4,k4)=fsky(4,k4)+phi4*wa(myadrn+7)
1145 fsky(1,k5)=fsky(1,k5)+phi5*wa(myadrn+10)
1146 fsky(2,k5)=fsky(2,k5)+phi5*wa(myadrn+11)
1147 fsky(3,k5)=fsky(3,k5)+phi5*wa(myadrn+12)
1148 fsky(4,k5)=fsky(4,k5)+phi5*wa(myadrn+7)
1150 fsky(1,k6)=fsky(1,k6)+phi6*wa(myadrn+10)
1151 fsky(2,k6)=fsky(2,k6)+phi6*wa(myadrn+11)
1152 fsky(3,k6)=fsky(3,k6)+phi6*wa(myadrn+12)
1153 fsky(4,k6)=fsky(4,k6)+phi6*wa(myadrn+7)
1155 fsky(1,k7)=fsky(1,k7)+phi7*wa(myadrn+10)
1156 fsky(2,k7)=fsky(2,k7)+phi7*wa(myadrn+11)
1157 fsky(3,k7)=fsky(3,k7)+phi7*wa(myadrn+12)
1158 fsky(4,k7)=fsky(4,k7)+phi7*wa(myadrn+7)
1160 fsky(1,k8)=fsky(1,k8)+phi8*wa(myadrn+10)
1161 fsky(2,k8)=fsky(2,k8)+phi8*wa(myadrn+11)
1162 fsky(3,k8)=fsky(3,k8)+phi8*wa(myadrn+12)
1163 fsky(4,k8)=fsky(4,k8)+phi8*wa(myadrn+7)
1168 nisky = nisky + nski
1176 DO ns=itask+1,nsphact,nthread
1178 spbuf(10,n)=spbuf(10,n)+dt05*spbuf(11,n)
1183 CALL spgauge(lgauge ,gauge ,kxsp ,ixsp ,
1184 1 spbuf ,iparg ,elbuf_tab,ispsym ,xspsym,
1185 2 nod2sp ,x ,itask ,wa ,sph_work%WASIGSM,
1186 3 sph_work%WAR ,sphg_f6)
1197 IF(itask==0)
DEALLOCATE(sph_work%STAB, sph_work%WASIGSM)
1198 IF(itask==0 .AND. nspmd > 1)
THEN
1199 DEALLOCATE(sph_work%WAR, sph_work%WTR, sph_work%WGR, sph_work%LAMBDR, sph_work%WAR2)
1206 . .OR.idtmin(51)==5))
THEN
1208#include "lockon.inc"
1209 IF(ngdone>ngroup)
THEN
1210#include "lockoff.inc"
1215#include "lockoff.inc"
1217 IF(iparg(8,ng)==1)
GOTO 400
1219 DO nelem = 1,iparg(2,ng),nvsiz
1222 2 mtn ,nel ,nft ,kad ,ity ,
1223 3 npt ,jale ,ismstr ,jeul ,jtur ,
1224 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
1225 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
1226 6 irep ,iint ,igtyp ,israt ,isrot ,
1227 7 icsen ,isorth ,isorthg ,ifailure,jsms )
1229 llt=
min(nvsiz,nel-nelem+1)
1231 gbuf => elbuf_tab(ng)%GBUF
1234 IF(kxsp(2,n)<=0)
GOTO 500
1237 dtx =dtfac1(51)*sqrt(two*ms(inod)/
max(em20,wa(adrn)))
1238 IF(dtx>dtmin1(51))
GO TO 500
1239 IF(idtmin(51)==1)
THEN
1241#include "lockon.inc"
1243 .
' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SPH PARTICLE'
1245 .
' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SPH PARTICLE'
1246#include "lockoff.inc"
1247 ELSEIF(idtmin(51)==2)
THEN
1248 IF (gbuf%OFF(k)/=zero)
THEN
1251#include "lockon.inc"
1255 .
' -- DELETE SPH PARTICLE',kxsp(nisp,n)
1257 .
' -- DELETE SPH PARTICLE',kxsp(nisp,n)
1258#include "lockoff.inc"
1260 ELSEIF(idtmin(51)==5)
THEN
1262#include "lockon.inc"
1264 .
' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SPH PARTICLE'
1266 .
' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SPH PARTICLE'
1267#include "lockoff.inc"
1289 1 x ,v ,ms ,spbuf ,itab ,
1290 2 kxsp ,ixsp ,nod2sp ,wa ,waspact ,
1291 3 itask ,ipartsp ,ipart)