diff options
Diffstat (limited to 'Dragon/src/NXTEGI.f')
| -rw-r--r-- | Dragon/src/NXTEGI.f | 600 |
1 files changed, 600 insertions, 0 deletions
diff --git a/Dragon/src/NXTEGI.f b/Dragon/src/NXTEGI.f new file mode 100644 index 0000000..fc749e1 --- /dev/null +++ b/Dragon/src/NXTEGI.f @@ -0,0 +1,600 @@ +*DECK NXTEGI + SUBROUTINE NXTEGI(IPGEO ,IPRINT,ITYPG ,MAXMSH,NMIX ,NM , + > MAXMSS,NMS ,NREG ,NREGS ,NSUR ,NSURS , + > MIX ,ISPLT ,DAMESH, + > RMESH ,MIXC ) +* +*----------------------------------------------------------------------- +* +*Purpose: +* To extract cell or pin geometry information. +* +*Copyright: +* Copyright (C) 2005 Ecole Polytechnique de Montreal +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU Lesser General Public +* License as published by the Free Software Foundation; either +* version 2.1 of the License, or (at your option) any later version. +* +*Author(s): +* G. Marleau +* +*Parameters: input +* IPGEO pointer to the reference geometry data structure. +* IPRINT intermediate printing level for output. +* ITYPG geometry type. +* MAXMSH maximum number of elements in MESH array. +* NMIX number of elements in MIX array. +* NM mesh size in all directions ($X$, $Y$, $Z$ and $R$). +* +*Parameters: output +* MAXMSS maximum number of elements in MESH array after split. +* NMS mesh size in all directions ($X$, $Y$, $Z$ and $R$) +* after split. +* NREG number of regions. +* NREGS number of regions after split. +* NSUR number of surfaces. +* NSURS number of surfaces after split. +* MIX final mixture description for geometry (including HMIX). +* ISPLT final split desctiption for geometry. +* DAMESH final mesh description for geometry. +* +*Parameters: temporary storage +* RMESH temporary vector for reading cell mesh array. +* MIXC temporary mixture for cell rotation (including HMIX). +* +*Reference: +* G. Marleau, +* New Geometries Processing in DRAGON: The NXT: Module, +* Report IGE-260, Polytechnique Montreal, +* Montreal, 2005. +* +*----------------------------------------------------------------------- +* + USE GANLIB + IMPLICIT NONE +*---- +* Subroutine arguments +*---- + TYPE(C_PTR) IPGEO + INTEGER IPRINT,ITYPG,MAXMSH,NMIX,NM(4),MAXMSS, + > NMS(4),NREG,NREGS,NSUR,NSURS + INTEGER MIX(NMIX,2),ISPLT(MAXMSH,4) + DOUBLE PRECISION DAMESH(-1:MAXMSH,4) + REAL RMESH(0:MAXMSH) + INTEGER MIXC(NMIX,2,2) +*---- +* Local parameters +*---- + INTEGER IOUT + CHARACTER NAMSBR*6 + PARAMETER (IOUT=6,NAMSBR='NXTEGI') + DOUBLE PRECISION DZERO,DONE + PARAMETER (DZERO=0.0D0,DONE=1.0D0) + DOUBLE PRECISION DSQ3O2 + PARAMETER (DSQ3O2=0.86602540378444D0) +*---- +* Local variables +*---- + INTEGER IDIR,IR,IX,IY,IZ,IMTN,IMTO + INTEGER ILCMLN,ILCMTY,IMRGLN,IMRGTY + INTEGER NX,NY,NZ,NR,NRM,NXS,NYS,NZS,NRS,NRMS, + > NMREAD(4) + CHARACTER NAMREC*12,NAMMRG*12 + REAL OFFCEN(3) + REAL SIDE,SIDET + DOUBLE PRECISION DSIDE,DSIDET +*---- +* Data +*---- + CHARACTER CDIR(4)*1 + SAVE CDIR + DATA CDIR /'X','Y','Z','R'/ +*---- +* Processing starts: +* print routine openning output header if required +* and initialize various parameters. +*---- + IF(IPRINT .GE. 100) THEN + WRITE(IOUT,6000) NAMSBR + ENDIF + NRM=0 + NRMS=0 + NX=MAX(1,NM(1)) + NY=MAX(1,NM(2)) + NZ=MAX(1,NM(3)) + NR=MAX(1,NM(4)) +*---- +* Read geometry information +* 1- Cartesian MESH +*---- + IF(ITYPG .EQ. 8 .OR. ITYPG .EQ. 9 .OR. + > ITYPG .EQ. 12 .OR. ITYPG .EQ. 13 .OR. + > ITYPG .EQ. 26 .OR. ITYPG .EQ. 27) THEN +*---- +* Hexagons +*---- + IDIR=1 + NAMREC='SIDE ' + CALL LCMGET(IPGEO,NAMREC,SIDE) + DSIDE=DBLE(SIDE)*DSQ3O2 + IF(ITYPG .EQ. 12 .OR. ITYPG .EQ. 13 .OR. + > ITYPG .EQ. 26 .OR. ITYPG .EQ. 27) THEN + NAMREC='SIDET ' + CALL LCMGET(IPGEO,NAMREC,SIDET) + DSIDET=DBLE(SIDET)*DSQ3O2 + DAMESH(0,IDIR)=-DSIDE + DAMESH(1,IDIR)=-DSIDET*(NM(1)-1) + DO IX=2,2*NM(1)-1 + DAMESH(IX,IDIR)=DAMESH(IX-1,IDIR)+DSIDET + ENDDO + DAMESH(2*NM(1),IDIR)=DSIDE + ELSE + DAMESH(-1,IDIR)=2*DSIDE + DAMESH(0,IDIR)=-DSIDE + DAMESH(1,IDIR)=DSIDE + ENDIF + IDIR=2 + DO IX=-1,2*NM(1) + DAMESH(IX,IDIR)=DAMESH(IX,IDIR-1) + ENDDO + IDIR=3 + NMREAD(IDIR)=0 + IF(NM(IDIR) .GT. 0) THEN + NAMREC='MESH'//CDIR(IDIR)//' ' + CALL LCMLEN(IPGEO,NAMREC,NMREAD(IDIR),ILCMTY) + IF(NMREAD(IDIR) .EQ. NM(IDIR)+1) THEN + CALL LCMGET(IPGEO,NAMREC,RMESH) + DO IX=0,NM(IDIR) + DAMESH(IX,IDIR)=DBLE(RMESH(IX)) + ENDDO + ISPLT(:NM(IDIR),IDIR)=1 + ENDIF + ELSE + DAMESH(0,IDIR)=DZERO + IX=1 + DAMESH(IX,IDIR)=DONE + ENDIF + ELSE +*---- +* Parallepiped +*---- + DO IDIR=1,3 + NMREAD(IDIR)=0 + IF(NM(IDIR) .GT. 0) THEN + NAMREC='MESH'//CDIR(IDIR)//' ' + CALL LCMLEN(IPGEO,NAMREC,NMREAD(IDIR),ILCMTY) + IF(NMREAD(IDIR) .EQ. NM(IDIR)+1) THEN + CALL LCMGET(IPGEO,NAMREC,RMESH) + DO IX=0,NM(IDIR) + DAMESH(IX,IDIR)=DBLE(RMESH(IX)) + ENDDO + ISPLT(:NM(IDIR),IDIR)=1 + ENDIF + ELSE + DAMESH(0,IDIR)=DZERO + IX=1 + DAMESH(IX,IDIR)=DONE + ENDIF + ENDDO + ENDIF +*---- +* 2- Read cell OFFCENTER and store in position -1 of DAMESH +*---- + OFFCEN(:3)=0.0 + CALL LCMLEN(IPGEO,'OFFCENTER ',ILCMLN,ILCMTY) + IF(ILCMLN .GT. 0) + > CALL LCMGET(IPGEO,'OFFCENTER ',OFFCEN) + DO IDIR=1,3 + DAMESH(-1,IDIR)=DBLE(OFFCEN(IDIR)) + ENDDO +*---- +* 3- Radial mesh +*---- + IDIR=4 + NMREAD(IDIR)=0 + NAMREC='RADIUS ' + CALL LCMLEN(IPGEO,NAMREC,NMREAD(IDIR),ILCMTY) + IF(NMREAD(IDIR) .EQ. NM(IDIR)+1) THEN + CALL LCMGET(IPGEO,NAMREC,RMESH) + DO IX=0,NM(IDIR) + DAMESH(IX,IDIR)=DBLE(RMESH(IX)) + ENDDO + ISPLT(:NM(IDIR),IDIR)=1 + ENDIF +*---- +* 4- Cartesian, radial and hexagonal split +*---- + DO IDIR=1,4 + IF(NM(IDIR) .GT. 0) THEN + NAMREC='SPLIT'//CDIR(IDIR)//' ' + ISPLT(:NM(IDIR),IDIR)=1 + CALL LCMLEN(IPGEO,NAMREC,ILCMLN,ILCMTY) + IF(ILCMLN .EQ. NM(IDIR)) + > CALL LCMGET(IPGEO,NAMREC,ISPLT(1,IDIR)) + NMS(IDIR)=0 + DO IR=1,NM(IDIR) + NMS(IDIR)=NMS(IDIR)+ABS(ISPLT(IR,IDIR)) + ENDDO + ELSE + NMS(IDIR)=NM(IDIR) + ENDIF + ENDDO + IF(ITYPG .EQ. 12 .OR. ITYPG .EQ. 13 .OR. + > ITYPG .EQ. 26 .OR. ITYPG .EQ. 27) THEN + NAMREC='SPLITH ' + IDIR=1 + CALL LCMLEN(IPGEO,NAMREC,ILCMLN,ILCMTY) + ISPLT(1,IDIR)=1 + IF(ILCMLN .EQ. NM(IDIR)) + > CALL LCMGET(IPGEO,NAMREC,ISPLT(1,IDIR)) + NMS(IDIR)=NM(IDIR)*ABS(ISPLT(1,IDIR)) + ENDIF + NXS=MAX(1,NMS(1)) + NYS=MAX(1,NMS(2)) + NZS=MAX(1,NMS(3)) + NRS=MAX(1,NMS(4)) + IF(IPRINT .GE. 100) THEN + IF(ITYPG .EQ. 8 .OR. ITYPG .EQ. 9 .OR. + > ITYPG .EQ. 12 .OR. ITYPG .EQ. 13 .OR. + > ITYPG .EQ. 26 .OR. ITYPG .EQ. 27) THEN + WRITE(IOUT,6015) ITYPG,NM(1),NMREAD(3),NMIX + IF(NM(1) .GT. 0) THEN + WRITE(IOUT,6011) 'MESHH =' + WRITE(IOUT,6012) (DAMESH(IX,1),IX=-1,2*NM(1)) + WRITE(IOUT,6011) 'SPLTH =' + WRITE(IOUT,6013) (ISPLT(1,1),IX=1,2*NM(1)) + ENDIF + IF(NMREAD(3) .GT. 0) THEN + WRITE(IOUT,6011) 'MESHZ =' + WRITE(IOUT,6012) (DAMESH(IX,3),IX=-1,NM(3)) + WRITE(IOUT,6011) 'SPLTZ =' + WRITE(IOUT,6013) (ISPLT(IX,3),IX=1,NM(3)) + ENDIF + ELSE + WRITE(IOUT,6010) ITYPG,(CDIR(IDIR),NM(IDIR),IDIR=1,4),NMIX + DO IDIR=1,3 + IF(NMREAD(IDIR) .GT. 0) THEN + WRITE(IOUT,6011) 'MESH'//CDIR(IDIR)//' =' + WRITE(IOUT,6012) (DAMESH(IX,IDIR),IX=-1,NM(IDIR)) + WRITE(IOUT,6011) 'SPLT'//CDIR(IDIR)//' =' + WRITE(IOUT,6013) (ISPLT(IX,IDIR),IX=1,NM(IDIR)) + ENDIF + ENDDO + ENDIF + IDIR=4 + IF(NMREAD(IDIR) .GT. 0) THEN + WRITE(IOUT,6011) 'RADIUS=' + WRITE(IOUT,6012) (DAMESH(IX,IDIR),IX=0,NM(IDIR)) + WRITE(IOUT,6011) 'SPLT'//CDIR(IDIR)//' =' + WRITE(IOUT,6013) (ISPLT(IX,IDIR),IX=1,NM(IDIR)) + ENDIF + ENDIF +*---- +* 5- Get MIX +*---- + NAMREC='MIX ' + CALL LCMLEN(IPGEO,NAMREC,ILCMLN,ILCMTY) + IF(ILCMLN .LT. 0 .OR. ILCMLN .GT. NMIX) CALL XABORT(NAMSBR// + >': Size of MIX vector is invalid') + NAMMRG='HMIX ' + CALL LCMLEN(IPGEO,NAMMRG,IMRGLN,IMRGTY) + IF(IMRGLN .LE. 0 ) THEN + NAMMRG=NAMREC + ELSE IF(IMRGLN .NE. ILCMLN) THEN + NAMMRG=NAMREC + WRITE(IOUT,8000) NAMSBR + ENDIF + IF(ILCMLN .GT. 0) THEN + IF (ITYPG .EQ. 3 ) THEN +*---- +* TUBE +*---- + NRM=NR + NSUR=NZ + NRMS=NRS + NSURS=NZS + IF(ILCMLN .LT. NY*NX*NRM) THEN + WRITE(IOUT,9000) NAMSBR,ILCMLN,NY*NX*NRM + CALL XABORT(NAMSBR// + > ': Invalid number of mixtures provided') + ENDIF + CALL LCMGET(IPGEO,NAMREC,MIX(1,1)) + CALL LCMGET(IPGEO,NAMMRG,MIX(1,2)) + ELSE IF(ITYPG .EQ. 6 ) THEN +*---- +* TUBEZ +*---- + NRM=NR + NSUR=2*(NRM*NX*NY)+NZ + NRMS=NRS + NSURS=2*(NRMS*NXS*NYS)+NZS + IF(ILCMLN .LT. NZ*NY*NX*NRM) THEN + WRITE(IOUT,9000) NAMSBR,ILCMLN,NZ*NY*NX*NRM + CALL XABORT(NAMSBR// + > ': Invalid number of mixtures provided') + ENDIF + CALL LCMGET(IPGEO,NAMREC,MIX(1,1)) + CALL LCMGET(IPGEO,NAMMRG,MIX(1,2)) + ELSE IF(ITYPG .EQ. 5) THEN +*---- +* CAR2D +*---- + NRM=1 + NSUR=2*(NY+NX) + NRMS=1 + NSURS=2*(NYS+NXS) + IF(ILCMLN .LT. NY*NX) THEN + WRITE(IOUT,9000) NAMSBR,ILCMLN,NY*NX + CALL XABORT(NAMSBR// + > ': Invalid number of mixtures provided') + ENDIF + CALL LCMGET(IPGEO,NAMREC,MIX(1,1)) + CALL LCMGET(IPGEO,NAMMRG,MIX(1,2)) + ELSE IF(ITYPG .EQ. 7 ) THEN +*---- +* CAR3D +*---- + NRM=1 + NSUR=2*(NX*NY+NY*NZ+NZ*NX) + NRMS=1 + NSURS=2*(NXS*NYS+NYS*NZS+NZS*NXS) + IF(ILCMLN .LT. NZ*NY*NX) THEN + WRITE(IOUT,9000) NAMSBR,ILCMLN,NZ*NY*NX + CALL XABORT(NAMSBR// + > ': Invalid number of mixtures provided') + ENDIF + CALL LCMGET(IPGEO,NAMREC,MIX(1,1)) + CALL LCMGET(IPGEO,NAMMRG,MIX(1,2)) + ELSE IF(ITYPG .EQ. 20) THEN +*---- +* CARCEL +*---- + NRM=NR+1 + NSUR=2*(NY+NX) + NRMS=NRS+1 + NSURS=2*(NYS+NXS) + IF(ILCMLN .LT. NY*NX*NRM) THEN + WRITE(IOUT,9000) NAMSBR,ILCMLN,NY*NX*NRM + CALL XABORT(NAMSBR// + > ': Invalid number of mixtures provided') + ENDIF + CALL LCMGET(IPGEO,NAMREC,MIX(1,1)) + CALL LCMGET(IPGEO,NAMMRG,MIX(1,2)) + ELSE IF(ITYPG .EQ. 23 ) THEN +*---- +* CARCELZ +*---- + NRM=NR+1 + NSUR=2*(NX*NY*NRM+NY*NZ+NZ*NX) + NRMS=NRS+1 + NSURS=2*(NXS*NYS*NRMS+NYS*NZS+NZS*NXS) + IF(ILCMLN .LT. NZ*NY*NX*NRM) THEN + WRITE(IOUT,9000) NAMSBR,ILCMLN,NZ*NY*NX*NRM + CALL XABORT(NAMSBR// + > ': Invalid number of mixtures provided') + ENDIF + CALL LCMGET(IPGEO,NAMREC,MIX(1,1)) + CALL LCMGET(IPGEO,NAMMRG,MIX(1,2)) + ELSE IF(ITYPG .EQ. 10 .OR. ITYPG .EQ. 21) THEN +*---- +* TUBEX and CARCELX +*---- + IF(ITYPG .EQ.21) THEN + NRM=NR+1 + NSUR=2*(NX*NY+NY*NZ*NRM+NZ*NX) + NRMS=NRS+1 + NSURS=2*(NXS*NYS+NYS*NZS*NRMS+NZS*NXS) + ELSE + NRM=NR + NSUR=NX+2*NY*NZ*NRM + NRMS=NRS + NSURS=NXS+2*NYS*NZS*NRMS + ENDIF +*---- +* For CARCELX reorder mixtures from $(R,Y,Z,X)$ to $(R,X,Y,Z)$ +*---- + IF(ILCMLN .LT. NZ*NY*NX*NRM) THEN + WRITE(IOUT,9000) NAMSBR,ILCMLN,NZ*NY*NX*NRM + CALL XABORT(NAMSBR// + > ': Invalid number of mixtures provided') + ENDIF + CALL LCMGET(IPGEO,NAMREC,MIXC(1,1,1)) + CALL LCMGET(IPGEO,NAMMRG,MIXC(1,2,1)) + IMTN=0 + DO 20 IZ=1,NZ + DO 21 IY=1,NY + DO 22 IX=1,NX + DO 23 IR=1,NRM + IMTN=IMTN+1 + IMTO=(IX-1)*NY*NZ*NRM + > +(IZ-1)*NY*NRM + > +(IY-1)*NRM+IR + MIX(IMTN,1)=MIXC(IMTO,1,1) + MIX(IMTN,2)=MIXC(IMTO,2,1) + 23 CONTINUE + 22 CONTINUE + 21 CONTINUE + 20 CONTINUE + ELSE IF(ITYPG .EQ. 11 .OR. ITYPG .EQ. 22) THEN +*---- +* TUBEY and CARCELY +*---- + IF(ITYPG .EQ.22) THEN + NRM=NR+1 + NSUR=2*(NX*NY+NY*NZ+NZ*NX*NRM) + NRMS=NRS+1 + NSURS=2*(NXS*NYS+NYS*NZS+NZS*NXS*NRMS) + ELSE + NRM=NR + NSUR=NY+2*NZ*NX*NRM + NRMS=NRS + NSURS=NYS+2*NZS*NXS*NRMS + ENDIF +*---- +* For CARCELX reorder mixtures from $(R,Z,X,Y)$ to $(R,X,Y,Z)$ +*---- + IF(ILCMLN .LT. NZ*NY*NX*NRM) THEN + WRITE(IOUT,9000) NAMSBR,ILCMLN,NZ*NY*NX*NRM + CALL XABORT(NAMSBR// + > ': Invalid number of mixtures provided') + ENDIF + CALL LCMGET(IPGEO,NAMREC,MIXC(1,1,1)) + CALL LCMGET(IPGEO,NAMMRG,MIXC(1,2,1)) + IMTN=0 + DO 30 IZ=1,NZ + DO 31 IY=1,NY + DO 32 IX=1,NX + DO 33 IR=1,NRM + IMTN=IMTN+1 + IMTO=(IY-1)*NZ*NX*NRM + > +(IX-1)*NZ*NRM + > +(IZ-1)*NRM+IR + MIX(IMTN,1)=MIXC(IMTO,1,1) + MIX(IMTN,2)=MIXC(IMTO,2,1) + 33 CONTINUE + 32 CONTINUE + 31 CONTINUE + 30 CONTINUE + ELSE IF(ITYPG .EQ. 8) THEN +*---- +* HEX +*---- + NRM=1 + NSUR=6 + NRMS=1 + NSURS=6 + IF(ILCMLN .LT. 1) THEN + WRITE(IOUT,9000) NAMSBR,ILCMLN,1 + CALL XABORT(NAMSBR// + > ': Invalid number of mixtures provided') + ENDIF + CALL LCMGET(IPGEO,NAMREC,MIX(1,1)) + CALL LCMGET(IPGEO,NAMMRG,MIX(1,2)) + ELSE IF(ITYPG .EQ. 9) THEN +*---- +* HEXZ +*---- + NRM=1 + NSUR=6*NZ+2 + NRMS=1 + NSURS=6*NX+2 + IF(ILCMLN .LT. NZ) THEN + WRITE(IOUT,9000) NAMSBR,ILCMLN,NZ + CALL XABORT(NAMSBR// + > ': Invalid number of mixtures provided') + ENDIF + ELSE IF(ITYPG .EQ. 12) THEN +*---- +* HEXT +*---- + NRM=1 + NSUR=6*(2*NX-1) + NRMS=1 + NSURS=6*(2*NXS-1) + IF(ILCMLN .LT. 6*NX*NX) THEN + WRITE(IOUT,9000) NAMSBR,ILCMLN,6*NX*NX + CALL XABORT(NAMSBR// + > ': Invalid number of mixtures provided') + ENDIF + CALL LCMGET(IPGEO,NAMREC,MIX(1,1)) + CALL LCMGET(IPGEO,NAMMRG,MIX(1,2)) + ELSE IF(ITYPG .EQ. 13) THEN +*---- +* HEXTZ +*---- + NRM=1 + NSUR=6*(2*NX-1)*NZ+12*NX*NX + NRMS=1 + NSURS=6*(2*NXS-1)*NZS+12*NXS*NXS + IF(ILCMLN .LT. 6*NX*NX*NZ) THEN + WRITE(IOUT,9000) NAMSBR,ILCMLN,6*NX*NX*NZ + CALL XABORT(NAMSBR// + > ': Invalid number of mixtures provided') + ENDIF + CALL LCMGET(IPGEO,NAMREC,MIX(1,1)) + CALL LCMGET(IPGEO,NAMMRG,MIX(1,2)) + ELSE IF(ITYPG .EQ. 26) THEN +*---- +* HEXTCEL +*---- + NRM=NR+1 + NSUR=6*(2*NX-1) + NRMS=NRS+1 + NSURS=6*(2*NXS-1) + IF(ILCMLN .LT. 6*NX*NX*NRM) THEN + WRITE(IOUT,9000) NAMSBR,ILCMLN,6*NX*NX*NRM + CALL XABORT(NAMSBR// + > ': Invalid number of mixtures provided') + ENDIF + CALL LCMGET(IPGEO,NAMREC,MIX(1,1)) + CALL LCMGET(IPGEO,NAMMRG,MIX(1,2)) + ELSE IF(ITYPG .EQ. 27) THEN +*---- +* HEXTCELZ +*---- + NRM=NR+1 + NSUR=6*(2*NX-1)*NZ+12*NX*NX*NRM + NRMS=NRS+1 + NSURS=6*(2*NXS-1)*NZS+12*NXS*NXS*NRMS + IF(ILCMLN .LT. 6*NX*NX*NZ*NRM) THEN + WRITE(IOUT,9000) NAMSBR,ILCMLN,6*NX*NX*NZ*NRM + CALL XABORT(NAMSBR// + > ': Invalid number of mixtures provided') + ENDIF + CALL LCMGET(IPGEO,NAMREC,MIX(1,1)) + CALL LCMGET(IPGEO,NAMMRG,MIX(1,2)) + ELSE + CALL XABORT(NAMSBR// + > ': Geometry type invalid for cell or pin') + ENDIF + ENDIF + IF(ITYPG .EQ. 12 .OR. ITYPG .EQ. 13 .OR. + > ITYPG .EQ. 26 .OR. ITYPG .EQ. 27) THEN + NREG=6*NX*NX*NZ*NRM + NREGS=6*NXS*NXS*NZS*NRMS + MAXMSS=MAX(NRMS,2*(NXS+1),2*(NYS+1),NZS,MAXMSH)+1 + ELSE + NREG=NRM*NX*NY*NZ + NREGS=NRMS*NXS*NYS*NZS + MAXMSS=MAX(NRMS,NXS,NYS,NZS,MAXMSH)+1 + ENDIF +*---- +* Print mesh if required +*---- + IF(IPRINT .GE. 100) THEN + WRITE(IOUT,6011) 'MIX =' + WRITE(IOUT,6013) (MIX(IX,1),IX=1,NMIX) + WRITE(IOUT,6011) 'HMIX =' + WRITE(IOUT,6013) (MIX(IX,2),IX=1,NMIX) + WRITE(IOUT,6001) NAMSBR + ENDIF +*---- +* Processing finished: +* print routine closing output header if required +* and return +*---- + RETURN +*---- +* Output formats +*---- + 6000 FORMAT('(* Output from --',A6,'-- follows ') + 6001 FORMAT(' Output from --',A6,'-- completed *)') + 6010 FORMAT(1X,'Geometry type =',I10/ + > 1X,'Original mesh dimensions ='/ + > 4(1X,A1,'=',1X,I8)/ + > 1X,'Number of regions =',i8) + 6011 FORMAT(1X,A7) + 6012 FORMAT(5F15.9) + 6013 FORMAT(5I15) + 6015 FORMAT(1X,'Geometry type =',I10/ + > 1X,'Original hexagonal mesh dimensions =',I10,/ + > 1X,'Original z mesh dimensions =',I10,/ + > 1X,'Number of regions =',i8) + 8000 FORMAT(' ***** Warning in ',A6,' *****'/ + > ' HMIX not compatible with MIX '/ + > ' HMIX mixture are replaced by MIX mixtures' ) + 9000 FORMAT(' ***** Error in ',A6,' *****'/ + > ' Number of mixtures provided = ',I10/ + > ' Number of mixtures required = ',I10) + END |
