88
89
90
91 USE timer_mod
95 USE mat_elem_mod
96 USE elbufdef_mod
98 USE output_mod , ONLY : output_
100 use glob_therm_mod
101 use sensor_mod
102 USE sph_work_mod
103 use element_mod , only : nixs
104
105
106
107#include "implicit_f.inc"
108#include "comlock.inc"
109
110
111
112#include "mvsiz_p.inc"
113
114
115
116#include "com01_c.inc"
117#include "com04_c.inc"
118#include "com08_c.inc"
119#include "sphcom.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"
125#include "task_c.inc"
126#include "units_c.inc"
127#include "scr02_c.inc"
128#include "scr18_c.inc"
129
130
131
132 TYPE(TIMER_), INTENT(INOUT) :: TIMERS
133 INTEGER, INTENT(IN) :: SNPC
134 INTEGER, INTENT(IN) ::
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) ::
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,*),
148 . IGEO(NPROPGI,*),
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(*)
162 TYPE(TTABLE) TABLE(*)
163 TYPE (ELBUF_STRUCT_), TARGET, DIMENSION(NGROUP) :: ELBUF_TAB
164 TYPE (NLOCAL_STR_) , TARGET :: NLOC_DMG
165 DOUBLE PRECISION SPHG_F6(4,6,NBGAUGE)
166
167 TYPE(OUTPUT_), INTENT(INOUT) :: OUTPUT
168 TYPE () ,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
174
175
176
177 INTEGER NDSVOID
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,
183 . IEXPAN,IBID
185 . dtx,dt05,rhoi,vi,
186 . phi1,phi2,phi3,phi4,phi5,phi6,phi7,phi8,
187 . ksi, eta, zeta,
188 . voln(mvsiz)
189 my_real,
DIMENSION(MVSIZ,6) :: svis
190
191 TYPE(G_BUFEL_) ,POINTER :: GBUF
192
194 . a_gauss(9,9),a_gauss_tetra(9,9)
195 DATA a_gauss /
196 1 0. ,0. ,0. ,
197 1 0. ,0. ,0. ,
198 1 0. ,0. ,0. ,
199 2 -.5 ,0.5 ,0. ,
200 2 0. ,0. ,0. ,
201 2 0. ,0. ,0. ,
202 3 -.666666666666666,0. ,0.666666666666666,
203 3 0. ,0. ,0. ,
204 3 0. ,0. ,0. ,
205 4 -.75 ,-.25 ,0.25 ,
206 4 0.75 ,0. ,0. ,
207 4 0. ,0. ,0. ,
208 5 -.8 ,-.4 ,0. ,
209 5 0.4 ,0.8 ,0. ,
210 5 0. ,0. ,0. ,
211 6 -.833333333333333,-.5 ,-.166666666666666,
212 6 0.166666666666666,0.5 ,0.833333333333333,
213 6 0. ,0. ,0. ,
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,
219 8 0.625 ,0.875 ,0. ,
220 9 -.888888888888888,-.666666666666666,-.444444444444444,
221 9 -.222222222222222,0. ,0.222222222222222,
222 9 0.444444444444444,0.666666666666666,0.888888888888888/
223
224 DATA a_gauss_tetra /
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/
252
253
254
255
256
257
258
259
260
261
262
263 ibid = 0
264
265
266
267 IF(itask==0) THEN
268 ALLOCATE(sph_work%WASIGSM(6*nsphsym))
269 sph_work%WASIGSM = zero
270 ENDIF
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))
277 END IF
278
279 kvnorm =16*numsph+1
280
281
282 DO n=itask+1,numsph,nthread
283 wa(kwasph*(n-1)+10)=spbuf(2,n)
284 ENDDO
285
286 IF( (glob_therm%ITHERM/=0) .OR. (glob_therm%ITHERM_FE/=0)) THEN
287 IF(itask==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))
293 END IF
294 ngdone = 1
295
297
298
299 50 CONTINUE
300#include "lockon.inc"
301 IF(ngdone>ngroup) THEN
302#include "lockoff.inc"
303 GOTO 51
304 ENDIF
305 ng=ngdone
306 ngdone = ng + 1
307#include "lockoff.inc"
308
309 IF(iparg(8,ng)==1)GOTO 50
311 DO nelem = 1,iparg(2,ng),nvsiz
312 offset = nelem - 1
313 nsg =iparg(10,ng)
314 nvc =iparg(19,ng)
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 )
322 lft=1
323 llt=
min(nvsiz,nel-nelem+1)
324 IF(ity==51) THEN
325
326 gbuf => elbuf_tab(ng)%GBUF
327 IF(jthe > 0)THEN
328 DO i=lft,llt
329 n=nft+i
330 IF(kxsp(2,n)>0)THEN
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)
335 ELSE
336 sph_work%LAMBDA(n)=pm(77,mx)+pm(78,mx)*sph_work%WT(n)
337 END IF
338 END IF
339 END DO
340 ELSEIF (jthe < 0) THEN
341 DO i=lft,llt
342 n=nft+i
343 IF(kxsp(2,n)>0)THEN
344 inod = kxsp(3,n)
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)
349 ELSE
350 sph_work%LAMBDA(n)=pm(77,mx)+pm(78,mx)*sph_work%WT(n)
351 END IF
352 sph_work%LAMBDA(n)=sph_work%LAMBDA(n)*glob_therm%THEACCFACT
353 END IF
354 END DO
355 ELSE
356 DO i=lft,llt
357 n=nft+i
358 sph_work%WT(n) =zero
359 sph_work%LAMBDA(n)=zero
360 END DO
361 END IF
362
363 ENDIF
365 END DO
366 GOTO 50
367
368 51 CONTINUE
369
370 IF(nspmd>1) THEN
371
373
374 IF(itask==0) THEN
376 CALL spmd_sphgett(sph_work%WT,sph_work%WTR,sph_work%LAMBDA,sph_work%LAMBDR)
378 END IF
379 END IF
380
381
383
384
385 ngdone = 1
386
387
389
390
391 60 CONTINUE
392#include "lockon.inc"
393 IF(ngdone>ngroup) THEN
394#include "lockoff.inc"
395 GOTO 61
396 ENDIF
397 ng=ngdone
398 ngdone = ng + 1
399#include "lockoff.inc"
400
401 IF(iparg(8,ng)==1)GOTO 60
403 DO nelem = 1,iparg(2,ng),nvsiz
404 offset = nelem - 1
405 nsg =iparg(10,ng)
406 nvc =iparg(19,ng)
408 2 mtn ,nel ,nft ,iad ,ity ,
409 3 npt ,jale ,ismstr ,jeul ,jtur ,
410 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
411 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
412 6 irep ,iint ,igtyp ,israt ,isrot ,
413 7 icsen ,isorth ,isorthg ,ifailure,jsms )
414 lft=1
415 llt=
min(nvsiz,nel-nelem+1)
416 IF(ity==51.AND.jthe/=0) THEN
417
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)
422
423 ENDIF
425 END DO
426 GOTO 60
427
428 61 CONTINUE
429
430
432
433
434 IF(nspmd>1) THEN
435 IF(itask==0) THEN
437 CALL spmd_sphgetg(sph_work%WGRADT,wasph,sph_work%WGR,sph_iord1)
439 END IF
440
442
443 END IF
444
445 ngdone = 1
446
447
448
449
451 1 ispsym ,wasph ,ispcond ,xframe ,wsmcomp,
452 2 geo ,ipart ,ipartsp ,waspact ,itask )
453
455
456 IF(itask==0)
458 1 ispcond, xframe, ispsym, xspsym,
459 2 sph_work%WGRADT, sph_work%WGRADTSM,waspact
460 3 lft, llt, nft)
461
463
464
465 70 CONTINUE
466#include "lockon.inc"
467 IF(ngdone>ngroup) THEN
468#include "lockoff.inc"
469 GOTO 71
470 ENDIF
471 ng=ngdone
472 ngdone = ng + 1
473#include "lockoff.inc"
474
475 IF(iparg(8,ng)==1)GOTO 70
477 DO nelem = 1,iparg(2,ng),nvsiz
478 offset = nelem - 1
479 nsg =iparg(10,ng)
480 nvc =iparg(19,ng)
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 )
488 lft=1
489 llt=
min(nvsiz,nel-nelem+1)
490 IF(ity==51.AND.jthe==1) THEN
491
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 )
497
498 gbuf => elbuf_tab(ng)%GBUF
499 DO i=lft,llt
500 n=nft+i
501 IF(kxsp(2,n)>0)THEN
502 inod =kxsp(3,n)
503 rhoi =spbuf(2,n)
504 vi =spbuf(12,n)/
max(em20,rhoi)
505 gbuf%EINT(i) = gbuf%EINT(i)
506 . + vi*sph_work%WLAPLT(n)*dt1/
max(em20,gbuf%VOL(i))
507 END IF
508 END DO
509 ELSEIF(ity==51.AND.jthe==-1)THEN
510
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 )
516
517 gbuf => elbuf_tab(ng)%GBUF
518 DO i=lft,llt
519 n=nft+i
520 IF(kxsp(2,n)>0)THEN
521 myadrn =kwasph*(n-1)
522 inod =kxsp(3,n)
523 rhoi =spbuf(2,n)
524 vi =spbuf(12,n)/
max(em20,rhoi)
525 wa(myadrn+15) = vi*sph_work%WLAPLT(n)*dt1
526 END IF
527 END DO
528
529 ENDIF
531 END DO
532 GOTO 70
533
534 71 CONTINUE
535
536
538
539
540 IF(itask==0) DEALLOCATE(sph_work%WT, sph_work%WGRADT, sph_work%WLAPLT, sph_work%LAMBDA, sph_work%WGRADTSM)
541
542 END IF
543
544
545 ngdone = 1
546
547
549
550
551
552100 CONTINUE
553#include "lockon.inc"
554 IF(ngdone>ngroup) THEN
555#include "lockoff.inc"
556 GOTO 101
557 ENDIF
558 ng=ngdone
559 ngdone = ng + 1
560#include "lockoff.inc"
561
562 IF(iparg(8,ng)==1)GOTO 100
564 DO nelem = 1,iparg(2,ng),nvsiz
565 offset = nelem - 1
566 nel =iparg(2,ng)
567 nft =iparg(3,ng) + offset
568 iad =iparg(4,ng)
569 ity =iparg(5,ng)
570 lft=1
571 llt=
min(nvsiz,nel-nelem+1)
572 isph2sol=iparg(69,ng)
573 IF(ity==51) THEN
575 1 x ,v ,ms ,spbuf ,itab ,
576 2 kxsp ,ixsp ,nod2sp ,ispsym ,xspsym ,
577 3 vspsym ,iparg ,wa ,wasph )
578 ENDIF
580 END DO
581 GOTO 100
582 101 CONTINUE
583
584
586
587
588 IF(itask==0)THEN
589
590
591
592
593 IF(nsphio/=0)THEN
594
595
596 IF(nspmd>1)THEN
600 ENDIF
601
603 2 spbuf ,itab ,kxsp ,ixsp ,nod2sp ,
604 3 isphio ,ipart ,ipartsp ,waspact ,wa ,
605 4 wasph(kvnorm), sph_work%WAR2 )
606
607 ENDIF
608 ENDIF
609
610 ngdone = 1
611
612
614
615
616
617
618
619250 CONTINUE
620#include "lockon.inc"
621 IF(ngdone>ngroup) THEN
622#include "lockoff.inc"
623 GOTO 251
624 ENDIF
625 ng=ngdone
626 ngdone = ng + 1
627#include "lockoff.inc"
628
629 IF(iparg(8,ng)==1)GOTO 250
631 DO nelem = 1,iparg(2,ng),nvsiz
632 offset = nelem - 1
633 nsg =iparg(10,ng)
634 nvc =iparg(19,ng)
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 )
642 lft=1
643 llt=
min(nvsiz,nel-nelem+1)
644 IF(ity==51) THEN
645 jsph=1
646 jcvt=0
647
648 jplasol=1
649 istra = iparg(44,ng)
650 isph2sol=iparg(69,ng)
651 iexpan = iparg(49,ng)
652 ipartsph=0
653
654
655
656
657 ndsvoid=0
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)
672 ENDIF
674 END DO
675 GOTO 250
676
677 251 CONTINUE
678
679
681
682
683
684
685
686 IF(nsphsol/=0)THEN
687
689
691 . x ,spbuf ,ixs ,kxsp ,ipartsp ,
692 . irst ,elbuf_tab,iparg ,ngrounc ,igrounc ,
693 . sol2sph,wa ,pm)
694
695 END IF
696
697
698
699 IF(itask==0)THEN
700 ALLOCATE(sph_work%STAB(7,numsph+
nsphr+nsphsym+1),stat=stat)
701 IF (stat/=0)THEN
702 END IF
703 sph_work%STAB=zero
704 END IF
705
707
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 )
713
714
715
716
717
718 IF(nspmd>1)THEN
719
721
722 IF(itask==0)THEN
724 CALL spmd_sphgetw(spbuf,wasph,wa,sph_work%WAR,sph_iord1)
725
728 ENDIF
729 END IF
730
731
732
733 IF(itask==0)THEN
734 IF(nsphio/=0)THEN
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)
740
741
742 IF(nspmd>1) THEN
744 CALL spmd_sphgetw(spbuf,wasph,wa,sph_work%WAR,sph_iord1)
746 ENDIF
747 ENDIF
748 END IF
749
750
751
752 IF(itask==0)THEN
753 CALL spsgsym(ispcond ,xframe ,ispsym ,xspsym ,vspsym ,
754 2 wa ,sph_work%WASIGSM,waspact,sph_work%WAR )
755 ENDIF
756
757
758
759
761
762
763 DO ns=itask+1,nsphact,nthread
764 n=waspact(ns)
765 spbuf(11,n)=zero
766 ENDDO
767
768
769
770
771 IF (glob_therm%ITHERM==0)
773 1 ispsym ,wasph ,ispcond ,xframe ,wsmcomp,
774 2 geo ,ipart ,ipartsp ,waspact ,itask )
775
776
777
778
779
781
782
783 DO ns=itask+1,nsphact,nthread
784 n =waspact(ns)
785
786 myadrn =kwasph*(n-1)
787 wa(myadrn+10)=zero
788 wa(myadrn+11)=zero
789 wa(myadrn+12)=zero
790 wa(myadrn+ 7)=zero
791 ENDDO
792
793
794
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 ,
799 4 spbuf ,x )
800
801
802 ngdone = 1
803
805
806
807 350 CONTINUE
808#include "lockon.inc"
809 IF(ngdone>ngroup) THEN
810#include "lockoff.inc"
811 GOTO 351
812 ENDIF
813 ng=ngdone
814 ngdone = ng + 1
815#include "lockoff.inc"
816
817
818 IF(iparg(8,ng)==1)GOTO 350
820 DO nelem = 1,iparg(2,ng),nvsiz
821 offset = nelem - 1
822 nel =iparg(2,ng)
823 nft =iparg(3,ng) + offset
824 iad =iparg(4,ng)
825 ity =iparg(5,ng)
826 isph2sol=iparg(69,ng)
827 ipartsph=0
828 lft=1
829 llt=
min(nvsiz,nel-nelem+1)
830 IF(ity==51) THEN
831
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)
840 ENDIF
842 END DO
843 GOTO 350
844
845 351 CONTINUE
846
847 nisky_l = nisky
848
850
851
852 IF(nsphsol==0)THEN
853 IF (glob_therm%ITHERM_FE > 0)THEN
854 IF(iparit==0)THEN
855 DO ns=itask+1,nsphact,nthread
856 n=waspact(ns)
857 myadrn =kwasph*(n-1)
858 inod=kxsp(3,n)
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)
864 ENDDO
865 ELSE
866 DO ns=itask+1,nsphact,nthread
867 n=waspact(ns)
868 myadrn =kwasph*(n-1)
869 inod=kxsp(3,n)
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
876 ENDDO
877 IF(itask==0) nisky = nisky + nsphact
878 ENDIF
879 ELSE
880 IF(iparit==0)THEN
881 DO ns=itask+1,nsphact,nthread
882 n=waspact(ns)
883 myadrn =kwasph*(n-1)
884 inod=kxsp(3,n)
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)
889 ENDDO
890 ELSE
891 DO ns=itask+1,nsphact,nthread
892 n=waspact(ns)
893 myadrn =kwasph*(n-1)
894 inod=kxsp(3,n)
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
900 ENDDO
901 IF(itask==0) nisky = nisky + nsphact
902 ENDIF
903 ENDIF
904 ELSE
905 IF(iparit==0)THEN
906 DO ns=itask+1,nsphact,nthread
907 n=waspact(ns)
908 myadrn =kwasph*(n-1)
909 IF(sph2sol(n)==0)THEN
910 inod=kxsp(3,n)
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
916
917
918
919 nsol=sph2sol(n)
920
921 n1=ixs(2,nsol)
922 n2=ixs(4,nsol)
923 n3=ixs(7,nsol)
924 n4=ixs(6,nsol)
925
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))
930
931 ksi = a_gauss_tetra(ir,nsphdir)
932 eta = a_gauss_tetra(is,nsphdir)
933 zeta = a_gauss_tetra(it,nsphdir)
934
935 phi1=ksi
936 phi2=eta
937 phi3=zeta
938 phi4=1-ksi-eta-zeta
939
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)
944
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)
949
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)
954
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)
959
960 ELSE
961
962
963
964 nsol=sph2sol(n)
965
966 n1=ixs(2,nsol)
967 n2=ixs(3,nsol)
968 n3=ixs(4,nsol)
969 n4=ixs(5,nsol)
970 n5=ixs(6,nsol)
971 n6=ixs(7,nsol)
972 n7=ixs(8,nsol)
973 n8=ixs(9,nsol)
974
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)
979
980 ksi = a_gauss(ir,nsphdir)
981 eta = a_gauss(is,nsphdir)
982 zeta = a_gauss(it,nsphdir)
983
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)
992
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)
997
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)
1002
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)
1007
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
1012
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)
1017
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)
1022
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)
1027
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)
1032
1033 END IF
1034 ENDDO
1035 ELSE
1036 IF(itask==0)THEN
1037 nski=0
1038 DO ns=1,nsphact
1039 n=waspact(ns)
1040 myadrn =kwasph*(n-1)
1041 IF(sph2sol(n)==0)THEN
1042 inod=kxsp(3,n)
1043 nski=nski+1
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
1050
1051
1052
1053 nsol=sph2sol(n)
1054
1055 k1=iads(1,nsol)
1056 k2=iads(3,nsol)
1057 k3=iads(6,nsol)
1058 k4=iads(5,nsol)
1059
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))
1064
1065 ksi = a_gauss_tetra(ir,nsphdir)
1066 eta = a_gauss_tetra(is,nsphdir)
1067 zeta = a_gauss_tetra(it,nsphdir)
1068
1069 phi1=ksi
1070 phi2=eta
1071 phi3=zeta
1072 phi4=1-ksi-eta-zeta
1073
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)
1078
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)
1083
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)
1088
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)
1093
1094 ELSE
1095
1096
1097
1098 nsol=sph2sol(n)
1099
1100 k1=iads(1,nsol)
1101 k2=iads(2,nsol)
1102 k3=iads(3,nsol)
1103 k4=iads(4,nsol)
1104 k5=iads(5,nsol)
1105 k6=iads(6,nsol)
1106 k7=iads(7,nsol)
1107 k8=iads(8,nsol)
1108
1109 ir=irst(1,n-first_sphsol+1)
1110 is=irst(2,n-first_sphsol+1)
1111 it=irst(3,n-first_sphsol+1)
1112
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)
1117
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)
1126
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+12)
1130 fsky(4,k1)=fsky(4,k1)+phi1*wa(myadrn+7)
1131
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)
1136
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)
1141
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)
1146
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)
1151
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)
1156
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)
1161
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)
1166
1167 END IF
1168 ENDDO
1169
1170 nisky = nisky + nski
1171
1172 END IF
1173 END IF
1174 END IF
1175
1176
1177 dt05=half*dt1
1178 DO ns=itask+1,nsphact,nthread
1179 n=waspact(ns)
1180 spbuf(10,n)=spbuf(10,n)+dt05*spbuf(11,n)
1181 ENDDO
1182
1183
1184
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)
1189
1190
1191 ngdone = 1
1192
1193
1195
1196
1197
1198
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
1202 END IF
1203
1204
1205 IF(nodadt==1.AND.
1206 . (idtmin(51)==1
1207 . .OR.idtmin(51)==2
1208 . .OR.idtmin(51)==5))THEN
1209400 CONTINUE
1210#include "lockon.inc"
1211 IF(ngdone>ngroup) THEN
1212#include "lockoff.inc"
1213 GOTO 401
1214 ENDIF
1215 ng=ngdone
1216 ngdone = ng + 1
1217#include "lockoff.inc"
1218
1219 IF(iparg(8,ng)==1)GOTO 400
1221 DO nelem = 1,iparg(2,ng),nvsiz
1222 offset = nelem - 1
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 )
1230 lft=1
1231 llt=
min(nvsiz,nel-nelem+1)
1232 IF(ity==51) THEN
1233 gbuf => elbuf_tab(ng)%GBUF
1234 DO 500 k=lft,llt
1235 n=nft+k
1236 IF(kxsp(2,n)<=0)GOTO 500
1237 inod=kxsp(3,n)
1238 adrn=kwasph*(n-1)+7
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
1242 tstop = tt
1243#include "lockon.inc"
1244 WRITE(iout,*)
1245 . ' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SPH PARTICLE'
1246 WRITE(istdo,*)
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
1251 gbuf%OFF(k) = zero
1252 kxsp(2,n) = 0
1253#include "lockon.inc"
1254 isphbuc =1
1255 idel7nok=1
1256 WRITE(iout,*)
1257 . ' -- DELETE SPH PARTICLE',kxsp(nisp,n)
1258 WRITE(istdo,*)
1259 . ' -- DELETE SPH PARTICLE',kxsp(nisp,n)
1260#include "lockoff.inc"
1261 END IF
1262 ELSEIF(idtmin(51)==5)THEN
1263 mstop=2
1264#include "lockon.inc"
1265 WRITE(iout,*)
1266 . ' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SPH PARTICLE'
1267 WRITE(istdo,*)
1268 . ' **ERROR : TIME STEP LESS OR EQUAL DTMIN FOR SPH PARTICLE'
1269#include "lockoff.inc"
1270 ENDIF
1271 500 CONTINUE
1272 ENDIF
1273 END DO
1275 GOTO 400
1276
1277 401 CONTINUE
1278
1279
1281
1282
1283 ngdone = 1
1284
1285 ENDIF
1286
1287
1288
1289
1291 1 x ,v ,ms ,spbuf ,itab ,
1292 2 kxsp ,ixsp ,nod2sp ,wa ,waspact ,
1293 3 itask ,ipartsp ,ipart)
1294
1295
1296
1298
1299
1300 RETURN
subroutine soltosphp(x, spbuf, ixs, kxsp, ipartsp, irst, elbuf_tab, iparg, ngrounc, igrounc, sol2sph, wa, pm)
subroutine initbuf(iparg, ng, mtn, llt, nft, iad, ity, npt, jale, ismstr, jeul, jtur, jthe, jlag, jmult, jhbe, jivf, mid, jpor, jcvt, jclose, jpla, irep, iint, igtyp, israt, isrot, icsen, isorth, isorthg, ifailure, jsms)
subroutine spadah(x, v, ms, spbuf, itab, kxsp, ixsp, nod2sp, wa, waspact, itask, ipartsp, ipart)
subroutine spscomp(ispsym, wacomp, ispcond, xframe, wsmcomp, geo, ipart, ipartsp, waspact, itask)
subroutine spdens(x, v, ms, spbuf, itab, kxsp, ixsp, nod2sp, ispsym, xspsym, vspsym, iparg, wa, wacomp)
subroutine spforcp(pm, geo, x, v, ms, spbuf, itab, pld, bufmat, bufgeo, partsav, fsav, dt2t, iparg, npc, kxsp, ixsp, nod2sp, neltst, ityptst, ipart, ipartsp, ispcond, xframe, ispsym, xspsym, vspsym, wa, wasigsm, wacomp, wsmcomp, waspact, war, stab, wfext)
subroutine spgauge(lgauge, gauge, kxsp, ixsp, spbuf, iparg, elbuf_tab, ispsym, xspsym, nod2sp, x, itask, wa, wasigsm, war, sphg_f6)
subroutine spmd_sphgetwa(wa, war2, kxsp)
subroutine spmd_sphgett(wt, wtr, lambda, lambdr)
subroutine spmd_sphgetg(wgradt, wacomp, wgr, sph_iord1)
subroutine spmd_sphgetw(spbuf, wacomp, wa, war, sph_iord1)
subroutine spmd_sphgetstb(stab, stabr)
subroutine sponfprs(x, v, a, ms, spbuf, itab, kxsp, ixsp, nod2sp, isphio, vsphio, npc, pld, pm, iparg, elbuf_tab, ipart, ipartsp, waspact, vnormal, wa, sphveln, war, wfext)
subroutine sponfro(x, v, a, ms, spbuf, itab, kxsp, ixsp, nod2sp, isphio, ipart, ipartsp, waspact, wa_epsd, vnormal, war2)
subroutine spsgsym(ispcond, xframe, ispsym, xspsym, vspsym, wa, wasigsm, waspact, war)
subroutine spstabw(itask, iparg, ngrounc, igrounc, kxsp, ispcond, ispsym, waspact, sph2sol, wa, wasigsm, war, stab, ixsp, nod2sp, spbuf, x, ipart, ipartsp, xspsym)
subroutine spstabs(itask, iparg, ngrounc, igrounc, kxsp, ispcond, ispsym, waspact, sph2sol, wa, wasigsm, war, stab, ixsp, nod2sp, spbuf, x)
subroutine spstres(timers, elbuf_tab, ng, pm, geo, x, v, ms, w, spbuf, wa, nloc_dmg, itab, pld, bufmat, bufgeo, partsav, fsav, dt2t, iparg, npc, kxsp, ixsp, nod2sp, neltst, ityptst, ipart, ipartsp, fv, nel, ipm, gresav, grth, igrth, table, istrain, voln, igeo, iexpan, temp, itask, sph2sol, mat_elem, h3d_strain, output, snpc, stf, sbufmat, svis, nsvois, idtmins, iresp, idel7ng, idel7nok, idtmin, maxfunc, lipart1, imon_mat, userl_avail, impl_s, idyna, dt, glob_therm, sensors)
subroutine spgtsym(ispcond, xframe, ispsym, xspsym, wgradt, wgradtsm, waspact, wgr, lft, llt, nft)
subroutine spgradt(x, ms, spbuf, kxsp, ixsp, nod2sp, ispsym, xspsym, wa, wacomp, wtemp, wtr, wgradt, lft, llt, nft)
subroutine splaplt(x, ms, spbuf, kxsp, ixsp, nod2sp, ispsym, xspsym, wa, wacomp, wgradt, wgr, wgradtsm, wlaplt, wsmcomp, lambda, lambdr, lft, llt, nft)
subroutine startime(event, itask)
subroutine stoptime(event, itask)