57 1 IXS ,IXQ ,IXC ,IXT ,IXP ,
58 2 IXR ,IXTG ,CEP ,GEO ,
59 3 ITRI1 ,ITRI2 ,INDEX1 ,INDEX2 ,NUM ,
60 4 WD ,IWCONT ,NELEM ,IDDLEVEL,NELEMINT,
61 5 INTER_CAND,PM ,X ,KXX ,IXX ,
62 6 ADSKY ,IGEO ,ISOLNOD,IWCIN2 ,DSDOF ,
63 7 ISOLOFF,ISHEOFF,ITRIOFF,ITRUOFF ,IPOUOFF ,
64 8 IRESOFF,IELEM21,IPM ,IXS10 ,IKINE ,
65 9 CLUSTERS,KXIG3D ,IXIG3D,COST_R2R,BUFMAT,
66 1 TAILLE,POIN_UMP,TAB_UMP,
67 2 POIN_UMP_OLD,TAB_UMP_OLD,CPUTIME_MP_OLD,
68 3 NSNT, NMNT,TABMP_L,IQUAOFF,
70 5 ITAB ,IPART ,IPARTC ,IPARTG ,IPARTS ,
71 6 POIN_PART_SHELL,POIN_PART_TRI,POIN_PART_SOL,
72 7 MID_PID_SHELL,MID_PID_TRI,MID_PID_SOL,T_MONVOL,
73 8 EBCS_TAG_CELL_SPMD,NPBY,LPBY,MAT_PARAM)
89 USE format_mod ,
ONLY : fmw_a_i
90 use element_mod ,
only : nixs,nixq,nixc,nixp,nixt,nixr,nixtg
94#include "implicit_f.inc"
100#include "com04_c.inc"
101#include "scr12_c.inc"
102#include "param_c.inc"
103#include "units_c.inc"
104#include "scr15_c.inc"
105#include "scr05_c.inc"
106#include "scr17_c.inc"
107#include "scr23_c.inc"
110#include "kincod_c.inc"
115 INTEGER IXS(NIXS,*), IXQ(NIXQ,*), IXC(NIXC,*), IXT(NIXT,*),
116 . IXP(NIXP,*), IXR(NIXR,*), IXTG(NIXTG,*),
117 . CEP(*), ITRI1(*), ITRI2(*), INDEX1(*),INDEX2(*),
118 . NUM(*), NELEM,IDDLEVEL, NELEMINT,
119 . KXX(NIXX,NUMELX),IXX(*), ADSKY(0:*),IGEO(NPROPGI,NUMGEO),
120 . ISOLNOD(*), IWCONT(
128 INTEGER,
DIMENSION(LIPART1,*),
INTENT(IN) :: IPART
129 INTEGER,
DIMENSION(*),
INTENT(IN) :: IPARTC,,IPARTS
130 TYPE (CLUSTER_) ,
DIMENSION(*) :: CLUSTERS
131 my_real (,NUMGEO), (NPROPM,NUMMAT), X(3,*), COST_R2R,BUFMAT(*)
134 INTEGER,
DIMENSION(NUMMAT_OLD) :: POIN_UMP_OLD
135 INTEGER,
DIMENSION(7,TAILLE_OLD) :: TAB_UMP_OLD
136 INTEGER,
DIMENSION(NUMMAT) :: POIN_UMP
137 INTEGER,
DIMENSION(7,TAILLE) :: TAB_UMP
138 my_real,
DIMENSION(TAILLE_OLD) :: CPUTIME_MP_OLD
139 INTEGER,
DIMENSION(2,NPART),
INTENT(IN) :: POIN_PART_SHELL,
140 INTEGER,
DIMENSION(2,NPART,7),
INTENT(IN) :: POIN_PART_SOL
141 TYPE(MID_PID_TYPE),
DIMENSION(NUMMAT),
INTENT(IN) :: MID_PID_SHELL,MID_PID_TRI
142 TYPE(MID_PID_TYPE),
DIMENSION(NUMMAT,7),
INTENT(IN) :: MID_PID_SOL
143 TYPE (SURF_) ,
DIMENSION(NSURF) :: IGRSURF
145 INTEGER,
INTENT(IN) :: EBCS_TAG_CELL_SPMD(NUMELQ+NUMELTG+NUMELS)
146 INTEGER,
DIMENSION(NNPBY,*),
INTENT(in) :: NPBY
147 INTEGER,
DIMENSION(*),
INTENT(in) :: LPBY
149 TYPE(matparam_struct_) ,
DIMENSION(NUMMAT),
INTENT(IN) :: MAT_PARAM
154 parameter(ncritmax = 20)
155 INTEGER NSEG, I, J, UTIL, K, NUSE, ELEMD_OLD,
156 . lcne,io_err1,ish1,ish2,ii, nnc, it,
157 . nedges, elk, off,cc1, cc2, numg1, numg2,
158 . ined,l,m,n,newedge,nedges_old,
159 . lenwork,nod1, nod2, mode, nelem0, mm,
160 . work(70000), numl, ierror,
161 . elemd, immnul, neddel, itypint, iwarn1,
162 . maxi, maxj,
max, i1, i2, i3, n1, n2, numg3, numg4,
163 . nelx,addx,mid,pid,jale,mln,nshift,nnode, nn,
164 . options(40),ncond,nflag,iwflg,nodc,icur,ierr1,nec,
165 . inwdcount,iccand,icnod_sms,isolbar, ickin, nk, nki,
166 . icelem, icints, icintm, icint2, icddl, icfsi, icdel, icsol,
167 . icr2r,numel_r2r, cepcluster,
168 . nconnx, curr, prev, next, i1old, i2old, inc, idb_metis,
169 . nelig3d,ncond2,lsms,
170 . offc,offtg,k0,ityp,
171 . nn_l,is,iad,ity,kad,jale_from_mat, jale_from_prop
172 INTEGER,
DIMENSION(:),
ALLOCATABLE :: XADJ, ADJNCY,IWD,IWD2,
173 . IENDT,ITRI,INDEX,DOMCLUSTER,ELEMCLUST,
174 . XADJ_OLD, ADJNCY_OLD, COLORS, ROOTS,
175 . POINTER_NEIGH,CONNECT_WEIGHT,TAGELEM,CNE,
177 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IWKIN
178 INTEGER TAILLE_LOCAL,PREV_NEIGH,C_NEIGH,POINT_DELETE,
179 . ELEMNODES(MAX_NB_NODES_PER_ELT),OFFELEM(10),WGHT
180 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: CONNECTIVITY
181 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NB_NODES_MINI
182 REAL,
DIMENSION(:),
ALLOCATABLE :: RWD,
183 CHARACTER FILNAM*109, KEYA*80, CHLEVEL*1
184 REAL FAC, UBVEC(15), SCAL
186 . AVERAGE(NCRITMAX), DEVIATION(NCRITMAX), DMIN(NCRITMAX), DMAX(NCRITMAX),
187 . W(NSPMD), WIS(NSPMD),WIM(NSPMD),WI2(NSPMD), WDDL(NSPMD),
188 . WFSI(NSPMD), WCAND(NSPMD), WSOL(NSPMD), WKIN(NSPMD),
189 . wdel(nspmd), wr2r(nspmd), wnod_sms(nspmd)
190 DOUBLE PRECISION :: WS, WD_MAX,WD_MAX0
193 INTEGER METIS_PartGraphKway, METIS_PartGraphRecursive,
196 INTEGER NNO,NNS,NTG,NNI,NTGT,NTGI
198 INTEGER NFVMBAG,NB_FVMBAG_TRIM,DD_FVMBAG_TRY
199 INTEGER FVM_ELEM(NVOLU),AVG,MAX_TRY
200 INTEGER WD_MAX_FACTOR
201 INTEGER NB_ELEM_ALE,MAIN_TARGET
202 CHARACTER (LEN=255) :: STR
203 LOGICAL :: FVM_DOMDEC,DD_UNBALANCED
204 LOGICAL,
DIMENSION(:),
ALLOCATABLE :: TAGGED_ELEM
205 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ISORT,INDEX_SORT
207 INTEGER (kind=8) :: NEDGES_8
208 INTEGER :: CLUSTER_TYP,OFFSET_CLUSTER
209 my_real,
DIMENSION(:,:),
ALLOCATABLE :: COORDS
210 my_real,
DIMENSION(:),
ALLOCATABLE :: min_dist
212 my_real :: xmin(3),xmax(3)
219 INTEGER :: number_of_added_edges
220 INTEGER :: refused_cep0, refused_numg,refused_numg0
221 INTEGER :: switch_tried, switch_done
223 integer,
pointer :: null_int(:)
224 real,
pointer :: null_real(:)
230 INTEGER :: NUMBER_OF_ELEMENT_RBODY,NUMEL
231 INTEGER,
DIMENSION(:),
ALLOCATABLE :: LIST_ELEMENT_RBODY
232 LOGICAL :: BOOL_RBODY
236 EXTERNAL metis_partgraphkway, metis_partgraphrecursive,
242 ALLOCATE(iwkin(numnod))
243 number_of_added_edges = 0
254 fvm_elem(1:nvolu) = 0
270 adsky(n) = adsky(n) + 1
278 adsky(n) = adsky(n) + 1
286 adsky(n) = adsky(n) + 1
292 adsky(n) = adsky(n) + 1
298 adsky(n) = adsky(n) + 1
304 adsky(n) = adsky(n) + 1
311 adsky(n) = adsky(n) + 1
316 IF(nint(geo(12,ixr(1,i)))==12)
THEN
317 adsky(n) = adsky(n) + 1
324 adsky(n) = adsky(n) + 1
342 addx = kxig3d(4,i)+k-1
350 adsky(i) = adsky(i) + adsky(i-1)
353 lcne = adsky(numnod+1)
354 ALLOCATE(cne(lcne),stat=ierr1)
357 CALL ancmsg(msgid=268,anmode=aninfo,msgtype=msgerror,
369 filnam=rootnam(1:rootlen)//
'_0001.rad'
370 OPEN(unit=71,file=filnam(1:rootlen+9),
371 . access=
'SEQUENTIAL',status=
'OLD',iostat=io_err1)
374 filnam=rootnam(1:rootlen)//
'D01'
375 OPEN(unit=71,file=filnam(1:rootlen+3),
376 . access=
'SEQUENTIAL',status=
'OLD',iostat=io_err1)
380 OPEN(unit=72,form=
'FORMATTED',status=
'SCRATCH')
382 10
READ(71,
'(A)',
END=20) keya
384 IF(keya(1:12)==
'/DEL/SHELL/1')
THEN
385 30
READ(71,
'(A)',
END=20) keya
386 IF(keya(1:1)==
'#')
GOTO 30
387 IF(keya(1:1)==
'$')
GOTO 30
388 IF(keya(1:1)==
'/')
GOTO 11
393 READ(72,*,
END=20)ISH1,ish2
395 IF(ixc(nixc,i)>=ish1.AND.ixc(nixc,i)<=ish2)
THEN
397 IF(ixc(nixc,i)==j)
THEN
398 wd(i+numels+numelq) = 0.0001
407 ELSEIF(keya(1:12)==
'/DEL/BRICK/1')
THEN
408 60
READ(71,
'(A)',
END=20) keya
409 IF(keya(1:1)==
'#')
GOTO 60
410 IF(keya(1:1)==
'$')
GOTO 60
411 IF(keya(1:1)==
'/')
GOTO 11
416 READ(72,*,
END=20)ISH1,ish2
418 IF(ixs(nixs,i)>=ish1.AND.ixs(nixs,i)<=ish2)
THEN
420 IF(ixs(nixs,i)==j)
THEN
431 ELSEIF(keya(1:12)==
'/DEL/SH_3N/1')
THEN
432 90
READ(71,
'(A)',
END=20) keya
433 IF(keya(1:1)==
'#')
GOTO 90
434 IF(keya(1:1)==
'$')
GOTO 90
435 IF(keya(1:1)==
'/')
GOTO 11
440 READ(72,*,
END=20)ISH1,ish2
442 IF(ixtg(nixtg,i)>=ish1
443 . .AND.ixtg(nixtg,i)<=ish2)
THEN
445 IF(ixtg(nixtg,i)==j)
THEN
446 wd(i+numels+numelq+numelc+numelt
447 . +numelp+numelr) = 0.0001
465 .
' SPMD IS CHECKING FOR ELEMENT DELETION IN : ',
' '//filnam
473 .
' SPMD IS NOT ABLE TO CHECK FOR ELEMENT DELETION IN'//
474 .
' RADIOSS ENGINE INPUT FILE'
484 IF((isoloff(ii)==1.OR.isoloff(ii)==3).AND.
485 * wd(ii)/=0.0001)
THEN
491 pid = abs(ixs(10,ii))
492 jale_from_mat = nint(pm(72,mid))
493 jale_from_prop = igeo(62,pid)
494 jale =
max(jale_from_mat, jale_from_prop)
495 mln = nint(pm(19,mid))
496 IF(jale==0.AND.(mln==28.OR.mln==68))
THEN
502 IF((iquaoff(ii)==1.OR.iquaoff(ii)==3).AND.
503 * wd(ii+numels)/=0.0001)
THEN
504 wd(ii+numels) = 0.0001
510 IF((isheoff(ii)==1.OR.isheoff(ii)==3).AND.
511 * wd(ii+numels+numelq)/=0.0001)
THEN
512 wd(ii+numels+numelq) = 0.0001
518 IF((itruoff(ii)==3 ).AND.
519 * wd(ii+numels+numelq+numelc)/=0.0001 )
THEN
520 wd(ii+numels+numelq+numelc) = 0.0001
526 IF((ipouoff(ii)==3 ).AND.
527 * wd(ii+numels+numelq+numelc+numelt)/=0.0001 )
THEN
528 wd(ii+numels+numelq+numelc+numelt) = 0.0001
534 IF((iresoff(ii)==3 ).AND.
535 * wd(ii+numels+numelq+numelc+numelt+numelp)/=0.0001 )
THEN
536 wd(ii+numels+numelq+numelc+numelt+numelp) = 0.0001
542 IF(itrioff(ii)==1.AND.wd(ii+numels+numelq+numelc+numelt
543 . +numelp+numelr)/=0.0001)
THEN
544 wd(ii+numels+numelq+numelc+numelt
545 . +numelp+numelr) = 0.0001
553 IF(float(nelem-elemd)/float(nelem)>zep95) elemd = 0
555 IF(iddlevel==0.AND.elemd>elemd_old)
THEN
558 .
' DOMAIN DECOMPOSITION OPTIMIZED FOR ELEMENT DEACTIVATION'
559 .
' IN /RBODY OPTIONS'
563 IF (iddlevel==1)
THEN
566 .
' --------------------------------------'
568 .
' NEW DOMAIN DECOMPOSITION FOR OPTIMIZATION'
570 .
' --------------------------------------'
572 WRITE(istdo,
'(A)')
' .. DOMAIN DECOMPOSITION'
576 .
' DOMAIN DECOMPOSITION USING MULTILEVEL KWAY'
577 ELSEIF(dectyp==4)
THEN
579 .
' DOMAIN DECOMPOSITION USING MULTILEVEL RSB'
580 ELSEIF(dectyp==5)
THEN
582 .
' DOMAIN DECOMPOSITION USING MULTILEVEL KWAY FOR IMPLICIT AND AMS'
583 ELSEIF(dectyp==4)
THEN
585 .
' DOMAIN DECOMPOSITION USING MULTILEVEL RSB FOR IMPLICIT'
588 .
' ------------------------------------------'
591 .
' DOMAIN DECOMPOSITION OPTIMIZED FOR PARALLEL ARITHMETIC ON'
594 .
' DOMAIN DECOMPOSITION OPTIMIZED FOR PARALLEL ARITHMETIC OFF'
597 IF(iddlevel == 1 .AND. ddnod_sms /= 0)
THEN
599 .
' ADDITIONAL OPTIMIZATION OF DOMAIN DECOMPOSITION FOR AMS (DOMDEC=7)'
605 ALLOCATE(tagelem(nelem))
615 adsky(n) = adsky(n) + 1
622 tagelem(abs(-(numels8+j)))=2
626 cne(adsky(n)) = -(numels8+j)
627 adsky(n) = adsky(n) + 1
642 cne(adsky(n)) = i+off
643 adsky(n) = adsky(n) + 1
654 cne(adsky(n)) = i+off
655 adsky(n) = adsky(n) + 1
667 cne(adsky(n)) = i+off
668 adsky(n) = adsky(n) + 1
679 cne(adsky(n)) = i+off
680 adsky(n) = adsky(n) + 1
691 cne(adsky(n)) = i+off
692 adsky(n) = adsky(n) + 1
694 IF(nint(geo(12,ixr(1,i)))==12)
THEN
696 cne(adsky(n)) = i+off
697 adsky(n) = adsky(n) + 1
708 cne(adsky(n)) = i+off
709 adsky(n) = adsky(n) + 1
725 cne(adsky(n)) = i+off
726 adsky(n) = adsky(n) + 1
737 addx = kxig3d(4,i)+k-1
739 cne(adsky(n)) = i+off
740 adsky(n) = adsky(n) + 1
744 offelem(10)=numelig3d
745 off = off + numelig3d
749 adsky(i) = adsky(i-1)
770 itypint=abs(inter_cand%IXINT(6,i))
773 ELSEIF(itypint == 7 .OR. itypint == 11)
THEN
777 ELSEIF(itypint == 24 .OR. itypint == 25)
THEN
792 IF((icints+icintm>100) .AND.
793 + (nelem < icints+icintm .OR.
794 + float(nelem-icints-icintm)/float(nelem)<=zep95))
THEN
800 IF(nsnt+nmnt>100)
THEN
810 IF((icint2>100) .AND.
811 + (nelem < icint2 .OR.
812 + float(nelem-icint2)/float(nelem)<=zep98))
THEN
819 IF((iccand>100) .AND.
820 + (nelem < iccand .OR.
821 + float(nelem-iccand)/float(nelem)<=zep95))
THEN
843 nki=iwl(ikine(i))+irb(ikine(i))+irb2(ikine(i))
844 + +irbm(ikine(i))+irlk(ikine(i))+ijo(ikine(i))
845 + +ikrbe2(ikine(i))+ikrbe3(ikine(i))
850 IF(float(numnod-nk)/float(numnod)>zep95) nk = 0
857 IF(dectyp==5.OR.dectyp==6)
THEN
868 IF(ilag==1.AND.(iale==1.OR.ieuler==1))
THEN
875 jale_from_mat = nint(pm(72,mid))
876 jale_from_prop = igeo(62,pid)
877 jale =
max(jale_from_mat, jale_from_prop)
878 IF(jale==0.AND.mln/=18)
THEN
881 nb_elem_ale = nb_elem_ale + 1
885 IF (nelem - nb_elem_ale < 128 * nspmd)
THEN
890 .
' DOMAIN DECOMPOSITION OPTIMIZED FOR ALE (1)'
891 ELSEIF( nb_elem_ale*2 > nelem )
THEN
895 IF(icddl/=0) icddl = icddl + 1
896 IF(icints/=0) icints = icints + 1
897 IF(icintm/=0) icintm = icintm + 1
898 IF(icint2/=0) icint2 = icint2 + 1
899 IF(ickin/=0) ickin = ickin + 1
900 IF(icnod_sms/=0) icnod_sms = icnod_sms +1
901 IF(icdel/=0) icdel = icdel + 1
902 IF(iccand/=0) iccand = iccand + 1
904 .
' DOMAIN DECOMPOSITION OPTIMIZED FOR ALE (2)'
905 ELSEIF ( nb_elem_ale*4 > nelem)
THEN
909 IF(icddl/=0) icddl = icddl + 1
910 IF(icints/=0) icints = icints + 1
911 IF(icintm/=0) icintm = icintm + 1
912 IF(icint2/=0) icint2 = icint2 + 1
913 IF(ickin/=0) ickin = ickin + 1
914 IF(icnod_sms/=0) icnod_sms = icnod_sms +1
915 IF(icdel/=0) icdel = icdel + 1
916 IF(iccand/=0) iccand = iccand + 1
918 .
' DOMAIN DECOMPOSITION OPTIMIZED FOR FSI (3)'
923 IF(isolbar > 10000 .AND. icfsi == 0 .AND. numelc > numels)
THEN
927 .
' DOMAIN DECOMPOSITION OPTIMIZED FOR BARRIER '
940 IF (tag_elsf(i) /= 0) numel_r2r = numel_r2r+1
943 IF (tag_elcf(i) /= 0) numel_r2r = numel_r2r+1
945 IF (numel_r2r>=nspmd)
THEN
947 .
' DOMAIN DECOMPOSITION OPTIMIZED FOR MULTIDOMAINS '
953 ALLOCATE(rwd(nelem*ncond),stat=ierr1)
955 DO i = 1, ncond*nelem
959 CALL initwg(wd,pm,geo,ixs,ixq,
960 . ixc,ixt,ixp,ixr,ixtg,
961 . kxx,igeo,isolnod,iarch,
962 . numels,numelq,numelc,numelt,numelp,
963 . numelr,numeltg,numelx,ipm,
964 . bufmat,nummat,numgeo,taille,poin_ump,
965 . tab_ump,poin_ump_old,tab_ump_old,cputime_mp_old,
966 . tabmp_l,ipart,ipartc,ipartg,
967 . iparts,npart,poin_part_shell,poin_part_tri,poin_part_sol,
968 . mid_pid_shell,mid_pid_tri,mid_pid_sol,iddlevel,
978 jale_from_mat = nint(pm(72,mid))
979 jale_from_prop = igeo(62,pid)
980 jale =
max(jale_from_mat, jale_from_prop)
981 mln = nint(pm(19,mid))
982 IF (jale/=0) scal = 2.5
983 IF (mln==51) scal = 4.5
985 cost_r2r = cost_r2r + wd(i)
991 IF ((icr2r /= 0))
THEN
992 IF((tag_elsf(i) /= 0))
THEN
993 rwd(ncond*(i-1)+icr2r) = 1
996 IF(icsol /= 0) rwd(ncond*(i-1)+icsol) = 1
997 IF(isolnod(i)==4.OR.isolnod(i)==10)
THEN
1001 fac=one/(adsky(n+1)-adsky(n))
1002 nnc = nnc+adsky(n+1)-adsky(n)
1003 IF(icddl/=0)rwd(ncond*(i-1)+icddl)=rwd(ncond*(i-1)+icddl)
1006 + rwd(ncond*(i-1)+icints)=rwd(ncond*(i-1)+icints)
1009 + rwd(ncond*(i-1)+icintm) = rwd(ncond*(i-1)+icintm)
1012 + rwd(ncond*(i-1)+icint2)=rwd(ncond*(i-1)+icint2)
1013 + +(iwcin2(1,n)+iwcin2(2,n))*fac
1014 IF(ickin/=0)rwd(ncond*(i-1)+ickin)=rwd(ncond*(i-1)+ickin)
1016 IF(icnod_sms/=0)rwd(ncond*(i-1)+icnod_sms)=rwd(ncond*(i-1)+icnod_sms)
1017 + +
min(dsdof(n),1)*fac
1020 IF(isolnod(i)==10)
THEN
1026 fac=one/
max(adsky(n+1)-adsky(n),1)
1027 nnc = nnc+adsky(n+1)-adsky(n)
1028 IF(icddl/=0)rwd(ncond*(i-1)+icddl)=rwd(ncond*(i-1)+icddl)
1031 + rwd(ncond*(i-1)+icints)=rwd(ncond*(i-1)+icints)
1034 + rwd(ncond*(i-1)+icintm) = rwd(ncond*(i-1)+icintm)
1037 + rwd(ncond*(i-1)+icint2)=rwd(ncond*(i-1)+icint2)
1038 + +(iwcin2(1,n)+iwcin2(2,n))*fac
1039 IF(ickin/=0)rwd(ncond*(i-1)+ickin)=rwd(ncond*(i-1)+ickin)
1041 IF(icnod_sms/=0)rwd(ncond*(i-1)+icnod_sms)=rwd(ncond*(i-1)+icnod_sms)
1042 + +
min(dsdof(n),1)*fac
1054 fac=one/
max(adsky(n+1)-adsky(n),1)
1055 nnc = nnc+adsky(n+1)-adsky(n)
1056 IF(icddl/=0)rwd(ncond*(i-1)+icddl)=rwd(ncond*(i-1)+icddl)
1059 + rwd(ncond*(i-1)+icints)=rwd(ncond*(i-1)+icints)
1062 + rwd(ncond*(i-1)+icintm) = rwd(ncond*(i-1)+icintm)
1065 + rwd(ncond*(i-1)+icint2)=rwd(ncond*(i-1)+icint2)
1066 + +(iwcin2(1,n)+iwcin2(2,n))*fac
1067 IF(ickin/=0)rwd(ncond*(i-1)+ickin)=rwd(ncond*(i-1)+ickin)
1069 IF(icnod_sms/=0)rwd(ncond*(i-1)+icnod_sms)=rwd(ncond*(i-1)+icnod_sms)
1070 + +
min(dsdof(n),1)*fac
1086 IF (icr2r /= 0)
THEN
1087 IF (tag_elcf(i) /= 0)
THEN
1088 rwd(ncond*(i+off-1)+icr2r) = 1
1094 fac=one/(adsky(n+1)-adsky(n))
1095 nnc = nnc+adsky(n+1)-adsky(n)
1096 IF(icddl/=0)rwd(ncond
1097 + rwd(ncond*(i+off-1)+icddl) + dsdof(n)*fac
1099 + rwd(ncond*(i+off-1)+icints) = rwd(ncond*(i+off-1)+icints)
1102 + rwd(ncond*(i+off-1)+icintm) = rwd(ncond*(i+off-1)+icintm)
1105 + rwd(ncond*(i+off-1)+icint2) = rwd(ncond*(i+off-1)+icint2)
1106 + + (iwcin2(1,n)+iwcin2(2,n))*fac
1107 IF(ickin/=0)rwd(ncond*(i+off-1)+ickin)=
1108 + rwd(ncond*(i+off-1)+ickin) + iwkin(n)*fac
1109 IF(icnod_sms/=0)rwd(ncond*(i+off-1)+icnod_sms)=rwd(ncond*(i+off-1)+icnod_sms)
1110 + +
min(dsdof(n),1)*fac
1123 fac=one/(adsky(n+1)-adsky(n))
1124 nnc = nnc+adsky(n+1)-adsky(n)
1125 IF(icddl/=0)rwd(ncond*(i+off-1)+icddl) =
1126 + rwd(ncond*(i+off-1)+icddl) + dsdof(n)*fac
1128 + rwd(ncond*(i+off-1)+icints) = rwd(ncond*(i+off-1)+icints)
1131 + rwd(ncond*(i+off-1)+icintm) = rwd(ncond*(i+off-1)+icintm)
1134 + rwd(ncond*(i+off-1)+icint2) = rwd(ncond*(i+off-1)+icint2)
1135 + + (iwcin2(1,n)+iwcin2(2,n))*fac
1136 IF(ickin/=0)rwd(ncond*(i+off-1)+ickin)=
1137 + rwd(ncond*(i+off-1)+ickin) + iwkin(n)*fac
1138 IF(icnod_sms/=0)rwd(ncond*(i+off-1)+icnod_sms)=rwd(ncond*(i+off-1)+icnod_sms)
1152 fac=one/(adsky(n+1)-adsky(n))
1153 nnc = nnc+adsky(n+1)-adsky(n)
1154 IF(icddl/=0)rwd(ncond*(i+off-1)+icddl) =
1155 + rwd(ncond*(i+off-1)+icddl) + dsdof(n)*fac
1157 + rwd(ncond*(i+off-1)+icints) = rwd(ncond*(i+off-1)+icints)
1160 + rwd(ncond*(i+off-1)+icintm) = rwd(ncond*(i+off-1)+icintm)
1163 + rwd(ncond*(i+off-1)+icint2) = rwd(ncond*(i+off-1)+icint2)
1164 + + (iwcin2(1,n)+iwcin2(2,n))*fac
1165 IF(ickin/=0)rwd(ncond*(i+off-1)+ickin)=
1166 + rwd(ncond*(i+off-1)+ickin) + iwkin(n)*fac
1167 IF(icnod_sms/=0)rwd(ncond*(i+off-1)+icnod_sms)=rwd(ncond*(i+off-1)+icnod_sms)
1168 + +
min(dsdof(n),1)*fac
1181 fac=one/(adsky(n+1)-adsky(n))
1182 nnc = nnc+adsky(n+1)-adsky(n)
1183 IF(icddl/=0)rwd(ncond*(i+off-1)+icddl) =
1184 + rwd(ncond*(i+off-1)+icddl) + dsdof(n)*fac
1186 + rwd(ncond*(i+off-1)+icints) = rwd(ncond*(i+off-1)+icints)
1189 + rwd(ncond*(i+off-1)+icintm) = rwd(ncond*(i+off-1)+icintm)
1192 + rwd(ncond*(i+off-1)+icint2) = rwd(ncond*(i+off-1)+icint2)
1193 + + (iwcin2(1,n)+iwcin2(2,n))*fac
1194 IF(ickin/=0)rwd(ncond*(i+off-1)+ickin)=
1195 + rwd(ncond*(i+off-1)+ickin) + iwkin(n)*fac
1196 IF(icnod_sms/=0)rwd(ncond*(i+off-1)+icnod_sms)=rwd(ncond*(i+off-1)+icnod_sms)
1197 + +
min(dsdof(n),1)*fac
1200 IF(nint(geo(12,ixr(1,i)))==12)
THEN
1203 fac=one/(adsky(n+1)-adsky(n))
1204 nnc = nnc+adsky(n+1)-adsky(n)
1205 IF(icddl/=0)rwd(ncond*(i+off-1)+icddl) =
1206 + rwd(ncond*(i+off-1)+icddl) + dsdof(n)*fac
1208 + rwd(ncond*(i+off-1)+icints) = rwd(ncond*(i+off-1)+icints)
1211 + rwd(ncond*(i+off-1)+icintm) = rwd(ncond*(i+off-1)+icintm)
1214 + rwd(ncond*(i+off-1)+icint2) = rwd(ncond*(i+off-1)+icint2)
1215 + + (iwcin2(1,n)+iwcin2(2,n))*fac
1216 IF(ickin/=0)rwd(ncond*(i+off-1)+ickin)=
1217 + rwd(ncond*(i+off-1)+ickin) + iwkin(n)*fac
1218 IF(icnod_sms/=0)rwd(ncond*(i+off-1)+icnod_sms)=rwd(ncond*(i+off-1)+icnod_sms)
1219 + +
min(dsdof(n),1)*fac
1232 fac=one/(adsky(n+1)-adsky(n))
1233 nnc = nnc+adsky(n+1)-adsky(n)
1234 IF(icddl/=0)rwd(ncond*(i+off-1)+icddl) =
1235 + rwd(ncond*(i+off-1)+icddl) + dsdof(n)*fac
1237 + rwd(ncond*(i+off-1)+icints) = rwd(ncond*(i+off-1)+icints)
1240 + rwd(ncond*(i+off-1)+icintm) = rwd(ncond*(i+off-1)+icintm)
1243 + rwd(ncond*(i+off-1)+icint2) = rwd(ncond*(i+off-1)+icint2)
1244 + + (iwcin2(1,n)+iwcin2(2,n))*fac
1245 IF(ickin/=0)rwd(ncond*(i+off-1)+ickin)=
1246 + rwd(ncond*(i+off-1)+ickin) + iwkin(n)*fac
1247 IF(icnod_sms/=0)rwd(ncond*(i+off-1)+icnod_sms)=rwd(ncond*(i+off-1)+icnod_sms)
1248 + +
min(dsdof(n),1)*fac
1264 fac=one/(adsky(n+1)-adsky(n))
1265 nnc = nnc+adsky(n+1)-adsky(n)
1266 IF(icddl/=0)rwd(ncond*(i+off-1)+icddl) =
1267 + rwd(ncond*(i+off-1)+icddl) + dsdof(n)*fac
1269 + rwd(ncond*(i+off-1)+icints) = rwd(ncond*(i+off-1)+icints)
1272 + rwd(ncond*(i+off-1)+icintm) = rwd(ncond*(i+off-1)+icintm)
1275 + rwd(ncond*(i+off-1)+icint2) = rwd(ncond*(i+off-1)+icint2)
1276 + + (iwcin2(1,n)+iwcin2(2,n))*fac
1277 IF(ickin/=0)rwd(ncond*(i+off-1)+ickin)=
1278 + rwd(ncond*(i+off-1)+ickin) + iwkin(n)*fac
1279 IF(icnod_sms/=0)rwd(ncond*(i+off-1)+icnod_sms)=rwd(ncond*(i+off-1)+icnod_sms)
1280 + +
min(dsdof(n),1)*fac
1290 ALLOCATE(iwd(nelem*ncond),stat=ierr1)
1292 DO i = 1, ncond*nelem
1298 . iwd(ncond*(i-1)+icints) = nint(rwd(ncond*(i-1)+icints))
1300 . iwd(ncond*(i-1)+icintm) = nint(rwd(ncond*(i-1)+icintm))
1302 . iwd(ncond*(i-1)+iccand) = nint(rwd(ncond*(i-1)+iccand))
1304 . iwd(ncond*(i-1)+icint2) = nint(rwd(ncond*(i-1)+icint2))
1306 . iwd(ncond*(i-1)+icddl)= nint(rwd(ncond*(i-1)+icddl))
1308 . iwd(ncond*(i-1)+icsol)= nint(rwd(ncond*(i-1)+icsol))
1310 . iwd(ncond*(i-1)+ickin)= nint(rwd(ncond*(i-1)+ickin))
1312 . iwd(ncond*(i-1)+icr2r)= nint(rwd(ncond*(i-1)+icr2r))
1316 . iwd(ncond*(i-1)+icnod_sms) = nint(rwd(ncond*(i-1)+icnod_sms))
1325 DO cc1 = adsky(n), adsky(n+1)-1
1328 DO cc2 = cc1+1, adsky(n+1)-1
1330 IF(numg2 > 0 .AND. numg1 /= numg2)
THEN
1338 IF (iddlevel==1) nedges = nedges+nelemint
1342 IF(nelem < 100 000 000)
THEN
1343 siddconnect = 2*10*nelem
1347 siddconnect = 2 000 000 000
1355 ALLOCATE(iddconnect%PDOM(2,siddconnect),stat=ierr1)
1356 ALLOCATE(iddconnect%IENTRYDOM(2,nelem),stat=ierr1)
1362 IF(edge_filtering == 1 .AND. (numels > nelem / 3 .OR. icfsi > 0 ))
THEN
1363 WRITE(iout,
'(A)')
"** INFO: SIMPLIFIED DOMAIN DECOMPOSITION"
1368 ALLOCATE(connectivity(max_nb_nodes_per_elt,nelem))
1369 ALLOCATE(nb_nodes_mini(nelem))
1370 connectivity(1:max_nb_nodes_per_elt,1:nelem) = 0
1371 nb_nodes_mini(1:nelem) = 3
1373 CALL find_nodes(i ,connectivity(1,i),tagelem,ixs,ixs10,
1374 1 ixq ,ixc ,ixt ,ixp,ixr,
1375 2 ixtg ,kxx ,ixx,kxig3d,
1376 3 ixig3d,geo ,offelem,nb_nodes_mini(i))
1377 CALL sort_descending(connectivity(1,i))
1380 ALLOCATE(connect_weight(nelem))
1381 ALLOCATE(pointer_neigh(nelem))
1388 nelmin = nb_nodes_mini(i)
1389 elemnodes(1:max_nb_nodes_per_elt) = connectivity(1:max_nb_nodes_per_elt,i)
1393 DO k=1,max_nb_nodes_per_elt
1394 IF ( elemnodes(k)/=0 )
THEN
1395 DO l=adsky(elemnodes(k)), adsky(elemnodes(k)+1)-1
1396 IF( cne(l) > 0 .AND. cne(l) > i)
THEN
1397 connect_weight(cne(l)) =
1398 . connect_weight(cne(l)) + 1
1399 IF( connect_weight(cne(l)) == 1 )
THEN
1400 pointer_neigh(cne(l))=prev_neigh
1401 c_neigh = c_neigh + 1
1411 IF(nelmin == 0) nelmin = 3
1412 IF (c_neigh > 0 )
THEN
1414 IF(i /= prev_neigh)
THEN
1415 IF(consider_edge(connectivity,nb_nodes_mini,nelem,i,prev_neigh))
THEN
1420 point_delete=prev_neigh
1421 prev_neigh = pointer_neigh(prev_neigh)
1422 pointer_neigh(point_delete) = 0
1423 connect_weight(point_delete) = 0
1427 DEALLOCATE(connect_weight)
1428 DEALLOCATE(pointer_neigh)
1429 DEALLOCATE(nb_nodes_mini)
1430 DEALLOCATE(connectivity)
1437 DO cc1 = adsky(n), adsky(n+1)-1
1440 DO cc2 = cc1+1, adsky(n+1)-1
1442 IF(numg2 > 0 .AND. numg1 /= numg2)
THEN
1456 nedges = nedges + taille_local
1457 nedges_8 = nedges_8 + taille_local
1463 IF (iddlevel==1)
THEN
1469 IF(ielem21(i)==1)
THEN
1478 .
' ONE OR MORE ELEMENT OF MAIN SIDE OF INTERF. TYPE21',
1479 .
' NEEDS TO BE DEACTIVATED'
1486 IF(nvolu > 0 .AND. iddlevel == 1 .AND. icfsi == 0)
THEN
1488 . wd_max,fvm_elem,fvm_domdec,itab,igrsurf,t_monvol)
1506 n=inter_cand%IXINT(5,i)
1508 numg1=abs(cne(adsky(n)))
1510 itypint=abs(inter_cand%IXINT(6,i))
1512 IF(adsky(n+1)-adsky(n)>0)
THEN
1513 n=inter_cand%IXINT(1,i)
1514 n1=inter_cand%IXINT(2,i)
1515 n2=inter_cand%IXINT(3,i)
1516 DO i1 = adsky(n), adsky(n+1)-1
1518 DO i2 = adsky(n1), adsky(n1+1)-1
1520 IF(numg3==numg2)
THEN
1521 DO i3 = adsky(n2), adsky(n2+1)-1
1523 IF(numg4==numg2)
GOTO 100
1529 IF(numg1 /= numg2)
THEN
1543 IF( iwcont(4,n) > 0)
THEN
1544 DO i1 = adsky(n), adsky(n+1)-1
1546 iwd(ncond*(numg2-1)+iccand)=iwd(ncond*(numg2-1)+iccand)+iwcont(4,n)
1554 ALLOCATE(isort(nelemint))
1555 ALLOCATE(index_sort(2*nelemint))
1559 isort(i)=(-inter_cand%IXINT(6,i)) + 100
1561 itypint=abs(inter_cand%IXINT(6,i))
1563 CALL my_orders(0,work,isort,index_sort,nelemint,1)
1570 n=inter_cand%IXINT(5,i)
1574 cep_min = huge(cep_min)
1575 DO i1 = adsky(n), adsky(n+1)-1
1577 IF(cep_min > cep(numg3))
THEN
1579 cep_min = cep(numg1)
1581 IF(cep_min == 0)
EXIT
1585 itypint=abs(inter_cand%IXINT(6,i))
1587 IF(adsky(n+1)-adsky(n)>0)
THEN
1588 n=inter_cand%IXINT(1,i)
1589 n1=inter_cand%IXINT(2,i)
1590 n2=inter_cand%IXINT(3,i)
1592 DO i1 = adsky(n), adsky(n+1)-1
1594 IF(numg2 == numg1)
THEN
1598 DO i2 = adsky(n1), adsky(n1+1)-1
1600 IF(numg3 == numg1)
GOTO 107
1601 IF(numg3==numg2)
THEN
1602 DO i3 = adsky(n2), adsky(n2+1)-1
1604 IF(numg4 == numg1)
GOTO 107
1605 IF(numg4==numg2)
GOTO 107
1614 IF(numg1 /= numg2 .AND. (numg1 >0 ) .AND. (numg2 > 0))
THEN
1615 IF(cep(numg1)==0.OR.cep(numg2)==0)
THEN
1616 number_of_added_edges = number_of_added_edges + 1
1618 IF(cep(numg1) < 100 .AND. cep(numg2) < 100)
THEN
1621 cep(numg1) = cep(numg1) + 1
1622 cep(numg2) = cep(numg2) + 1
1625 refused_cep0 = refused_cep0 + 1
1628 if(numg1 == numg2) refused_numg = refused_numg + 1
1629 if(numg1<=0 .OR. numg2<=0) refused_numg0 = refused_numg0 + 1
1632 IF(iccand > 0 .AND. numg2 > 0)
THEN
1635 IF(inter_cand%IXINT(6,i)<0)
THEN
1637 iwd(ncond*(numg2-1)+iccand)=iwd(ncond*(numg2-1)+iccand)+5
1639 iwd(ncond*(numg2-1)+iccand)=iwd(ncond*(numg2-1)+iccand)+1
1644 ELSEIF(itypint==11)
THEN
1645 IF(adsky(n+1)-adsky(n)>0)
THEN
1646 n1=inter_cand%IXINT(3,i)
1647 n2=inter_cand%IXINT(4,i)
1648 DO i1 = adsky(n1), adsky(n1+1)-1
1650 IF(numg2 /= numg1)
THEN
1651 DO i2 = adsky(n2), adsky(n2+1)-1
1653 IF(numg3==numg2)
GOTO 111
1658 IF(numg1 /= numg2 .AND.(numg1>0 .AND. numg2 > 0))
THEN
1659 IF(cep(numg1)==0.OR.cep(numg2)==0)
THEN
1661 number_of_added_edges = number_of_added_edges + 1
1662 IF(cep(numg1) < 100 .AND. cep(numg2) < 100)
THEN
1665 cep(numg1) = cep(numg1) + 1
1666 cep(numg2) = cep(numg2) + 1
1669 refused_cep0 = refused_cep0 + 1
1672 if(numg1 == numg2) refused_numg = refused_numg + 1
1673 if(numg1<=0 .OR. numg2<=0) refused_numg0 = refused_numg0 + 1
1675 IF(iccand > 0 .AND. numg2 > 0)
THEN
1677 IF(inter_cand%IXINT(6,i)<0)
THEN
1678 iwd(ncond*(numg2-1)+iccand)=iwd(ncond*(numg2-1)+iccand)+1
1680 iwd(ncond*(numg2-1)+iccand)=iwd(ncond*(numg2-1)+iccand)+1
1685 ELSEIF(itypint==24.OR.itypint==25)
THEN
1686 IF(adsky(n+1)-adsky(n)>0)
THEN
1687 n=inter_cand%IXINT(1,i)
1688 n1=inter_cand%IXINT(2,i)
1689 n2=inter_cand%IXINT(3,i)
1690 DO i1 = adsky(n), adsky(n+1)-1
1692 IF(numg2 == numg1)
GOTO 124
1693 IF(numg2 /= numg1)
THEN
1694 DO i2 = adsky(n1), adsky(n1+1)-1
1696 IF(numg3 == numg1)
GOTO 124
1697 IF(numg3==numg2)
THEN
1698 DO i3 = adsky(n2), adsky(n2+1)-1
1700 IF(numg4 == numg1)
GOTO 124
1701 IF(numg4==numg2)
GOTO 124
1708 IF(numg1 /= numg2 .AND. (numg1>0 .AND. numg2 > 0))
THEN
1709 IF(cep(numg1)==0.OR.cep(numg2)==0)
THEN
1710 number_of_added_edges = number_of_added_edges + 1
1711 IF(cep(numg1) < 100 .AND. cep(numg2) < 100)
THEN
1714 cep(numg1) = cep(numg1) + 1
1715 cep(numg2) = cep(numg2) + 1
1718 refused_cep0 = refused_cep0 + 1
1721 if(numg1 == numg2) refused_numg = refused_numg + 1
1722 if(numg1<=0 .OR. numg2<=0) refused_numg0 = refused_numg0 + 1
1724 IF(iccand > 0 .AND. numg2 > 0)
THEN
1725 IF(inter_cand%IXINT(6,i)<0)
THEN
1726 iwd(ncond*(numg2-1)+iccand)=iwd(ncond*(numg2-1)+iccand)+5
1728 iwd(ncond*(numg2-1)+iccand)=iwd(ncond*(numg2-1)+iccand)+1
1740 ALLOCATE(colors(nelem+1),stat=ierr1)
1741 ALLOCATE(roots(nelem),stat=ierr1)
1742 CALL plist_bfs(nelem,nconnx,colors,roots)
1744 !numg1
id of
the root element of
the larest connected part
1745 ALLOCATE(min_dist(nconnx))
1746 ALLOCATE(coords(3,nconnx))
1749 CALL find_nodes(roots(i) ,elemnodes,tagelem,ixs,ixs10,
1750 1 ixq ,ixc ,ixt ,ixp,ixr,
1751 2 ixtg ,kxx ,ixx,kxig3d,
1752 3 ixig3d,geo ,offelem,nelmin)
1754 IF(elemnodes(1) /= 0)
THEN
1755 coords(1:3,i) = x(1:3,elemnodes(1))
1757 coords(1:3,i) = zero
1763 min_dist(1:nconnx) = huge(1.0)
1766 IF(numg1 /= numg2)
THEN
1767 min_dist(j) = (coords(1,i)-coords(1,j))**2
1768 . + (coords(2,i)-coords(2,j))**2
1769 . + (coords(3,i)-coords(3,j))**2
1773 dist = minval(min_dist(1:nconnx))
1777 IF(numg1 /= numg2 .AND. min_dist(j) < 2.0*dist)
THEN
1786 DEALLOCATE(min_dist)
1788 DEALLOCATE(index_sort,isort)
1803 nedges = nedges + taille_local
1804 nedges_8 = nedges_8 + taille_local
1807 nedges_8 = nedges_8 / 2
1810 IF(
ALLOCATED(tagelem))
DEALLOCATE(tagelem)
1820!
if more than 1 small rigid body : bool_rbody
logical = true
1824 IF(iddlevel/=0)
THEN
1825 numel = numels+numelq+numelc+numelt+numelp+numelr
1826 . + numeltg+numelx+numsph+numelig3d
1837 number_of_element_rbody = 0
1842 DO ijk = adsky(i),adsky(i+1)-1
1843 number_of_element_rbody = number_of_element_rbody + 1
1848 DO ijk = adsky(m),adsky(m+1)-1
1849 number_of_element_rbody = number_of_element_rbody + 1
1852 ALLOCATE( list_element_rbody(number_of_element_rbody) )
1855 number_of_element_rbody = 0
1860 DO ijk = adsky(i),adsky(i+1)-1
1862 numg2 = abs(cne(cc2))
1863 number_of_element_rbody = number_of_element_rbody + 1
1864 list_element_rbody( number_of_element_rbody ) = numg2
1870 DO ijk = adsky(m),adsky(m+1)-1
1872 numg2 = abs(cne(cc2))
1874 list_element_rbody( number_of_element_rbody ) = numg2
1878 IF(number_of_element_rbody>0)
1880 DEALLOCATE( list_element_rbody )
1890 IF (nedges>0 .AND. nspmd > 1)
THEN
1892 ALLOCATE(xadj(nelem+1),stat=ierr1)
1901 nedges = nedges + taille_local
1905 ALLOCATE(adjncy(2*nedges),stat=ierr1)
1910 xadj(i+1) = xadj(i) + taille_local
1911 IF(taille_local>0)
THEN
1916 DEALLOCATE(iddconnect%PDOM)
1917 DEALLOCATE(iddconnect%IENTRYDOM)
1920 IF(
ALLOCATED(colors))
DEALLOCATE(colors)
1921 IF(
ALLOCATED(roots))
DEALLOCATE(roots)
1922 ALLOCATE(colors(nelem+1),stat=ierr1)
1923 ALLOCATE(roots(nelem),stat=ierr1)
1924 CALL dd_bfs(xadj,adjncy,nelem,nedges,nconnx,colors,roots)
1927 .
' NUMBER OF DISCONNECTED COMPONENTS FIXED FOR DOMAIN DECOMP:'
1930 ALLOCATE(xadj_old(nelem+1),stat=ierr1)
1931 ALLOCATE(adjncy_old(2*nedges),stat=ierr1)
1932 xadj_old(1:nelem+1)=xadj(1:nelem+1)
1933 adjncy_old(1:2*nedges)=adjncy(1:2*nedges)
1934 newedge = nedges+nconnx-1
1936 ALLOCATE(adjncy(2*newedge),stat=ierr1)
1942 i1old=xadj_old(curr)
1943 i2old=xadj_old(curr+1)-1
1947 IF(i1old <= 2*nedges)
THEN
1948 DO WHILE ((i1old <= i2old) .AND.
1949 + (adjncy_old(i1old) < prev))
1950 adjncy(i1) = adjncy_old(i1old)
1953 IF(i1old > 2*nedges)
EXIT
1963 IF(i1old <= 2*nedges)
THEN
1964 DO WHILE ((i1old <= i2old) .AND.
1965 + (adjncy_old(i1old) < next))
1966 adjncy(i1) = adjncy_old(i1old)
1969 IF(i1old > 2*nedges)
EXIT
1979 DO WHILE (i1old <= i2old)
1980 adjncy(i1) = adjncy_old(i1old)
1986 DO WHILE (n /= next)
1990 i2old=xadj_old(n+1)-1
1991 DO WHILE (i1old <= i2old)
1992 adjncy(i1) = adjncy_old(i1old)
1999 xadj(next)=xadj(next)+inc
2003 DEALLOCATE(xadj_old,adjncy_old)
2005 CALL dd_bfs(xadj,adjncy,nelem,nedges,nconnx,colors,roots)
2007 WRITE(iout,
'(A,I8)')
2008 .
'** INFO: REMAINING DISCONNECTED COMPONENTS:',nconnx
2011 DEALLOCATE(colors,roots)
2014 WRITE(iout,fmt=fmw_a_i)
2015 .
' ELEMENT NUMBER = ',nelem
2016 WRITE(iout,fmt=fmw_a_i)
' EDGES FOUND = ',nedges
2024 ierror = metis_setdefaultoptions(options)
2058 iwd(ncond*(i-1)+icelem) = nint(wd(i)*100)
2065 pid = abs(ixs(10,i))
2066 jale_from_mat = nint(pm(72,mid))
2067 jale_from_prop = igeo(62,pid)
2068 jale =
max(jale_from_mat, jale_from_prop)
2069 mln = nint(pm(19,mid))
2070 IF(jale==0.AND.mln/=18)
THEN
2071 iwd(ncond*(i-1)+icelem) = nint(wd(i)*100)
2072 iwd(ncond*(i-1)+icfsi) = 0
2074 iwd(ncond*(i-1)+icelem) = 0
2075 iwd(ncond*(i-1)+icfsi) = nint(wd(i)*100)
2079 iwd(ncond*(i-1)+icelem) = nint(wd(i)*100)
2087 IF(wd(i)==0.0001)
THEN
2088 iwd(ncond*(i-1)+icdel) = 1
2090 iwd(ncond*(i-1)+icdel) = 0
2098 IF(ncluster > 0)
THEN
2100 cluster_typ = clusters(i)%TYPE
2102 IF(cluster_typ==2.OR.cluster_typ==3) offset_cluster = numels+numelq+numelc+numelt
2103 DO j = 2, clusters(i)%NEL
2105 iwd((clusters(i)%ELEM(1)-1) * ncond+k +offset_cluster) =
2106 . iwd((clusters(i)%ELEM(1)-1) * ncond+k +offset_cluster) +
2107 . iwd((clusters(i)%ELEM(j)-1) * ncond+k +offset_cluster)
2108 iwd((clusters(i)%ELEM(j)-1) * ncond+k +offset_cluster) = 0
2122 ws = ws + iwd(ncond*(j-1)+i)
2125 WRITE(iout,
'(A,I4)')
2126 .
' WEIGHT PRECISION DECREASED TO ENABLE CRITERION',i
2128 iwd(ncond*(j-1)+i) = iwd(ncond*(j-1)+i)/10
2136 ubvec(icelem) = 1.02
2137 IF(icints/=0) ubvec(icints) = 1.05
2138 IF(icintm/=0) ubvec(icintm) = 1.05
2139 IF(icint2/=0) ubvec(icint2) = 1.05
2140 IF(icddl/=0) ubvec(icddl) = 1.02
2141 IF(icsol/=0) ubvec(icsol) = 1.05
2142 IF(icfsi/=0) ubvec(icfsi) = 1.02
2143 IF(icdel/=0) ubvec(icdel) = 1.10
2144 IF(iccand/=0) ubvec(iccand) = 1.10
2145 IF(ickin/=0) ubvec(ickin) = 1.10
2146 IF(icr2r/=0) ubvec(icr2r) = 1.30
2147 IF(icnod_sms/=0) ubvec(icnod_sms) = 1.05
2152 IF(dectyp==3.OR.dectyp==5)
THEN
2156 1 nelem,ncond,xadj,adjncy,
2158 3 ubvec,options,nec,cep)
2161 IF(idb_metis == 1)
THEN
2164 WRITE(chlevel,
'(I1)')iddlevel
2166 OPEN(99,file=
"input.graph"//chlevel,form=
'FORMATTED',recl=8192)
2167 write(99,*) nelem,nedges,
"010",ncond
2169 write(99,*)iwd(ncond*(i-1)+1:ncond*(i-1)+ncond),
2170 + adjncy(xadj(i):xadj(i+1)-1)
2171 it = it + xadj(i+1)-xadj(i)
2173 print *,'writing graph with check:
',it,'/
',nedges*2
2176.OR.
ELSEIF(DECTYP==4DECTYP==6)THEN
2178 IERR1 = Wrap_METIS_PartGraphRecursive(
2179 1 NELEM,NCOND,XADJ,ADJNCY,
2181 3 UBVEC,OPTIONS,NEC,CEP)
2184 1 WIS ,WI2 ,WFSI ,WDEL ,WDDL ,
2185 2 WCAND ,WSOL ,WR2R ,WKIN ,IWD ,
2186 3 NCOND ,ICELEM ,ICINTS ,ICINT2 ,ICCAND ,
2187 4 ICDDL ,ICSOL ,ICFSI ,ICDEL ,ICR2R ,
2188 5 ICKIN ,AVERAGE ,DEVIATION ,DMAX ,DMIN ,
2189 6 CEP ,NELEM ,W ,ICINTM ,WIM ,
2190 7 NCRITMAX ,WNOD_SMS,ICNOD_SMS)
2193.AND.
IF(ICFSI > 0 ICFSI < ICELEM) THEN
2194! the order in DMIN,DMAX is independent of the order of constraints
2202.OR..AND..OR.
IF( ( MAIN_TARGET == 7 IDDLEVEL==1) (DECTYP==3 DECTYP==5) )THEN
2203 IF(DMIN(MAIN_TARGET) < AVERAGE(MAIN_TARGET)*0.90 )THEN
2205 . '** info: decomposition unbalancing detected
'
2206 WRITE(IOUT,'(a,i5,a,2x,i8,2x,i8,2x,i8)
')
2207 . ' domains:
',NSPMD,' min/
max/average:
',
2208 . NINT(DMIN(MAIN_TARGET)),NINT(DMAX(MAIN_TARGET)),NINT(AVERAGE(MAIN_TARGET))
2210 WRITE(IOUT,'(a)
')' revert to
RECURSIVE bissection
'
2215 UBVEC(ICELEM) = 1.01
2216 IF(ICINTS/=0) UBVEC(ICINTS) = 1.02
2217 IF(ICINTM/=0) UBVEC(ICINTM) = 1.02
2218 IF(ICINT2/=0) UBVEC(ICINT2) = 1.02
2219 IF(ICDDL/=0) UBVEC(ICDDL) = 1.05
2220 IF(ICSOL/=0) UBVEC(ICSOL) = 1.05
2221 IF(ICFSI/=0) UBVEC(ICFSI) = 1.05
2222 IF(ICDEL/=0) UBVEC(ICDEL) = 1.05
2223 IF(ICCAND/=0) UBVEC(ICCAND) = 1.05
2224 IF(ICKIN/=0) UBVEC(ICKIN) = 1.05
2225 IF(ICR2R/=0) UBVEC(ICR2R) = 1.30
2226 IF(ICNOD_SMS/=0) UBVEC(ICNOD_SMS) = 1.0
2228 UBVEC(ICELEM) = 1.001
2229 IF(ICINTS/=0) UBVEC(ICINTS) = 1.02
2230 IF(ICINTM/=0) UBVEC(ICINTM) = 1.02
2231 IF(ICINT2/=0) UBVEC(ICINT2) = 1.02
2232 IF(ICDDL/=0) UBVEC(ICDDL) = 1.01
2233 IF(ICSOL/=0) UBVEC(ICSOL) = 1.03
2234 IF(ICFSI/=0) UBVEC(ICFSI) = 1.01
2235 IF(ICDEL/=0) UBVEC(ICDEL) = 1.03
2236 IF(ICCAND/=0) UBVEC(ICCAND) = 1.03
2237 IF(ICKIN/=0) UBVEC(ICKIN) = 1.03
2238 IF(ICR2R/=0) UBVEC(ICR2R) = 1.30
2239 IF(ICNOD_SMS/=0) UBVEC(ICNOD_SMS) = 1.0
2249 ALLOCATE(IWD_COPY(NCOND*NELEM))
2250 ALLOCATE(WD_COPY(NELEM))
2251.OR..AND..AND.
IF((DECTYP==4 DECTYP==6) IDDLEVEL==1 NELEM>10*NSPMD )THEN
2253 IF(ICDEL /= 0 ) THEN
2254.AND.
IF(ELEMD > 9*NELEM/10 DMIN(MAIN_TARGET) < AVERAGE(MAIN_TARGET)*0.80 ) THEN
2255 ! If the model is mainly deleted elements
2256 ! Then we equilibrate first on deleted elements
2258 WGHT=IWD(NCOND*(I-1)+1)
2259 IWD(NCOND*(I-1)+1) = IWD(NCOND*(I-1)+ICDEL)
2260 IWD(NCOND*(I-1)+ICDEL)=WGHT
2268 WD_COPY(1:NELEM) = WD(1:NELEM)
2269 IWD_COPY(1:NCOND * NELEM) = IWD(1:NCOND*NELEM)
2271 DD_UNBALANCED = (DMIN(MAIN_TARGET) < AVERAGE(MAIN_TARGET)*0.80)
2273.OR.
DD_UNBALANCED = DD_UNBALANCED (DMAX(MAIN_TARGET) > AVERAGE(MAIN_TARGET)*1.1)
2276 IF(FVM_ELEM(N) /= 0) THEN
2277 WD_MAX0= MAX(WD_MAX0,DBLE(WD(FVM_ELEM(N))))
2280 WD_MAX0 = MIN(WD_MAX,WD_MAX0)
2284.AND.
DO WHILE(DD_UNBALANCED NCOND2 > 1 )
2287 . '** info: decomposition unbalancing detected
'
2288 WRITE(IOUT,'(a,i5,a,2x,i8,2x,i8,2x,i8)
')
2289 . ' domains:
',NSPMD,' min/
max/average:
',
2290 . NINT(DMIN(MAIN_TARGET)),NINT(DMAX(MAIN_TARGET)),NINT(AVERAGE(MAIN_TARGET))
2292 !==========================================
2293 ! REVIEW WEIGHTS OF FVMBAGS
2295 ! Try to trim the weight of FVMBAG
2296 ! if the domain decomposition fails
2298.AND.
IF(FVM_DOMDEC DD_FVMBAG_TRY <= MAX_TRY) THEN
2299 WD_MAX = WD_MAX / (0.1D0 * WD_MAX_FACTOR)
2301 IF(FVM_ELEM(N) /= 0) THEN
2302 IF(WD(FVM_ELEM(N)) > WD_MAX) THEN
2303 WD(FVM_ELEM(N)) = WD_MAX
2304 IWD(NCOND*(FVM_ELEM(N)-1)+ICELEM) = NINT(WD_MAX*100)
2305 NB_FVMBAG_TRIM = NB_FVMBAG_TRIM + 1
2310 IF(NB_FVMBAG_TRIM > 0) THEN
2311 ! Try to reduce the weight of the FVMBAG vertex
2312 ! before reducing the number of constraints
2313 DD_FVMBAG_TRY = DD_FVMBAG_TRY + 1
2315 ! Reducing the number of constraints
2319 MAX_TRY = MAX_TRY + 1
2321 WD(1:NELEM) = WD_COPY(1:NELEM)
2322 IWD(1:NCOND*NELEM) = IWD_COPY(1:NCOND*NELEM)
2324 !==============================================
2328 WRITE(IOUT,'(a,i5)
') 'retry kway with ncond =
',NCOND2
2330 ALLOCATE(IWD2(NCOND2*NELEM))
2333 IWD2( NCOND2*(I-1) +J ) = IWD ( NCOND*(I-1) + J)
2337 IERR1 = WRAP_METIS_PartGraphKway(
2338 1 NELEM,NCOND2,XADJ,ADJNCY,
2340 3 UBVEC,OPTIONS,NEC,CEP)
2342 1 WIS ,WI2 ,WFSI ,WDEL ,WDDL ,
2343 2 WCAND ,WSOL ,WR2R ,WKIN ,IWD ,
2344 3 NCOND ,ICELEM ,ICINTS ,ICINT2 ,ICCAND ,
2345 4 ICDDL ,ICSOL ,ICFSI ,ICDEL ,ICR2R ,
2346 5 ICKIN ,AVERAGE ,DEVIATION ,DMAX ,DMIN ,
2347 6 CEP ,NELEM ,W ,ICINTM ,WIM ,
2348 7 NCRITMAX ,WNOD_SMS,ICNOD_SMS)
2350! CHECK Quality of Domain Decomp on elements
2351 DD_UNBALANCED = (DMIN(MAIN_TARGET) < AVERAGE(MAIN_TARGET)*0.80)
2353.OR.
DD_UNBALANCED = DD_UNBALANCED (DMAX(MAIN_TARGET) > AVERAGE(MAIN_TARGET)*1.1)
2357 IF(DD_UNBALANCED)THEN
2360 . '** info: decomposition unbalancing detected
'
2361 WRITE(IOUT,'(a,i5,a,2x,i8,2x,i8,2x,i8)
')
2362 . ' domains:
',NSPMD,' min/
max/average:
',
2363 . NINT(DMIN(MAIN_TARGET)),NINT(DMAX(MAIN_TARGET)),NINT(AVERAGE(MAIN_TARGET))
2367 IERR1 = WRAP_METIS_PartGraphRecursive(
2368 1 NELEM,NCOND2,XADJ,ADJNCY,
2370 3 UBVEC,OPTIONS,NEC,CEP)
2372 1 WIS ,WI2 ,WFSI ,WDEL ,WDDL ,
2373 2 WCAND ,WSOL ,WR2R ,WKIN ,IWD ,
2374 3 NCOND ,ICELEM ,ICINTS ,ICINT2 ,ICCAND ,
2375 4 ICDDL ,ICSOL ,ICFSI ,ICDEL ,ICR2R ,
2376 5 ICKIN ,AVERAGE ,DEVIATION ,DMAX ,DMIN ,
2377 6 CEP ,NELEM ,W ,ICINTM ,WIM ,
2378 7 NCRITMAX ,WNOD_SMS,ICNOD_SMS)
2383 DD_UNBALANCED = (DMIN(MAIN_TARGET) < AVERAGE(MAIN_TARGET)*0.80)
2385.OR.
DD_UNBALANCED = DD_UNBALANCED (DMAX(MAIN_TARGET) > AVERAGE(MAIN_TARGET)*1.1)
2388.AND.
ENDDO ! ( DMIN(MAIN_TARGET) < AVERAGE(MAIN_TARGET)*0.80 NCOND2 > 1 )
2390 DEALLOCATE(IWD_COPY)
2395 ! stick the list of rigid body element on a given processor
2396.AND.
IF(IDDLEVEL/=0BOOL_RBODY) CALL C_ENFORCE_CONSTRAINTS_RBODY(CEP,NSPMD,NRBYKIN)
2398 ! make sure that lists of elements in C_PREVENT_DECOMPOSITION are on the same domain
2399 CALL C_ENFORCE_CONSTRAINTS(CEP)
2402 IF (NCLUSTER > 0) THEN
2404 CLUSTER_TYP = CLUSTERS(I)%TYPE
2406.OR.
IF(CLUSTER_TYP==2CLUSTER_TYP==3) OFFSET_CLUSTER = NUMELS+NUMELQ+NUMELC+NUMELT+NUMELP
2407 CEPCLUSTER=CEP( CLUSTERS(I)%ELEM(1)+OFFSET_CLUSTER )
2408 DO J = 2,CLUSTERS(I)%NEL
2409 CEP( CLUSTERS(I)%ELEM(J)+OFFSET_CLUSTER ) = CEPCLUSTER
2411 END DO ! I = 1, NCLUSTER
2412 END IF ! NCLUSTER > 0
2417.AND..AND.
IF(NVOLU > 0 IDDLEVEL==1 FVM_DOMDEC) THEN
2419 OFFC = NUMELS+NUMELQ
2420 OFFTG =NUMELS+NUMELQ+ NUMELC+NUMELT+NUMELP+NUMELR
2425 ITYP = T_MONVOL(N)%TYPE
2426 NN = T_MONVOL(N)%NNS
2427! find location of the first element
2428! i.e. the element with all the weight
2429.OR.
IF(ITYP == 6 ITYP == 8) NFVMBAG = NFVMBAG + 1
2431.AND..OR.
IF(NN > 0 (ITYP == 6 ITYP == 8)) THEN
2432 CEPCLUSTER = CEP(FVM_ELEM(N))
2433 FVMAIN(NFVMBAG) = CEPCLUSTER
2439 DEALLOCATE(XADJ,ADJNCY)
2440! IF(ASSOCIATED(ADJWGT2)) DEALLOCATE(ADJWGT2)
2446 !---------------------!
2447 !2D - EBCS : send boundary cells in domain 1
2449 IF(EBCS_TAG_CELL_SPMD(I)==1)THEN
2454 IF(EBCS_TAG_CELL_SPMD(NUMELQ+I)==1)THEN
2455 CEP(NUMELS+NUMELQ+NUMELC+NUMELT+NUMELP+NUMELR+I)=0
2458 !3D - EBCS : send boundary cells in domain 1
2460 IF(EBCS_TAG_CELL_SPMD(NUMELQ+NUMELTG+I)==1)THEN
2464 !---------------------!
2466.OR.
IF(DECTYP==5DECTYP==6)THEN
2467 IF(DDNOD_SMS==0)THEN
2472 ELSEIF(ICFSI==0) THEN
2473.AND.
IF(ICSOL==0ICDEL==0)THEN
2475.AND.
ELSEIF(ICSOL/=0ICDEL==0)THEN
2477.AND.
ELSEIF(ICSOL/=0ICDEL/=0)THEN
2479.AND.
ELSEIF(ICSOL==0ICDEL/=0)THEN
2482 ELSEIF(ICFSI/=0)THEN
2490.OR.
IF(DECTYP==5DECTYP==6)THEN
2491 IF(DDNOD_SMS==0)THEN
2492 WRITE(IOUT,'(i4,8f15.0)
')
2493 . I,W(I),WIS(I),WIM(I),WCAND(I),WI2(I),WDDL(I)
2495 WRITE(IOUT,'(i4,8f15.0)
')
2496 . I,W(I),WIS(I),WIM(I),WCAND(I),WI2(I),WDDL(I),WNOD_SMS(I)
2498 ELSEIF(ICFSI==0)THEN
2499.AND.
IF(ICSOL==0ICDEL==0)THEN
2500 WRITE(IOUT,'(i4,8f15.0)
')
2501 . I,W(I),WIS(I),WIM(I),WCAND(I),WI2(I),WKIN(I)
2502.AND.
ELSEIF(ICSOL/=0ICDEL==0)THEN
2503 WRITE(IOUT,'(i4,8f15.0)
')
2504 . I,W(I),WIS(I),WIM(I),WCAND(I),WI2(I),WSOL(I),WKIN(I)
2505.AND.
ELSEIF(ICSOL/=0ICDEL/=0)THEN
2506 WRITE(IOUT,'(i4,8f15.0)
')
2507 . I,W(I),WIS(I),WIM(I),WCAND(I),WI2(I),WSOL(I),WDEL(I),WKIN(I)
2508.AND.
ELSEIF(ICSOL==0ICDEL/=0)THEN
2509 WRITE(IOUT,'(i4,8f15.0)
')
2510 . I,W(I),WIS(I),WIM(I),WCAND(I),WI2(I),WDEL(I),WKIN(I)
2512.AND.
ELSEIF(ICFSI/=0ICDEL==0)THEN
2513 WRITE(IOUT,'(i4,8f15.0)
')
2514 . I,W(I),WIS(I),WIM(I),WCAND(I),WI2(I),WFSI(I)
2515.AND.
ELSEIF(ICFSI/=0ICDEL/=0)THEN
2516 WRITE(IOUT,'(i4,8f15.0)
')
2517 . I,W(I),WIS(I),WIM(I),WCAND(I),WI2(I),WFSI(I),WDEL(I)
2522 WRITE(IOUT,*)'statistics on decomposition weights
'
2523 WRITE(IOUT,*)'-----------------------------------
'
2525 WRITE(IOUT,'(a,i8,2x,i8,2x,i8,4x,i8)
')
2527 . NINT(DMIN(1)),NINT(DMAX(1)),
2528 . NINT(AVERAGE(1)),NINT(DEVIATION(1))
2529 IF(ICINTS/=0) WRITE(IOUT,'(a,i8,2x,i8,2x,i8,4x,i8)
')
2531 . NINT(DMIN(2)),NINT(DMAX(2)),
2532 . NINT(AVERAGE(2)),NINT(DEVIATION(2))
2533 IF(ICINTM/=0) WRITE(IOUT,'(a,i8,2x,i8,2x,i8,4x,i8)
')
2535 . NINT(DMIN(11)),NINT(DMAX(11)),
2536 . NINT(AVERAGE(11)),NINT(DEVIATION(11))
2537 IF(ICCAND/=0) WRITE(IOUT,'(a,i8,2x,i8,2x,i8,4x,i8)
')
2539 . NINT(DMIN(4)),NINT(DMAX(4)),
2540 . NINT(AVERAGE(4)),NINT(DEVIATION(4))
2541 IF(ICINT2/=0) WRITE(IOUT,'(a,i8,2x,i8,2x,i8,4x,i8)
')
2543 . NINT(DMIN(3)),NINT(DMAX(3)),
2544 . NINT(AVERAGE(3)),NINT(DEVIATION(3))
2545 IF(ICSOL/=0) WRITE(IOUT,'(a,i8,2x,i8,2x,i8,4x,i8)
')
2547 . NINT(DMIN(6)),NINT(DMAX(6)),
2548 . NINT(AVERAGE(6)),NINT(DEVIATION(6))
2549 IF(ICDEL/=0) WRITE(IOUT,'(a,i8,2x,i8,2x,i8,4x,i8)
')
2551 . NINT(DMIN(8)),NINT(DMAX(8)),
2552 . NINT(AVERAGE(8)),NINT(DEVIATION(8))
2553 IF(ICKIN/=0) WRITE(IOUT,'(a,i8,2x,i8,2x,i8,4x,i8)
')
2555 . NINT(DMIN(10)),NINT(DMAX(10)),
2556 . NINT(AVERAGE(10)),NINT(DEVIATION(10))
2558 IF(ISMS==0)THEN ! Implicit
2559 WRITE(IOUT,'(a,i8,2x,i8,2x,i8,4x,i8)
')
2561 . NINT(DMIN(5)),NINT(DMAX(5)),
2562 . NINT(AVERAGE(5)),NINT(DEVIATION(5))
2564 WRITE(IOUT,'(a,i8,2x,i8,2x,i8,4x,i8)
')
2566 . NINT(DMIN(5)),NINT(DMAX(5)),
2567 . NINT(AVERAGE(5)),NINT(DEVIATION(5))
2570 IF(ICFSI/=0) WRITE(IOUT,'(a,i8,2x,i8,2x,i8,4x,i8)
')
2572 . NINT(DMIN(7)),NINT(DMAX(7)),
2573 . NINT(AVERAGE(7)),NINT(DEVIATION(7))
2574 IF(ICR2R/=0) WRITE(IOUT,'(a,i8,2x,i8,2x,i8,4x,i8)
')
2576 . NINT(DMIN(9)),NINT(DMAX(9)),
2577 . NINT(AVERAGE(9)),NINT(DEVIATION(9))
2578 IF(ICNOD_SMS/=0) WRITE(IOUT,'(a,i8,2x,i8,2x
')
2580 . NINT(DMIN(12)),NINT(DMAX(12)),
2581 . NINT(AVERAGE(12)),NINT(DEVIATION(12))
2585 DEALLOCATE(IDDCONNECT%PDOM)
2586 DEALLOCATE(IDDCONNECT%IENTRYDOM)
2593 1000 FORMAT('#PROC ELEMENT W. SECND NOD W. MAST NOD W. CONT ELT W.',
2594 .
' INT2 W. DOF W.')
2595 1100
FORMAT(
'#PROC ELEMENT W. SECND NOD W. MAST NOD W. CONT ELT W.',
2596 .
' INT2 W. DOF W. AMS CONT ELT W')
2597 2000
FORMAT(
'#PROC ELEMENT W. SECND NOD W. MAST NOD W. CONT ELT W.',
2598 .
' INT2 W. KIN COND W.')
2599 3000
FORMAT(
'#PROC ELEMENT W. SECND NOD W. MAST NOD W. CONT ELT W.',
2600 .
' INT2 W. SOL W. KIN COND W.')
2601 4000
FORMAT(
'#PROC ELEMENT W. SECND NOD W. MAST NOD W. CONT ELT W.',
2602 .
' INT2 W. SOL W. ELT DEL W.',
2604 5000
FORMAT(
'#PROC ELEMENT W. SECND NOD W. MAST NOD W. CONT ELT W.',
2605 .
' INT2 W. ELT DEL W. KIN COND W.')
2606 6000
FORMAT(
'#PROC ELT LAG W. SECND NOD W. MAST NOD W. CONT ELT W.',
2607 .
' INT2 W. ELT ALE W.')
2608 7000
FORMAT(
'#PROC ELT LAG W. SECND NOD W. MAST NOD W. CONT ELT W.',
2609 .
' INT2 W. ELT ALE W. ELT DEL W.')
2610 8000
FORMAT(
' METRIC MINIMUM MAXIMUM AVERAGE',
2611 .
' STANDARD DEVIATION')