1033
1039
980 FORMAT (/'******INTERNAL VALUE OF PARAMETERS (ICNTL/KEEP)****'/)
1035
1 'ICNTL(1) Output stream for error messages =',I10/
1036
2 'ICNTL(2) Output stream for diagnostic messages =',I10/
1037
3 'ICNTL(3) Output stream for global information =',I10/
1038
4 'ICNTL(4) Level of printing =',I10)
1041
& 'ICNTL(1) Output stream for error messages =',I10/
1042
& 'ICNTL(2) Output stream for diagnostic messages =',I10/
1043
& 'ICNTL(3) Output stream for global information =',I10/
1044
& 'ICNTL(4) Level of printing =',I10)
1040
1 'ICNTL(5) Matrix format ( keep(55) ) =',I10/
1041
2 'ICNTL(6) Maximum transversal ( keep(23) ) =',I10/
1042
3 'ICNTL(7) Ordering =',I10/
1043
4 'ICNTL(12) LDLT ordering strat ( keep(95) ) =',I10/
1044
5 'ICNTL(13) Parallel root (0=on, 1=off) =',I10/
1045
7 'ICNTL(18) Distributed matrix ( keep(54) ) =',I10/
1046
8 'ICNTL(19) Schur option ( keep(60) 0=off,else=on ) =',I10/
1047
9 'ICNTL(22) Out-off-core option (0=Off, >0=ON) =',I10)
1046
& 'ICNTL(5) Matrix format ( keep(55) ) =',I10/
1047
& 'ICNTL(6) Maximum transversal ( keep(23) ) =',I10/
1048
& 'ICNTL(7) Ordering =',I10/
1049
& 'ICNTL(12) LDLT ordering strat ( keep(95) ) =',I10/
1050
& 'ICNTL(13) Parallel root (0=on, 1=off) =',I10/
1051
& 'ICNTL(18) Distributed matrix ( keep(54) ) =',I10/
1052
& 'ICNTL(19) Schur option ( keep(60) 0=off,else=on ) =',I10/
1053
& 'ICNTL(22) Out-off-core option (0=Off, >0=ON) =',I10)
1049
1 'ICNTL(8) Scaling strategy ( keep(52) ) =',I10)
1055
& 'ICNTL(8) Scaling strategy ( keep(52) ) =',I10)
1051
1 'ICNTL(14) Percent of memory increase ( keep(12) ) =',I10)
1057
& 'ICNTL(14) Percent of memory increase ( keep(12) ) =',I10)
1053
1 'ICNTL(9) Solve A x=b (1) or A''x = b (else) =',I10/
1054
2 'ICNTL(10) Max steps iterative refinement =',I10/
1055
3 'ICNTL(11) Error analysis ( 0= off, else=on) =',I10/
1056
4 'ICNTL(20) Dense (0) or sparse (1) RHS =',I10/
1057
4 'ICNTL(21) Gathered (0) or distributed(1) solution =',I10)
1059
& 'ICNTL(9) Solve A x=b (1) or A''x = b (else) =',I10/
1060
& 'ICNTL(10) Max steps iterative refinement =',I10/
1061
& 'ICNTL(11) Error analysis ( 0= off, else=on) =',I10/
1062
& 'ICNTL(20) Dense (0) or sparse (1) RHS =',I10/
1063
& 'ICNTL(21) Gathered (0) or distributed(1) solution =',I10)
1058
1064
END SUBROUTINE DMUMPS_350
1059
1065
SUBROUTINE DMUMPS_24( MYID, SLAVEF, N,
1060
* PROCNODE, STEP, PTRAIW, PTRARW, ISTEP_TO_INIV2,
1062
* KEEP, KEEP8, ICNTL, id )
1066
& PROCNODE, STEP, PTRAIW, PTRARW, ISTEP_TO_INIV2,
1068
& KEEP, KEEP8, ICNTL, id )
1063
1069
USE DMUMPS_STRUC_DEF
1065
1071
TYPE (DMUMPS_STRUC) :: id
1973
2002
END SUBROUTINE DMUMPS_163
1974
2003
SUBROUTINE DMUMPS_252( COMM_LOAD, ASS_IRECV,
1975
* N, INODE, IW, LIW, A, LA, IFLAG,
1977
* FILS, FRERE, DAD, MAXFRW, root,
1978
* OPASSW, OPELIW, PTRIST, PTLUST_S, PTRFAC, PTRAST,
1979
* STEP, PIMASTER, PAMASTER,PTRARW,
1980
* PTRAIW, ITLOC, NSTEPS, SON_LEVEL2,
1981
* COMP, LRLU, IPTRLU, IWPOS, IWPOSCB, POSFAC, LRLUS,
1982
* ICNTL, KEEP,KEEP8,INTARR,DBLARR,
1984
* NSTK_S,NBPROCFILS, PROCNODE_STEPS, SLAVEF, COMM,MYID,
1985
* BUFR, LBUFR, LBUFR_BYTES, NBFIN, IPOOL, LPOOL, LEAF,
1987
* ISTEP_TO_INIV2, TAB_POS_IN_PERE, JOBASS, ETATASS
2004
& N, INODE, IW, LIW, A, LA, IFLAG,
2006
& FILS, FRERE, DAD, MAXFRW, root,
2007
& OPASSW, OPELIW, PTRIST, PTLUST_S, PTRFAC, PTRAST,
2008
& STEP, PIMASTER, PAMASTER,PTRARW,
2009
& PTRAIW, ITLOC, NSTEPS, SON_LEVEL2,
2010
& COMP, LRLU, IPTRLU, IWPOS, IWPOSCB, POSFAC, LRLUS,
2011
& ICNTL, KEEP,KEEP8,INTARR,DBLARR,
2013
& NSTK_S,NBPROCFILS, PROCNODE_STEPS, SLAVEF, COMM,MYID,
2014
& BUFR, LBUFR, LBUFR_BYTES, NBFIN, IPOOL, LPOOL, LEAF,
2016
& ISTEP_TO_INIV2, TAB_POS_IN_PERE, JOBASS, ETATASS
1989
2018
USE DMUMPS_COMM_BUFFER
1990
2019
USE DMUMPS_LOAD
2173
2207
IF (KEEP(50).EQ.0 .AND. KEEP(234) .EQ. 0) THEN
2174
2208
CALL MUMPS_81(MYID, INODE, N, IOLDPS, HF, NFRONT,
2176
* NASS1, NASS, NUMSTK, NUMORG, IWPOSCB,
2177
* IFSON, STEP, PIMASTER, PTRAIW, IW, LIW,
2178
* INTARR, ITLOC, FILS, FRERE,
2179
* SON_LEVEL2, NIV1, NBPROCFILS, KEEP, KEEP8, IFLAG)
2210
& NASS1, NASS, NUMSTK, NUMORG, IWPOSCB,
2211
& IFSON, STEP, PIMASTER, PTRAIW, IW, LIW,
2212
& INTARR, ITLOC, FILS, FRERE,
2213
& SON_LEVEL2, NIV1, NBPROCFILS, KEEP, KEEP8, IFLAG)
2181
2215
CALL MUMPS_86( MYID, INODE, N, IOLDPS, HF,
2182
* NFRONT, NFRONT_EFF, PERM,
2183
* NASS1, NASS, NUMSTK, NUMORG, IWPOSCB,
2184
* IFSON, STEP, PIMASTER, PTRAIW, IW, LIW,
2185
* INTARR, ITLOC, FILS, FRERE,
2186
* SON_LEVEL2, NIV1, NBPROCFILS, KEEP, KEEP8, IFLAG,
2216
& NFRONT, NFRONT_EFF, PERM,
2217
& NASS1, NASS, NUMSTK, NUMORG, IWPOSCB,
2218
& IFSON, STEP, PIMASTER, PTRAIW, IW, LIW,
2219
& INTARR, ITLOC, FILS, FRERE,
2220
& SON_LEVEL2, NIV1, NBPROCFILS, KEEP, KEEP8, IFLAG,
2188
2222
IF (IFLAG.LT.0) GOTO 300
2190
2224
IF (NFRONT_EFF.NE.NFRONT) THEN
2191
2225
IF (NFRONT.GT.NFRONT_EFF) THEN
2192
2226
IF(MUMPS_170(STEP(INODE),PROCNODE_STEPS,
2194
2228
NPIV=NASS1-(NFRONT_EFF-ND(STEP(INODE)))
2195
2229
CALL MUMPS_511(ND(STEP(INODE)),NPIV,NPIV,
2198
2232
CALL MUMPS_511(ND(STEP(INODE)),NPIV,NPIV,
2199
* KEEP(50),1,FLOP1_EFF)
2233
& KEEP(50),1,FLOP1_EFF)
2200
2234
CALL DMUMPS_190(0,.FALSE.,FLOP1-FLOP1_EFF,
2203
2237
IWPOS = IWPOS - ((2*NFRONT)-(2*NFRONT_EFF))
2204
2238
NFRONT = NFRONT_EFF
2454
2483
SHIFT_INDEX = FIRST_INDEX - 1
2455
2484
INDX = PTRCOL + SHIFT_INDEX
2456
2485
CALL DMUMPS_210( COMM_LOAD, ASS_IRECV,
2457
* BUFR, LBUFR, LBUFR_BYTES,
2458
* INODE, ISON, NSLAVES, IDUMMY,
2459
* NFRONT, NASS1,NFS4FATHER,
2460
* TROW_SIZE, IW( INDX ),
2462
* SLAVEF, POSFAC, IWPOS, IWPOSCB, IPTRLU, LRLU,
2465
* PTRIST, PTLUST_S, PTRFAC, PTRAST, STEP,
2466
* PIMASTER, PAMASTER, NSTK_S, COMP,
2467
* IFLAG, IERROR, MYID, COMM, NBPROCFILS, IPOOL, LPOOL,
2468
* LEAF, NBFIN, ICNTL, KEEP, KEEP8, root,
2469
* OPASSW, OPELIW, ITLOC, FILS, PTRARW, PTRAIW,
2470
* INTARR, DBLARR, ND, FRERE,
2471
* LPTRAR, NELT, IW, IW,
2473
* ISTEP_TO_INIV2, TAB_POS_IN_PERE )
2486
& BUFR, LBUFR, LBUFR_BYTES,
2487
& INODE, ISON, NSLAVES, IDUMMY,
2488
& NFRONT, NASS1,NFS4FATHER,
2489
& TROW_SIZE, IW( INDX ),
2491
& SLAVEF, POSFAC, IWPOS, IWPOSCB, IPTRLU, LRLU,
2494
& PTRIST, PTLUST_S, PTRFAC, PTRAST, STEP,
2495
& PIMASTER, PAMASTER, NSTK_S, COMP,
2496
& IFLAG, IERROR, MYID, COMM, NBPROCFILS, IPOOL, LPOOL,
2497
& LEAF, NBFIN, ICNTL, KEEP, KEEP8, root,
2498
& OPASSW, OPELIW, ITLOC, FILS, PTRARW, PTRAIW,
2499
& INTARR, DBLARR, ND, FRERE,
2500
& LPTRAR, NELT, IW, IW,
2502
& ISTEP_TO_INIV2, TAB_POS_IN_PERE )
2474
2503
IF ( IFLAG .LT. 0 ) GOTO 500
2481
2510
PTRCOL = PIMASTER(STEP(ISON)) + HS + NROWS + NPIVS + NELIM
2482
2511
PDEST = PIMASTER(STEP(ISON)) + 6 + KEEP(IXSZ)
2483
2512
CALL DMUMPS_71(
2484
* INODE, NFRONT, NASS1, NFS4FATHER,
2486
* IZERO, IDUMMY, IW(PTRCOL), NCBSON,
2487
* COMM, IERR, IW(PDEST), NSLSON, SLAVEF,
2488
* KEEP, KEEP8, STEP, N,
2489
* ISTEP_TO_INIV2, TAB_POS_IN_PERE
2513
& INODE, NFRONT, NASS1, NFS4FATHER,
2515
& IZERO, IDUMMY, IW(PTRCOL), NCBSON,
2516
& COMM, IERR, IW(PDEST), NSLSON, SLAVEF,
2517
& KEEP, KEEP8, STEP, N,
2518
& ISTEP_TO_INIV2, TAB_POS_IN_PERE
2491
2520
IF (IERR.EQ.-1) THEN
2492
2521
BLOCKING = .FALSE.
2493
2522
SET_IRECV = .TRUE.
2494
2523
MESSAGE_RECEIVED = .FALSE.
2495
2524
CALL DMUMPS_329(
2496
* COMM_LOAD, ASS_IRECV,
2497
* BLOCKING, SET_IRECV, MESSAGE_RECEIVED,
2498
* MPI_ANY_SOURCE, MPI_ANY_TAG,
2500
* BUFR, LBUFR, LBUFR_BYTES, PROCNODE_STEPS, POSFAC,
2501
* IWPOS, IWPOSCB, IPTRLU,
2502
* LRLU, LRLUS, N, IW, LIW, A, LA,
2503
* PTRIST, PTLUST_S, PTRFAC,
2504
* PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, COMP,
2505
* IFLAG, IERROR, COMM,
2507
* IPOOL, LPOOL, LEAF,
2508
* NBFIN, MYID, SLAVEF,
2509
* root, OPASSW, OPELIW, ITLOC, FILS, PTRARW, PTRAIW,
2510
* INTARR, DBLARR, ICNTL, KEEP, KEEP8, ND, FRERE,
2511
* LPTRAR, NELT, IW, IW,
2512
* ISTEP_TO_INIV2, TAB_POS_IN_PERE, .TRUE. )
2525
& COMM_LOAD, ASS_IRECV,
2526
& BLOCKING, SET_IRECV, MESSAGE_RECEIVED,
2527
& MPI_ANY_SOURCE, MPI_ANY_TAG,
2529
& BUFR, LBUFR, LBUFR_BYTES, PROCNODE_STEPS, POSFAC,
2530
& IWPOS, IWPOSCB, IPTRLU,
2531
& LRLU, LRLUS, N, IW, LIW, A, LA,
2532
& PTRIST, PTLUST_S, PTRFAC,
2533
& PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, COMP,
2534
& IFLAG, IERROR, COMM,
2536
& IPOOL, LPOOL, LEAF,
2537
& NBFIN, MYID, SLAVEF,
2538
& root, OPASSW, OPELIW, ITLOC, FILS, PTRARW, PTRAIW,
2539
& INTARR, DBLARR, ICNTL, KEEP, KEEP8, ND, FRERE,
2540
& LPTRAR, NELT, IW, IW,
2541
& ISTEP_TO_INIV2, TAB_POS_IN_PERE, .TRUE. )
2513
2542
IF ( IFLAG .LT. 0 ) GOTO 500
2632
2665
INTEGER IERR, STATUS( MPI_STATUS_SIZE )
2633
2666
TYPE (DMUMPS_ROOT_STRUC) :: root
2634
2667
INTEGER COMM_LOAD, ASS_IRECV
2635
INTEGER N,LIW,LA,NSTEPS, NBFIN
2668
INTEGER N,LIW,NSTEPS, NBFIN
2636
2670
INTEGER KEEP(500), ICNTL(40)
2637
2671
INTEGER*8 KEEP8(150)
2638
2672
INTEGER IFLAG,IERROR,INODE,MAXFRW,
2640
* LRLU, IPTRLU,IWPOS, LRLUS,
2641
* POSFAC, IWPOSCB, COMP
2673
& LPOOL, LEAF, IWPOS, IWPOSCB, COMP
2674
INTEGER(8) :: LRLUS, LRLU, IPTRLU, POSFAC
2642
2675
DOUBLE PRECISION A(LA)
2643
2676
DOUBLE PRECISION OPASSW, OPELIW
2644
2677
INTEGER COMM, SLAVEF, MYID, LBUFR, LBUFR_BYTES
2645
2678
INTEGER, DIMENSION(0:SLAVEF - 1) :: MEM_DISTRIB
2646
2679
INTEGER IPOOL(LPOOL)
2680
INTEGER(8) :: PTRAST(KEEP(28))
2681
INTEGER(8) :: PTRFAC(KEEP(28))
2682
INTEGER(8) :: PAMASTER(KEEP(28))
2647
2683
INTEGER IW(LIW), ITLOC(N),
2648
* PTRARW(N), PTRAIW(N), ND(KEEP(28)),
2649
* FILS(N), FRERE(KEEP(28)),
2650
* PTRIST(KEEP(28)), PTLUST_S(KEEP(28)), PTRFAC(KEEP(28)),
2651
* PTRAST(KEEP(28)), STEP(N),
2652
* PIMASTER(KEEP(28)),
2653
* PAMASTER(KEEP(28)),
2654
* NSTK_S(KEEP(28)), PERM(N)
2684
& PTRARW(N), PTRAIW(N), ND(KEEP(28)),
2685
& FILS(N), FRERE(KEEP(28)),
2686
& PTRIST(KEEP(28)), PTLUST_S(KEEP(28)),
2688
& PIMASTER(KEEP(28)),
2689
& NSTK_S(KEEP(28)), PERM(N)
2655
2690
INTEGER CAND(SLAVEF+1, max(1,KEEP(56)))
2656
2691
INTEGER ISTEP_TO_INIV2(KEEP(71)),
2657
* TAB_POS_IN_PERE(SLAVEF+2,max(1,KEEP(56)))
2692
& TAB_POS_IN_PERE(SLAVEF+2,max(1,KEEP(56)))
2658
2693
INTEGER NBPROCFILS(KEEP(28)),
2659
* PROCNODE_STEPS(KEEP(28)), BUFR(LBUFR)
2694
& PROCNODE_STEPS(KEEP(28)), BUFR(LBUFR)
2660
2695
INTEGER INTARR(max(1,KEEP(14)))
2661
2696
DOUBLE PRECISION DBLARR(max(1,KEEP(13)))
2662
2697
INTEGER LP, HS, HF, HF_OLD,NCBSON, NSLAVES_OLD
2663
2698
INTEGER IN,NUMSTK,NASS,ISON,IFSON,NASS1,IELL
2664
2699
INTEGER NFS4FATHER,I
2665
INTEGER NFRONT,NFRONT_EFF,ISTCHK,LSTK,LREQ,LAELL
2700
INTEGER NFRONT,NFRONT_EFF,ISTCHK,LSTK,LREQ
2701
INTEGER(8) :: NFRONT8, LAELL8
2666
2702
INTEGER LREQ_OOC
2667
2703
LOGICAL COMPRESSCB
2669
2705
INTEGER NCB, IERR_MPI
2670
INTEGER LAPOS2,J1,J2,J3,MP
2671
INTEGER NELIM,JJ,JJ1,JJ2,NPIVS,NCOLS,NROWS,
2673
INTEGER IACHK, LDAFS, LDA_SON
2674
INTEGER JK,IJROW,NBCOL,ICT13,NUMORG,IOLDPS,J4
2675
INTEGER APOS, APOS2, AINPUT, POSELT, POSEL1, ICT12
2707
INTEGER(8) :: JJ8, LAPOS2, JJ2, JJ3
2708
INTEGER NELIM,JJ,JJ1,NPIVS,NCOLS,NROWS,
2710
INTEGER LDAFS, LDA_SON
2711
INTEGER JK,IJROW,NBCOL,NUMORG,IOLDPS,J4
2713
INTEGER(8) :: IACHK, APOS, APOS2, POSELT, ICT12, POSEL1
2676
2715
INTEGER NSLAVES, NSLSON
2677
2716
INTEGER NBLIG, PTRCOL, PTRROW, ISLAVE, PDEST
2678
2717
INTEGER PDEST1(1)
2781
2820
IF (KEEP(50).EQ.0 .AND. KEEP(234).EQ.0) THEN
2782
2821
CALL MUMPS_81(MYID, INODE, N, IOLDPS, HF, NFRONT,
2784
* NASS1, NASS, NUMSTK, NUMORG, IWPOSCB,
2785
* IFSON, STEP, PIMASTER, PTRAIW, IW, LIW,
2786
* INTARR, ITLOC, FILS, FRERE,
2787
* SON_LEVEL2, NIV1, NBPROCFILS, KEEP,KEEP8, IFLAG)
2823
& NASS1, NASS, NUMSTK, NUMORG, IWPOSCB,
2824
& IFSON, STEP, PIMASTER, PTRAIW, IW, LIW,
2825
& INTARR, ITLOC, FILS, FRERE,
2826
& SON_LEVEL2, NIV1, NBPROCFILS, KEEP,KEEP8, IFLAG)
2789
2828
ISON_IN_PLACE = -9999
2790
2829
CALL MUMPS_86( MYID, INODE, N, IOLDPS, HF,
2791
* NFRONT, NFRONT_EFF, PERM,
2792
* NASS1, NASS, NUMSTK, NUMORG, IWPOSCB,
2793
* IFSON, STEP, PIMASTER, PTRAIW, IW, LIW,
2794
* INTARR, ITLOC, FILS, FRERE,
2795
* SON_LEVEL2, NIV1, NBPROCFILS, KEEP,KEEP8, IFLAG,
2830
& NFRONT, NFRONT_EFF, PERM,
2831
& NASS1, NASS, NUMSTK, NUMORG, IWPOSCB,
2832
& IFSON, STEP, PIMASTER, PTRAIW, IW, LIW,
2833
& INTARR, ITLOC, FILS, FRERE,
2834
& SON_LEVEL2, NIV1, NBPROCFILS, KEEP,KEEP8, IFLAG,
2797
2836
IF (IFLAG.LT.0) GOTO 250
2799
2838
IF ( NFRONT .NE. NFRONT_EFF ) THEN
3049
3083
IF ( KEEP(50) .eq. 0 ) THEN
3051
3085
CALL DMUMPS_68( INODE,
3052
* NBPROCFILS(STEP(INODE)),
3053
* NBLIG, IW(PTRROW), NBCOL, IW(PTRCOL), NASS1,
3055
* IW(PDEST), NFRONT, COMM, IERR)
3086
& NBPROCFILS(STEP(INODE)),
3087
& NBLIG, IW(PTRROW), NBCOL, IW(PTRCOL), NASS1,
3089
& IW(PDEST), NFRONT, COMM, IERR)
3057
3091
NBCOL = NASS1+SHIFT_INDEX+NBLIG
3058
3092
CALL DMUMPS_68( INODE,
3059
* NBPROCFILS(STEP(INODE)),
3060
* NBLIG, IW(PTRROW), NBCOL, IW(PTRCOL), NASS1,
3062
* IW( PTLUST_S(STEP(INODE))+6+KEEP(IXSZ)+ISLAVE),
3063
* IW(PDEST), NFRONT, COMM, IERR)
3093
& NBPROCFILS(STEP(INODE)),
3094
& NBLIG, IW(PTRROW), NBCOL, IW(PTRCOL), NASS1,
3096
& IW( PTLUST_S(STEP(INODE))+6+KEEP(IXSZ)+ISLAVE),
3097
& IW(PDEST), NFRONT, COMM, IERR)
3065
3099
IF (IERR.EQ.-1) THEN
3066
3100
BLOCKING = .FALSE.
3067
3101
SET_IRECV = .TRUE.
3068
3102
MESSAGE_RECEIVED = .FALSE.
3069
3103
CALL DMUMPS_329( COMM_LOAD, ASS_IRECV,
3070
* BLOCKING, SET_IRECV, MESSAGE_RECEIVED,
3071
* MPI_ANY_SOURCE, MPI_ANY_TAG,
3072
* STATUS, BUFR, LBUFR,
3074
* PROCNODE_STEPS, POSFAC, IWPOS, IWPOSCB, IPTRLU,
3075
* LRLU, LRLUS, N, IW, LIW, A, LA,
3076
* PTRIST, PTLUST_S, PTRFAC,
3077
* PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, COMP, IFLAG,
3080
* IPOOL, LPOOL, LEAF, NBFIN, MYID, SLAVEF,
3081
* root, OPASSW, OPELIW, ITLOC, FILS, PTRARW, PTRAIW,
3082
* INTARR, DBLARR, ICNTL, KEEP,KEEP8, ND, FRERE,
3083
* LPTRAR, NELT, IW, IW,
3084
* ISTEP_TO_INIV2, TAB_POS_IN_PERE, .TRUE. )
3104
& BLOCKING, SET_IRECV, MESSAGE_RECEIVED,
3105
& MPI_ANY_SOURCE, MPI_ANY_TAG,
3106
& STATUS, BUFR, LBUFR,
3108
& PROCNODE_STEPS, POSFAC, IWPOS, IWPOSCB, IPTRLU,
3109
& LRLU, LRLUS, N, IW, LIW, A, LA,
3110
& PTRIST, PTLUST_S, PTRFAC,
3111
& PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, COMP, IFLAG,
3114
& IPOOL, LPOOL, LEAF, NBFIN, MYID, SLAVEF,
3115
& root, OPASSW, OPELIW, ITLOC, FILS, PTRARW, PTRAIW,
3116
& INTARR, DBLARR, ICNTL, KEEP,KEEP8, ND, FRERE,
3117
& LPTRAR, NELT, IW, IW,
3118
& ISTEP_TO_INIV2, TAB_POS_IN_PERE, .TRUE. )
3085
3119
IF ( IFLAG .LT. 0 ) GOTO 500
3086
3120
IF (MESSAGE_RECEIVED) THEN
3087
3121
IOLDPS = PTLUST_S(STEP(INODE))
3134
3168
IF (NSLSON.EQ.0) THEN
3136
3170
PDEST1(1) = MUMPS_275(STEP(ISON),
3137
* PROCNODE_STEPS, SLAVEF)
3171
& PROCNODE_STEPS, SLAVEF)
3138
3172
IF (PDEST1(1).EQ.MYID) THEN
3139
3173
CALL DMUMPS_211( COMM_LOAD, ASS_IRECV,
3140
* BUFR, LBUFR, LBUFR_BYTES,
3141
* INODE, ISON, NSLAVES,
3142
* IW( PTLUST_S(STEP(INODE)) + 6 +KEEP(IXSZ)),
3143
* NFRONT, NASS1, NFS4FATHER, NCBSON,
3146
* SLAVEF, POSFAC, IWPOS, IWPOSCB, IPTRLU, LRLU,
3149
* PTRIST, PTLUST_S, PTRFAC, PTRAST, STEP,
3150
* PIMASTER, PAMASTER, NSTK_S, COMP,
3151
* IFLAG, IERROR, MYID, COMM, NBPROCFILS, IPOOL, LPOOL, LEAF,
3152
* NBFIN, ICNTL, KEEP,KEEP8, root,
3154
* ITLOC, FILS, PTRARW, PTRAIW, INTARR, DBLARR,
3155
* ND, FRERE, LPTRAR, NELT, IW, IW,
3157
* ISTEP_TO_INIV2, TAB_POS_IN_PERE
3174
& BUFR, LBUFR, LBUFR_BYTES,
3175
& INODE, ISON, NSLAVES,
3176
& IW( PTLUST_S(STEP(INODE)) + 6 +KEEP(IXSZ)),
3177
& NFRONT, NASS1, NFS4FATHER, NCBSON,
3180
& SLAVEF, POSFAC, IWPOS, IWPOSCB, IPTRLU, LRLU,
3183
& PTRIST, PTLUST_S, PTRFAC, PTRAST, STEP,
3184
& PIMASTER, PAMASTER, NSTK_S, COMP,
3185
& IFLAG, IERROR, MYID, COMM, NBPROCFILS, IPOOL, LPOOL, LEAF,
3186
& NBFIN, ICNTL, KEEP,KEEP8, root,
3188
& ITLOC, FILS, PTRARW, PTRAIW, INTARR, DBLARR,
3189
& ND, FRERE, LPTRAR, NELT, IW, IW,
3191
& ISTEP_TO_INIV2, TAB_POS_IN_PERE
3159
3193
IF ( IFLAG .LT. 0 ) GOTO 500
3162
3196
DO WHILE (IERR.EQ.-1)
3163
3197
PTRCOL = PIMASTER(STEP(ISON))+HS+NROWS+NPIVS+NELIM
3164
3198
CALL DMUMPS_71(
3165
* INODE, NFRONT,NASS1,NFS4FATHER,
3167
* NSLAVES, IW( PTLUST_S(STEP(INODE))+6+KEEP(IXSZ) ),
3168
* IW(PTRCOL), NCBSON,
3169
* COMM, IERR, PDEST1, NSLSON, SLAVEF,
3170
* KEEP,KEEP8, STEP, N,
3171
* ISTEP_TO_INIV2, TAB_POS_IN_PERE
3199
& INODE, NFRONT,NASS1,NFS4FATHER,
3201
& NSLAVES, IW( PTLUST_S(STEP(INODE))+6+KEEP(IXSZ) ),
3202
& IW(PTRCOL), NCBSON,
3203
& COMM, IERR, PDEST1, NSLSON, SLAVEF,
3204
& KEEP,KEEP8, STEP, N,
3205
& ISTEP_TO_INIV2, TAB_POS_IN_PERE
3173
3207
IF (IERR.EQ.-1) THEN
3174
3208
BLOCKING = .FALSE.
3175
3209
SET_IRECV = .TRUE.
3176
3210
MESSAGE_RECEIVED = .FALSE.
3177
3211
CALL DMUMPS_329( COMM_LOAD, ASS_IRECV,
3178
* BLOCKING, SET_IRECV, MESSAGE_RECEIVED,
3179
* MPI_ANY_SOURCE, MPI_ANY_TAG,
3180
* STATUS, BUFR, LBUFR, LBUFR_BYTES,
3181
* PROCNODE_STEPS, POSFAC, IWPOS, IWPOSCB, IPTRLU,
3182
* LRLU, LRLUS, N, IW, LIW, A, LA, PTRIST,
3184
* PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, COMP, IFLAG,
3187
* IPOOL, LPOOL, LEAF, NBFIN, MYID, SLAVEF,
3188
* root,OPASSW, OPELIW, ITLOC, FILS, PTRARW, PTRAIW,
3189
* INTARR, DBLARR, ICNTL, KEEP,KEEP8, ND, FRERE, LPTRAR,
3191
* ISTEP_TO_INIV2, TAB_POS_IN_PERE, .TRUE. )
3212
& BLOCKING, SET_IRECV, MESSAGE_RECEIVED,
3213
& MPI_ANY_SOURCE, MPI_ANY_TAG,
3214
& STATUS, BUFR, LBUFR, LBUFR_BYTES,
3215
& PROCNODE_STEPS, POSFAC, IWPOS, IWPOSCB, IPTRLU,
3216
& LRLU, LRLUS, N, IW, LIW, A, LA, PTRIST,
3218
& PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, COMP, IFLAG,
3221
& IPOOL, LPOOL, LEAF, NBFIN, MYID, SLAVEF,
3222
& root,OPASSW, OPELIW, ITLOC, FILS, PTRARW, PTRAIW,
3223
& INTARR, DBLARR, ICNTL, KEEP,KEEP8, ND, FRERE, LPTRAR,
3225
& ISTEP_TO_INIV2, TAB_POS_IN_PERE, .TRUE. )
3192
3226
IF ( IFLAG .LT. 0 ) GOTO 500
3207
3241
SHIFT_INDEX = FIRST_INDEX - 1
3208
3242
INDX = PTRCOL + SHIFT_INDEX
3209
3243
CALL DMUMPS_210( COMM_LOAD, ASS_IRECV,
3210
* BUFR, LBUFR, LBUFR_BYTES,
3211
* INODE, ISON, NSLAVES,
3212
* IW( PTLUST_S(STEP(INODE))+6+KEEP(IXSZ)),
3213
* NFRONT, NASS1,NFS4FATHER,
3214
* TROW_SIZE, IW( INDX ),
3216
* SLAVEF, POSFAC, IWPOS, IWPOSCB, IPTRLU, LRLU,
3219
* PTRIST, PTLUST_S, PTRFAC, PTRAST, STEP,
3220
* PIMASTER, PAMASTER, NSTK_S, COMP,
3221
* IFLAG, IERROR, MYID, COMM, NBPROCFILS, IPOOL, LPOOL, LEAF,
3222
* NBFIN, ICNTL, KEEP,KEEP8, root,
3223
* OPASSW, OPELIW, ITLOC, FILS, PTRARW, PTRAIW,
3224
* INTARR, DBLARR, ND, FRERE, LPTRAR, NELT, IW,
3227
* ISTEP_TO_INIV2, TAB_POS_IN_PERE
3244
& BUFR, LBUFR, LBUFR_BYTES,
3245
& INODE, ISON, NSLAVES,
3246
& IW( PTLUST_S(STEP(INODE))+6+KEEP(IXSZ)),
3247
& NFRONT, NASS1,NFS4FATHER,
3248
& TROW_SIZE, IW( INDX ),
3250
& SLAVEF, POSFAC, IWPOS, IWPOSCB, IPTRLU, LRLU,
3253
& PTRIST, PTLUST_S, PTRFAC, PTRAST, STEP,
3254
& PIMASTER, PAMASTER, NSTK_S, COMP,
3255
& IFLAG, IERROR, MYID, COMM, NBPROCFILS, IPOOL, LPOOL, LEAF,
3256
& NBFIN, ICNTL, KEEP,KEEP8, root,
3257
& OPASSW, OPELIW, ITLOC, FILS, PTRARW, PTRAIW,
3258
& INTARR, DBLARR, ND, FRERE, LPTRAR, NELT, IW,
3261
& ISTEP_TO_INIV2, TAB_POS_IN_PERE
3229
3263
IF ( IFLAG .LT. 0 ) GOTO 500
3236
3270
PTRCOL = PIMASTER(STEP(ISON)) + HS + NROWS + NPIVS + NELIM
3237
3271
PDEST = PIMASTER(STEP(ISON)) + 6 + KEEP(IXSZ)
3238
3272
CALL DMUMPS_71(
3239
* INODE, NFRONT,NASS1, NFS4FATHER,
3241
* NSLAVES, IW(PTLUST_S(STEP(INODE))+6+KEEP(IXSZ)),
3242
* IW(PTRCOL), NCBSON,
3243
* COMM, IERR, IW(PDEST), NSLSON, SLAVEF,
3244
* KEEP,KEEP8, STEP, N,
3245
* ISTEP_TO_INIV2, TAB_POS_IN_PERE
3273
& INODE, NFRONT,NASS1, NFS4FATHER,
3275
& NSLAVES, IW(PTLUST_S(STEP(INODE))+6+KEEP(IXSZ)),
3276
& IW(PTRCOL), NCBSON,
3277
& COMM, IERR, IW(PDEST), NSLSON, SLAVEF,
3278
& KEEP,KEEP8, STEP, N,
3279
& ISTEP_TO_INIV2, TAB_POS_IN_PERE
3247
3281
IF (IERR.EQ.-1) THEN
3248
3282
BLOCKING = .FALSE.
3249
3283
SET_IRECV = .TRUE.
3250
3284
MESSAGE_RECEIVED = .FALSE.
3251
3285
CALL DMUMPS_329( COMM_LOAD, ASS_IRECV,
3252
* BLOCKING, SET_IRECV, MESSAGE_RECEIVED,
3253
* MPI_ANY_SOURCE, MPI_ANY_TAG,
3254
* STATUS, BUFR, LBUFR,
3256
* PROCNODE_STEPS, POSFAC, IWPOS, IWPOSCB, IPTRLU,
3257
* LRLU, LRLUS, N, IW, LIW, A, LA, PTRIST,
3259
* PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, COMP, IFLAG,
3262
* IPOOL, LPOOL, LEAF, NBFIN, MYID, SLAVEF,
3263
* root,OPASSW, OPELIW, ITLOC, FILS, PTRARW, PTRAIW,
3264
* INTARR, DBLARR, ICNTL, KEEP,KEEP8, ND, FRERE,
3265
* LPTRAR, NELT, IW, IW,
3266
* ISTEP_TO_INIV2, TAB_POS_IN_PERE, .TRUE. )
3286
& BLOCKING, SET_IRECV, MESSAGE_RECEIVED,
3287
& MPI_ANY_SOURCE, MPI_ANY_TAG,
3288
& STATUS, BUFR, LBUFR,
3290
& PROCNODE_STEPS, POSFAC, IWPOS, IWPOSCB, IPTRLU,
3291
& LRLU, LRLUS, N, IW, LIW, A, LA, PTRIST,
3293
& PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, COMP, IFLAG,
3296
& IPOOL, LPOOL, LEAF, NBFIN, MYID, SLAVEF,
3297
& root,OPASSW, OPELIW, ITLOC, FILS, PTRARW, PTRAIW,
3298
& INTARR, DBLARR, ICNTL, KEEP,KEEP8, ND, FRERE,
3299
& LPTRAR, NELT, IW, IW,
3300
& ISTEP_TO_INIV2, TAB_POS_IN_PERE, .TRUE. )
3267
3301
IF ( IFLAG .LT. 0 ) GOTO 500
3356
3390
END SUBROUTINE DMUMPS_253
3357
3391
SUBROUTINE DMUMPS_39(N, INODE, IW, LIW, A, LA,
3358
* ISON, NBROWS, NBCOLS, ROWLIST,
3359
* VALSON, PTLUST_S, PTRAST, STEP, PIMASTER,
3360
* OPASSW, IWPOSCB, MYID, KEEP,KEEP8 )
3392
& ISON, NBROWS, NBCOLS, ROWLIST,
3393
& VALSON, PTLUST_S, PTRAST, STEP, PIMASTER,
3394
& OPASSW, IWPOSCB, MYID, KEEP,KEEP8 )
3361
3395
USE DMUMPS_LOAD
3363
3397
INTEGER KEEP(500)
3364
3398
INTEGER*8 KEEP8(150)
3365
INTEGER N,LIW,LA,MYID
3366
3401
INTEGER INODE,ISON, IWPOSCB
3367
3402
INTEGER NBROWS, NBCOLS
3368
INTEGER IW(LIW), STEP(N),
3369
* PIMASTER(KEEP(28)),
3370
* PTLUST_S(KEEP(28)), PTRAST(KEEP(28)),
3403
INTEGER(8) :: PTRAST(KEEP(28))
3404
INTEGER IW(LIW), STEP(N), PIMASTER(KEEP(28)),
3405
& PTLUST_S(KEEP(28)), ROWLIST(NBROWS)
3372
3406
DOUBLE PRECISION A(LA), VALSON(NBCOLS,NBROWS)
3373
3407
DOUBLE PRECISION OPASSW
3408
INTEGER(8) :: POSELT, POSEL1, APOS, JJ2
3374
3409
INTEGER HF,HS, NSLAVES, NFRONT, NASS1,
3375
* IOLDPS, POSELT, POSEL1, ISTCHK,
3376
* LSTK, NSLSON,NELIM,NPIVS,NCOLS, J1,J2,J3, JJ,APOS,
3377
* JJ1,JJ2, ICT11, JPOS, SIZFI, SIZFR, NCOL, NROW,
3378
* NROWS, LDAFS_PERE, IBEG
3411
& LSTK, NSLSON,NELIM,NPIVS,NCOLS, J1,J2,J3, JJ,
3412
& JJ1, JPOS, SIZFI, NCOL, NROW,
3413
& NROWS, LDAFS_PERE, IBEG
3379
3414
INCLUDE 'mumps_headers.h'
3380
3415
LOGICAL SAME_PROC, FREE
3443
3478
END SUBROUTINE DMUMPS_39
3444
3479
SUBROUTINE DMUMPS_539
3445
* (N, INODE, IW, LIW, A, LA,
3447
* OPASSW, OPELIW, STEP, PTRIST, PTRAST, ITLOC,
3448
* FILS, PTRARW, PTRAIW, INTARR, DBLARR,
3449
* ICNTL, KEEP,KEEP8, MYID)
3480
& (N, INODE, IW, LIW, A, LA,
3482
& OPASSW, OPELIW, STEP, PTRIST, PTRAST, ITLOC,
3483
& FILS, PTRARW, PTRAIW, INTARR, DBLARR,
3484
& ICNTL, KEEP,KEEP8, MYID)
3452
3488
INTEGER KEEP(500), ICNTL(40)
3453
3489
INTEGER*8 KEEP8(150)
3454
3490
INTEGER INODE, MYID
3455
3491
INTEGER NBROWS, NBCOLS
3492
INTEGER(8) :: PTRAST(KEEP(28))
3456
3493
INTEGER IW(LIW), ITLOC(N), STEP(N),
3458
* PTRAST(KEEP(28)) , FILS(N), PTRARW(N), PTRAIW(N)
3494
& PTRIST(KEEP(28)), FILS(N), PTRARW(N), PTRAIW(N)
3459
3495
INTEGER INTARR(max(1,KEEP(14)))
3460
3496
DOUBLE PRECISION A(LA),
3461
* DBLARR(max(1,KEEP(13)))
3497
& DBLARR(max(1,KEEP(13)))
3462
3498
DOUBLE PRECISION OPASSW, OPELIW
3463
INTEGER IOLDPS, POSELT, NBCOLF, NBROWF, NSLAVES, HF,
3464
* K1,K2,K,I,J,POSEL1,APOS,JPOS,NASS,JJ,
3465
* IN,AINPUT,JK,J1,J2,IJROW,ICT12, ILOC
3499
INTEGER IOLDPS, NBCOLF, NBROWF, NSLAVES, HF,
3500
& K1,K2,K,I,J,JPOS,NASS,JJ,
3501
& IN,AINPUT,JK,J1,J2,IJROW, ILOC
3502
INTEGER(8) :: POSELT, ICT12, APOS
3466
3503
DOUBLE PRECISION ZERO
3467
3504
PARAMETER (ZERO=0.0D0)
3468
3505
INCLUDE 'mumps_headers.h'
3668
3710
IF (RESET_TO_ZERO) THEN
3669
3711
IF ( RISK_OF_SAME_POS_THIS_LINE ) THEN
3671
APOS = POSELT + IW( J )
3672
IF (IAFATH + APOS - 1.NE. IACB+IPOSCB-1) THEN
3673
A(IAFATH+ APOS -1) = A(IACB+IPOSCB-1)
3674
A(IACB+IPOSCB-1) = dble(ZERO)
3713
APOS = POSELT + int(IW( J ),8)
3714
IF (IAFATH + APOS - 1_8.NE. IACB+IPOSCB-1_8) THEN
3715
A(IAFATH+ APOS -1_8) = A(IACB+IPOSCB-1_8)
3716
A(IACB+IPOSCB-1_8) = dble(ZERO)
3718
IPOSCB = IPOSCB + 1_8
3680
APOS = POSELT + IW( J )
3681
A(IAFATH+ APOS -1) = A(IACB+IPOSCB-1)
3682
A(IACB+IPOSCB-1)=dble(ZERO)
3722
APOS = POSELT + int(IW( J ),8)
3723
A(IAFATH+ APOS -1_8) = A(IACB+IPOSCB-1_8)
3724
A(IACB+IPOSCB-1_8)=dble(ZERO)
3725
IPOSCB = IPOSCB + 1_8
3688
APOS = POSELT + IW( J )
3689
A(IAFATH+ APOS -1) = A(IACB+IPOSCB-1)
3730
APOS = POSELT + int(IW( J ),8)
3731
A(IAFATH+ APOS -1_8) = A(IACB+IPOSCB-1_8)
3732
IPOSCB = IPOSCB + 1_8
3693
3735
IF (.NOT. CB_IS_COMPRESSED ) THEN
3694
IBEGCBROW = IACB+IPOSCB-1
3695
IENDFRONT = IAFATH+NFRONT*NFRONT-1
3736
IBEGCBROW = IACB+IPOSCB-1_8
3696
3737
IF ( IBEGCBROW .LE. IENDFRONT ) THEN
3697
A(IBEGCBROW:IBEGCBROW+NCOLS-I-1)=dble(ZERO)
3738
A(IBEGCBROW:IBEGCBROW+int(NCOLS-I,8)-1_8)=dble(ZERO)
3700
IF (IACB+IPOSCB-1 .GE. IAFATH + NFRONT *NFRONT) THEN
3741
IF (IACB+IPOSCB-1_8 .GE. IENDFRONT + 1_8) THEN
3701
3742
RESET_TO_ZERO = .FALSE.
3706
3747
IF ((ETATASS.EQ.0) .OR. (ETATASS.EQ.1)) THEN
3708
3749
DO I = 1, NELIM
3709
POSELT = ( IW( I ) - 1 ) * NFRONT
3750
POSELT = int( IW( I ) - 1, 8 ) * int(NFRONT, 8)
3710
3751
IF (.NOT. CB_IS_COMPRESSED) THEN
3711
IPOSCB = 1 + ( I - 1 ) * NCOLS
3752
IPOSCB = 1_8 + int( I - 1, 8 ) * int(NCOLS,8)
3714
APOS = POSELT + IW( J )
3715
A(IAFATH+ APOS -1) = A(IAFATH+ APOS -1) + A(IACB+IPOSCB-1)
3755
APOS = POSELT + int(IW( J ),8)
3756
A(IAFATH+ APOS -1_8) = A(IAFATH+ APOS -1_8)
3757
& + A(IACB+IPOSCB-1_8)
3758
IPOSCB = IPOSCB + 1_8
3720
3762
IF ((ETATASS.EQ.0).OR.(ETATASS.EQ.1)) THEN
3721
3763
DO I = NELIM + 1, NROWS
3722
3764
IF (CB_IS_COMPRESSED) THEN
3723
IPOSCB = (I*(I-1))/2 + 1
3765
IPOSCB = (int(I,8) * int(I-1,8)) / 2_8 + 1_8
3725
IPOSCB = (I-1) * NCOLS + 1
3767
IPOSCB = int(I-1,8) * int(NCOLS,8) + 1_8
3728
IF (POSELT.LE.NASS1 .AND. .NOT. IS_INPLACE) THEN
3769
POSELT = int(IW( I ),8)
3770
IF (POSELT.LE. int(NASS1,8) .AND. .NOT. IS_INPLACE) THEN
3729
3771
DO J = 1, NELIM
3730
APOS = POSELT + ( IW( J ) - 1 ) * NFRONT
3731
A(IAFATH+APOS-1) = A(IAFATH+APOS-1) +
3772
APOS = POSELT + int( IW( J ) - 1, 8 ) * int(NFRONT,8)
3773
A(IAFATH+APOS-1_8) = A(IAFATH+APOS-1_8) +
3774
& A(IACB+IPOSCB-1_8)
3775
IPOSCB = IPOSCB + 1_8
3736
POSELT = ( IW( I ) - 1 ) * NFRONT
3778
POSELT = int( IW( I ) - 1, 8 ) * int(NFRONT, 8)
3737
3779
DO J = 1, NELIM
3738
APOS = POSELT + IW( J )
3739
A(IAFATH+APOS-1) = A(IAFATH+APOS-1) + A(IACB+IPOSCB-1)
3780
APOS = POSELT + int(IW( J ), 8)
3781
A(IAFATH+APOS-1_8) = A(IAFATH+APOS-1_8)
3782
& + A(IACB+IPOSCB-1_8)
3783
IPOSCB = IPOSCB + 1_8
3743
3786
IF (ETATASS.EQ.1) THEN
3744
POSELT = ( IW( I ) - 1 ) * NFRONT
3787
POSELT = int( IW( I ) - 1, 8 ) * int(NFRONT, 8)
3745
3788
DO J = NELIM + 1, I
3746
3789
IF (IW(J).GT.NASS1) EXIT
3747
APOS = POSELT + IW( J )
3748
A(IAFATH+APOS-1) = A(IAFATH+APOS-1) + A(IACB+IPOSCB-1)
3790
APOS = POSELT + int(IW( J ), 8)
3791
A(IAFATH+APOS-1_8) = A(IAFATH+APOS-1_8)
3792
& + A(IACB+IPOSCB-1_8)
3793
IPOSCB = IPOSCB +1_8
3752
POSELT = ( IW( I ) - 1 ) * NFRONT
3796
POSELT = int( IW( I ) - 1, 8 ) * int(NFRONT, 8)
3753
3797
DO J = NELIM + 1, I
3754
APOS = POSELT + IW( J )
3755
A(IAFATH+APOS-1) = A(IAFATH+APOS-1) + A(IACB+IPOSCB-1)
3798
APOS = POSELT + int(IW( J ), 8)
3799
A(IAFATH+APOS-1_8) = A(IAFATH+APOS-1_8)
3800
& + A(IACB+IPOSCB-1_8)
3801
IPOSCB = IPOSCB + 1_8
3761
3806
DO I= NROWS, NELIM+1, -1
3762
3807
IF (CB_IS_COMPRESSED) THEN
3763
IPOSCB = (I*(I+1))/2
3808
IPOSCB = (int(I,8)*int(I+1,8))/2_8
3765
IPOSCB = (I-1) *NCOLS + I
3810
IPOSCB = int(I-1,8) * int(NCOLS,8) + int(I,8)
3768
IF (POSELT.LE.NASS1) EXIT
3769
POSELT = ( IW( I ) - 1 ) * NFRONT
3812
POSELT = int(IW( I ),8)
3813
IF (POSELT.LE.int(NASS1,8)) EXIT
3814
POSELT = int( IW( I ) - 1, 8 ) * int(NFRONT, 8)
3770
3815
DO J=I,NELIM+1, -1
3771
3816
IF (IW(J).LE.NASS1) EXIT
3772
APOS = POSELT + IW( J )
3773
A(IAFATH+APOS-1)=A(IAFATH+APOS-1)+A(IACB+IPOSCB-1)
3817
APOS = POSELT + int(IW( J ), 8)
3818
A(IAFATH+APOS-1_8) = A(IAFATH+APOS-1_8)
3819
& + A(IACB+IPOSCB-1_8)
3820
IPOSCB = IPOSCB - 1_8
3779
3825
END SUBROUTINE DMUMPS_178
3780
3826
SUBROUTINE DMUMPS_530(N, ISON, INODE, IWPOSCB,
3781
* PIMASTER, PTLUST_S, IW, LIW, STEP, KEEP,KEEP8)
3827
& PIMASTER, PTLUST_S, IW, LIW, STEP, KEEP,KEEP8)
3783
3829
INTEGER N, ISON, INODE, IWPOSCB
3784
3830
INTEGER KEEP(500), STEP(N)
3877
3926
NROWS = IW(ISTCHK+2 + KEEP(IXSZ))
3879
3928
J1 = ISTCHK + NROWS + HS + NPIVS
3880
APOS = POSELT + NASS1**2 -1
3929
APOS = POSELT + int(NASS1,8)*int(NASS1,8) - 1_8
3881
3930
DO JJ1 = 1, NBCOLS
3882
JJ2 = APOS+IW(J1 + JJ1 - 1)
3883
IF(abs(A(JJ2)) .LT. VALSON(JJ1)) A(JJ2) = VALSON(JJ1)
3931
JJ2 = APOS+int(IW(J1 + JJ1 - 1),8)
3932
IF(abs(A(JJ2)) .LT. VALSON(JJ1))
3933
& A(JJ2) = dble(VALSON(JJ1))
3886
3936
END SUBROUTINE DMUMPS_619
3887
3937
RECURSIVE SUBROUTINE DMUMPS_264(
3888
* COMM_LOAD, ASS_IRECV,
3890
* LBUFR_BYTES, PROCNODE_STEPS, MSGSOU,
3891
* SLAVEF, IWPOS, IWPOSCB, IPTRLU, LRLU, LRLUS, N, IW, LIW,
3892
* A, LA, PTRIST, PTRAST, NSTK_S, NBPROCFILS,
3893
* COMP, STEP, PIMASTER, PAMASTER, POSFAC,
3894
* MYID, COMM, IFLAG, IERROR, NBFIN,
3896
* PTLUST_S, PTRFAC, root, OPASSW, OPELIW, ITLOC, FILS,
3897
* PTRARW, PTRAIW, INTARR, DBLARR,
3898
* ICNTL, KEEP,KEEP8, IPOOL, LPOOL, LEAF, ND, FRERE_STEPS,
3899
* LPTRAR, NELT, FRTPTR, FRTELT,
3900
* ISTEP_TO_INIV2, TAB_POS_IN_PERE
3938
& COMM_LOAD, ASS_IRECV,
3940
& LBUFR_BYTES, PROCNODE_STEPS, MSGSOU,
3941
& SLAVEF, IWPOS, IWPOSCB, IPTRLU, LRLU, LRLUS, N, IW, LIW,
3942
& A, LA, PTRIST, PTRAST, NSTK_S, NBPROCFILS,
3943
& COMP, STEP, PIMASTER, PAMASTER, POSFAC,
3944
& MYID, COMM, IFLAG, IERROR, NBFIN,
3946
& PTLUST_S, PTRFAC, root, OPASSW, OPELIW, ITLOC, FILS,
3947
& PTRARW, PTRAIW, INTARR, DBLARR,
3948
& ICNTL, KEEP,KEEP8, IPOOL, LPOOL, LEAF, ND, FRERE_STEPS,
3949
& LPTRAR, NELT, FRTPTR, FRTELT,
3950
& ISTEP_TO_INIV2, TAB_POS_IN_PERE
3903
3953
USE DMUMPS_LOAD
3936
3988
INTEGER LEAF, LPOOL
3937
3989
INTEGER IPOOL( LPOOL )
3938
3990
INTEGER ISTEP_TO_INIV2(KEEP(71)),
3939
* TAB_POS_IN_PERE(SLAVEF+2,max(1,KEEP(56)))
3991
& TAB_POS_IN_PERE(SLAVEF+2,max(1,KEEP(56)))
3940
3992
INCLUDE 'mpif.h'
3941
3993
INCLUDE 'mumps_tags.h'
3942
3994
INTEGER STATUS( MPI_STATUS_SIZE )
3943
3995
INTEGER INODE, POSITION, NPIV, IERR, LP
3944
INTEGER LAELL, NCOL, POSBLOCFACTO, NROW
3946
INTEGER IOLDPS, POSELT, LCONT1, NASS1, NROW1, NCOL1, NPIV1
3997
INTEGER(8) :: POSBLOCFACTO
3999
INTEGER(8) :: MEM_GAIN
4000
INTEGER(8) :: POSELT
4001
INTEGER IOLDPS, LCONT1, NASS1, NROW1, NCOL1, NPIV1
3947
4002
INTEGER NSLAV1, HS, ISW
3948
INTEGER ICT11, LPOS, LPOS1, LPOS2
3949
INTEGER I, IPOS, KPOS, IPIV, FPERE
4003
INTEGER (8) :: LPOS, LPOS1, LPOS2, IPOS, KPOS
4005
INTEGER I, IPIV, FPERE
3950
4006
INTEGER LCONT,NELIM,NASS, LDA, NCOL_TO_SEND,
3951
* SHIFT_LIST_ROW_SON, SHIFT_LIST_COL_SON, SHIFT_VAL_SON
4007
& SHIFT_LIST_ROW_SON, SHIFT_LIST_COL_SON
4008
INTEGER(8) :: SHIFT_VAL_SON
3953
4010
PARAMETER(ITYPE2=2)
3955
4012
LOGICAL BLOCKING, SET_IRECV, MESSAGE_RECEIVED
3956
4013
DOUBLE PRECISION ONE,ALPHA
3957
PARAMETER (ONE=1.0D0, ALPHA=-1.0D0)
3958
INTEGER LIWFAC, LAFAC, STRAT, NextPivDummy
4014
PARAMETER (ONE = 1.0D0, ALPHA=-1.0D0)
4016
INTEGER LIWFAC, STRAT, NextPivDummy
3959
4017
TYPE(IO_BLOCK) :: MonBloc
3960
4019
INTEGER MUMPS_275
3961
4020
EXTERNAL MUMPS_275
3964
4023
CALL MPI_UNPACK( BUFR, LBUFR_BYTES, POSITION, INODE, 1,
3965
* MPI_INTEGER, COMM, IERR )
4024
& MPI_INTEGER, COMM, IERR )
3966
4025
CALL MPI_UNPACK( BUFR, LBUFR_BYTES, POSITION, NPIV, 1,
3967
* MPI_INTEGER, COMM, IERR )
4026
& MPI_INTEGER, COMM, IERR )
3968
4027
LASTBL = (NPIV.LE.0)
3969
4028
IF (LASTBL) THEN
3971
4030
CALL MPI_UNPACK( BUFR, LBUFR_BYTES, POSITION, FPERE, 1,
3972
* MPI_INTEGER, COMM, IERR )
4031
& MPI_INTEGER, COMM, IERR )
3974
4033
CALL MPI_UNPACK( BUFR, LBUFR_BYTES, POSITION, NCOL, 1,
3975
* MPI_INTEGER, COMM, IERR )
4034
& MPI_INTEGER, COMM, IERR )
4035
LAELL = int(NPIV,8) * int(NCOL,8)
3977
4036
IF ( LRLU .LT. LAELL .OR. IWPOS + NPIV - 1 .GT. IWPOSCB ) THEN
3978
4037
IF ( LRLUS .LT. LAELL ) THEN
4038
IF (LAELL - LRLUS .GT. int(huge(IERROR),8)) THEN
4039
write(*,*) "I8 OVERFLOW, LAELL-LRLUS=",LAELL-LRLUS
3980
IERROR = LAELL - LRLU
4043
IERROR = int(LAELL - LRLUS,kind(IERROR))
3981
4044
IF (ICNTL(1).GT.0 .AND. ICNTL(4).GE.1) THEN
3984
*" FAILURE, WORKSPACE TOO SMALL DURING DMUMPS_264"
4047
&" FAILURE, WORKSPACE TOO SMALL DURING DMUMPS_264"
3988
4051
CALL DMUMPS_94(N, KEEP(28), IW, LIW, A, LA,
3990
* IWPOS, IWPOSCB, PTRIST, PTRAST,
3991
* STEP, PIMASTER, PAMASTER, ITLOC,KEEP(216),LRLUS,
4053
& IWPOS, IWPOSCB, PTRIST, PTRAST,
4054
& STEP, PIMASTER, PAMASTER, ITLOC,KEEP(216),LRLUS,
3994
4057
IF ( LRLU .NE. LRLUS ) THEN
3995
4058
WRITE(*,*) 'PB compress ass..blocfacto: LRLU,LRLUS='
3998
IERROR = LAELL -LRLU
4061
CALL MUMPS_731( LAELL-LRLUS, IERROR )
4062
IF (LAELL - LRLUS .GT. int(huge(IERROR),8)) THEN
4063
write(*,*) "I8 OVERFLOW, LAELL-LRLUS=",LAELL-LRLUS
4066
IERROR = int(LAELL - LRLUS,kind(IERROR))
4001
4069
IF ( IWPOS + NPIV - 1 .GT. IWPOSCB ) THEN
4002
4070
IF (ICNTL(1).GT.0 .AND. ICNTL(4).GE.1) THEN
4005
*" FAILURE IN INTEGER ALLOCATION DURING DMUMPS_264"
4073
&" FAILURE IN INTEGER ALLOCATION DURING DMUMPS_264"
4008
4076
IERROR = IWPOS + NPIV - 1 - IWPOSCB
4012
4080
LRLU = LRLU - LAELL
4013
4081
LRLUS = LRLUS - LAELL
4014
KEEP(67) = min(LRLUS, KEEP(67))
4082
KEEP8(67) = min(LRLUS, KEEP8(67))
4015
4083
POSBLOCFACTO = POSFAC
4016
4084
POSFAC = POSFAC + LAELL
4017
4085
CALL DMUMPS_471(.FALSE., .FALSE.,
4018
* LA-LRLUS,0,LAELL,KEEP,KEEP8,LRLU)
4086
& LA-LRLUS,0_8,LAELL,KEEP,KEEP8,LRLU)
4020
4088
IWPOS = IWPOS + NPIV
4021
4089
CALL MPI_UNPACK( BUFR, LBUFR_BYTES, POSITION,
4023
* MPI_INTEGER, COMM, IERR )
4091
& MPI_INTEGER, COMM, IERR )
4024
4092
CALL MPI_UNPACK( BUFR, LBUFR_BYTES, POSITION,
4025
* A(POSBLOCFACTO), NPIV*NCOL,
4026
* MPI_DOUBLE_PRECISION,
4093
& A(POSBLOCFACTO), NPIV*NCOL,
4094
& MPI_DOUBLE_PRECISION,
4028
4096
IF (PTRIST(STEP( INODE )) .EQ. 0) THEN
4029
MSGSOU = MUMPS_275( STEP(INODE), PROCNODE_STEPS,
4032
* ': Internal ERROR 1 in DMUMPS_264',
4033
* ' INODE =', INODE,
4034
* ' MAITRE_DESC_BANDE not yet received from ', MSGSOU
4097
DO WHILE ( PTRIST(STEP(INODE)) .EQ. 0 )
4100
MESSAGE_RECEIVED = .FALSE.
4101
CALL DMUMPS_329( COMM_LOAD,
4102
& ASS_IRECV, BLOCKING, SET_IRECV, MESSAGE_RECEIVED,
4103
& MSGSOU, MAITRE_DESC_BANDE,
4105
& BUFR, LBUFR, LBUFR_BYTES, PROCNODE_STEPS, POSFAC,
4106
& IWPOS, IWPOSCB, IPTRLU,
4107
& LRLU, LRLUS, N, IW, LIW, A, LA, PTRIST,
4109
& PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, COMP,
4110
& IFLAG, IERROR, COMM,
4112
& IPOOL, LPOOL, LEAF,
4113
& NBFIN, MYID, SLAVEF,
4115
& root, OPASSW, OPELIW, ITLOC, FILS, PTRARW, PTRAIW,
4116
& INTARR, DBLARR, ICNTL, KEEP,KEEP8, ND, FRERE_STEPS,
4117
& LPTRAR, NELT, FRTPTR, FRTELT,
4118
& ISTEP_TO_INIV2, TAB_POS_IN_PERE, .TRUE.
4120
IF ( IFLAG .LT. 0 ) GOTO 600
4037
4123
DO WHILE ( NBPROCFILS( STEP(INODE)) .NE. 0 )
4038
4124
BLOCKING = .TRUE.
4039
4125
SET_IRECV = .FALSE.
4040
4126
MESSAGE_RECEIVED = .FALSE.
4041
4127
CALL DMUMPS_329( COMM_LOAD,
4042
* ASS_IRECV, BLOCKING, SET_IRECV, MESSAGE_RECEIVED,
4043
* MPI_ANY_SOURCE, CONTRIB_TYPE2,
4045
* BUFR, LBUFR, LBUFR_BYTES, PROCNODE_STEPS, POSFAC,
4046
* IWPOS, IWPOSCB, IPTRLU,
4047
* LRLU, LRLUS, N, IW, LIW, A, LA, PTRIST,
4049
* PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, COMP,
4050
* IFLAG, IERROR, COMM,
4052
* IPOOL, LPOOL, LEAF,
4053
* NBFIN, MYID, SLAVEF,
4055
* root, OPASSW, OPELIW, ITLOC, FILS, PTRARW, PTRAIW,
4056
* INTARR, DBLARR, ICNTL, KEEP,KEEP8, ND, FRERE_STEPS,
4057
* LPTRAR, NELT, FRTPTR, FRTELT,
4058
* ISTEP_TO_INIV2, TAB_POS_IN_PERE, .TRUE. )
4128
& ASS_IRECV, BLOCKING, SET_IRECV, MESSAGE_RECEIVED,
4129
& MPI_ANY_SOURCE, CONTRIB_TYPE2,
4131
& BUFR, LBUFR, LBUFR_BYTES, PROCNODE_STEPS, POSFAC,
4132
& IWPOS, IWPOSCB, IPTRLU,
4133
& LRLU, LRLUS, N, IW, LIW, A, LA, PTRIST,
4135
& PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, COMP,
4136
& IFLAG, IERROR, COMM,
4138
& IPOOL, LPOOL, LEAF,
4139
& NBFIN, MYID, SLAVEF,
4141
& root, OPASSW, OPELIW, ITLOC, FILS, PTRARW, PTRAIW,
4142
& INTARR, DBLARR, ICNTL, KEEP,KEEP8, ND, FRERE_STEPS,
4143
& LPTRAR, NELT, FRTPTR, FRTELT,
4144
& ISTEP_TO_INIV2, TAB_POS_IN_PERE, .TRUE. )
4059
4145
IF ( IFLAG .LT. 0 ) GOTO 600
4061
4147
SET_IRECV = .TRUE.
4062
4148
BLOCKING = .FALSE.
4063
4149
MESSAGE_RECEIVED = .TRUE.
4064
4150
CALL DMUMPS_329( COMM_LOAD, ASS_IRECV,
4065
* BLOCKING, SET_IRECV, MESSAGE_RECEIVED,
4066
* MPI_ANY_SOURCE, MPI_ANY_TAG,
4068
* BUFR, LBUFR, LBUFR_BYTES, PROCNODE_STEPS, POSFAC,
4069
* IWPOS, IWPOSCB, IPTRLU,
4070
* LRLU, LRLUS, N, IW, LIW, A, LA, PTRIST,
4072
* PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, COMP,
4073
* IFLAG, IERROR, COMM,
4075
* IPOOL, LPOOL, LEAF,
4076
* NBFIN, MYID, SLAVEF,
4078
* root, OPASSW, OPELIW, ITLOC, FILS, PTRARW, PTRAIW,
4079
* INTARR, DBLARR, ICNTL, KEEP,KEEP8, ND, FRERE_STEPS,
4080
* LPTRAR, NELT, FRTPTR, FRTELT,
4081
* ISTEP_TO_INIV2, TAB_POS_IN_PERE, .TRUE. )
4151
& BLOCKING, SET_IRECV, MESSAGE_RECEIVED,
4152
& MPI_ANY_SOURCE, MPI_ANY_TAG,
4154
& BUFR, LBUFR, LBUFR_BYTES, PROCNODE_STEPS, POSFAC,
4155
& IWPOS, IWPOSCB, IPTRLU,
4156
& LRLU, LRLUS, N, IW, LIW, A, LA, PTRIST,
4158
& PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, COMP,
4159
& IFLAG, IERROR, COMM,
4161
& IPOOL, LPOOL, LEAF,
4162
& NBFIN, MYID, SLAVEF,
4164
& root, OPASSW, OPELIW, ITLOC, FILS, PTRARW, PTRAIW,
4165
& INTARR, DBLARR, ICNTL, KEEP,KEEP8, ND, FRERE_STEPS,
4166
& LPTRAR, NELT, FRTPTR, FRTELT,
4167
& ISTEP_TO_INIV2, TAB_POS_IN_PERE, .TRUE. )
4082
4168
IOLDPS = PTRIST(STEP(INODE))
4083
4169
POSELT = PTRAST(STEP(INODE))
4084
4170
LCONT1 = IW( IOLDPS +KEEP(IXSZ))
4138
4228
LRLUS = LRLUS + LAELL
4139
4229
POSFAC = POSFAC - LAELL
4140
4230
CALL DMUMPS_471(.FALSE.,.FALSE.,
4141
* LA-LRLUS,0,-LAELL,KEEP,KEEP8,LRLU)
4231
& LA-LRLUS,0_8,-LAELL,KEEP,KEEP8,LRLU)
4142
4232
IWPOS = IWPOS - NPIV
4143
4233
FLOP1 = dble( NPIV1*NROW1 ) +
4144
* dble(NROW1*NPIV1)*dble(2*NCOL1-NPIV1-1)
4146
* dble((NPIV1+NPIV)*NROW1 ) -
4147
* dble(NROW1*(NPIV1+NPIV))*dble(2*NCOL1-NPIV1-NPIV-1)
4234
& dble(NROW1*NPIV1)*dble(2*NCOL1-NPIV1-1)
4236
& dble((NPIV1+NPIV)*NROW1 ) -
4237
& dble(NROW1*(NPIV1+NPIV))*dble(2*NCOL1-NPIV1-NPIV-1)
4148
4238
CALL DMUMPS_190( 1, .FALSE., FLOP1, KEEP,KEEP8 )
4149
4239
IF (LASTBL) THEN
4150
4240
IW(IOLDPS+XXS)=S_ALL
4151
4241
IF (KEEP(214).EQ.1) THEN
4152
4242
CALL DMUMPS_314( N, INODE,
4153
* PTRIST, PTRAST, PTLUST_S, PTRFAC, IW, LIW, A, LA,
4154
* LRLU, LRLUS, IWPOS, IWPOSCB, POSFAC, COMP,
4155
* IPTRLU, OPELIW, STEP, PIMASTER, PAMASTER, ITLOC,
4156
* IFLAG, IERROR, SLAVEF, MYID, COMM, KEEP,KEEP8, ITYPE2
4243
& PTRIST, PTRAST, PTLUST_S, PTRFAC, IW, LIW, A, LA,
4244
& LRLU, LRLUS, IWPOS, IWPOSCB, POSFAC, COMP,
4245
& IPTRLU, OPELIW, STEP, PIMASTER, PAMASTER, ITLOC,
4246
& IFLAG, IERROR, SLAVEF, MYID, COMM, KEEP,KEEP8, ITYPE2
4158
4248
IF (KEEP(38).NE.FPERE) THEN
4159
4249
IW(PTRIST(STEP(INODE))+XXS)=S_NOLCBNOCONTIG
4160
4250
IF (KEEP(216).NE.3) THEN
4161
MEM_GAIN=IW( PTRIST(STEP( INODE )) + 2 + KEEP(IXSZ) )*
4162
* IW( PTRIST(STEP( INODE )) + 3 + KEEP(IXSZ) )
4251
MEM_GAIN=int(IW(PTRIST(STEP(INODE))+2+KEEP(IXSZ)),8)*
4252
& int(IW(PTRIST(STEP(INODE))+3+KEEP(IXSZ)),8)
4163
4253
LRLUS = LRLUS+MEM_GAIN
4164
4254
CALL DMUMPS_471(.FALSE.,.FALSE.,
4165
* LA-LRLUS,0,-MEM_GAIN,KEEP,KEEP8,LRLU)
4255
& LA-LRLUS,0_8,-MEM_GAIN,KEEP,KEEP8,LRLU)
4168
4258
IF (KEEP(216).EQ.2) THEN
4169
4259
IF (KEEP(38).NE.FPERE) THEN
4170
4260
CALL DMUMPS_627(A,LA,PTRAST(STEP(INODE)),
4171
* IW( PTRIST(STEP( INODE )) + 2 + KEEP(IXSZ) ),
4172
* IW( PTRIST(STEP( INODE )) + KEEP(IXSZ) ),
4173
* IW( PTRIST(STEP( INODE )) + 3 + KEEP(IXSZ) )+
4174
* IW( PTRIST(STEP( INODE )) + KEEP(IXSZ) ),0,
4175
* IW( PTRIST(STEP( INODE )) + XXS ),0)
4261
& IW( PTRIST(STEP( INODE )) + 2 + KEEP(IXSZ) ),
4262
& IW( PTRIST(STEP( INODE )) + KEEP(IXSZ) ),
4263
& IW( PTRIST(STEP( INODE )) + 3 + KEEP(IXSZ) )+
4264
& IW( PTRIST(STEP( INODE )) + KEEP(IXSZ) ),0,
4265
& IW( PTRIST(STEP( INODE )) + XXS ),0_8)
4176
4266
IW(PTRIST(STEP(INODE))+XXS)=S_NOLCBCONTIG
4188
4278
NCOL_TO_SEND = LCONT-NELIM
4189
4279
SHIFT_LIST_ROW_SON = 6 + IW(IOLDPS+5+KEEP(IXSZ)) + KEEP(IXSZ)
4190
4280
SHIFT_LIST_COL_SON = SHIFT_LIST_ROW_SON + NROW + NASS
4191
SHIFT_VAL_SON = NASS
4281
SHIFT_VAL_SON = int(NASS,8)
4192
4282
LDA = LCONT + NPIV
4193
4283
IF (IW(IOLDPS+6+KEEP(IXSZ)).EQ.S_ROOTBAND_INIT) THEN
4194
4284
IW(IOLDPS+6+KEEP(IXSZ)) = S_REC_CONTSTATIC
4197
4287
CALL DMUMPS_80(
4198
* COMM_LOAD, ASS_IRECV,
4201
* root, NROW, NCOL_TO_SEND, SHIFT_LIST_ROW_SON,
4202
* SHIFT_LIST_COL_SON , SHIFT_VAL_SON, LDA,
4203
* ROOT_CONT_STATIC, MYID, COMM,
4205
* BUFR, LBUFR, LBUFR_BYTES, PROCNODE_STEPS, POSFAC,
4206
* IWPOS, IWPOSCB, IPTRLU, LRLU, LRLUS, IW, LIW, A, LA,
4207
* PTRIST, PTLUST_S, PTRFAC,
4208
* PTRAST, STEP, PIMASTER, PAMASTER,
4209
* NSTK_S, COMP, IFLAG, IERROR, NBPROCFILS,
4210
* IPOOL, LPOOL, LEAF, NBFIN, SLAVEF,
4211
* OPASSW, OPELIW, ITLOC, FILS, PTRARW, PTRAIW,
4212
* INTARR, DBLARR, ICNTL, KEEP,KEEP8,
4213
* .FALSE., ND, FRERE_STEPS,
4214
* LPTRAR, NELT, FRTPTR, FRTELT,
4215
* ISTEP_TO_INIV2, TAB_POS_IN_PERE )
4288
& COMM_LOAD, ASS_IRECV,
4291
& root, NROW, NCOL_TO_SEND, SHIFT_LIST_ROW_SON,
4292
& SHIFT_LIST_COL_SON , SHIFT_VAL_SON, LDA,
4293
& ROOT_CONT_STATIC, MYID, COMM,
4295
& BUFR, LBUFR, LBUFR_BYTES, PROCNODE_STEPS, POSFAC,
4296
& IWPOS, IWPOSCB, IPTRLU, LRLU, LRLUS, IW, LIW, A, LA,
4297
& PTRIST, PTLUST_S, PTRFAC,
4298
& PTRAST, STEP, PIMASTER, PAMASTER,
4299
& NSTK_S, COMP, IFLAG, IERROR, NBPROCFILS,
4300
& IPOOL, LPOOL, LEAF, NBFIN, SLAVEF,
4301
& OPASSW, OPELIW, ITLOC, FILS, PTRARW, PTRAIW,
4302
& INTARR, DBLARR, ICNTL, KEEP,KEEP8,
4303
& .FALSE., ND, FRERE_STEPS,
4304
& LPTRAR, NELT, FRTPTR, FRTELT,
4305
& ISTEP_TO_INIV2, TAB_POS_IN_PERE )
4216
4306
IF ( IFLAG < 0 ) GOTO 600
4217
4307
IF (NELIM.EQ.0) THEN
4218
4308
IF (KEEP(214).EQ.2) THEN
4219
4309
CALL DMUMPS_314( N, INODE,
4220
* PTRIST, PTRAST, PTLUST_S, PTRFAC, IW, LIW, A, LA,
4221
* LRLU, LRLUS, IWPOS, IWPOSCB, POSFAC, COMP,
4222
* IPTRLU, OPELIW, STEP, PIMASTER, PAMASTER, ITLOC,
4223
* IFLAG, IERROR, SLAVEF, MYID, COMM, KEEP,KEEP8, ITYPE2
4310
& PTRIST, PTRAST, PTLUST_S, PTRFAC, IW, LIW, A, LA,
4311
& LRLU, LRLUS, IWPOS, IWPOSCB, POSFAC, COMP,
4312
& IPTRLU, OPELIW, STEP, PIMASTER, PAMASTER, ITLOC,
4313
& IFLAG, IERROR, SLAVEF, MYID, COMM, KEEP,KEEP8, ITYPE2
4226
4316
CALL DMUMPS_626( N, INODE,
4227
* PTRIST, PTRAST, IW, LIW, A, LA,
4228
* LRLU, LRLUS, IWPOSCB,
4317
& PTRIST, PTRAST, IW, LIW, A, LA,
4318
& LRLU, LRLUS, IWPOSCB,
4233
4323
IOLDPS = PTRIST(STEP(INODE))
4234
4324
IF (IW(IOLDPS+6+KEEP(IXSZ)).EQ.S_ROOT2SON_CALLED) THEN
4235
4325
CALL DMUMPS_626( N, INODE, PTRIST, PTRAST, IW, LIW,
4236
* A, LA, LRLU, LRLUS, IWPOSCB, IPTRLU, STEP,
4326
& A, LA, LRLU, LRLUS, IWPOSCB, IPTRLU, STEP,
4240
4330
IW(IOLDPS+6+KEEP(IXSZ)) = S_ROOTBAND_INIT
4241
4331
IF (KEEP(214).EQ.1.AND.KEEP(216).NE.3) THEN
4242
4332
IW(PTRIST(STEP(INODE))+XXS)=S_NOLCBNOCONTIG38
4243
4333
CALL DMUMPS_628( IW(PTRIST(STEP(INODE))),
4244
* LIW-PTRIST(STEP(INODE))+1,
4245
* MEM_GAIN, KEEP(IXSZ) )
4334
& LIW-PTRIST(STEP(INODE))+1,
4335
& MEM_GAIN, KEEP(IXSZ) )
4246
4336
LRLUS = LRLUS + MEM_GAIN
4247
4337
CALL DMUMPS_471(.FALSE.,.FALSE.,
4248
* LA-LRLUS,0,-MEM_GAIN,KEEP,KEEP8,LRLU)
4338
& LA-LRLUS,0_8,-MEM_GAIN,KEEP,KEEP8,LRLU)
4249
4339
IF (KEEP(216).EQ.2) THEN
4250
4340
CALL DMUMPS_627(A,LA,PTRAST(STEP(INODE)),
4251
* IW( PTRIST(STEP( INODE )) + 2 + KEEP(IXSZ) ),
4252
* IW( PTRIST(STEP( INODE )) + KEEP(IXSZ) ),
4253
* IW( PTRIST(STEP( INODE )) + 3 + KEEP(IXSZ) )+
4254
* IW( PTRIST(STEP( INODE )) + KEEP(IXSZ) ),
4255
* IW( PTRIST(STEP( INODE )) + 4 + KEEP(IXSZ) ) -
4256
* IW( PTRIST(STEP( INODE )) + 3 + KEEP(IXSZ) ),
4257
* IW( PTRIST(STEP( INODE )) + XXS ),0)
4341
& IW( PTRIST(STEP( INODE )) + 2 + KEEP(IXSZ) ),
4342
& IW( PTRIST(STEP( INODE )) + KEEP(IXSZ) ),
4343
& IW( PTRIST(STEP( INODE )) + 3 + KEEP(IXSZ) )+
4344
& IW( PTRIST(STEP( INODE )) + KEEP(IXSZ) ),
4345
& IW( PTRIST(STEP( INODE )) + 4 + KEEP(IXSZ) ) -
4346
& IW( PTRIST(STEP( INODE )) + 3 + KEEP(IXSZ) ),
4347
& IW( PTRIST(STEP( INODE )) + XXS ),0_8)
4258
4348
IW(PTRIST(STEP(INODE))+XXS)=S_NOLCBCONTIG38
4360
4451
SET_IRECV = .FALSE.
4361
4452
MESSAGE_RECEIVED = .FALSE.
4362
4453
CALL DMUMPS_329( COMM_LOAD, ASS_IRECV,
4363
* BLOCKING, SET_IRECV, MESSAGE_RECEIVED,
4364
* MASTER, MAITRE_DESC_BANDE,
4366
* BUFR(ISHIFT_BUFR), LBUFR_LOC, LBUFR_BYTES_LOC,
4367
* PROCNODE_STEPS, POSFAC,
4368
* IWPOS, IWPOSCB, IPTRLU,
4369
* LRLU, LRLUS, N, IW, LIW, A, LA,
4370
* PTRIST, PTLUST_S, PTRFAC,
4371
* PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, COMP,
4372
* IFLAG, IERROR, COMM,
4373
* NBPROCFILS, IPOOL, LPOOL, LEAF,
4374
* NBFIN, MYID, SLAVEF,
4376
* root, OPASSW, OPELIW, ITLOC, FILS,
4378
* INTARR, DBLARR, ICNTL, KEEP,KEEP8, ND, FRERE_STEPS,
4379
* LPTRAR, NELT, FRTPTR, FRTELT,
4380
* ISTEP_TO_INIV2, TAB_POS_IN_PERE, .TRUE. )
4454
& BLOCKING, SET_IRECV, MESSAGE_RECEIVED,
4455
& MASTER, MAITRE_DESC_BANDE,
4457
& BUFR(ISHIFT_BUFR), LBUFR_LOC, LBUFR_BYTES_LOC,
4458
& PROCNODE_STEPS, POSFAC,
4459
& IWPOS, IWPOSCB, IPTRLU,
4460
& LRLU, LRLUS, N, IW, LIW, A, LA,
4461
& PTRIST, PTLUST_S, PTRFAC,
4462
& PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, COMP,
4463
& IFLAG, IERROR, COMM,
4464
& NBPROCFILS, IPOOL, LPOOL, LEAF,
4465
& NBFIN, MYID, SLAVEF,
4467
& root, OPASSW, OPELIW, ITLOC, FILS,
4469
& INTARR, DBLARR, ICNTL, KEEP,KEEP8, ND, FRERE_STEPS,
4470
& LPTRAR, NELT, FRTPTR, FRTELT,
4471
& ISTEP_TO_INIV2, TAB_POS_IN_PERE, .TRUE. )
4381
4472
IF (IFLAG.LT.0) RETURN
4448
4539
IF ( KEEP(55) .eq. 0 ) THEN
4449
4540
CALL DMUMPS_539
4450
* (N, INODE, IW, LIW, A, LA,
4452
* OPASSW, OPELIW, STEP, PTRIST, PTRAST, ITLOC,
4453
* FILS, PTRARW, PTRAIW, INTARR, DBLARR, ICNTL,
4454
$ KEEP,KEEP8, MYID )
4541
& (N, INODE, IW, LIW, A, LA,
4543
& OPASSW, OPELIW, STEP, PTRIST, PTRAST, ITLOC,
4544
& FILS, PTRARW, PTRAIW, INTARR, DBLARR, ICNTL,
4545
& KEEP,KEEP8, MYID )
4456
4547
CALL DMUMPS_123(
4457
* NELT, FRTPTR, FRTELT,
4458
* N, INODE, IW, LIW, A, LA,
4460
* OPASSW, OPELIW, STEP, PTRIST, PTRAST, ITLOC,
4461
* FILS, PTRARW, PTRAIW, INTARR, DBLARR, ICNTL,
4462
$ KEEP,KEEP8, MYID )
4548
& NELT, FRTPTR, FRTELT,
4549
& N, INODE, IW, LIW, A, LA,
4551
& OPASSW, OPELIW, STEP, PTRIST, PTRAST, ITLOC,
4552
& FILS, PTRARW, PTRAIW, INTARR, DBLARR, ICNTL,
4553
& KEEP,KEEP8, MYID )
4464
4555
DO I=1,NBROWS_PACKET
4465
4556
IF(KEEP(50).NE.0)THEN
4466
4557
CALL MPI_UNPACK( BUFR, LBUFR_BYTES, POSITION,
4472
4563
ROW_LENGTH=LROW
4474
4565
CALL MPI_UNPACK( BUFR, LBUFR_BYTES, POSITION,
4477
* MPI_DOUBLE_PRECISION,
4568
& MPI_DOUBLE_PRECISION,
4479
4570
CALL DMUMPS_40(N, INODE, IW, LIW, A, LA,
4480
* 1, ROW_LENGTH, IW( IROW+I-1 ),IW(INDCOL),
4482
* OPASSW, OPELIW, STEP, PTRIST, PTRAST, ITLOC,
4483
* FILS, ICNTL, KEEP,KEEP8, MYID )
4571
& 1, ROW_LENGTH, IW( IROW+I-1 ),IW(INDCOL),
4573
& OPASSW, OPELIW, STEP, PTRIST, PTRAST, ITLOC,
4574
& FILS, ICNTL, KEEP,KEEP8, MYID )
4485
4576
CALL DMUMPS_531
4486
* (N, INODE, IW, LIW,
4487
* NBROWS_PACKET, STEP, PTRIST, ITLOC, KEEP,KEEP8)
4577
& (N, INODE, IW, LIW,
4578
& NBROWS_PACKET, STEP, PTRIST, ITLOC, KEEP,KEEP8)
4489
4580
DO I=1,NBROWS_PACKET
4490
4581
IF(KEEP(50).NE.0)THEN
4491
4582
CALL MPI_UNPACK( BUFR, LBUFR_BYTES, POSITION,
4497
4588
ROW_LENGTH=LROW
4499
4590
CALL MPI_UNPACK( BUFR, LBUFR_BYTES, POSITION,
4502
* MPI_DOUBLE_PRECISION,
4593
& MPI_DOUBLE_PRECISION,
4504
4595
CALL DMUMPS_39(N, INODE, IW, LIW, A, LA,
4505
* ISON, 1, ROW_LENGTH, IW( IROW +I-1 ),
4506
* A(POSCONTRIB), PTLUST_S, PTRAST,
4507
* STEP, PIMASTER, OPASSW,
4508
* IWPOSCB, MYID, KEEP,KEEP8)
4596
& ISON, 1, ROW_LENGTH, IW( IROW +I-1 ),
4597
& A(POSCONTRIB), PTLUST_S, PTRAST,
4598
& STEP, PIMASTER, OPASSW,
4599
& IWPOSCB, MYID, KEEP,KEEP8)
4510
4601
IF (NBROWS_ALREADY_SENT .EQ. 0) THEN
4511
4602
IF (KEEP(219).NE.0) THEN
4512
4603
IF(KEEP(50) .EQ. 2) THEN
4513
4604
CALL MPI_UNPACK( BUFR, LBUFR_BYTES, POSITION,
4518
4609
IF(NFS4FATHER .GT. 0) THEN
4519
4610
CALL DMUMPS_617(NFS4FATHER,IERR)
4520
4611
IF (IERR .NE. 0) THEN
4862
4959
IF ( MSGTAG .EQ. RACINE ) THEN
4864
4961
CALL MPI_UNPACK( BUFR, LBUFR_BYTES, POSITION, NBRECU,
4865
* 1, MPI_INTEGER, COMM, IERR)
4962
& 1, MPI_INTEGER, COMM, IERR)
4866
4963
NBRECU = BUFR( 1 )
4867
4964
NBFIN = NBFIN - NBRECU
4868
4965
ELSEIF ( MSGTAG .EQ. NOEUD ) THEN
4869
4966
CALL DMUMPS_269( MYID,KEEP,KEEP8,
4870
* BUFR, LBUFR, LBUFR_BYTES,
4871
* IWPOS, IWPOSCB, IPTRLU,
4872
* LRLU, LRLUS, N, IW, LIW, A, LA, PTRIST, PTRAST,
4873
* STEP, PIMASTER, PAMASTER,
4874
* NSTK_S, COMP, FPERE, FLAG, IFLAG, IERROR, COMM, ITLOC )
4967
& BUFR, LBUFR, LBUFR_BYTES,
4968
& IWPOS, IWPOSCB, IPTRLU,
4969
& LRLU, LRLUS, N, IW, LIW, A, LA, PTRIST, PTRAST,
4970
& STEP, PIMASTER, PAMASTER,
4971
& NSTK_S, COMP, FPERE, FLAG, IFLAG, IERROR, COMM, ITLOC )
4875
4972
SUBNAME="DMUMPS_269"
4876
4973
IF ( IFLAG .LT. 0 ) GO TO 500
4877
4974
IF ( FLAG ) THEN
4878
4975
CALL DMUMPS_507(N, IPOOL, LPOOL,
4879
* PROCNODE_STEPS, SLAVEF, KEEP(28), KEEP(76),
4880
* KEEP(80), KEEP(47), STEP, FPERE )
4976
& PROCNODE_STEPS, SLAVEF, KEEP(28), KEEP(76),
4977
& KEEP(80), KEEP(47), STEP, FPERE )
4881
4978
IF (KEEP(47) .GE. 3) THEN
4882
4979
CALL DMUMPS_500(
4884
* PROCNODE_STEPS, KEEP,KEEP8, SLAVEF, COMM_LOAD,
4885
* MYID, STEP, N, ND, FILS )
4981
& PROCNODE_STEPS, KEEP,KEEP8, SLAVEF, COMM_LOAD,
4982
& MYID, STEP, N, ND, FILS )
4887
4984
CALL MUMPS_137( FPERE, N,
4888
* PROCNODE_STEPS,SLAVEF,
4985
& PROCNODE_STEPS,SLAVEF,
4889
4986
& ND, FILS, FRERE, STEP, PIMASTER,
4890
* KEEP(28), KEEP(50), FLOP1,
4987
& KEEP(28), KEEP(50), FLOP1,
4891
4988
& IW, LIW, KEEP(IXSZ) )
4892
4989
IF (FPERE.NE.KEEP(20))
4893
* CALL DMUMPS_190(1,.FALSE.,FLOP1,KEEP,KEEP8)
4990
& CALL DMUMPS_190(1,.FALSE.,FLOP1,KEEP,KEEP8)
4895
4992
ELSEIF ( MSGTAG .EQ. END_NIV2_LDLT ) THEN
4896
4993
INODE = BUFR( 1 )
4897
4994
CALL DMUMPS_507(N, IPOOL, LPOOL,
4898
* PROCNODE_STEPS, SLAVEF, KEEP(28), KEEP(76),
4899
* KEEP(80), KEEP(47),
4995
& PROCNODE_STEPS, SLAVEF, KEEP(28), KEEP(76),
4996
& KEEP(80), KEEP(47),
4901
4998
IF (KEEP(47) .GE. 3) THEN
4902
4999
CALL DMUMPS_500(
4904
* PROCNODE_STEPS, KEEP,KEEP8, SLAVEF, COMM_LOAD,
4905
* MYID, STEP, N, ND, FILS )
5001
& PROCNODE_STEPS, KEEP,KEEP8, SLAVEF, COMM_LOAD,
5002
& MYID, STEP, N, ND, FILS )
4907
5004
ELSEIF ( MSGTAG .EQ. TERREUR ) THEN
4911
5008
ELSEIF ( MSGTAG .EQ. MAITRE_DESC_BANDE ) THEN
4912
5009
CALL DMUMPS_266( MYID,BUFR, LBUFR,
4913
* LBUFR_BYTES, IWPOS,
4915
* IPTRLU, LRLU, LRLUS, NBPROCFILS,
4916
* N, IW, LIW, A, LA,
4917
* PTRIST, PTRAST, STEP, PIMASTER, PAMASTER, COMP,
4918
* KEEP,KEEP8, ITLOC,
5010
& LBUFR_BYTES, IWPOS,
5012
& IPTRLU, LRLU, LRLUS, NBPROCFILS,
5013
& N, IW, LIW, A, LA,
5014
& PTRIST, PTRAST, STEP, PIMASTER, PAMASTER, COMP,
5015
& KEEP,KEEP8, ITLOC,
4920
5017
SUBNAME="DMUMPS_266"
4921
5018
IF ( IFLAG .LT. 0 ) GO to 500
4922
5019
ELSEIF ( MSGTAG .EQ. MAITRE2 ) THEN
4923
5020
CALL DMUMPS_268(MYID,BUFR, LBUFR, LBUFR_BYTES,
4924
* PROCNODE_STEPS, SLAVEF, IWPOS, IWPOSCB,
4925
* IPTRLU, LRLU, LRLUS, N, IW, LIW, A, LA,
4926
* PTRIST, PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, COMP,
4927
* IFLAG, IERROR, COMM, COMM_LOAD, NBPROCFILS,
4928
* IPOOL, LPOOL, LEAF,
4929
* KEEP,KEEP8, ND, FILS, FRERE, ITLOC,
4930
* ISTEP_TO_INIV2, TAB_POS_IN_PERE )
5021
& PROCNODE_STEPS, SLAVEF, IWPOS, IWPOSCB,
5022
& IPTRLU, LRLU, LRLUS, N, IW, LIW, A, LA,
5023
& PTRIST, PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, COMP,
5024
& IFLAG, IERROR, COMM, COMM_LOAD, NBPROCFILS,
5025
& IPOOL, LPOOL, LEAF,
5026
& KEEP,KEEP8, ND, FILS, FRERE, ITLOC,
5027
& ISTEP_TO_INIV2, TAB_POS_IN_PERE )
4931
5028
SUBNAME="DMUMPS_268"
4932
5029
IF ( IFLAG .LT. 0 ) GO to 500
4933
5030
ELSEIF ( MSGTAG .EQ. BLOC_FACTO ) THEN
4934
5031
CALL DMUMPS_264( COMM_LOAD, ASS_IRECV,
4935
* BUFR, LBUFR, LBUFR_BYTES,
4936
* PROCNODE_STEPS, MSGSOU,
4937
* SLAVEF, IWPOS, IWPOSCB, IPTRLU, LRLU, LRLUS, N, IW, LIW,
4938
* A, LA, PTRIST, PTRAST, NSTK_S, NBPROCFILS,
4939
* COMP, STEP, PIMASTER, PAMASTER, POSFAC,
4940
* MYID, COMM , IFLAG, IERROR, NBFIN,
4942
* PTLUST_S, PTRFAC, root, OPASSW, OPELIW, ITLOC, FILS,
4943
* PTRARW, PTRAIW, INTARR, DBLARR,
4944
* ICNTL, KEEP,KEEP8, IPOOL, LPOOL, LEAF, ND, FRERE,
4945
* LPTRAR, NELT, FRTPTR, FRTELT,
4946
* ISTEP_TO_INIV2, TAB_POS_IN_PERE )
5032
& BUFR, LBUFR, LBUFR_BYTES,
5033
& PROCNODE_STEPS, MSGSOU,
5034
& SLAVEF, IWPOS, IWPOSCB, IPTRLU, LRLU, LRLUS, N, IW, LIW,
5035
& A, LA, PTRIST, PTRAST, NSTK_S, NBPROCFILS,
5036
& COMP, STEP, PIMASTER, PAMASTER, POSFAC,
5037
& MYID, COMM , IFLAG, IERROR, NBFIN,
5039
& PTLUST_S, PTRFAC, root, OPASSW, OPELIW, ITLOC, FILS,
5040
& PTRARW, PTRAIW, INTARR, DBLARR,
5041
& ICNTL, KEEP,KEEP8, IPOOL, LPOOL, LEAF, ND, FRERE,
5042
& LPTRAR, NELT, FRTPTR, FRTELT,
5043
& ISTEP_TO_INIV2, TAB_POS_IN_PERE )
4947
5044
ELSEIF ( MSGTAG .EQ. BLOC_FACTO_SYM_SLAVE ) THEN
4948
5045
CALL DMUMPS_263( COMM_LOAD, ASS_IRECV,
4950
* LBUFR_BYTES, PROCNODE_STEPS, MSGSOU,
4951
* SLAVEF, IWPOS, IWPOSCB, IPTRLU, LRLU, LRLUS, N, IW, LIW,
4952
* A, LA, PTRIST, PTRAST, NSTK_S, NBPROCFILS,
4953
* COMP, STEP, PIMASTER, PAMASTER, POSFAC,
4954
* MYID, COMM, IFLAG, IERROR, NBFIN,
4956
* PTLUST_S, PTRFAC, root, OPASSW, OPELIW, ITLOC, FILS,
4957
* PTRARW, PTRAIW, INTARR, DBLARR,
4958
* ICNTL, KEEP,KEEP8, IPOOL, LPOOL, LEAF, ND, FRERE,
4959
* LPTRAR, NELT, FRTPTR, FRTELT,
4960
* ISTEP_TO_INIV2, TAB_POS_IN_PERE )
5047
& LBUFR_BYTES, PROCNODE_STEPS, MSGSOU,
5048
& SLAVEF, IWPOS, IWPOSCB, IPTRLU, LRLU, LRLUS, N, IW, LIW,
5049
& A, LA, PTRIST, PTRAST, NSTK_S, NBPROCFILS,
5050
& COMP, STEP, PIMASTER, PAMASTER, POSFAC,
5051
& MYID, COMM, IFLAG, IERROR, NBFIN,
5053
& PTLUST_S, PTRFAC, root, OPASSW, OPELIW, ITLOC, FILS,
5054
& PTRARW, PTRAIW, INTARR, DBLARR,
5055
& ICNTL, KEEP,KEEP8, IPOOL, LPOOL, LEAF, ND, FRERE,
5056
& LPTRAR, NELT, FRTPTR, FRTELT,
5057
& ISTEP_TO_INIV2, TAB_POS_IN_PERE )
4961
5058
ELSEIF ( MSGTAG .EQ. BLOC_FACTO_SYM ) THEN
4962
5059
CALL DMUMPS_274( COMM_LOAD, ASS_IRECV,
4964
* LBUFR_BYTES, PROCNODE_STEPS, MSGSOU,
4965
* SLAVEF, IWPOS, IWPOSCB, IPTRLU, LRLU, LRLUS, N, IW, LIW,
4966
* A, LA, PTRIST, PTRAST, NSTK_S, NBPROCFILS,
4967
* COMP, STEP, PIMASTER, PAMASTER, POSFAC,
4968
* MYID, COMM, IFLAG, IERROR, NBFIN,
4970
* PTLUST_S, PTRFAC, root, OPASSW, OPELIW, ITLOC, FILS,
4971
* PTRARW, PTRAIW, INTARR, DBLARR,
4972
* ICNTL, KEEP,KEEP8, IPOOL, LPOOL, LEAF, ND, FRERE,
4973
* LPTRAR, NELT, FRTPTR, FRTELT,
4974
* ISTEP_TO_INIV2, TAB_POS_IN_PERE )
5061
& LBUFR_BYTES, PROCNODE_STEPS, MSGSOU,
5062
& SLAVEF, IWPOS, IWPOSCB, IPTRLU, LRLU, LRLUS, N, IW, LIW,
5063
& A, LA, PTRIST, PTRAST, NSTK_S, NBPROCFILS,
5064
& COMP, STEP, PIMASTER, PAMASTER, POSFAC,
5065
& MYID, COMM, IFLAG, IERROR, NBFIN,
5067
& PTLUST_S, PTRFAC, root, OPASSW, OPELIW, ITLOC, FILS,
5068
& PTRARW, PTRAIW, INTARR, DBLARR,
5069
& ICNTL, KEEP,KEEP8, IPOOL, LPOOL, LEAF, ND, FRERE,
5070
& LPTRAR, NELT, FRTPTR, FRTELT,
5071
& ISTEP_TO_INIV2, TAB_POS_IN_PERE )
4975
5072
ELSEIF ( MSGTAG .EQ. CONTRIB_TYPE2 ) THEN
4976
5073
CALL DMUMPS_699( COMM_LOAD, ASS_IRECV,
4977
* MSGLEN, BUFR, LBUFR,
4978
* LBUFR_BYTES, PROCNODE_STEPS,
4979
* SLAVEF, IWPOS, IWPOSCB, IPTRLU, LRLU, LRLUS, POSFAC,
4980
* N, IW, LIW, A, LA, PTRIST,
4981
* PTLUST_S, PTRFAC, PTRAST,
4982
* STEP, PIMASTER, PAMASTER, NBPROCFILS, COMP, root,
4983
* OPASSW, OPELIW, ITLOC, NSTK_S,
4984
* FILS, PTRARW, PTRAIW, INTARR, DBLARR, NBFIN, MYID, COMM,
4985
* ICNTL, KEEP,KEEP8, IFLAG, IERROR, IPOOL, LPOOL, LEAF,
4986
* ND, FRERE, LPTRAR, NELT, FRTPTR, FRTELT,
4987
* ISTEP_TO_INIV2, TAB_POS_IN_PERE )
5074
& MSGLEN, BUFR, LBUFR,
5075
& LBUFR_BYTES, PROCNODE_STEPS,
5076
& SLAVEF, IWPOS, IWPOSCB, IPTRLU, LRLU, LRLUS, POSFAC,
5077
& N, IW, LIW, A, LA, PTRIST,
5078
& PTLUST_S, PTRFAC, PTRAST,
5079
& STEP, PIMASTER, PAMASTER, NBPROCFILS, COMP, root,
5080
& OPASSW, OPELIW, ITLOC, NSTK_S,
5081
& FILS, PTRARW, PTRAIW, INTARR, DBLARR, NBFIN, MYID, COMM,
5082
& ICNTL, KEEP,KEEP8, IFLAG, IERROR, IPOOL, LPOOL, LEAF,
5083
& ND, FRERE, LPTRAR, NELT, FRTPTR, FRTELT,
5084
& ISTEP_TO_INIV2, TAB_POS_IN_PERE )
4988
5085
IF ( IFLAG .LT. 0 ) GO TO 100
4989
5086
ELSEIF ( MSGTAG .EQ. MAPLIG ) THEN
4999
5096
INIV2 = ISTEP_TO_INIV2 ( STEP(INODE) )
5000
5097
ISHIFT = NSLAVES_PERE+1
5001
5098
TAB_POS_IN_PERE(1:NSLAVES_PERE+1, INIV2) =
5002
* BUFR(HDMAPLIG+1:HDMAPLIG+1+NSLAVES_PERE)
5099
& BUFR(HDMAPLIG+1:HDMAPLIG+1+NSLAVES_PERE)
5003
5100
TAB_POS_IN_PERE(SLAVEF+2, INIV2) = NSLAVES_PERE
5007
5104
IBEG = HDMAPLIG+1+ISHIFT
5008
5105
CALL DMUMPS_210( COMM_LOAD, ASS_IRECV,
5009
* BUFR, LBUFR, LBUFR_BYTES,
5010
* INODE, ISON, NSLAVES_PERE,
5012
* NFRONT_PERE, NASS_PERE, NFS4FATHER,LMAP,
5013
* BUFR(IBEG+NSLAVES_PERE),
5014
* PROCNODE_STEPS, SLAVEF, POSFAC, IWPOS, IWPOSCB,
5015
* IPTRLU, LRLU, LRLUS, N, IW, LIW, A, LA,
5016
* PTRIST, PTLUST_S, PTRFAC, PTRAST, STEP, PIMASTER, PAMASTER,
5018
* IFLAG, IERROR, MYID, COMM, NBPROCFILS,
5019
* IPOOL, LPOOL, LEAF, NBFIN, ICNTL, KEEP,KEEP8, root,
5021
* ITLOC, FILS, PTRARW, PTRAIW, INTARR, DBLARR,
5022
* ND, FRERE, LPTRAR, NELT, FRTPTR, FRTELT,
5024
* ISTEP_TO_INIV2, TAB_POS_IN_PERE
5106
& BUFR, LBUFR, LBUFR_BYTES,
5107
& INODE, ISON, NSLAVES_PERE,
5109
& NFRONT_PERE, NASS_PERE, NFS4FATHER,LMAP,
5110
& BUFR(IBEG+NSLAVES_PERE),
5111
& PROCNODE_STEPS, SLAVEF, POSFAC, IWPOS, IWPOSCB,
5112
& IPTRLU, LRLU, LRLUS, N, IW, LIW, A, LA,
5113
& PTRIST, PTLUST_S, PTRFAC, PTRAST, STEP, PIMASTER, PAMASTER,
5115
& IFLAG, IERROR, MYID, COMM, NBPROCFILS,
5116
& IPOOL, LPOOL, LEAF, NBFIN, ICNTL, KEEP,KEEP8, root,
5118
& ITLOC, FILS, PTRARW, PTRAIW, INTARR, DBLARR,
5119
& ND, FRERE, LPTRAR, NELT, FRTPTR, FRTELT,
5121
& ISTEP_TO_INIV2, TAB_POS_IN_PERE
5026
5123
IF ( IFLAG .LT. 0 ) GO TO 100
5027
ELSE IF ( MSGTAG .EQ. FACTOR ) THEN
5028
CALL DMUMPS_267( BUFR, LBUFR, LBUFR_BYTES,
5030
* STEP, PTLUST_S, KEEP(10), KEEP(28),
5031
* SLAVEF, IW, LIW, A, LA, COMM, KEEP(IXSZ) )
5032
5124
ELSE IF ( MSGTAG .EQ. ROOT_CONT_STATIC ) THEN
5033
5125
CALL DMUMPS_700(
5034
* BUFR, LBUFR, LBUFR_BYTES,
5035
* root, N, IW, LIW, A, LA, NBPROCFILS,
5036
* LRLU, IPTRLU, IWPOS, IWPOSCB,
5037
* PTRIST, PTLUST_S, PTRFAC, PTRAST,
5038
* STEP, PIMASTER, PAMASTER,
5039
* COMP, LRLUS, IPOOL, LPOOL, LEAF,
5040
* FILS, MYID, PTRAIW, PTRARW, INTARR, DBLARR,
5041
* KEEP,KEEP8, IFLAG, IERROR, COMM, COMM_LOAD, ITLOC,
5042
* ND, PROCNODE_STEPS, SLAVEF)
5126
& BUFR, LBUFR, LBUFR_BYTES,
5127
& root, N, IW, LIW, A, LA, NBPROCFILS,
5128
& LRLU, IPTRLU, IWPOS, IWPOSCB,
5129
& PTRIST, PTLUST_S, PTRFAC, PTRAST,
5130
& STEP, PIMASTER, PAMASTER,
5131
& COMP, LRLUS, IPOOL, LPOOL, LEAF,
5132
& FILS, MYID, PTRAIW, PTRARW, INTARR, DBLARR,
5133
& KEEP,KEEP8, IFLAG, IERROR, COMM, COMM_LOAD, ITLOC,
5134
& ND, PROCNODE_STEPS, SLAVEF)
5043
5135
SUBNAME="DMUMPS_700"
5044
5136
IF ( IFLAG .LT. 0 ) GO TO 500
5045
5137
ELSE IF ( MSGTAG .EQ. ROOT_NON_ELIM_CB ) THEN
5046
5138
IROOT = KEEP( 38 )
5047
5139
MSGSOU = MUMPS_275( STEP(IROOT), PROCNODE_STEPS,
5049
5141
IF ( PTLUST_S( STEP(IROOT)) .EQ. 0 ) THEN
5050
5142
CALL MPI_RECV( TMP, 2 * KEEP(34), MPI_PACKED,
5051
* MSGSOU, ROOT_2SLAVE,
5052
* COMM, STATUS, IERR )
5143
& MSGSOU, ROOT_2SLAVE,
5144
& COMM, STATUS, IERR )
5053
5145
CALL DMUMPS_270( TMP( 1 ), TMP( 2 ),
5055
* BUFR, LBUFR, LBUFR_BYTES, PROCNODE_STEPS, POSFAC,
5056
* IWPOS, IWPOSCB, IPTRLU,
5057
* LRLU, LRLUS, N, IW, LIW, A, LA, PTRIST,
5059
* PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, COMP,
5060
* IFLAG, IERROR, COMM, COMM_LOAD,
5062
* IPOOL, LPOOL, LEAF,
5063
* NBFIN, MYID, SLAVEF,
5065
* OPASSW, OPELIW, ITLOC, FILS, PTRARW, PTRAIW,
5066
* INTARR, DBLARR, ICNTL, KEEP,KEEP8, ND )
5147
& BUFR, LBUFR, LBUFR_BYTES, PROCNODE_STEPS, POSFAC,
5148
& IWPOS, IWPOSCB, IPTRLU,
5149
& LRLU, LRLUS, N, IW, LIW, A, LA, PTRIST,
5151
& PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, COMP,
5152
& IFLAG, IERROR, COMM, COMM_LOAD,
5154
& IPOOL, LPOOL, LEAF,
5155
& NBFIN, MYID, SLAVEF,
5157
& OPASSW, OPELIW, ITLOC, FILS, PTRARW, PTRAIW,
5158
& INTARR, DBLARR, ICNTL, KEEP,KEEP8, ND )
5067
5159
SUBNAME="DMUMPS_270"
5068
5160
IF ( IFLAG .LT. 0 ) GOTO 500
5070
5162
CALL DMUMPS_700(
5071
* BUFR, LBUFR, LBUFR_BYTES,
5072
* root, N, IW, LIW, A, LA, NBPROCFILS,
5073
* LRLU, IPTRLU, IWPOS, IWPOSCB,
5074
* PTRIST, PTLUST_S, PTRFAC, PTRAST, STEP, PIMASTER, PAMASTER,
5075
* COMP, LRLUS, IPOOL, LPOOL, LEAF,
5076
* FILS, MYID, PTRAIW, PTRARW, INTARR, DBLARR,
5077
* KEEP,KEEP8, IFLAG, IERROR, COMM, COMM_LOAD, ITLOC,
5078
* ND, PROCNODE_STEPS, SLAVEF )
5163
& BUFR, LBUFR, LBUFR_BYTES,
5164
& root, N, IW, LIW, A, LA, NBPROCFILS,
5165
& LRLU, IPTRLU, IWPOS, IWPOSCB,
5166
& PTRIST, PTLUST_S, PTRFAC, PTRAST, STEP, PIMASTER, PAMASTER,
5167
& COMP, LRLUS, IPOOL, LPOOL, LEAF,
5168
& FILS, MYID, PTRAIW, PTRARW, INTARR, DBLARR,
5169
& KEEP,KEEP8, IFLAG, IERROR, COMM, COMM_LOAD, ITLOC,
5170
& ND, PROCNODE_STEPS, SLAVEF )
5079
5171
SUBNAME="DMUMPS_700"
5080
5172
IF ( IFLAG .LT. 0 ) GO TO 500
5081
5173
ELSE IF ( MSGTAG .EQ. ROOT_2SON ) THEN
5082
5174
ISON = BUFR( 1 )
5083
5175
NELIM = BUFR( 2 )
5084
5176
CALL DMUMPS_271( COMM_LOAD, ASS_IRECV,
5085
* ISON, NELIM, root,
5086
* BUFR, LBUFR, LBUFR_BYTES, PROCNODE_STEPS, POSFAC,
5087
* IWPOS, IWPOSCB, IPTRLU,
5088
* LRLU, LRLUS, N, IW, LIW, A, LA, PTRIST,
5090
* PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, COMP,
5091
* IFLAG, IERROR, COMM,
5093
* IPOOL, LPOOL, LEAF,
5094
* NBFIN, MYID, SLAVEF,
5096
* OPASSW, OPELIW, ITLOC, FILS, PTRARW, PTRAIW,
5097
* INTARR, DBLARR, ICNTL, KEEP,KEEP8, ND, FRERE,
5098
* LPTRAR, NELT, FRTPTR, FRTELT,
5099
* ISTEP_TO_INIV2, TAB_POS_IN_PERE )
5177
& ISON, NELIM, root,
5178
& BUFR, LBUFR, LBUFR_BYTES, PROCNODE_STEPS, POSFAC,
5179
& IWPOS, IWPOSCB, IPTRLU,
5180
& LRLU, LRLUS, N, IW, LIW, A, LA, PTRIST,
5182
& PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, COMP,
5183
& IFLAG, IERROR, COMM,
5185
& IPOOL, LPOOL, LEAF,
5186
& NBFIN, MYID, SLAVEF,
5188
& OPASSW, OPELIW, ITLOC, FILS, PTRARW, PTRAIW,
5189
& INTARR, DBLARR, ICNTL, KEEP,KEEP8, ND, FRERE,
5190
& LPTRAR, NELT, FRTPTR, FRTELT,
5191
& ISTEP_TO_INIV2, TAB_POS_IN_PERE )
5100
5192
IF ( IFLAG .LT. 0 ) GO TO 100
5101
5193
IF (MYID.NE.MUMPS_275(STEP(ISON),
5102
* PROCNODE_STEPS, SLAVEF)) THEN
5194
& PROCNODE_STEPS, SLAVEF)) THEN
5103
5195
IF (KEEP(50).EQ.0) THEN
5104
5196
IF (IW(PTRIST(STEP(ISON))+6+KEEP(IXSZ)).EQ.
5105
5197
& S_REC_CONTSTATIC) THEN
5106
5198
IW(PTRIST(STEP(ISON))+6+KEEP(IXSZ)) = S_ROOT2SON_CALLED
5108
5200
CALL DMUMPS_626( N, ISON, PTRIST, PTRAST,
5109
* IW, LIW, A, LA, LRLU, LRLUS, IWPOSCB,
5110
* IPTRLU, STEP, MYID, KEEP
5201
& IW, LIW, A, LA, LRLU, LRLUS, IWPOSCB,
5202
& IPTRLU, STEP, MYID, KEEP
5114
5206
IF (IW(PTRIST(STEP(ISON))+8+KEEP(IXSZ)).EQ.
5126
5218
TOT_ROOT_SIZE = BUFR( 1 )
5127
5219
TOT_CONT_TO_RECV = BUFR( 2 )
5128
5220
CALL DMUMPS_270( TOT_ROOT_SIZE,
5129
* TOT_CONT_TO_RECV, root,
5130
* BUFR, LBUFR, LBUFR_BYTES, PROCNODE_STEPS, POSFAC,
5131
* IWPOS, IWPOSCB, IPTRLU,
5132
* LRLU, LRLUS, N, IW, LIW, A, LA, PTRIST,
5134
* PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, COMP,
5135
* IFLAG, IERROR, COMM, COMM_LOAD,
5137
* IPOOL, LPOOL, LEAF,
5138
* NBFIN, MYID, SLAVEF,
5140
* OPASSW, OPELIW, ITLOC, FILS, PTRARW, PTRAIW,
5141
* INTARR, DBLARR, ICNTL, KEEP,KEEP8, ND )
5221
& TOT_CONT_TO_RECV, root,
5222
& BUFR, LBUFR, LBUFR_BYTES, PROCNODE_STEPS, POSFAC,
5223
& IWPOS, IWPOSCB, IPTRLU,
5224
& LRLU, LRLUS, N, IW, LIW, A, LA, PTRIST,
5226
& PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, COMP,
5227
& IFLAG, IERROR, COMM, COMM_LOAD,
5229
& IPOOL, LPOOL, LEAF,
5230
& NBFIN, MYID, SLAVEF,
5232
& OPASSW, OPELIW, ITLOC, FILS, PTRARW, PTRAIW,
5233
& INTARR, DBLARR, ICNTL, KEEP,KEEP8, ND )
5142
5234
IF ( IFLAG .LT. 0 ) GO TO 100
5143
5235
ELSE IF ( MSGTAG .EQ. ROOT_NELIM_INDICES ) THEN
5144
5236
ISON = BUFR( 1 )
5145
5237
NELIM = BUFR( 2 )
5146
5238
NSLAVES_PERE = BUFR( 3 )
5147
5239
CALL DMUMPS_273( root,
5148
* ISON, NELIM, NSLAVES_PERE, BUFR(4), BUFR(4+BUFR(2)),
5149
* BUFR(4+2*BUFR(2)),
5152
* IWPOS, IWPOSCB, IPTRLU,
5153
* LRLU, LRLUS, N, IW, LIW, A, LA, PTRIST,
5155
* PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, ITLOC, COMP,
5157
* IPOOL, LPOOL, LEAF, MYID, SLAVEF, KEEP,KEEP8,
5158
* COMM, COMM_LOAD, FILS, ND)
5240
& ISON, NELIM, NSLAVES_PERE, BUFR(4), BUFR(4+BUFR(2)),
5241
& BUFR(4+2*BUFR(2)),
5244
& IWPOS, IWPOSCB, IPTRLU,
5245
& LRLU, LRLUS, N, IW, LIW, A, LA, PTRIST,
5247
& PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, ITLOC, COMP,
5249
& IPOOL, LPOOL, LEAF, MYID, SLAVEF, KEEP,KEEP8,
5250
& COMM, COMM_LOAD, FILS, ND)
5159
5251
SUBNAME="DMUMPS_273"
5160
5252
IF ( IFLAG .LT. 0 ) GO TO 500
5161
5253
ELSE IF ( MSGTAG .EQ. UPDATE_LOAD ) THEN
5254
5348
IERROR = MSGLEN
5255
5349
WRITE(*,*) ' RECEPTION BUF TOO SMALL, Msgtag/len=',
5257
5351
CALL DMUMPS_44( MYID, SLAVEF, COMM )
5260
5354
CALL MPI_RECV( BUFR, LBUFR_BYTES, MPI_PACKED, MSGSOU,
5262
* COMM, STATUS, IERR )
5356
& COMM, STATUS, IERR )
5263
5357
CALL DMUMPS_322(
5264
* COMM_LOAD, ASS_IRECV,
5265
* MSGSOU, MSGTAG, MSGLEN, BUFR, LBUFR,
5267
* PROCNODE_STEPS, POSFAC,
5268
* IWPOS, IWPOSCB, IPTRLU,
5269
* LRLU, LRLUS, N, IW, LIW, A, LA, PTRIST,
5271
* PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, COMP, IFLAG,
5274
* IPOOL, LPOOL, LEAF, NBFIN, MYID, SLAVEF,
5276
* root, OPASSW, OPELIW, ITLOC, FILS, PTRARW, PTRAIW,
5277
* INTARR, DBLARR, ICNTL, KEEP,KEEP8, ND, FRERE,
5278
* LPTRAR, NELT, FRTPTR, FRTELT,
5280
* ISTEP_TO_INIV2, TAB_POS_IN_PERE
5358
& COMM_LOAD, ASS_IRECV,
5359
& MSGSOU, MSGTAG, MSGLEN, BUFR, LBUFR,
5361
& PROCNODE_STEPS, POSFAC,
5362
& IWPOS, IWPOSCB, IPTRLU,
5363
& LRLU, LRLUS, N, IW, LIW, A, LA, PTRIST,
5365
& PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, COMP, IFLAG,
5368
& IPOOL, LPOOL, LEAF, NBFIN, MYID, SLAVEF,
5370
& root, OPASSW, OPELIW, ITLOC, FILS, PTRARW, PTRAIW,
5371
& INTARR, DBLARR, ICNTL, KEEP,KEEP8, ND, FRERE,
5372
& LPTRAR, NELT, FRTPTR, FRTELT,
5374
& ISTEP_TO_INIV2, TAB_POS_IN_PERE
5283
5377
END SUBROUTINE DMUMPS_280
5284
5378
RECURSIVE SUBROUTINE DMUMPS_329(
5285
* COMM_LOAD, ASS_IRECV, BLOCKING, SET_IRECV,
5286
* MESSAGE_RECEIVED, MSGSOU, MSGTAG,
5288
* BUFR, LBUFR, LBUFR_BYTES, PROCNODE_STEPS, POSFAC,
5289
* IWPOS, IWPOSCB, IPTRLU,
5290
* LRLU, LRLUS, N, IW, LIW, A, LA, PTRIST,
5292
* PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, COMP,
5293
* IFLAG, IERROR, COMM,
5295
* IPOOL, LPOOL, LEAF,
5296
* NBFIN, MYID, SLAVEF,
5298
* root, OPASSW, OPELIW, ITLOC, FILS, PTRARW, PTRAIW,
5299
* INTARR, DBLARR, ICNTL, KEEP,KEEP8, ND, FRERE,
5300
* LPTRAR, NELT, FRTPTR, FRTELT,
5302
* ISTEP_TO_INIV2, TAB_POS_IN_PERE,
5303
* STACK_RIGHT_AUTHORIZED
5379
& COMM_LOAD, ASS_IRECV, BLOCKING, SET_IRECV,
5380
& MESSAGE_RECEIVED, MSGSOU, MSGTAG,
5382
& BUFR, LBUFR, LBUFR_BYTES, PROCNODE_STEPS, POSFAC,
5383
& IWPOS, IWPOSCB, IPTRLU,
5384
& LRLU, LRLUS, N, IW, LIW, A, LA, PTRIST,
5386
& PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, COMP,
5387
& IFLAG, IERROR, COMM,
5389
& IPOOL, LPOOL, LEAF,
5390
& NBFIN, MYID, SLAVEF,
5392
& root, OPASSW, OPELIW, ITLOC, FILS, PTRARW, PTRAIW,
5393
& INTARR, DBLARR, ICNTL, KEEP,KEEP8, ND, FRERE,
5394
& LPTRAR, NELT, FRTPTR, FRTELT,
5396
& ISTEP_TO_INIV2, TAB_POS_IN_PERE,
5397
& STACK_RIGHT_AUTHORIZED
5305
5399
USE DMUMPS_LOAD
5307
5401
INCLUDE 'dmumps_root.h'
5401
5498
CALL MPI_GET_COUNT( STATUS, MPI_PACKED, MSGLEN_LOC, IERR )
5402
5499
IF (.NOT.RIGHT_MESS) RECURS = RECURS + 10
5403
5500
CALL DMUMPS_322( COMM_LOAD, ASS_IRECV,
5404
* MSGSOU_LOC, MSGTAG_LOC, MSGLEN_LOC, BUFR, LBUFR,
5406
* PROCNODE_STEPS, POSFAC,
5407
* IWPOS, IWPOSCB, IPTRLU,
5408
* LRLU, LRLUS, N, IW, LIW, A, LA,
5409
* PTRIST, PTLUST_S, PTRFAC,
5410
* PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, COMP, IFLAG,
5413
* IPOOL, LPOOL, LEAF, NBFIN, MYID, SLAVEF,
5415
* root, OPASSW, OPELIW, ITLOC, FILS,
5417
* INTARR, DBLARR, ICNTL, KEEP,KEEP8, ND, FRERE,
5418
* LPTRAR, NELT, FRTPTR, FRTELT,
5419
* ISTEP_TO_INIV2, TAB_POS_IN_PERE )
5501
& MSGSOU_LOC, MSGTAG_LOC, MSGLEN_LOC, BUFR, LBUFR,
5503
& PROCNODE_STEPS, POSFAC,
5504
& IWPOS, IWPOSCB, IPTRLU,
5505
& LRLU, LRLUS, N, IW, LIW, A, LA,
5506
& PTRIST, PTLUST_S, PTRFAC,
5507
& PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, COMP, IFLAG,
5510
& IPOOL, LPOOL, LEAF, NBFIN, MYID, SLAVEF,
5512
& root, OPASSW, OPELIW, ITLOC, FILS,
5514
& INTARR, DBLARR, ICNTL, KEEP,KEEP8, ND, FRERE,
5515
& LPTRAR, NELT, FRTPTR, FRTELT,
5516
& ISTEP_TO_INIV2, TAB_POS_IN_PERE )
5420
5517
IF (.NOT.RIGHT_MESS) RECURS = RECURS - 10
5421
5518
IF ( IFLAG .LT. 0 ) RETURN
5422
5519
IF (.NOT.RIGHT_MESS) THEN
5423
5520
IF (ASS_IRECV .NE. MPI_REQUEST_NULL) THEN
5426
5523
CALL MPI_IPROBE(MSGSOU,MSGTAG,
5427
* COMM, FLAGbis, STATUS, IERR)
5524
& COMM, FLAGbis, STATUS, IERR)
5428
5525
IF (FLAGbis) THEN
5429
5526
MSGSOU_LOC = STATUS( MPI_SOURCE )
5430
5527
MSGTAG_LOC = STATUS( MPI_TAG )
5431
5528
CALL DMUMPS_280( COMM_LOAD, ASS_IRECV,
5432
* STATUS, BUFR, LBUFR,
5434
* PROCNODE_STEPS, POSFAC,
5435
* IWPOS, IWPOSCB, IPTRLU,
5436
* LRLU, LRLUS, N, IW, LIW, A, LA,
5437
* PTRIST, PTLUST_S, PTRFAC,
5438
* PTRAST, STEP, PIMASTER, PAMASTER,
5439
* NSTK_S, COMP, IFLAG,
5442
* IPOOL, LPOOL, LEAF,
5443
* NBFIN, MYID, SLAVEF,
5445
* root, OPASSW, OPELIW, ITLOC,
5446
* FILS, PTRARW, PTRAIW,
5447
* INTARR, DBLARR, ICNTL,
5448
* KEEP,KEEP8, ND, FRERE,
5449
* LPTRAR, NELT, FRTPTR, FRTELT,
5450
* ISTEP_TO_INIV2, TAB_POS_IN_PERE )
5529
& STATUS, BUFR, LBUFR,
5531
& PROCNODE_STEPS, POSFAC,
5532
& IWPOS, IWPOSCB, IPTRLU,
5533
& LRLU, LRLUS, N, IW, LIW, A, LA,
5534
& PTRIST, PTLUST_S, PTRFAC,
5535
& PTRAST, STEP, PIMASTER, PAMASTER,
5536
& NSTK_S, COMP, IFLAG,
5539
& IPOOL, LPOOL, LEAF,
5540
& NBFIN, MYID, SLAVEF,
5542
& root, OPASSW, OPELIW, ITLOC,
5543
& FILS, PTRARW, PTRAIW,
5544
& INTARR, DBLARR, ICNTL,
5545
& KEEP,KEEP8, ND, FRERE,
5546
& LPTRAR, NELT, FRTPTR, FRTELT,
5547
& ISTEP_TO_INIV2, TAB_POS_IN_PERE )
5451
5548
IF ( IFLAG .LT. 0 ) RETURN
5456
5553
IF (BLOCKING) THEN
5457
5554
CALL MPI_PROBE(MSGSOU,MSGTAG,
5458
* COMM, STATUS, IERR)
5555
& COMM, STATUS, IERR)
5461
5558
CALL MPI_IPROBE(MPI_ANY_SOURCE,MPI_ANY_TAG,
5462
* COMM, FLAG, STATUS, IERR)
5559
& COMM, FLAG, STATUS, IERR)
5465
5562
MSGSOU_LOC = STATUS( MPI_SOURCE )
5466
5563
MSGTAG_LOC = STATUS( MPI_TAG )
5467
5564
MESSAGE_RECEIVED = .TRUE.
5468
5565
CALL DMUMPS_280( COMM_LOAD, ASS_IRECV,
5469
* STATUS, BUFR, LBUFR,
5471
* PROCNODE_STEPS, POSFAC,
5472
* IWPOS, IWPOSCB, IPTRLU,
5473
* LRLU, LRLUS, N, IW, LIW, A, LA,
5474
* PTRIST, PTLUST_S, PTRFAC,
5475
* PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, COMP, IFLAG,
5478
* IPOOL, LPOOL, LEAF, NBFIN, MYID, SLAVEF,
5480
* root, OPASSW, OPELIW, ITLOC,
5481
* FILS, PTRARW, PTRAIW,
5482
* INTARR, DBLARR, ICNTL, KEEP,KEEP8, ND, FRERE,
5483
* LPTRAR, NELT, FRTPTR, FRTELT,
5484
* ISTEP_TO_INIV2, TAB_POS_IN_PERE )
5566
& STATUS, BUFR, LBUFR,
5568
& PROCNODE_STEPS, POSFAC,
5569
& IWPOS, IWPOSCB, IPTRLU,
5570
& LRLU, LRLUS, N, IW, LIW, A, LA,
5571
& PTRIST, PTLUST_S, PTRFAC,
5572
& PTRAST, STEP, PIMASTER, PAMASTER, NSTK_S, COMP, IFLAG,
5575
& IPOOL, LPOOL, LEAF, NBFIN, MYID, SLAVEF,
5577
& root, OPASSW, OPELIW, ITLOC,
5578
& FILS, PTRARW, PTRAIW,
5579
& INTARR, DBLARR, ICNTL, KEEP,KEEP8, ND, FRERE,
5580
& LPTRAR, NELT, FRTPTR, FRTELT,
5581
& ISTEP_TO_INIV2, TAB_POS_IN_PERE )
5485
5582
IF ( IFLAG .LT. 0 ) RETURN