54 1 ELBUF_STR,IOUT ,IPROP ,IMAT ,NGL ,TIME ,TIMESTEP,FR_WAVE,
55 2 XX1 ,XX2 ,XX3 ,XX4 ,XX5 ,XX6 ,XX7 ,XX8 ,
56 3 YY1 ,YY2 ,YY3 ,YY4 ,YY5 ,YY6 ,YY7 ,YY8 ,
57 4 ZZ1 ,ZZ2 ,ZZ3 ,ZZ4 ,ZZ5 ,ZZ6 ,ZZ7 ,ZZ8 ,
58 5 UX1 ,UX2 ,UX3 ,UX4 ,UX5 ,UX6 ,UX7 ,UX8 ,
59 6 UY1 ,UY2 ,UY3 ,UY4 ,UY5 ,UY6 ,UY7 ,UY8 ,
60 7 UZ1 ,UZ2 ,UZ3 ,UZ4 ,UZ5 ,UZ6 ,UZ7 ,UZ8 ,
61 8 VX1 ,VX2 ,VX3 ,VX4 ,VX5 ,VX6 ,VX7 ,VX8 ,
62 9 VY1 ,VY2 ,VY3 ,VY4 ,VY5 ,VY6 ,VY7 ,VY8 ,
63 A VZ1 ,VZ2 ,VZ3 ,VZ4 ,VZ5 ,VZ6 ,VZ7 ,VZ8 ,
64 B FX1 ,FX2 ,FX3 ,FX4 ,FX5 ,FX6 ,FX7 ,FX8 ,
65 F FY1 ,FY2 ,FY3 ,FY4 ,FY5 ,FY6 ,FY7 ,FY8 ,
66 G FZ1 ,FZ2 ,FZ3 ,FZ4 ,FZ5 ,FZ6 ,FZ7 ,FZ8 ,
67 H STIFM ,STIFR ,VISCM ,VISCR ,PARTSAV,IPARTS ,BUFMAT ,IOUTPRT,
68 L IFAILURE ,NPF ,TF ,IPM ,IGEO ,NPG ,NEL ,JSMS ,
69 M DMELS ,PM ,GEO ,ITASK ,JTHE ,TABLE ,MAT_PARAM,
70 N IDTMINS ,DTFACS,DTMINS)
78 USE sigeps169_connect_mod
146#include "implicit_f.inc"
147#include "param_c.inc"
148#include "com01_c.inc"
149#include "com04_c.inc"
150#include "scr19_c.inc"
152#include "userlib.inc"
153#include "timeri_c.inc"
157 TYPE(timer_),
INTENT(INOUT) :: TIMERS
158 INTEGER NEL,IOUT,IPROP,IMAT,IOUTPRT,IFAILURE,NPG, JSMS,JTHE
159 INTEGER NGL(NEL),IPARTS(*),NPF(*),IPM(NPROPMI,*),
160 . IGEO(NPROPGI,*),ITASK
162 INTEGER,
INTENT(IN) :: IDTMINS
163 my_real,
INTENT(IN) :: DTFACS
164 my_real,
INTENT(IN) :: DTMINS
166 . TIME,TIMESTEP,PARTSAV(NPSAV,*),DMELS(*),PM(NPROPM,*),
167 . STIFM(*) ,STIFR(*) , VISCM(*) ,VISCR(*) ,FR_WAVE(*),TF(*),
168 . XX1(*),XX2(*),XX3(*),XX4(*),XX5(*),XX6(*),XX7(*),XX8(*),
169 . YY1(*),YY2(*),YY3(*),YY4(*),YY5(*),YY6(*),YY7(*),(*),
170 . ZZ1(*),ZZ2(*),ZZ3(*),ZZ4(*),ZZ5(*),ZZ6(*),ZZ7(*),ZZ8(*),
171 . UX1(*),UX2(*),UX3(*),UX4(*),UX5(*),UX6(*),UX7(*),UX8(*),
172 . UY1(*),UY2(*),UY3(*),UY4(*),UY5(*),UY6(*),UY7(*),UY8(*),
173 . UZ1(*),UZ2(*),UZ3(*),UZ4(*),UZ5(*),UZ6(*),UZ7(*),UZ8(*),
174 . vx1(*),vx2(*),vx3(*),vx4(*),vx5(*),vx6(*),vx7(*),vx8(*
175 . vy1(*),vy2(*),vy3(*),vy4(*),vy5(*),vy6(*),vy7(*),vy8(*),
176 . vz1(*),vz2(*),vz3(*),vz4(*),vz5(*),vz6(*),vz7(*),vz8(*),
177 . fx1(*),fx2(*),fx3(*),fx4(*),fx5(*),fx6(*),fx7(*),fx8(*),
178 . fy1(*),fy2(*),fy3(*),fy4(*),fy5(*),fy6(*),fy7(*),fy8(*),
179 . fz1(*),fz2(*),fz3(*),fz4(*),fz5
181 TYPE (ELBUF_STRUCT_) ,
TARGET :: ELBUF_STR
182 my_real ,
DIMENSION(*) ,
TARGET :: bufmat
183 TYPE (MATPARAM_STRUCT_) ,
DIMENSION(NUMMAT) ,
INTENT(IN) :: MAT_PARAM
187 INTEGER I,I1,I2,,JJ(6),J,,J2,IC,IR,IPG,JPT,IUV,IEL,ISRATE,
188 . ,NPARF,NVARF,NFUNC,NFUNCR,NFAILS,ISMSTR,ILAW_USER,IPTR,IPTS,IPTT,
189 . IADBUF,IFAIL,NUVAR,MTN,,ISOLID,ISOLIDF,NUMTABL,NVARTMP,LF_DAMMX
190 INTEGER IFUNC(MAXFUNC),IFUNCR(MAXFUNC)
191 my_real :: A,B,C,EPSP,ASRATE,ALPHA,TTHICK,OFF_EL
193 . HH(NPG,NPG),AREAP(MVSIZ,NPG),AREAT(MVSIZ),
194 . UXLOC(MVSIZ,8),UYLOC(MVSIZ,8),UZLOC(MVSIZ,8),
195 . VXLOC(MVSIZ,8),VYLOC(MVSIZ,8),VZLOC(MVSIZ,8),
196 . VXZ(MVSIZ,NPG),VYZ(MVSIZ,NPG),VZZ(MVSIZ,NPG),
197 . VGXA(MVSIZ),VGYA(MVSIZ),VGZA(MVSIZ), VGA2(MVSIZ),
198 . r1x(mvsiz),r2x(mvsiz),r3x(mvsiz),r4x(mvsiz),
199 . r5x(mvsiz),r6x(mvsiz),r7x(mvsiz),r8x(mvsiz),
200 . r1y(mvsiz),r2y(mvsiz),r3y(mvsiz),r4y(mvsiz),
201 . r5y(mvsiz),r6y(mvsiz),r7y(mvsiz),r8y(mvsiz),
202 . r1z(mvsiz),r2z(mvsiz),r3z(mvsiz),r4z(mvsiz),
203 . r5z(mvsiz),r6z(mvsiz),r7z(mvsiz),r8z(mvsiz),
204 . rxx(mvsiz),ryy(mvsiz),rzz(mvsiz),ep1(mvsiz),ep2(mvsiz),
205 . ep3(mvsiz),sig0zz(mvsiz),sig0yz(mvsiz),sig0zx(mvsiz),
206 . dein(mvsiz),deit(mvsiz),sym(mvsiz),ssp(mvsiz),rho0(mvsiz),
207 . e1x(mvsiz),e2x(mvsiz),e3x(mvsiz),e1y(mvsiz),e2y(mvsiz),
208 . e3y(mvsiz),e1z(mvsiz),e2z(mvsiz),e3z(mvsiz),viscmax(mvsiz),
209 . bid(mvsiz),dpla(mvsiz),sigy(mvsiz),epszz(mvsiz),epsyz(mvsiz),
210 . epszx(mvsiz),depszz(mvsiz),depsyz(mvsiz),depszx(mvsiz),
211 . signzz(mvsiz),signyz(mvsiz),signzx(mvsiz),soft(nel),deltae(nel),
212 . user_pla(mvsiz),user_off(mvsiz),user_eint(mvsiz),user_rho(mvsiz),user_vol(mvsiz)
213 TYPE(g_bufel_) ,
POINTER ::
214 TYPE(L_BUFEL_) ,
POINTER :: LBUF
215 TYPE(BUF_MAT_) ,
POINTER :: MATBUF
216 TYPE(FAIL_LOC_) ,
POINTER :: FLOC
218 TYPE(BUF_FAIL_),
POINTER :: FBUF
219 TYPE(ULAWINTBUF) :: USERBUF
220 TYPE (TTABLE) ,
DIMENSION(NTABLE) :: TABLE
221 INTEGER,
DIMENSION(:) ,
POINTER :: ITABLE,VARTMP
222 my_real,
DIMENSION(:),
POINTER :: EPLASN,EPLAST,EPSD,UPARAM,UVAR,AREA,AREAN,OFFI
237 ifunc(i)=ipm(10+i,imat)
240 itable => ipm(226+1:226+numtabl,imat)
244 alpha =
min(one,asrate*timestep)
246 ismstr = igeo(5,iprop)
247 tthick = geo(41,iprop)
250 uparam => bufmat(iadbuf:iadbuf+npar-1)
258 . gbuf%OFF ,nel ,ioutprt ,gbuf%GAMA ,
259 . xx1 ,xx2 ,xx3 ,xx4 ,xx5 ,xx6 ,xx7 ,xx8 ,
260 . yy1 ,yy2 ,yy3 ,yy4 ,yy5 ,yy6 ,yy7 ,yy8 ,
261 . zz1 ,zz2 ,zz3 ,zz4 ,zz5 ,zz6 ,zz7 ,zz8 ,
262 . vx1 ,vx2 ,vx3 ,vx4 ,vx5 ,vx6 ,vx7 ,vx8 ,
263 . vy1 ,vy2 ,vy3 ,vy4 ,vy5 ,vy6 ,vy7 ,vy8 ,
264 . vz1 ,vz2 ,vz3 ,vz4 ,vz5 ,vz6 ,vz7 ,vz8 ,
265 . r1x ,r2x ,r3x ,r4x ,r5x ,r6x ,r7x ,r8x ,
266 . r1y ,r2y ,r3y ,r4y ,r5y ,r6y ,r7y ,r8y ,
267 . r1z ,r2z ,r3z ,r4z ,r5z ,r6z ,r7z ,r8z ,
268 . rxx ,ryy ,rzz ,vxloc,vyloc,vzloc,
269 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
270 . areap,time ,timestep,ngl,
271 . vgxa ,vgya ,vgza ,vga2, sym , ipm, imat)
273 CALL sdef43(nel ,npg ,hh ,
274 . vxz ,vyz ,vzz ,vxloc,vyloc,vzloc)
282 gbuf%SIG(jj(3)+i) = zero
283 gbuf%SIG(jj(5)+i) = zero
284 gbuf%SIG(jj(6)+i) = zero
313 IF (gbuf%G_PLA > 0) gbuf%PLA(:nel
314 IF (ismstr == 1 .AND. time == zero)
THEN
316 elbuf_str%BUFLY(1)%LBUF(ipg,1,1)%VOL(1:nel)=areap(1:nel,ipg)
322 IF (mtn == 116 .or. mtn == 83 .or. mtn == 120)
THEN
323 gbuf%EPSD(1:nel) = zero
327 ep1(i) = ep1(i) + vxz(i,ipg)
328 ep2(i) = ep2(i) + vyz(i,ipg)
329 ep3(i) = ep3(i) + vzz(i,ipg)
333 ep1(i) = ep1(i)*fourth
334 ep2(i) = ep2(i)*fourth
335 ep3(i) = ep3(i)*fourth
336 epsp = sqrt(ep1(i)**2 + ep2
338 epsp = alpha*epsp + (one - alpha)*gbuf%EPSD(i)
346 IF ((itask==0).AND.(imon_mat==1))
CALL startime(timers,35)
351 lbuf => elbuf_str%BUFLY(1)%LBUF(ipg,1,1)
352 uvar => elbuf_str%BUFLY(1)%MAT(ipg,1,1)%VAR
354 nvartmp = elbuf_str%BUFLY(1)%NVARTMP
355 vartmp => elbuf_str%BUFLY(1)%MAT(ipg,1,1)%VARTMP
357 epsd(1:nel) => lbuf%EPSD(1:nel)
359 arean(1:nel) => areap(1:nel,ipg)
361 IF (ismstr == 1)
THEN
362 area(1:nel) => elbuf_str%BUFLY(1)%LBUF(ipg,1,1)%VOL(1:nel)
364 area(1:nel) => areap(1:nel,ipg)
368 off_el = lbuf%OFF(iel)
369 depszz(iel) = vzz(iel,ipg)*timestep * off_el
370 depsyz(iel) = vyz(iel,ipg)*timestep * off_el
371 depszx(iel) = vxz(iel,ipg)*timestep * off_el
372 sig0zz(iel) = lbuf%SIG(jj(3)+iel)
373 sig0yz(iel) = lbuf%SIG(jj(5)+iel)
374 sig0zx(iel) = lbuf%SIG(jj(6)+iel)
381 IF (elbuf_str%BUFLY(1)%L_EPE > 0)
THEN
383 epszz(iel) = lbuf%EPE(jj(1)+iel) + depszz(iel)
384 epsyz(iel) = lbuf%EPE(jj(2)+iel) + depsyz(iel)
385 epszx(iel) = lbuf%EPE(jj(3)+iel) + depszx(iel)
391 IF ((itask==0).AND.(imon_mat==1))
CALL startime(timers,35)
397 eplasn => lbuf%PLA(1:nel)
398 eplast => lbuf%PLA(nel+1:nel*2)
401 1 nel ,time ,timestep,uparam ,gbuf%OFF ,
402 2 gbuf%EPSD,stifm ,npar ,
403 3 ifunc ,maxfunc ,npf ,tf ,area ,
404 4 epszz ,epsyz ,epszx ,depszz ,depsyz ,depszx ,
405 5 sig0zz ,sig0yz ,sig0zx ,signzz ,signyz ,signzx ,
412 1 nel ,time ,timestep ,uparam ,gbuf%OFF ,
413 2 lbuf%EPSD,stifm ,ifunc ,maxfunc ,npf ,tf ,
414 3 area ,depszz ,depsyz ,depszx ,npar ,epszz ,
415 4 sig0zz ,sig0yz ,sig0zx ,signzz ,signyz ,signzx ,
416 5 lbuf%PLA ,jsms ,dmels ,sym ,uvar ,nuvar ,
420 gbuf%PLA(iel) = gbuf%PLA(iel) + fourth*lbuf%PLA(iel)
421 gbuf%EPSD(iel) = gbuf%EPSD(iel) + fourth*lbuf%EPSD(iel)
426 eplasn => lbuf%PLA(1:nel)
427 eplast => lbuf%PLA(nel+1:nel*2)
430 1 nel ,npar ,nuvar ,jsms ,time
431 2 uparam ,uvar ,area ,epsd ,gbuf%OFF ,lbuf%OFF ,
432 3 epszz ,epsyz ,epszx ,depszz ,depsyz ,depszx ,
433 4 signzz ,signyz ,signzx ,stifm ,dmels ,lbuf%DMG ,
434 5 eplasn ,eplast ,ipg ,isolidf ,ngl )
436 gbuf%EPSD(1:nel) = gbuf%EPSD(1:nel) + fourth*lbuf%EPSD(1:nel)
442 1 nel ,npar ,nuvar ,jsms ,time ,timestep ,
443 2 uparam ,uvar ,area ,gbuf%OFF ,lbuf%OFF ,
444 3 epszz ,epsyz ,epszx ,depszz ,depsyz ,depszx ,
445 4 signzz ,signyz ,signzx ,stifm ,dmels ,lbuf%DMG ,
446 5 ipg ,isolidf ,ngl ,nfunc ,ifunc ,npf ,tf)
450 1 nel ,ngl ,time ,timestep ,uparam ,gbuf%OFF ,
451 2 lbuf%EPSD,stifm ,jthe ,
452 3 area ,depszz ,depsyz ,depszx ,epszz ,npar ,
453 4 sig0zz ,sig0yz ,sig0zx ,signzz ,signyz ,signzx ,
454 5 lbuf%PLA ,jsms ,dmels ,uvar ,nuvar ,
455 6 numtabl ,itable ,table ,nvartmp ,vartmp ,lbuf%TEMP,
459 gbuf%PLA(iel) = gbuf%PLA(iel) + fourth*lbuf%PLA(iel)
460 gbuf%EPSD(iel) = gbuf%EPSD(iel) + fourth*lbuf%EPSD(iel)
465 CALL sigeps169_connect(
466 1 nel ,time ,mat_param(imat)%IPARAM, mat_param(imat)%UPARAM ,
467 2 mat_param(imat)%NIPARAM ,mat_param(imat)%NUPARAM ,stifm ,
468 3 area ,gbuf%OFF ,nuvar ,uvar ,ipg ,
469 4 depszz ,depsyz ,depszx ,epszz ,epsyz ,epszx ,
470 5 sig0zz ,sig0yz ,sig0zx ,signzz ,signyz ,signzx ,
471 6 lbuf%PLA ,iout ,jsms ,lbuf%DMG ,ngl ,dmels ,
472 7 idtmins ,dtfacs ,dtmins ,gbuf%THK)
477 IF (userl_avail>0)
THEN
483 rho0(iel) = pm(1,imat)
484 user_pla(iel) = lbuf%PLA(iel)
485 user_off(iel) = gbuf%OFF(iel)
486 user_eint(iel) = gbuf%EINT(iel)
487 user_rho(iel) = gbuf%RHO(iel)
488 user_vol(iel) = gbuf%VOL(iel)
490 ilaw_user = ipm(217, imat)
491 nuvar = elbuf_str%BUFLY(1)%NVAR_MAT
494 CALL eng_userlib_get_law_var(
495 * ncycle, imat,iptr, ipts,iptt,
496 * e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
497 . bid ,bid, sig0zz, bid, sig0yz,
498 * sig0zx, bid, bid, ep1, bid, ep2, ep3,
499 * bid, bid, bid, bid, bid, bid, bid,
500 * bid, depszz, bid, depsyz, depszx, rho0, bid,
501 * bid, signzz, bid, signyz, signzx, bid, bid,
502 * bid, bid, bid, bid )
505 CALL eng_userlib_sigeps99(
506 * nel ,npar ,nuvar ,ilaw_user,nfunc,
507 * ifunc ,npf ,tf ,time ,timestep,
508 * bufmat(iadbuf) ,user_rho,user_vol,user_eint,ngl,
509 * ssp ,viscmax ,uvar ,user_off ,sigy ,
513 CALL eng_userlib_set_law_var(
514 * bid ,bid ,signzz ,bid ,signyz ,signzx ,
515 * bid ,bid ,bid ,bid ,bid ,bid ,
519 lbuf%PLA(iel) = user_pla(iel)
520 gbuf%OFF(iel) = user_off(iel)
521 gbuf%EINT(iel) = user_eint(iel)
522 gbuf%RHO(iel) = user_rho(iel)
523 gbuf%VOL(iel) = user_vol(iel)
524 stifm(iel) = ssp(iel)*ssp(iel)*area(iel)*gbuf%RHO(iel)
531 dein(iel) = lbuf%OFF(iel)*half*
532 . depszz(iel)*(sig0zz(iel) + signzz(iel))
533 deit(iel) = lbuf%OFF(iel)*half*(
534 . depsyz(iel)*(sig0yz(iel) + signyz(iel))+
535 . depszx(iel)*(sig0zx(iel) + signzx(iel)) )
538 IF ((itask==0).AND.(imon_mat==1))
CALL stoptime(timers,35)
542 IF ((itask==0).AND.(imon_mat==1))
CALL startime(timers,121)
546 IF (ifailure == 1)
THEN
547 nfails = mat_param(imat)%NFAIL
550 ifail = mat_param(imat)%FAIL(ir)%IRUPT
551 nparf = mat_param(imat)%FAIL(ir)%NUPARAM
552 nvarf = mat_param(imat)%FAIL(ir)%NUVAR
553 nfuncr = mat_param(imat)%FAIL(ir)%NFUNC
555 ifuncr(i) = mat_param(imat)%FAIL(ir)%IFUNC(i)
558 floc => elbuf_str%BUFLY(1)%FAIL(ipg,1,1)%FLOC(ir)
559 lf_dammx = floc%LF_DAMMX
564 1 nel ,nparf ,nvarf ,nfuncr ,ifuncr ,
565 2 npf ,tf ,time ,timestep ,mat_param(imat)%FAIL(ir)%UPARAM,
566 3 floc%VAR ,ngl ,epszz ,epszx ,epsyz ,
567 4 gbuf%EPSD ,gbuf%OFF ,lbuf%OFF,ipg ,isolidf ,
568 5 signzz ,signyz ,signzx ,dein ,deit ,
569 6 floc%DAMMX,lf_dammx ,floc%TDEL,arean ,soft )
575 1 nel ,nparf ,nvarf ,nfuncr ,ifuncr ,
576 2 npf ,tf ,time ,timestep ,mat_param(imat)%FAIL(ir)%UPARAM,
577 3 floc%VAR ,ngl ,ipg ,npg ,ndamf ,
578 4 lbuf%EPSD ,lbuf%PLA ,gbuf%OFF ,lbuf%OFF ,isolidf ,
579 5 signzz ,signyz ,signzx ,sym ,arean ,
580 6 lbuf%DMG ,floc%DAM ,floc%DAMMX,floc%TDEL )
588 isolid =
min(isolid, isolidf)
590 IF (itask==0 .and. imon_mat==1)
CALL stoptime(timers,121)
595 soft(iel) = soft(iel)*gbuf%OFF(iel)
596 gbuf%SIG(jj(3)+iel) = gbuf%SIG(jj(3)+iel) + signzz(iel)*fourth*soft(iel)
597 gbuf%SIG(jj(5)+iel) = gbuf%SIG(jj(5)+iel) + signyz(iel)*fourth*soft(iel)
598 gbuf%SIG(jj(6)+iel) = gbuf%SIG(jj(6)+iel) + signzx(iel)*fourth*soft(iel)
603 CALL sfint43(ipg ,npg ,nel ,hh ,area ,soft ,
604 . fx1 ,fx2 ,fx3 ,fx4 ,fx5 ,fx6 ,fx7 ,fx8 ,
605 . fy1 ,fy2 ,fy3 ,fy4 ,fy5 ,fy6 ,fy7 ,fy8 ,
606 . fz1 ,fz2 ,fz3 ,fz4 ,fz5 ,fz6 ,fz7 ,fz8 ,
607 . signzz,signyz,signzx)
612 areat(iel) = areat(iel) + area(iel)
613 deltae(iel) = deltae(iel) + (dein(iel
618 lbuf%SIG(jj(3)+iel) = signzz(iel)*lbuf%OFF(iel)
619 lbuf%SIG(jj(5)+iel) = signyz(iel)*lbuf%OFF(iel)
620 lbuf%SIG(jj(6)+iel) = signzx(iel)*lbuf%OFF
622 IF (elbuf_str%BUFLY(1)%L_EPE > 0)
THEN
624 lbuf%EPE(jj(1)+iel) = epszz
625 lbuf%EPE(jj(2)+iel) = epsyz(iel)
626 lbuf%EPE(jj(3)+iel) = epszx(iel)
642 gbuf%EINT(iel) = gbuf%EINT(iel) + deltae(iel)
646 .
CALL sbilan43(nel ,iparts ,partsav,gbuf%EINT,gbuf%RHO,
647 . areat ,vgxa ,vgya ,vgza ,vga2 ,
651 . fx1 ,fx2 ,fx3 ,fx4 ,fx5 ,fx6 ,fx7 ,fx8 ,
652 . fy1 ,fy2 ,fy3 ,fy4 ,fy5 ,fy6 ,fy7 ,fy8 ,
653 . fz1 ,fz2 ,fz3 ,fz4 ,fz5 ,fz6 ,fz7 ,fz8 ,
654 . r1x ,r2x ,r3x ,r4x ,r5x ,r6x ,r7x ,r8x ,
655 . r1y ,r2y ,r3y ,r4y ,r5y ,r6y ,r7y ,r8y ,
656 . r1z ,r2z ,r3z ,r4z ,r5z ,r6z ,r7z ,r8z ,
657 . rxx ,ryy ,rzz ,tthick )
660 1 e1x, e1y, e1z, e2x,
661 2 e2y, e2z, e3x, e3y,
662 3 e3z, fx1, fx2, fx3,
663 4 fx4, fx5, fx6, fx7,
664 5 fx8, fy1, fy2, fy3,
665 6 fy4, fy5, fy6, fy7,
666 7 fy8, fz1, fz2, fz3,
667 8 fz4, fz5, fz6, fz7,