2487 & (ncbson_max,slavef,keep,keep8,
2488 & procs,mem_distrib,ncb,nfront,
2489 & nslaves_node,tab_pos,
2490 & slaves_list,size_slaves_list,
myid,inode,mp,lp)
2492 INTEGER,
intent(in) :: KEEP(500),SIZE_SLAVES_LIST
2493 INTEGER(8) KEEP8(150)
2494 INTEGER,
intent(in) :: SLAVEF, NFRONT, NCB,MYID
2495 INTEGER,
intent(in) :: NCBSON_MAX
2496 INTEGER,
intent(in) :: PROCS(SLAVEF+1)
2497 INTEGER,
intent(in) :: MEM_DISTRIB(0:SLAVEF-1),INODE
2498 INTEGER,
intent(in) :: MP,
2499 INTEGER,
intent(out):: SLAVES_LIST(SIZE_SLAVES_LIST)
2500 INTEGER,
intent(out):: TAB_POS(SLAVEF+2)
2501 INTEGER,
intent(out):: NSLAVES_NODE
2502 INTEGER ,K47,K48, K50,K83,K69
2506 INTEGER OTHERS,CHOSEN,SMALL_SET,ACC
2507 DOUBLE PRECISION SOMME,TMP_SUM,,A,B,C,MASTER_WORK
2509 INTEGER ADDITIONNAL_ROWS,i,X,REF,POS,NELIM
2511 LOGICAL FORCE_CAND,SMP
2512 DOUBLE PRECISION BANDE_K821
2513 INTEGER NB_SAT,NB_ZERO
2514 DOUBLE PRECISION TEMP(SLAVEF),TOTAL_COST, MAX_MEM_ALLOW
2515 INTEGER TEMP_ID(SLAVEF),NB_ROWS()
2516 INTEGER NSLAVES_REF,NCB_FILS
2517 EXTERNAL MPI_WTIME,MUMPS_GETKMIN
2518 INTEGER MUMPS_GETKMIN
2519 INTEGER POS_MIN_LOAD,SIZE_MY_SMP,WHAT
2520 LOGICAL HAVE_TYPE1_SON
2521 DOUBLE PRECISION ,MAX_LOAD,TEMP_MAX_LOAD
2522 DOUBLE PRECISION MPI_WTIME
2523 DOUBLE PRECISION BUF_SIZE,NELIM_MEM_SIZE
2524 DOUBLE PRECISION MEM_SIZE_STRONG(SLAVEF),MEM_SIZE_WEAK(SLAVEF)
2526 temp_max_load=dble(0)
2533 IF(int(ncb_fils,8)*int(
min(ncb,ncb_fils),8).GT.k821)
THEN
2534 have_type1_son=.true.
2536 have_type1_son=.false.
2539 IF ( keep(24) == 0 .OR. keep(24) == 1 )
THEN
2540 force_cand = .false.
2542 force_cand = (mod(keep(24),2).eq.0)
2545 kmax=int(k821/int(ncb,8))
2547 DO i=1,procs(slavef+1)
2552 number_of_procs=procs(slavef+1)
2553 others=number_of_procs
2555 number_of_procs=slavef
2557 DO i=1,number_of_procs
2559 IF (
wload(i) < -0.5d0 )
THEN
2560 IF((mp.GT.0).AND.(lp.GE.2))
THEN
2561 WRITE(mp,*)myid,
': Negative load ',
2567 others=number_of_procs-1
2569 kmax=int(ncb/others)
2570 kmin=mumps_getkmin(int(ncb,8)*int(kmax,8),k50,kmax,ncb)
2574 total_cost=dble( nelim ) * dble( ncb ) +
2575 & dble(ncb) * dble(nelim)*dble(2*nfront-nelim-1)
2577 total_cost=dble(nelim) * dble( ncb ) *
2584 IF(force_cand.AND.(number_of_procs.GT.k83))
THEN
2585 master_work=dble(keep(88))*master_work/dble(100)
2587 IF(force_cand.AND.(number_of_procs.LE.k83))
THEN
2588 master_work=dble(keep(87))*master_work/dble(100)
2590 IF(master_work.LT.dble(1))
THEN
2593 nslaves_ref=int(total_cost/master_work)+1
2595 nslaves_ref=
min(nslaves_ref,number_of_procs)
2597 nslaves_ref=
min(nslaves_ref,number_of_procs-1)
2599 DO i=1,number_of_procs
2614 somme=somme+temp(others)-temp(i)
2615 tmp_sum=tmp_sum+temp(i)
2617 tmp_sum=(tmp_sum/dble(others))+
2618 & (total_cost/dble(others))
2622 IF(.NOT.smp) max_load=temp(others)
2626 IF(mem_distrib(temp_id(i)).EQ.1)
THEN
2627 IF(temp(i).LE.tmp_sum)
THEN
2638 IF((mem_distrib(temp_id(i)).NE.1).OR.
2639 & ((mem_distrib(temp_id(i)).EQ.1).AND.
2640 & (temp(i).GE.tmp_sum)))
THEN
2651 IF (keep(201).EQ.2)
THEN
2652 a=dble(int((dble(keep(100))/dble(2))/dble(nelim)))
2654 buf_size=
min(buf_size,a*dble(ncb))
2656 buf_size=
min(buf_size,a*a)
2660 DO i=1,number_of_procs
2661 a=dble(
md_mem(temp_id(i)))/
2665 b=dble(int(dble(ncb)/dble(number_of_procs))+1)*
2670 & nfront,
min(ncb,others), j, x8)
2671 b=dble(x8)+(dble(j)*dble(nelim))
2674 mem_size_weak(i)=nelim_mem_size
2700 IF(
min(mem_size_strong(i),mem_size_weak(i)).LT.dble(0))
THEN
2701 IF(mem_size_strong(i).LT.0.0d0)
THEN
2702 mem_size_strong(i)=dble(0)
2704 mem_size_weak(i)=dble(0)
2710 DO i=1,number_of_procs
2736 mem_size_strong(i)=
max(dble(0),mem_size_strong(i))
2737 mem_size_weak(i)=huge(mem_size_weak(i))
2740 IF((((number_of_procs.LE.k83).AND.force_cand).AND.
2741 & (total_cost.GE.somme)).OR.
2742 & (.NOT.force_cand).OR.
2743 & (((number_of_procs+1).GT.k83).AND.force_cand))
THEN
2745 small_set=nslaves_ref
2747 DO i=nslaves_ref,1,-1
2752 somme=(dble(i)*temp(i))-somme
2753 IF(total_cost.GE.somme)
GOTO 444
2758 max_load=temp(small_set)
2760 x=
min(size_my_smp,nslaves_ref)
2764 somme=somme+(temp(x)-temp(j))
2766 IF(somme.GT.total_cost)
THEN
2770 IF(x.LT.size_my_smp)
THEN
2773 max_load=temp(small_set)
2775 x=
min(size_my_smp,nslaves_ref)
2780 IF(temp(i).GT.max_load)
THEN
2781 somme=somme+(dble(i-1)*(temp(i)-max_load))
2785 somme=somme+(max_load-temp(i))
2787 IF(i.EQ.nslaves_ref)
THEN
2788 small_set=nslaves_ref
2792 IF(somme.GT.total_cost)
THEN
2805 max_load=
max(max_load,temp(i))
2807 temp_max_load=max_load
2816 x=int(buf_size/dble(ncb+1))-1
2817 bande_k821=dble(x)*dble(nfront)
2821 c=-buf_size+dble(acc+nelim)
2822 delta=(b*b)-(dble(4)*a*c)
2823 x=int((-b+sqrt(delta))/(dble(2)*a))
2824 IF(x.GT.ncb-acc) x=ncb-acc
2825 bande_k821=dble(x)*dble(nelim+acc+x)
2827 IF(have_type1_son)
THEN
2829 x=int((buf_size-dble(nfront))/dble(nfront+1))
2830 bande_k821=dble(x)*dble(nfront)
2834 c=-buf_size+dble(acc+nelim)
2835 delta=(b*b)-(dble(4)*a*c)
2836 x=int((-b+sqrt(delta))/(dble(2)*a))
2837 IF(x.GT.ncb-acc) x=ncb-acc
2838 bande_k821=dble(x)*dble(nelim+acc+x)
2841 max_mem_allow=bande_k821
2844 &
min(mem_size_weak(i),mem_size_strong(i)),
2846 max_mem_allow=
max(dble(0),max_mem_allow)
2849 kmax=int(max_mem_allow/dble(nfront))
2850 x=int((max_load-temp(i))/
2851 & (dble(nelim)*dble(2*nfront-nelim)))
2853 IF(kmax.GE.kmin)
THEN
2864 IF((acc+x).GT.ncb) x=ncb-acc
2869 c=dble(-max_mem_allow)
2870 delta=((b*b)-(dble(4)*a*c))
2871 kmax=int((-b+sqrt(delta))/(dble(2)*a))
2873 b=dble(nelim)*(dble(nelim)+dble(2*acc+1))
2874 c=-(max_load-temp(i))
2875 delta=(b*b-(dble(4)*a*c))
2876 x=int((-b+sqrt(delta))/(dble(2)*a))
2879 &
': Internal error 1 in CMUMPS_SET_PARTI_FLOP_IRR'
2883 IF(kmax.GE.kmin)
THEN
2894 IF((acc+x).GT.ncb) x=ncb-acc
2900 IF(min_load.GT.temp(i))
THEN
2907 max_load=
max(max_load,
2908 & (temp(i)+(dble(nelim) *
2909 & dble(nb_rows(i)))+
2910 & (dble(nb_rows(i))*dble(nelim)*
2911 & dble(2*nfront-nelim-1))))
2913 max_load=
max(max_load,
2914 & temp(i)+(dble(nelim) * dble(nb_rows(i)))*
2915 & dble(2*(nelim+acc)-nb_rows(i)
2918 IF(tmp_sum.LT.max_load)
THEN
2920 IF(ncb-acc.LT.kmin)
GOTO 888
2921 IF(ncb.EQ.acc)
GOTO 888
2924 &
': Internal error 2 in CMUMPS_SET_PARTI_FLOP_IRR'
2931 IF((acc.GT.ncb))
THEN
2933 &
': Internal error 3 in CMUMPS_SET_PARTI_FLOP_IRR'
2936 IF((acc.LT.ncb))
THEN
2938 IF(small_set.LE.others)
THEN
2939 IF((nb_sat.EQ.small_set).AND.(small_set.LT.
2947 max_load=temp_max_load
2948 additionnal_rows=ncb-acc
2950 & dble(additionnal_rows)*
2951 & dble(2*nfront-additionnal_rows-nelim
2953 somme=somme/dble(small_set-nb_sat)
2966 c=-buf_size+dble(acc+nelim)
2967 delta=(b*b)-(dble(4)*a*c)
2968 x=int((-b+sqrt(delta))/(dble(2)*a))
2969 IF(x.GT.ncb-acc) x=ncb-acc
2970 bande_k821=dble(x)*dble(nelim+acc+x)
2971 IF(have_type1_son)
THEN
2974 c=-buf_size+dble(acc+nelim)
2975 delta=(b*b)-(dble(4)*a*c)
2976 x=int((-b+sqrt(delta))/(dble(2)*a))
2977 IF(x.GT.ncb-acc) x=ncb-acc
2978 bande_k821=dble(x)*dble(nelim+acc+x)
2980 max_mem_allow=bande_k821
2983 &
min(mem_size_weak(j),mem_size_strong(j)),
2985 max_mem_allow=
max(dble(0),
2990 c=dble(-max_mem_allow)
2991 delta=((b*b)-(dble(4)*a*c))
2992 kmax=int((-b+sqrt(delta))/(dble(2)*a))
2994 b=(dble(nelim)*dble(nelim+2*acc+1))
2995 c=-(max_load-temp(j)+somme)
2996 delta=(b*b-(dble(4)*a*c))
2997 x=int((-b+sqrt(delta))/(dble(2)*a))
3001 &
': Internal error 4 in CMUMPS_SET_PARTI_FLOP_IRR'
3005 IF(kmax.GE.kmin)
THEN
3013 IF(x.LT.
min(kmin,kmax))
THEN
3018 IF((acc+x).GT.ncb) x=ncb-acc
3021 IF(min_load.GT.temp(j))
THEN
3029 temp_max_load=
max(temp_max_load,
3030 & temp(j)+(dble(nelim) *
3031 & dble(nb_rows(j)))*
3035 IF(ref.LE.number_of_procs-1)
THEN
3037 IF(small_set.LT.nslaves_ref)
THEN
3045 IF(ncb.EQ.acc)
GOTO 666
3047 IF(nb_sat.EQ.small_set)
THEN
3048 IF(small_set.LT.nslaves_ref)
THEN
3057 IF(nb_zero.EQ.small_set)
THEN
3058 IF(small_set.LT.nslaves_ref)
THEN
3067 IF((nb_sat+nb_zero).EQ.small_set)
THEN
3068 IF(small_set.LT.nslaves_ref)
THEN
3079 additionnal_rows=ncb-acc
3080 IF(additionnal_rows.NE.0)
THEN
3081 IF(additionnal_rows.LT.kmin)
THEN
3085 IF(nb_rows(i).NE.0)
THEN
3089 c=-buf_size+dble(j+nelim)
3090 delta=(b*b)-(dble(4)*a*c)
3091 x=int((-b+sqrt(delta))/(dble(2)*a))
3092 IF(x.GT.ncb-j) x=ncb-j
3093 bande_k821=dble(x)*dble(nelim+j+x)
3094 IF(have_type1_son)
THEN
3097 c=-buf_size+dble(j+nelim)
3098 delta=(b*b)-(dble(4)*a*c)
3099 x=int((-b+sqrt(delta))/(dble(2)*a))
3100 IF(x.GT.ncb-j) x=ncb-j
3101 bande_k821=dble(x)*dble(nelim+j+x)
3103 max_mem_allow=bande_k821
3106 &
min(mem_size_weak(i),mem_size_strong(i)),
3108 max_mem_allow=
max(dble(0),
3113 c=dble(-max_mem_allow)
3114 delta=((b*b)-(dble(4)*a*c))
3115 kmax=int((-b+sqrt(delta))/(dble(2)*a))
3116 IF(nb_rows(i).NE.kmax)
THEN
3117 IF(ncb-j.LE.kmax)
THEN
3122 temp_max_load=
max(temp_max_load,
3124 & (dble(nelim) * dble(nb_rows(i)))*
3128 IF(ref.LE.number_of_procs-1)
THEN
3129 IF(temp_max_load.GT.temp(ref+1))
THEN
3130 IF(small_set.LT.nslaves_ref)
THEN
3142 IF(additionnal_rows.NE.0)
THEN
3144 IF(i.NE.small_set)
THEN
3146 IF(nb_rows(i).NE.0)
THEN
3148 &
': Internal error 5 in CMUMPS_SET_PARTI_FLOP_IRR'
3152 nb_rows(i)=nb_rows(i)+additionnal_rows
3159 DO WHILE ((additionnal_rows.NE.0)
3160 & .AND.(i.LE.number_of_procs))
3161 IF((temp(i).LE.max_load))
THEN
3164 c=-buf_size+dble(acc+nelim)
3165 delta=(b*b)-(dble(4)*a*c)
3166 x=int((-b+sqrt(delta))/(dble(2)*a))
3167 IF(x.GT.ncb-acc) x=ncb-acc
3168 bande_k821=dble(x)*dble(nelim+acc+x)
3169 IF(have_type1_son)
THEN
3172 c=-buf_size+dble(acc+nelim)
3173 delta=(b*b)-(dble(4)*a*c)
3174 x=int((-b+sqrt(delta))/(dble(2)*a))
3175 IF(x.GT.ncb-acc) x=ncb-acc
3176 bande_k821=dble(x)*dble(nelim+acc+x)
3178 max_mem_allow=bande_k821
3181 &
min(mem_size_weak(i),mem_size_strong(i)),
3183 max_mem_allow=
max(dble(0),
3188 c=dble(-max_mem_allow)
3189 delta=((b*b)-(dble(4)*a*c))
3190 kmax=int((-b+sqrt(delta))/(dble(2)*a))
3192 b=dble(nelim)*dble(nelim+2*acc+1)
3193 c=-(max_load-temp(i))
3194 delta=(b*b-(dble(4)*a*c))
3195 x=int((-b+sqrt(delta))/(dble(2)*a))
3197 IF(kmax.GE.kmin)
THEN
3207 IF((acc+x).GT.ncb) x=ncb-acc
3210 additionnal_rows=ncb-acc
3219 c=-buf_size+dble(acc+nelim)
3220 delta=(b*b)-(dble(4)*a*c)
3221 x=int((-b+sqrt(delta))/(dble(2)*a))
3222 IF(x.GT.ncb-acc) x=ncb-acc
3223 bande_k821=dble(x)*dble(nelim+acc+x)
3224 IF(have_type1_son)
THEN
3227 c=-buf_size+dble(acc+nelim)
3228 delta=(b*b)-(dble(4)*a*c)
3229 x=int((-b+sqrt(delta))/(dble(2)*a))
3230 IF(x.GT.ncb-acc) x=ncb-acc
3231 bande_k821=dble(x)*dble(nelim+acc+x)
3233 max_mem_allow=bande_k821
3236 &
min(mem_size_weak(j),mem_size_strong(j)),
3238 max_mem_allow=
max(dble(0),
3243 c=dble(-max_mem_allow)
3244 delta=((b*b)-(dble(4)*a*c))
3245 kmax=int((-b+sqrt(delta))/(dble(2)*a))
3247 b=dble(nelim)*dble(nelim+2*acc+1)
3248 c=-(max_load-temp(j))
3249 delta=(b*b-(dble(4)*a*c))
3250 x=int((-b+sqrt(delta))/(dble(2)*a))
3253 &
': Internal error 6 in CMUMPS_SET_PARTI_FLOP_IRR'
3257 IF(kmax.GE.kmin)
THEN
3264 IF(x.LT.
min(kmin,kmax))
THEN
3271 IF(min_load.GT.temp(j))
THEN
3277 max_load=
max(max_load,
3279 & (dble(nelim)*dble(nb_rows(j)))*
3283 IF(ncb.EQ.acc)
GOTO 741
3284 IF(ncb-acc.LT.kmin)
GOTO 210
3290 additionnal_rows=ncb-acc
3293 IF(additionnal_rows.NE.0)
THEN
3294 additionnal_rows=ncb-acc
3295 somme=dble(nelim)*dble(additionnal_rows)*
3296 & dble(2*nfront-additionnal_rows-
3298 somme=somme/dble(number_of_procs)
3309 c=-buf_size+dble(acc+nelim)
3310 delta=(b*b)-(dble(4)*a*c)
3311 x=int((-b+sqrt(delta))/(dble(2)*a))
3312 IF(x.GT.ncb-acc) x=ncb
3313 bande_k821=dble(x)*dble(nelim+acc+x)
3314 IF(have_type1_son)
THEN
3317 c=-buf_size+dble(acc+nelim)
3318 delta=(b*b)-(dble(4)*a*c)
3319 x=int((-b+sqrt(delta))/(dble(2)*a))
3320 IF(x.GT.ncb-acc) x=ncb-acc
3321 bande_k821=dble(x)*dble(nelim+acc+x)
3323 max_mem_allow=bande_k821
3326 &
min(mem_size_weak(i),mem_size_strong(i)),
3328 max_mem_allow=
max(dble(0),
3333 c=dble(-max_mem_allow)
3334 delta=((b*b)-(dble(4)*a*c))
3335 kmax=int((-b+sqrt(delta))/(dble(2)*a))
3337 b=dble(nelim)*dble(nelim+2*acc+1)
3338 c=-(max_load-temp(i)+somme)
3339 delta=(b*b-(dble(4)*a*c))
3340 x=int((-b+sqrt(delta))/(dble(2)*a))
3343 &
': Internal error 7 in CMUMPS_SET_PARTI_FLOP_IRR'
3347 IF(kmax.GE.kmin)
THEN
3353 IF(x.LT.
min(kmin,kmax))
THEN
3357 IF((acc+x).GT.ncb) x=ncb-acc
3360 IF(min_load.GT.temp(i))
THEN
3367 IF(ncb.EQ.acc)
GOTO 666
3368 IF(ncb-acc.LT.kmin)
GOTO 488
3371 additionnal_rows=ncb-acc
3373 & dble(additionnal_rows)*
3374 & dble(2*nfront-additionnal_rows-
3376 somme=somme/dble(number_of_procs)
3387 c=-buf_size+dble(acc+nelim)
3388 delta=(b*b)-(dble(4)*a*c)
3389 x=int((-b+sqrt(delta))/(dble(2)*a))
3390 IF(x.GT.ncb-acc) x=ncb-acc
3391 bande_k821=dble(x)*dble(nelim+acc+x)
3392 IF(have_type1_son)
THEN
3395 c=-buf_size+dble(acc+nelim)
3396 delta=(b*b)-(dble(4)*a*c)
3397 x=int((-b+sqrt(delta))/(dble(2)*a))
3398 IF(x.GT.ncb-acc) x=ncb-acc
3399 bande_k821=dble(x)*dble(nelim+acc+x)
3401 max_mem_allow=bande_k821
3403 max_mem_allow=
min(bande_k821,
3404 & mem_size_strong(i))
3405 max_mem_allow=
max(dble(0),
3410 c=dble(-max_mem_allow)
3411 delta=((b*b)-(dble(4)*a*c))
3412 kmax=int((-b+sqrt(delta))/(dble(2)*a))
3414 b=dble(nelim)*dble(nelim+2*acc+1)
3415 c=-(max_load-temp(i)+somme)
3416 delta=(b*b-(dble(4)*a*c))
3417 x=int((-b+sqrt(delta))/(dble(2)*a))
3420 &
': Internal error 8 in CMUMPS_SET_PARTI_FLOP_IRR'
3430 IF((acc+x).GT.ncb) x=ncb-acc
3433 IF(min_load.GT.temp(i))
THEN
3440 IF(ncb.EQ.acc)
GOTO 666
3441 IF(ncb-acc.LT.kmin)
GOTO 477
3455 c=-buf_size+dble(acc+nelim)
3456 delta=(b*b)-(dble(4)*a*c)
3457 x=int((-b+sqrt(delta))/(dble(2)*a))
3458 IF(x.GT.ncb-acc) x=ncb-acc
3459 bande_k821=dble(x)*dble(nelim+acc+x)
3460 IF(have_type1_son)
THEN
3463 c=-buf_size+dble(acc+nelim)
3464 delta=(b*b)-(dble(4)*a*c)
3465 x=int((-b+sqrt(delta))/(dble(2)*a))
3466 IF(x.GT.ncb-acc) x=ncb-acc
3467 bande_k821=dble(x)*dble(nelim+acc+x)
3469 max_mem_allow=bande_k821
3471 max_mem_allow=
min(bande_k821,
3472 & mem_size_strong(i))
3473 max_mem_allow=
max(dble(0),
3478 c=dble(-max_mem_allow)
3479 delta=((b*b)-(dble(4)*a*c))
3480 kmax=int((-b+sqrt(delta))/(dble(2)*a))
3482 IF((acc+nb_rows(i)+x).GT.ncb)
3483 & x=ncb-(acc+nb_rows(i))
3484 nb_rows(i)=nb_rows(i)+x
3485 IF((dble(nb_rows(i))*
3486 & dble(nb_rows(i)+acc)).EQ.
3492 IF(min_load.GT.temp(i))
THEN
3498 IF(ncb.EQ.acc)
GOTO 666
3499 IF(ncb-acc.LT.kmin)
GOTO 834
3504 additionnal_rows=ncb-acc
3506 & dble(additionnal_rows)*
3507 & dble(2*nfront-additionnal_rows-
3509 somme=somme/dble(number_of_procs-nb_sat)
3514 c=-buf_size+dble(acc+nelim)
3515 delta=(b*b)-(dble(4)*a*c)
3516 x=int((-b+sqrt(delta))/(dble(2)*a))
3517 IF(x.GT.ncb-acc) x=ncb-acc
3518 bande_k821=dble(x)*dble(nelim+acc+x)
3519 IF(have_type1_son)
THEN
3522 c=-buf_size+dble(acc+nelim)
3523 delta=(b*b)-(dble(4)*a*c)
3524 x=int((-b+sqrt(delta))/(dble(2)*a))
3525 IF(x.GT.ncb-acc) x=ncb-acc
3526 bande_k821=dble(x)*dble(nelim+acc+x)
3528 IF((dble(nb_rows(i))*
3529 & dble(nb_rows(i)+acc)).EQ.
3535 & dble(nelim+2*(acc+nb_rows(i))+1)
3537 delta=(b*b-(dble(4)*a*c))
3538 x=int((-b+sqrt(delta))/(dble(2)*a))
3542 delta=((b*b)-(dble(4)*a*c))
3543 kmax=int((-b+sqrt(delta))/(dble(2)*a))
3546 &
': Internal error 9 in CMUMPS_SET_PARTI_FLOP_IRR'
3549 IF((acc+x+nb_rows(i)).GT.ncb)
THEN
3550 IF((ncb-acc).GT.kmax)
THEN
3556 IF((nb_rows(i)+x).GT.kmax)
THEN
3559 nb_rows(i)=nb_rows(i)+x
3568 IF(ncb-acc.LT.kmin)
THEN
3575 nb_rows(i)=nb_rows(i)+1
3577 IF(acc.EQ.ncb)
GOTO 666
3583 nb_rows(pos_min_load)=
3584 & nb_rows(pos_min_load)+ncb-acc
3593 additionnal_rows=ncb-acc
3595 IF(nb_sat.EQ.small_set)
GOTO 777
3598 affected=int(buf_size/dble(ncb+1))-1
3599 bande_k821=dble(affected)*dble(nfront)
3600 IF(have_type1_son)
THEN
3601 affected=int((buf_size-dble(nfront))/
3603 bande_k821=dble(affected)*dble(nfront)
3605 max_mem_allow=bande_k821
3608 &
min(mem_size_weak(i),mem_size_strong(i)),
3610 max_mem_allow=
max(dble(0),max_mem_allow)
3612 wload(i)=max_mem_allow
3616 IF((nb_sat.EQ.small_set).AND.
3617 & (small_set.LT.nslaves_ref))
THEN
3623 IF((nb_sat.EQ.small_set).AND.
3624 & (small_set.LE.number_of_procs))
GOTO 777
3625 affected=int(additionnal_rows/(small_set-nb_sat))
3626 affected=
max(affected,1)
3628 kmax=int(
wload(i)/dble(nfront))
3629 IF(nb_rows(
idwload(i)).EQ.kmax)
THEN
3633 & additionnal_rows)).GT.kmax)
THEN
3634 IF(nb_rows(
idwload(i)).GT.kmax)
THEN
3636 additionnal_rows=additionnal_rows-
3640 IF(nb_sat.EQ.small_set)
THEN
3641 IF(small_set.NE.nslaves_ref)
THEN
3647 max_load=
max(max_load,
3648 & (temp(
idwload(i))+(dble(nelim) *
3652 & dble(2*nfront-nelim-1)))
3656 affected=int(additionnal_rows/(small_set-nb_sat))
3657 affected=
max(affected,1)
3660 & additionnal_rows)).GE.kmin)
THEN
3661 x=
min(affected,additionnal_rows)
3664 additionnal_rows=additionnal_rows-x
3666 x=int((max_load-temp(
idwload(i)))/
3667 & (dble(nelim)*dble(2*nfront-nelim)))
3668 IF(x+affected.GT.additionnal_rows)
THEN
3676 additionnal_rows=additionnal_rows-
3684 max_load=
max(max_load,
3685 & (temp(
idwload(i))+(dble(nelim)*
3687 & (dble(nb_rows(
idwload(i)))*dble(nelim))*
3688 & dble(2*nfront-nelim-1)))
3689 IF(small_set.LT.number_of_procs)
THEN
3690 IF(max_load.GT.temp(small_set+1))
THEN
3691 IF(small_set.LT.nslaves_ref)
THEN
3699 IF(small_set.EQ.nb_sat)
GOTO 777
3700 IF(additionnal_rows.EQ.0)
THEN
3706 IF((nb_zero.NE.0).AND.(additionnal_rows.GE.kmin))
THEN
3709 x=int(additionnal_rows/(j))
3714 IF(x*j.LT.additionnal_rows)
THEN
3718 affected=int(buf_size/dble(ncb+1))-1
3719 bande_k821=dble(affected)*dble(nfront)
3720 IF(have_type1_son)
THEN
3721 affected=int((buf_size-dble(nfront))/
3723 bande_k821=dble(affected)*dble(nfront)
3725 max_mem_allow=bande_k821
3728 &
min(mem_size_weak(i),mem_size_strong(i)),
3730 max_mem_allow=
max(dble(0),max_mem_allow)
3732 kmax=int(max_mem_allow/dble(nfront))
3733 IF(nb_rows(i).EQ.0)
THEN
3734 IF(x.GT.additionnal_rows)
THEN
3742 additionnal_rows=additionnal_rows-x
3743 max_load=
max(max_load,
3745 & dble(nb_rows(i)))+
3746 & (dble(nb_rows(i))*dble(nelim))*
3747 & dble(2*nfront-nelim-1)))
3753 DO WHILE ((additionnal_rows.NE.0)
3754 & .AND.(i.LE.number_of_procs))
3755 IF((temp(i).LE.max_load))
THEN
3756 affected=int(buf_size/dble(ncb+1))-1
3757 bande_k821=dble(affected)*dble(nfront)
3758 IF(have_type1_son)
THEN
3759 affected=int((buf_size-dble(nfront))/
3761 bande_k821=dble(affected)*dble(nfront)
3763 max_mem_allow=bande_k821
3766 &
min(mem_size_weak(i),mem_size_strong(i)),
3768 max_mem_allow=
max(dble(0),max_mem_allow)
3770 kmax=int(max_mem_allow/dble(nfront))
3771 affected=int((max_load-temp(i))/
3772 & (dble(nelim)*dble(2*nfront-nelim)))
3773 IF(affected.GT.additionnal_rows)
THEN
3774 affected=additionnal_rows
3776 IF(nb_rows(i).LT.kmax)
THEN
3777 IF((affected+nb_rows(i)).GT.kmax)
THEN
3778 affected=kmax-nb_rows(i)
3781 IF((affected+nb_rows(i)).LT.
3786 nb_rows(i)=nb_rows(i)+affected
3787 additionnal_rows=additionnal_rows-affected
3789 ELSE IF((temp(i).GT.max_load))
THEN
3790 IF(nb_sat.EQ.i-1)
GOTO 218
3791 x=(additionnal_rows/(i-1-nb_sat))
3794 tmp_sum=((dble(nelim) * dble(nb_rows(j)+x))
3795 & +(dble(nb_rows(j)+x)*dble(nelim))*
3796 & dble(2*nfront-nelim-1))
3797 IF((temp(j)+tmp_sum).GT.max_load)
THEN
3804 DO WHILE ((additionnal_rows.NE.0)
3806 affected=int(buf_size/dble(ncb+1))-1
3807 bande_k821=dble(affected)*dble(nfront)
3808 IF(have_type1_son)
THEN
3809 affected=int((buf_size-dble(nfront))/
3811 bande_k821=dble(affected)*dble(nfront)
3814 max_mem_allow=bande_k821
3817 &
min(mem_size_weak(j),mem_size_strong(j)),
3819 max_mem_allow=
max(dble(0),
3822 kmax=int(max_mem_allow/dble(nfront))
3823 IF(affected.GT.additionnal_rows)
THEN
3824 affected=additionnal_rows
3826 IF(nb_rows(j).LT.kmax)
THEN
3827 IF((affected+nb_rows(j)).GT.kmax)
THEN
3828 affected=kmax-nb_rows(j)
3831 IF((affected+nb_rows(j)).LT.
3836 nb_rows(j)=nb_rows(j)+affected
3837 additionnal_rows=additionnal_rows-
3845 DO WHILE ((additionnal_rows.NE.0)
3847 affected=int(buf_size/dble(ncb+1))-1
3848 bande_k821=dble(affected)*dble(nfront)
3849 IF(have_type1_son)
THEN
3850 affected=int((buf_size-dble(nfront))/
3852 bande_k821=dble(affected)*dble(nfront)
3854 tmp_sum=((dble(nelim)* dble(nb_rows(j)))
3855 & +(dble(nb_rows(j))*dble(nelim))*
3856 & dble(2*nfront-nelim-1))
3857 x=int((max_load-(temp(j)+tmp_sum))/
3858 & (dble(nelim)*dble(2*nfront-nelim)))
3861 &
': Internal error 10 in CMUMPS_SET_PARTI_FLOP_IRR'
3865 max_mem_allow=bande_k821
3868 &
min(mem_size_weak(j),mem_size_strong(j)),
3870 max_mem_allow=
max(dble(0),
3873 kmax=int(max_mem_allow/dble(nfront))
3874 IF(affected.GT.additionnal_rows)
THEN
3875 affected=additionnal_rows
3877 IF(nb_rows(j).LT.kmax)
THEN
3878 IF((affected+nb_rows(j)).GT.kmax)
THEN
3879 affected=kmax-nb_rows(j)
3882 IF((affected+nb_rows(j)).LT.
3887 nb_rows(j)=nb_rows(j)+affected
3888 additionnal_rows=additionnal_rows-
3899 IF((chosen.EQ.number_of_procs-1).AND.
3900 & (additionnal_rows.NE.0))
THEN
3902 IF(nb_rows(i)+1.GE.kmin)
THEN
3903 nb_rows(i)=nb_rows(i)+1
3904 additionnal_rows=additionnal_rows-1
3906 max_load=
max(max_load,
3907 & (temp(i)+(dble(nelim) *
3908 & dble(nb_rows(i)))+
3909 & (dble(nb_rows(i))*dble(nelim))*
3910 & dble(2*nfront-nelim-1)))
3911 IF(additionnal_rows.EQ.0)
GOTO 048
3915 IF((additionnal_rows.NE.0))
THEN
3916 IF(chosen.LT.number_of_procs)
THEN
3919 IF(chosen.NE.number_of_procs)
THEN
3921 &
': Internal error 11 in CMUMPS_SET_PARTI_FLOP_IRR'
3926 DO WHILE ((additionnal_rows.NE.0)
3927 & .AND.(i.LE.number_of_procs))
3928 IF(temp(i).LE.max_load)
THEN
3929 affected=int(buf_size/dble(ncb+1))-1
3930 bande_k821=dble(affected)*dble(nfront)
3931 IF(have_type1_son)
THEN
3932 affected=int((buf_size-dble(nfront))/
3934 bande_k821=dble(affected)*dble(nfront)
3936 max_mem_allow=bande_k821
3939 &
min(mem_size_weak(i),mem_size_strong(i)),
3941 max_mem_allow=
max(dble(0),max_mem_allow)
3943 kmax=int(max_mem_allow/dble(nfront))
3944 tmp_sum=((dble(nelim) * dble(nb_rows(i)))
3945 & +(dble(nb_rows(i))*dble(nelim))*
3946 & dble(2*nfront-nelim-1))
3947 x=int((max_load-(temp(i)+tmp_sum))/
3948 & (dble(nelim)*dble(2*nfront-nelim)))
3952 &
': Internal error 12 in CMUMPS_SET_PARTI_FLOP_IRR'
3955 IF(affected.GT.additionnal_rows)
THEN
3956 affected=additionnal_rows
3958 IF(nb_rows(i).LT.kmax)
THEN
3959 IF((affected+nb_rows(i)).GT.kmax)
THEN
3960 affected=kmax-nb_rows(i)
3962 IF((affected+nb_rows(i)).LT.
3967 nb_rows(i)=nb_rows(i)+affected
3968 additionnal_rows=additionnal_rows-affected
3970 IF(i.NE.number_of_procs)
GOTO 624
3971 ELSE IF((temp(i).GT.max_load))
THEN
3972 x=int(additionnal_rows/i-1)
3974 IF((max_load+((dble(nelim)*
3976 & x)*dble(nelim))*dble(
3977 & (2*nfront-nelim-1)))).LE.temp(i))
THEN
3985 DO WHILE ((additionnal_rows.NE.0)
3987 x=int(buf_size/dble(ncb+1))-1
3988 bande_k821=dble(x)*dble(nfront)
3989 max_mem_allow=bande_k821
3990 IF(have_type1_son)
THEN
3991 x=int((buf_size-dble(nfront))/
3993 bande_k821=dble(x)*dble(nfront)
3997 &
min(mem_size_weak(j),mem_size_strong(j)),
3999 max_mem_allow=
max(dble(0),
4002 kmax=int(max_mem_allow/dble(nfront))
4004 tmp_sum=((dble(nelim) *
4006 & +(dble(nb_rows(j))*dble(nelim))*
4007 & dble(2*nfront-nelim-1))
4008 x=int((temp(i)-(temp(j)+tmp_sum))/
4009 & (dble(nelim)*dble(2*nfront-
4014 IF(x.GT.additionnal_rows)
THEN
4017 IF(nb_rows(j).LT.kmax)
THEN
4018 IF((x+nb_rows(j)).GT.kmax)
THEN
4021 IF((nb_rows(j)+x).LT.
4026 nb_rows(j)=nb_rows(j)+x
4027 additionnal_rows=additionnal_rows-x
4036 IF(additionnal_rows.NE.0)
THEN
4039 x=int(buf_size/dble(ncb+1))-1
4040 bande_k821=dble(x)*dble(nfront)
4041 IF(have_type1_son)
THEN
4044 bande_k821=dble(x)*dble(nfront)
4046 max_mem_allow=bande_k821
4049 &
min(mem_size_weak(i),mem_size_strong(i)),
4051 max_mem_allow=
max(dble(0),max_mem_allow)
4053 kmax=int(max_mem_allow/dble(nfront))
4054 tmp_sum=((dble(nelim) * dble(nb_rows(i)))
4055 & +(dble(nb_rows(i))*dble(nelim))*
4056 & dble(2*nfront-nelim-1))
4058 & (temp(i)+tmp_sum))/
4059 & (dble(nelim)*dble(2*nfront-nelim)))
4062 &
': Internal error 13 in CMUMPS_SET_PARTI_FLOP_IRR'
4065 IF(x.GT.additionnal_rows)
THEN
4068 IF(nb_rows(i).LT.kmax)
THEN
4069 IF((x+nb_rows(i)).GE.kmax
THEN
4070 additionnal_rows=additionnal_rows-
4074 IF((x+nb_rows(i)).GE.
4077 additionnal_rows=additionnal_rows-x
4084 IF(additionnal_rows.EQ.0)
GOTO 049
4086 IF(chosen.LT.number_of_procs)
THEN
4092 x=int(additionnal_rows/acc)
4096 j=int(buf_size/dble(ncb+1))-1
4097 bande_k821=dble(j)*dble(nfront)
4098 IF(have_type1_son)
THEN
4099 j=int((buf_size-dble(nfront))/
4101 bande_k821=dble(j)*dble(nfront)
4103 max_mem_allow=bande_k821
4106 &
min(mem_size_weak(i),mem_size_strong(i)),
4108 max_mem_allow=
max(dble(0),max_mem_allow
4110 kmax=int(max_mem_allow/dble(nfront))
4111 tmp_sum=((dble(nelim) * dble(nb_rows(i)))
4112 & +(dble(nb_rows(i))*dble(nelim))*
4113 & dble(2*nfront-nelim-1))
4115 & (temp(i)+tmp_sum))/
4116 & (dble(nelim)*dble(2*nfront-nelim)))
4117 IF(nb_rows(i).LT.kmax)
THEN
4118 IF((
min(x,j)+nb_rows(i)).GE.kmax)
THEN
4119 IF((kmax-nb_rows(i)).GT.
4120 & additionnal_rows)
THEN
4121 nb_rows(i)=nb_rows(i)+
4125 additionnal_rows=additionnal_rows-
4130 IF((
min(x,j)+nb_rows(i)).GE.
4132 nb_rows(i)=nb_rows(i)+
min(x,j)
4133 additionnal_rows=additionnal_rows-
4139 IF(additionnal_rows.EQ.0)
GOTO 049
4143 x=int(buf_size/dble(ncb+1))-1
4144 bande_k821=dble(x)*dble(nfront)
4145 IF(have_type1_son)
THEN
4146 x=int((buf_size-dble(nfront))/
4148 bande_k821=dble(x)*dble(nfront)
4150 max_mem_allow=bande_k821
4153 &
min(mem_size_weak(i),mem_size_strong(i)),
4155 max_mem_allow=
max(dble(0),
4158 kmax=int(max_mem_allow/dble(nfront))
4159 IF(kmax-nb_rows(i).LT.
4160 & additionnal_rows)
THEN
4161 additionnal_rows=additionnal_rows-
4165 IF(nb_rows(i).EQ.0)
THEN
4166 IF(
min(kmin,kmax).LT.
4167 & additionnal_rows)
THEN
4168 nb_rows(i)=
min(kmin,kmax)
4174 nb_rows(i)=nb_rows(i)+
4179 IF(additionnal_rows.EQ.0)
GOTO 049
4184 affected=int(buf_size/dble(ncb+1))-1
4185 bande_k821=dble(affected)*dble(nfront)
4186 IF(have_type1_son)
THEN
4187 affected=int((buf_size-dble(nfront))/
4189 bande_k821=dble(affected)*dble(nfront)
4191 wload(i)=(bande_k821-dble(nb_rows(i)*nfront))
4197 x=int(additionnal_rows/(chosen
4199 affected=int(buf_size/dble(ncb+1))-1
4200 bande_k821=dble(affected)*dble(nfront)
4201 IF(have_type1_son)
THEN
4202 affected=int((buf_size-dble(nfront))/
4204 bande_k821=dble(affected)*dble(nfront)
4207 max_mem_allow=
min(bande_k821,
4208 & mem_size_strong(i))
4209 max_mem_allow=
max(dble(0),max_mem_allow)
4211 kmax=int(max_mem_allow/dble(nfront))
4212 IF(nb_rows(
idwload(i)).LT.kmax)
THEN
4213 IF((nb_rows(
idwload(i))+x).LT.kmax)
THEN
4216 additionnal_rows=additionnal_rows-x
4218 additionnal_rows=additionnal_rows-
4223 IF(nb_rows(
idwload(i)).EQ.kmax)
THEN
4226 IF(additionnal_rows.EQ.0)
GOTO 049
4229 x=int(buf_size/dble(ncb+1))-1
4230 bande_k821=dble(x)*dble(nfront)
4231 IF(have_type1_son)
THEN
4232 x=int((buf_size-dble(nfront))/
4234 bande_k821=dble(x)*dble(nfront)
4236 max_mem_allow=bande_k821
4238 max_mem_allow=
min(bande_k821,
4239 & mem_size_strong(i))
4240 max_mem_allow=
max(dble(0),max_mem_allow)
4242 kmax=int(max_mem_allow/dble(nfront))
4243 IF(kmax-nb_rows(i).LT.additionnal_rows)
THEN
4244 additionnal_rows=additionnal_rows-
4248 nb_rows(i)=nb_rows(i)+additionnal_rows
4251 IF(additionnal_rows.EQ.0)
GOTO 049
4253 x=int(additionnal_rows/chosen)
4256 additionnal_rows=additionnal_rows
4257 nb_rows(i)=nb_rows(i)+x
4258 IF(additionnal_rows.EQ.0)
GOTO 049
4260 nb_rows(1)=nb_rows(1)+additionnal_rows
4271 somme=somme+ dble(nb_rows(i))
4274 ELSE IF((keep(83).GE.number_of_procs).AND.force_cand
THEN
4277 max_load=
max(max_load,temp(i))
4285 IF(temp(i).EQ.temp(1))
THEN
4292 tmp_sum=total_cost/dble(x)
4293 temp_max_load=dble(0)
4297 bande_k821=dble(x)*dble(nfront)
4301 c=-buf_size+dble(acc+nelim)
4302 delta=(b*b)-(dble(4)*a*c)
4303 x=int((-b+sqrt(delta))/(dble(2)*a))
4304 IF(x.GT.ncb-acc) x=ncb-acc
4305 bande_k821=dble(x)*dble(nelim+acc+x)
4307 IF(have_type1_son)
THEN
4309 x=int((buf_size-dble(nfront))/dble(nfront+1))
4310 bande_k821=dble(x)*dble(nfront)
4314 c=-buf_size+dble(acc+nelim)
4315 delta=(b*b)-(dble(4)*a*c)
4316 x=int((-b+sqrt(delta))/(dble(2)*a))
4317 IF(x.GT.ncb-acc) x=ncb-acc
4318 bande_k821=dble(x)*dble(nelim+acc+x)
4321 max_mem_allow=bande_k821
4323 max_mem_allow=
min(bande_k821,
4324 &
min(mem_size_weak(i),mem_size_strong(i)))
4325 max_mem_allow=
max(dble(0),max_mem_allow)
4328 kmax=int(max_mem_allow/dble(nfront))
4329 IF(tmp_sum+temp(i).GT.max_load)
THEN
4330 somme=max_load-temp(i)
4335 & (dble(nelim)*dble(2*nfront-nelim)))
4343 IF((acc+x).GT.ncb) x=ncb-acc
4348 c=dble(-max_mem_allow)
4349 delta=((b*b)-(dble(4)*a*c))
4350 kmax=int((-b+sqrt(delta))/(dble(2)*a))
4352 b=dble(nelim)*dble(nelim+2*acc+1)
4353 IF(tmp_sum+temp(i).GT.max_load)
THEN
4354 c=-(max_load-temp(i))
4358 delta=(b*b-(dble(4)*a*c))
4359 x=int((-b+sqrt(delta))/(dble(2)*a))
4362 &
': Internal error 14 in CMUMPS_SET_PARTI_FLOP_IRR'
4366 IF(kmax.GT.kmin)
THEN
4372 IF(x.LE.
min(kmin,kmax))
THEN
4373 IF(kmax.LT.kmin)
THEN
4380 IF((acc+x).GT.ncb) x=ncb-acc
4382 temp_max_load=
max(temp_max_load,temp(i))
4386 IF(acc.EQ.ncb)
GOTO 541
4391 additionnal_rows=ncb-acc
4393 affected=int(buf_size/dble(ncb+1))-1
4394 bande_k821=dble(affected)*dble(nfront)
4395 IF(have_type1_son)
THEN
4396 affected=int((buf_size-dble(nfront))/
4398 bande_k821=dble(affected)*dble(nfront)
4400 max_mem_allow=bande_k821
4403 &
min(mem_size_weak(j),mem_size_strong(j)),
4405 max_mem_allow=
max(dble(0),max_mem_allow)
4407 kmax=int(max_mem_allow/dble(nfront))
4408 IF((nb_rows(j)).LT.kmax)
THEN
4409 IF(additionnal_rows.GT.(kmax-nb_rows(j)))
THEN
4410 additionnal_rows=additionnal_rows-
4414 nb_rows(j)=nb_rows(j)+additionnal_rows
4418 IF(additionnal_rows.EQ.0)
GOTO 889
4420 x=int(additionnal_rows/chosen)
4423 affected=int(buf_size/dble(ncb+1))-1
4424 bande_k821=dble(affected)*dble(nfront)
4425 IF(have_type1_son)
THEN
4428 bande_k821=dble(affected)*dble(nfront)
4430 max_mem_allow=bande_k821
4432 max_mem_allow=
min(bande_k821,
4433 & mem_size_strong(j))
4434 max_mem_allow=
max(dble(0),max_mem_allow)
4436 kmax=int(max_mem_allow/dble(nfront))
4437 IF((nb_rows(j)+x).GT.kmax)
THEN
4438 additionnal_rows=additionnal_rows-
4442 additionnal_rows=additionnal_rows-x
4443 nb_rows(j)=nb_rows(j)+x
4445 IF(additionnal_rows.EQ.0)
GOTO 889
4448 x=int(buf_size/dble(ncb+1))-1
4449 bande_k821=dble(x)*dble(nfront)
4450 IF(have_type1_son)
THEN
4451 x=int((buf_size-dble(nfront))/
4453 bande_k821=dble(x)*dble(nfront)
4455 max_mem_allow=bande_k821
4457 max_mem_allow=
min(bande_k821,
4458 & mem_size_strong(i))
4459 max_mem_allow=
max(dble(0),max_mem_allow)
4461 kmax=int(max_mem_allow/dble(nfront))
4462 IF(kmax-nb_rows(i).LT.additionnal_rows)
THEN
4463 additionnal_rows=additionnal_rows-
4467 nb_rows(i)=nb_rows(i)+additionnal_rows
4470 IF(additionnal_rows.EQ.0)
GOTO 889
4472 DO i=1,number_of_procs
4474 affected=int(buf_size/dble(ncb+1))-1
4476 IF(have_type1_son)
THEN
4477 affected=int((buf_size-dble(nfront))/
4479 bande_k821=dble(affected)*dble(nfront)
4481 wload(i)=(bande_k821-(dble(nb_rows(i))*
4488 x=int(additionnal_rows/(chosen-nb_sat))
4490 affected=int(buf_size/dble(ncb+1))-1
4491 bande_k821=dble(affected)*dble(nfront)
4492 IF(have_type1_son)
THEN
4493 affected=int((buf_size-dble(nfront))/
4495 bande_k821=dble(affected)*dble(nfront)
4497 max_mem_allow=bande_k821
4498 kmax=int(max_mem_allow/dble(nfront))
4499 IF(nb_rows(
idwload(i)).LT.kmax)
THEN
4500 IF((nb_rows(
idwload(i))+x).LT.kmax)
THEN
4503 additionnal_rows=additionnal_rows-x
4505 additionnal_rows=additionnal_rows-
4510 IF(nb_rows(
idwload(i)).EQ.kmax)
THEN
4513 IF(additionnal_rows.EQ.0)
GOTO 889
4522 c=-buf_size+dble(acc+nelim)
4523 delta=(b*b)-(dble(4)*a*c)
4524 x=int((-b+sqrt(delta))/(dble(2)*a))
4525 IF(x.GT.ncb-acc) x=ncb-acc
4526 bande_k821=dble(x)*dble(nelim+acc+x)
4527 IF(have_type1_son)
THEN
4530 c=-buf_size+dble(acc+nelim)
4531 delta=(b*b)-(dble(4)*a*c)
4532 x=int((-b+sqrt(delta))/(dble(2)*a))
4533 IF(x.GT.ncb-acc) x=ncb-acc
4534 bande_k821=dble(x)*dble(nelim+acc+x)
4536 max_mem_allow=bande_k821
4538 max_mem_allow=
min(bande_k821,
4539 & mem_size_strong(i))
4540 max_mem_allow=
max(dble(0),max_mem_allow)
4544 c=dble(-max_mem_allow)
4545 delta=((b*b)-(dble(4)*a*c))
4546 kmax=int((-b+sqrt(delta))/(dble(2)*a))
4548 IF((acc+nb_rows(i)+x).GT.ncb)
4549 & x=ncb-(acc+nb_rows(i))
4550 nb_rows(i)=nb_rows(i)+x
4553 IF(ncb.EQ.acc)
GOTO 889
4555 additionnal_rows=ncb-acc
4562 c=-buf_size+dble(acc+nelim)
4563 delta=(b*b)-(dble(4)*a*c)
4564 x=int((-b+sqrt(delta))/(dble(2)*a))
4565 IF(x.GT.ncb-acc) x=ncb-acc
4566 bande_k821=dble(x)*dble(nelim+acc+x)
4567 IF(have_type1_son)
THEN
4570 c=-buf_size+dble(acc+nelim)
4571 delta=(b*b)-(dble(4)*a*c)
4572 x=int((-b+sqrt(delta))/(dble(2)*a))
4573 IF(x.GT.ncb-acc) x=ncb-acc
4574 bande_k821=dble(x)*dble(nelim+acc+x)
4576 max_mem_allow=bande_k821
4579 c=dble(-max_mem_allow)
4580 delta=((b*b)-(dble(4)*a*c))
4581 kmax=int((-b+sqrt(delta))/(dble(2)*a))
4583 IF((acc+nb_rows(i)+x).GT.ncb)
4584 & x=ncb-(acc+nb_rows(i))
4585 nb_rows(i)=nb_rows(i)+x
4588 IF(ncb.EQ.acc)
GOTO 889
4590 additionnal_rows=ncb-acc
4592 x=int(dble(additionnal_rows)/dble(others))
4593 IF((x*others).LT.additionnal_rows)
THEN
4597 nb_rows(i)=nb_rows(i)+x
4598 additionnal_rows=additionnal_rows-x
4599 IF(additionnal_rows.LT.x)x=additionnal_rows
4605 max_load=temp_max_load
4610 IF(nb_rows(i).EQ.0)
THEN
4613 IF(nb_rows(i).GT.0)
THEN
4617 &
': Internal error 15 in CMUMPS_SET_PARTI_FLOP_IRR'
4623 tab_pos(nslaves_node+1)= ncb+1
4624 tab_pos(slavef+2) = chosen
4628 IF(nb_rows(i).NE.0)
THEN
4629 slaves_list(x)=temp_id(i)
4632 IF(nb_rows(i).LE.0)
THEN
4634 &
': Internal error 16 in CMUMPS_SET_PARTI_FLOP_IRR'
4640 IF(pos.NE.(ncb+1))
THEN
4642 &
': Internal error 17 in CMUMPS_SET_PARTI_FLOP_IRR',