37 1 IADK ,JDIK ,DIAG_K,LT_K ,ITASK ,
38 2 GRAPHE,ITAB ,INSOLV,IT ,FAC_K ,
39 3 IPIV_K,NK ,IDSC ,ISOLV ,IPRINT ,
40 4 NDDL ,NNZ ,IADM ,JDIM ,DIAG_M ,
49#include "implicit_f.inc"
53 INTEGER NDDL ,NNZ ,IADM(*) ,JDIM(*),IPREC,ITASK,IPRINT
54 INTEGER IADK(*),JDIK(*),
55 . ISOLV ,ITAB(*), INSOLV,, IPIV_K(*), NK, IDSC
58 . diag_m(*), z(*), lt_m(*) ,v(*)
60 . diag_k(*),lt_k(*),fac_k(*)
78 INTEGER I,J,K,NI0,IBID,NNZK
85 nnzk = iadk(nddl+1)-iadk(1)
88 1 nddl ,nnzk ,iadk ,jdik ,diag_k ,
89 2 lt_k ,ni0 ,ibid ,ibid ,ibid ,
90 3 rbid ,z ,v ,itask ,iprint ,
91 4 isolv ,ibid ,graphe,itab ,insolv ,
92 5 it ,fac_k ,ipiv_k,nk ,rbid ,
95 WRITE(6,*)
"Fatal error: MUMPS required"
104 ELSEIF (iprec==5)
THEN
107 ELSEIF (iprec==14)
THEN
110 ELSEIF (iprec==15)
THEN
113 ELSEIF (iprec>=16.AND.iprec<=19)
THEN
114 CALL mav_lt1( nddl ,nnz ,iadm ,jdim ,diag_m ,
116 ELSEIF (iprec>=20.AND.iprec<=23)
THEN
141 1 GRAPHE,IAD_ELEM,FR_ELEM,DIAG_K,LT_K ,
142 2 IADK ,JDIK ,ITAB ,IPRINT,INSOLV ,
143 3 IT ,FAC_K , IPIV_K, NK ,MUMPS_PAR,
144 4 CDDLP ,ISOLV , IDSC , IDDL ,IKC ,
145 5 INLOC ,NDOF , NDDL ,NNZ ,IADM ,
146 6 JDIM ,DIAG_M , LT_M ,V ,Z )
154#include "implicit_f.inc"
159#include "dmumps_struc.h"
164 INTEGER NDDL , ,IADM(*) ,JDIM(*),, ITASK
165 INTEGER IAD_ELEM(2,*), FR_ELEM(*), IADK(*), JDIK(*),
167 . INSOLV, IT, IPIV_K(*), NK, CDDLP(*), ISOLV, IDSC,
168 . IDDL(*), IKC(*), INLOC(*), (*)
169 my_real DIAG_M(*), Z(*), LT_M(*) ,V(*)
170 my_real DIAG_K(*), LT_K(*),FAC_K(*)
171 TYPE(PRGRAPH) :: GRAPHE(*)
174 TYPE(DMUMPS_STRUC) MUMPS_PAR
188 INTEGER I,J,K,IBID,NI0
196 CALL lin_solvp2(graphe, v , nddl , iad_elem , fr_elem,
197 1 diag_k, lt_k , iadk , jdik , z ,
198 2 itab , iprint, ni0 , ibid , ibid ,
199 3 rbid , rbid , ibid , insolv , it ,
200 4 fac_k , ipiv_k, nk , mumps_par, cddlp ,
201 5 isolv , idsc , iddl , ikc , inloc ,
204 WRITE(6,*)
"Fatal error: MUMPS required"
213 ELSEIF (iprec==5)
THEN
218 CALL prec0_solv(nddl ,nnz ,iadm ,jdim ,diag_m ,
237 1 NDDL ,NNZ ,IADM ,JDIM ,DIAG_M ,
242#include "implicit_f.inc"
246 INTEGER NDDL ,NNZ ,IADM(*) ,JDIM(*)
249 . diag_m(*), z(*), lt_m(*) ,v(*)
263 DO j =iadm(i),iadm(i+1)-1
265 z(k) = z(k)-lt_m(j)*z(i)
267 z(i) = z(i)*diag_m(i)
271 DO j =iadm(i),iadm(i+1)-1
273 z(i) = z(i)-lt_m(j)*z(k)
278 z(i) = z(i)*diag_m(i)
290 1 NDDL ,NNZ ,IADM ,JDIM ,DIAG_M ,
295#include "implicit_f.inc"
299 INTEGER NDDL ,NNZ ,IADM(*) ,JDIM(*),IPREC
302 . DIAG_M(*), Z(*), LT_M(*) ,V(*)
317 DO i =iadm(j),iadm(j+1)-1
319 z(k) = z(k)+lt_m(i)*v(j)
324 z(i) = z(i)*diag_m(i)
329 DO j =iadm(i),iadm(i+1)-1
331 z(i) = z(i)+lt_m(j)*tmp(k)
346 1 NDDL ,NNZ ,IADM ,JDIM ,DIAG_M ,
351#include "implicit_f.inc"
355 INTEGER NDDL ,NNZ ,IADM(*) ,JDIM(*),IPREC
358 . DIAG_M(*), Z(*), LT_M(*) ,V(*)
374 DO j =iadm(i),iadm(i+1)-1
376 z(i) = z(i)+lt_m(j)*v(k)
381 z(i) = z(i)*diag_m(i)
386 DO i =iadm(j),iadm(j+1)-1
388 z(k) = z(k)+lt_m(i)*tmp(j)
402 1 NDDL ,NNZ ,IADM ,JDIM ,DIAG_M ,
403 2 LT_M ,V ,Z ,F_DDL ,L_DDL )
407#include "implicit_f.inc"
408#include "comlock.inc"
412 INTEGER NDDL ,NNZ ,IADM(*) ,JDIM(*),F_DDL ,
415 . diag_m(*), z(*), lt_m(*) ,v(*)
435 DO j =iadm(i),iadm(i+1)-1
437 z(i) = z(i)+lt_m(j)*v(k)
442 z(i) = z(i)*diag_m(i)
446 DO j =iadm(i),iadm(i+1)-1
448 tmp(k) = tmp(k)+lt_m(j)*z(i)
458#include "lockoff.inc"
473!||====================================================================
475 1 NDDL ,NNZ ,IADM ,JDIM ,DIAG_M ,
476 2 LT_M ,V ,Z ,F_DDL ,L_DDL )
484#include "implicit_f.inc"
488 INTEGER NDDL ,NNZ ,(*) ,JDIM(*),F_DDL ,L_DDL
491 . DIAG_M(*), Z(*), LT_M(*) ,V(*)
506 DO j =iadm(i),iadm(i+1)-1
508 z(i) = z(i)+lt_m(j)*v(k)
513 z(i) = z(i)*diag_m(i)
528 z(i) = z(i)+lt_m0(j)*tmp(k)
542 1 F_DDL ,L_DDL ,DIAG_M ,V ,Z )
546#include "implicit_f.inc"
553 . diag_m(*), z(*) ,v(*)
560 z(i) = v(i)*diag_m(i)
574!||
my_barrier ../engine/source/system/machine.f
578!||
spmd_sumf_v ../engine/source/mpi/
implicit/imp_spmd.f
583 1 GRAPHE,IAD_ELEM,FR_ELEM,DIAG_K,LT_K ,
584 2 IADK ,JDIK ,ITAB ,IPRINT,INSOLV ,
585 3 IT ,FAC_K , IPIV_K, NK ,MUMPS_PAR,
586 4 CDDLP ,ISOLV , IDSC , IDDL ,IKC ,
587 5 INLOC ,NDOF , NDDL ,NNZ ,IADM ,
588 6 JDIM ,DIAG_M , LT_M ,V ,Z ,
597#include "implicit_f.inc"
602#include "dmumps_struc.h"
604#include "timeri_c.inc"
605#include "com01_c.inc"
609 INTEGER NDDL ,NNZ ,(*) ,JDIM(*),IPREC, ITASK
610 INTEGER IAD_ELEM(2,*), FR_ELEM(*), IADK(*), JDIK(*),
612 . insolv, it, ipiv_k(*), nk, cddlp(*), isolv, idsc,
613 . iddl(*), ikc(*), inloc(*), ndof(*),f_ddl ,l_ddl
614 my_real diag_m(*), z(*), lt_m(*)
615 my_real diag_k(*), lt_k(*),fac_k(*)
619 TYPE(DMUMPS_STRUC) MUMPS_PAR
633 INTEGER I,J,K,IBID,NI0,NNZK
637 IF (isolv>2.AND.isolv<7)
THEN
643 CALL lin_solvp2(graphe, v , nddl , iad_elem , fr_elem,
644 1 diag_k, lt_k , iadk , jdik , z
645 2 itab , iprint, ni0 , ibid , ibid ,
646 3 rbid , rbid , ibid , insolv , it ,
648 5 isolv , idsc , iddl , ikc , inloc ,
652 nnzk = iadk(nddl+1)-iadk(1)
654 1 nddl ,nnzk ,iadk ,jdik ,diag_k ,
655 2 lt_k ,ni0 ,ibid ,ibid ,ibid ,
656 3 rbid ,z ,v ,itask ,iprint ,
657 4 isolv ,ibid ,graphe,itab ,insolv ,
658 5 it ,fac_k ,ipiv_k,nk ,rbid ,
663 WRITE(6,*)
"Fatal error: MUMPS required"
675 ELSEIF (iprec==2)
THEN
677 1 f_ddl ,l_ddl ,diag_m ,v ,z )
678 ELSEIF (iprec==5)
THEN
680 1 lt_m ,v ,z ,f_ddl ,l_ddl )
683 CALL prec0_solv(nddl ,nnz ,iadm ,jdim ,diag_m ,
691 IF (itask==0.AND.nspmd>1)
THEN
708 6 DIAG_M , LT_M ,V ,Z ,F_DDL ,
713#include "implicit_f.inc"
717#include "com01_c.inc"
721 INTEGER ,IADM(*) ,JDIM(*),, ITASK,
723 my_real diag_m(*), z(*), lt_m(*) ,v(*)
732 INTEGER I,J,K,IBID,NI0,NNZ
739 ELSEIF (iprec==2)
THEN
741 1 f_ddl ,l_ddl ,diag_m ,v ,z )
742 ELSEIF (iprec==5)
THEN
743 nnz=iadm(nddl+1)-iadm(1)
745 1 lt_m ,v ,z ,f_ddl ,l_ddl )
subroutine spmd_sumf_v(v)
subroutine lin_solvp2(graphe, f, nddl, iad_elem, fr_elem, diag_k, lt_k, iadk, jdik, x, itab, iprint, nddli, iadi, jdii, diag_i, lt_i, itok, insolv, it, fac_k, ipiv_k, nk, mumps_par, cddlp, isolv, idsc, iddl, ikc, inloc, ndof, itask)
subroutine lin_solv2(nddl, nnz, iadk, jdik, diag_k, lt_k, nddli, itok, iadi, jdii, lt_i, x, f, itask, iprint, isolv, istop, graphe, itab, insolv, it, fac_k, ipiv_k, nk, diag_i, idsc)
integer, dimension(:), allocatable jdim0
integer, dimension(:), allocatable iadm0
subroutine prec5h_solv(nddl, nnz, iadm, jdim, diag_m, lt_m, v, z, f_ddl, l_ddl)
subroutine prec_solvgh(iprec, itask, nddl, iadm, jdim, diag_m, lt_m, v, z, f_ddl, l_ddl)
subroutine prec_solvp(iprec, itask, graphe, iad_elem, fr_elem, diag_k, lt_k, iadk, jdik, itab, iprint, insolv, it, fac_k, ipiv_k, nk, mumps_par, cddlp, isolv, idsc, iddl, ikc, inloc, ndof, nddl, nnz, iadm, jdim, diag_m, lt_m, v, z)
subroutine prec_solvh(iprec, itask, graphe, iad_elem, fr_elem, diag_k, lt_k, iadk, jdik, itab, iprint, insolv, it, fac_k, ipiv_k, nk, mumps_par, cddlp, isolv, idsc, iddl, ikc, inloc, ndof, nddl, nnz, iadm, jdim, diag_m, lt_m, v, z, f_ddl, l_ddl)
subroutine prec5hc_solv(nddl, nnz, iadm, jdim, diag_m, lt_m, v, z, f_ddl, l_ddl)
subroutine prec0_solv(nddl, nnz, iadm, jdim, diag_m, lt_m, v, z)
subroutine precic_solv(nddl, nnz, iadm, jdim, diag_m, lt_m, v, z)
subroutine precir_solv(nddl, nnz, iadm, jdim, diag_m, lt_m, v, z)
subroutine prec2h_solv(f_ddl, l_ddl, diag_m, v, z)
subroutine prec_solv(iprec, iadk, jdik, diag_k, lt_k, itask, graphe, itab, insolv, it, fac_k, ipiv_k, nk, idsc, isolv, iprint, nddl, nnz, iadm, jdim, diag_m, lt_m, v, z)
subroutine mav_lt1(nddl, nnz, iadl, jdil, diag_k, lt_k, v, w)