diff options
| author | stainer_t <thomas.stainer@oecd-nea.org> | 2025-09-08 13:48:49 +0200 |
|---|---|---|
| committer | stainer_t <thomas.stainer@oecd-nea.org> | 2025-09-08 13:48:49 +0200 |
| commit | 7dfcc480ba1e19bd3232349fc733caef94034292 (patch) | |
| tree | 03ee104eb8846d5cc1a981d267687a729185d3f3 /Dragon/src/NXTGMD.f | |
Initial commit from Polytechnique Montreal
Diffstat (limited to 'Dragon/src/NXTGMD.f')
| -rw-r--r-- | Dragon/src/NXTGMD.f | 556 |
1 files changed, 556 insertions, 0 deletions
diff --git a/Dragon/src/NXTGMD.f b/Dragon/src/NXTGMD.f new file mode 100644 index 0000000..4713e81 --- /dev/null +++ b/Dragon/src/NXTGMD.f @@ -0,0 +1,556 @@ +*DECK NXTGMD + SUBROUTINE NXTGMD(IPGEO ,IPTRK ,IPRINT,ITYPBC,ILCELL,NEDIM, + > NBOCEL,NBUCEL,MAXCEL,NUCELL,IUNFLD, + > IEDIMG,NAGGEO,ITURN ,MERGE ,IDIRR , + > DCMESH,DGMESH) +* +*---------- +* +*Purpose: +* To obtain general dimension vector for geometry. +* To evaluate global mesh for assembly. +* +*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 GEOMETRY data structure. +* IPTRK pointer to the TRACKING data structure. +* IPRINT print level. +* ITYPBC type of boundary conditions where: +* ITYPBC=0 for geometry with all Cartesian boundaries; +* ITYPBC=1 for geometry with one annular boundary; +* ITYPBC=2 for geometry with one hexagonal boundary. +* ILCELL cell level. +* NEDIM number of elements for general dimension vector. +* NBOCEL number of cells in original geometry. +* NBUCEL number of cells in unfolded geometry. +* MAXCEL maximum number of elements in mesh vector for +* each directions. +* NUCELL number of cell after unfolding in +* $X$, $Y$ and $Z$ directions. +* IUNFLD array to identify the generating cell (IUNFLD(1,*)) +* and the rotation associated with this region in space. +* +*Parameters: input/output +* IEDIMG general dimension vector for problem where +* NAGGEO geometry names. +* ITURN geometry turns. +* MERGE geometry merge. +* IDIRR direction of cell (1 for XYZ, 2 for YZX and 3 for ZXY). +* Note: for CAR3D without pins IDIRR=1 +* for CAR3D with pins IDIRR specified by pins direction. +* DCMESH global mesh for each cell. +* DGMESH meshing vector for global geometry. +* +*Reference: +* G. Marleau, +* New Geometries Processing in DRAGON: The NXT: Module, +* Report IGE-260, Polytechnique Montreal, +* Montreal, 2005. +* \\\\ +* This routine is based on the XELDCL routine written by +* R. Roy for the EXCELT: module. It contains an additional +* level for cluster subgeometry analysis. +* +*---------- +* + USE GANLIB + IMPLICIT NONE +*---- +* Subroutine arguments +*---- + TYPE(C_PTR) IPGEO,IPTRK +* INTEGER IPGEO,IPTRK + INTEGER IPRINT,ITYPBC,ILCELL,NEDIM,NBOCEL,NBUCEL,MAXCEL, + > NUCELL(3),IUNFLD(2,NBUCEL) + INTEGER IEDIMG(NEDIM),NAGGEO(3,NBOCEL), + > ITURN(NBOCEL),MERGE(NBOCEL),IDIRR(NBOCEL) + DOUBLE PRECISION DCMESH(3,2,NBOCEL),DGMESH(0:MAXCEL,3) +*---- +* Local parameters +*---- + INTEGER IOUT + CHARACTER NAMSBR*6 + PARAMETER (IOUT=6,NAMSBR='NXTGMD') + INTEGER NSTATE + PARAMETER (NSTATE=40) + DOUBLE PRECISION DCUT + PARAMETER (DCUT=1.0D-6) +*---- +* Local variables +*---- + INTEGER ISTATG(NSTATE) + INTEGER NDIM,NSDIM,NCDIM,IDIRC + INTEGER MAXMSH,MAXREG,NBTCLS, + > MAXPIN,MAXMSP,MAXRSP,NBGCLS, + > NTPIN,NPIN,NBSP,NBRSP,NZU + INTEGER ITC,IDIR,ICEL,ICN,ISPL,ICLS, + > IX,IY,IZ,IPOS,INTRN,IRTRN + INTEGER ILCMLN,ILCMTY + CHARACTER NAMGG*12,NAMREC*12,NAMCL*12 + REAL OFFCEN(3) + DOUBLE PRECISION DRW(3),DNW(3) + REAL SIDEH + DOUBLE PRECISION ARGS + INTEGER IH,IR,IS,ISS,NCH,NCR,NCS,NSS,ISPLTH +*---- +* Allocatable arrays +*---- + INTEGER, ALLOCATABLE, DIMENSION(:) :: IGEN,ISPLT + INTEGER, ALLOCATABLE, DIMENSION(:,:) :: NAGCEL,NAGCLS + REAL, ALLOCATABLE, DIMENSION(:) :: RMESH,XMESH +*---- +* 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. 10) THEN + WRITE(IOUT,6000) NAMSBR + ENDIF + NDIM=IEDIMG(1) + MAXMSH=IEDIMG(16) + MAXREG=1 + NBTCLS=0 + MAXPIN=0 + MAXMSP=0 + MAXRSP=0 + DGMESH(0:MAXCEL,:3)=0.0D0 + IF(ILCELL .EQ. 1) THEN + ALLOCATE(IGEN(NBOCEL),NAGCEL(3,NBOCEL)) + CALL LCMGET(IPGEO,'CELL',NAGCEL) + CALL LCMLEN(IPGEO,'MIX',ILCMLN,ILCMTY) + IF(ILCMLN .GT. 0) THEN + CALL LCMGET(IPGEO,'MIX',IGEN) + DO ICEL=1,NBOCEL + ICN=-IGEN(ICEL) + DO ITC=1,3 + NAGGEO(ITC,ICEL)=NAGCEL(ITC,ICN) + ENDDO + ENDDO + ELSE + CALL LCMGET(IPGEO,'GENERATING',IGEN) + DO ICEL=1,NBOCEL + ICN=IGEN(ICEL) + DO ITC=1,3 + NAGGEO(ITC,ICEL)=NAGCEL(ITC,ICN) + ENDDO + ENDDO + ENDIF + DEALLOCATE(NAGCEL,IGEN) + CALL LCMLEN(IPGEO,'TURN',ILCMLN,ILCMTY) + IF(ILCMLN .GT. 0) THEN + CALL LCMGET(IPGEO,'TURN',ITURN) + ELSE + ITURN(:NBOCEL)=1 + ENDIF + CALL LCMLEN(IPGEO,'MERGE',ILCMLN,ILCMTY) + IF(ILCMLN .GT. 0) THEN +*---- +* Treatment of MERGE not yet implemented +*---- + CALL XABORT(NAMSBR// + > ': the module NXT cannot process geometry MERGE option') +* CALL LCMGET(IPGEO,'MERGE',MERGE) + ELSE + DO ICEL=1,NBOCEL + MERGE(ICEL)=ICEL + ENDDO + ENDIF + ELSE + NAMGG=' ' + READ(NAMGG,'(3A4)') (NAGGEO(ITC,1),ITC=1,3) + ITURN(1)=1 + MERGE(1)=1 + ENDIF + DO ICEL=1,NBOCEL + IF(ILCELL .EQ. 1) THEN + WRITE(NAMGG,'(3A4)') (NAGGEO(ITC,ICEL),ITC=1,3) + CALL LCMSIX(IPGEO,NAMGG,1) + ENDIF + ISTATG(:NSTATE)=0 + CALL LCMGET(IPGEO,'STATE-VECTOR',ISTATG) + IRTRN=ITURN(ICEL) +*---- +* Find cell dimension and direction +* Default is CAR3D +*---- + IDIRR(ICEL)=0 + NSDIM=3 + IF(ISTATG(1) .EQ. 5 .OR. + > ISTATG(1) .EQ. 8 .OR. + > ISTATG(1) .EQ. 12 .OR. + > ISTATG(1) .EQ. 20 .OR. + > ISTATG(1) .EQ. 26 ) THEN + IDIRR(ICEL)=1 + NSDIM=2 + ELSE IF(ISTATG(1) .EQ. 21) THEN + IDIRR(ICEL)=2 + ELSE IF(ISTATG(1) .EQ. 22) THEN + IDIRR(ICEL)=3 + ELSE IF(ISTATG(1) .EQ. 23 .OR. + > ISTATG(1) .EQ. 27 ) THEN + IDIRR(ICEL)=1 + ENDIF + IF(NDIM .NE. NSDIM) CALL XABORT(NAMSBR// + > ': Geometry and sub-geometry must have the same dimensions') + IF(ISTATG(1) .EQ. 12 .OR. + > ISTATG(1) .EQ. 13 ) THEN + MAXMSH=MAX(MAXMSH,ISTATG(2),2*ISTATG(3)+1,ISTATG(5)) + MAXREG=MAX(MAXREG,6*ISTATG(3)*ISTATG(3)*MAX(ISTATG(5),1)) + ALLOCATE(ISPLT(MAXMSH)) + MAXMSP=2*ISTATG(3)+1 + NBRSP=6*ISTATG(3)*ISTATG(3) + NAMREC='SPLITH ' + CALL LCMLEN(IPGEO,NAMREC,ILCMLN,ILCMTY) + IF(ILCMLN .GT. 0) THEN + CALL LCMGET(IPGEO,NAMREC,ISPLTH) + ISPLTH=ISPLTH*ISTATG(3) + MAXMSP=MAX(2*ISPLTH+1,MAXMSP) + NBRSP=MAX(6*ISPLTH*ISPLTH,NBRSP) + ENDIF + IDIR=3 + NAMREC='SPLIT'//CDIR(IDIR)//' ' + CALL LCMLEN(IPGEO,NAMREC,ILCMLN,ILCMTY) + IF(ILCMLN .GT. 0) THEN + CALL LCMGET(IPGEO,NAMREC,ISPLT) + NBSP=0 + DO ISPL=1,ILCMLN + NBSP=NBSP+ABS(ISPLT(ISPL)) + ENDDO + ELSE + NBSP=MAX(ISTATG(5),1) + ENDIF + NBRSP=NBRSP*NBSP + MAXMSP=MAX(MAXMSP,NBSP+1) + MAXRSP=MAX(MAXRSP,NBRSP) + ELSE IF(ISTATG(1) .EQ. 26 .OR. + > ISTATG(1) .EQ. 27 ) THEN + MAXMSH=MAX(MAXMSH,ISTATG(2)+1,2*ISTATG(3)+1,ISTATG(5)) + MAXREG=MAX(MAXREG,(ISTATG(2)+1)*(6*ISTATG(3)*ISTATG(3)) + > *MAX(ISTATG(5),1)) + ALLOCATE(ISPLT(MAXMSH)) + MAXMSP=2*ISTATG(3)+1 + NBRSP=6*ISTATG(3)*ISTATG(3) + NAMREC='SPLITH ' + CALL LCMLEN(IPGEO,NAMREC,ILCMLN,ILCMTY) + IF(ILCMLN .GT. 0) THEN + CALL LCMGET(IPGEO,NAMREC,ISPLTH) + ISPLTH=ISPLTH*ISTATG(3) + MAXMSP=MAX(2*ISPLTH+1,MAXMSP) + NBRSP=MAX(6*ISPLTH*ISPLTH,NBRSP) + ENDIF + IDIR=3 + NAMREC='SPLIT'//CDIR(IDIR)//' ' + CALL LCMLEN(IPGEO,NAMREC,ILCMLN,ILCMTY) + IF(ILCMLN .GT. 0) THEN + CALL LCMGET(IPGEO,NAMREC,ISPLT) + NBSP=0 + DO ISPL=1,ILCMLN + NBSP=NBSP+ABS(ISPLT(ISPL)) + ENDDO + ELSE + NBSP=MAX(ISTATG(5),1) + ENDIF + NBRSP=(ISTATG(2)+1)*NBRSP*NBSP + MAXMSP=MAX(MAXMSP,NBSP+1) + MAXRSP=MAX(MAXRSP,NBRSP) + ELSE + MAXMSH=MAX(MAXMSH,ISTATG(2),ISTATG(3),ISTATG(4),ISTATG(5)) + MAXREG=MAX(MAXREG,(ISTATG(2)+1)* + > MAX(ISTATG(3),1)*MAX(ISTATG(4),1)*MAX(ISTATG(5),1)) + ALLOCATE(ISPLT(MAXMSH)) + NBRSP=1 + DO IDIR=1,4 + NAMREC='SPLIT'//CDIR(IDIR)//' ' + CALL LCMLEN(IPGEO,NAMREC,ILCMLN,ILCMTY) + IF(ILCMLN .GT. 0) THEN + CALL LCMGET(IPGEO,NAMREC,ISPLT) + NBSP=0 + DO ISPL=1,ILCMLN + NBSP=NBSP+ABS(ISPLT(ISPL)) + ENDDO +* NBRSP=NBRSP*(NBSP+1) + IF(IDIR .EQ. 4) THEN + NBRSP=NBRSP*(NBSP+1) + ELSE + NBRSP=NBRSP*NBSP + ENDIF + MAXMSP=MAX(MAXMSP,NBSP+1) + ENDIF + ENDDO + MAXRSP=MAX(MAXRSP,NBRSP) + ENDIF + DEALLOCATE(ISPLT) +*---- +* Get off center +*---- + INTRN=1 + OFFCEN(:3)=0.0 + CALL LCMLEN(IPGEO,'OFFCENTER ',ILCMLN,ILCMTY) + IF(ILCMLN .GT. 0) + > CALL LCMGET(IPGEO,'OFFCENTER ',OFFCEN) + DO IDIR=1,3 + DRW(IDIR)=OFFCEN(IDIR) + ENDDO + CALL NXTTRM(IRTRN,INTRN,DRW,DCMESH(1,2,ICEL)) + IF(ITYPBC .EQ. 2) THEN +*---- +* Get H mesh +*---- + ALLOCATE(RMESH(MAXMSH+1)) + CALL LCMGET(IPGEO,'SIDE ',SIDEH) + DRW(1)=DBLE(SIDEH) +*---- +* Get z-mesh +*---- + IDIR=3 + NAMREC='MESH'//CDIR(IDIR)//' ' + CALL LCMLEN(IPGEO,NAMREC,ILCMLN,ILCMTY) + IF(ILCMLN .GT. 0) THEN + CALL LCMGET(IPGEO,NAMREC,RMESH) + DRW(IDIR)=DBLE(RMESH(ILCMLN))-DBLE(RMESH(1)) + ENDIF + DEALLOCATE(RMESH) + CALL NXTTRM(IRTRN,INTRN,DRW,DCMESH(1,1,ICEL)) +*---- +* Fill DGMESH according to IUNFLD +*---- + IPOS=0 + NZU=MAX(NUCELL(3),1) + NCH=NUCELL(1) + ARGS=DBLE(12*NCH-3) + NCR=(NINT(SQRT(ARGS))+3)/6 + DO IZ=1,MAX(NUCELL(3),1) + IH=0 + DO IR=1,NCR + NCS=6 + NSS=MAX(1,IR-1) + IF(IR.EQ.1) NCS=1 + DO IS=1,NCS + DO ISS=1,NSS + IH=IH+1 + IPOS=IPOS+1 +*---- +* Locate crown (IR), sector (IS) and hexagon number in sector (ISS) +*---- + IF(IUNFLD(1,IPOS) .EQ. ICEL) THEN +*---- +* cell is located at this position +* Turn width according to symmetry +*---- + INTRN=IUNFLD(2,IPOS) + CALL NXTTRM(IRTRN,INTRN,DRW,DNW(1)) + IF(DGMESH(0,1) .EQ. 0.0D0) THEN + DGMESH(0,1)=DRW(1) + DGMESH(0,2)=DRW(1) + ELSE IF(ABS(DGMESH(0,1)-DRW(1)) .GT. DCUT) THEN + CALL XABORT(NAMSBR// + > ': H- Mesh in assembly is not uniform') + ENDIF + CALL NXTHCL(IPRINT,IR,IS,ISS,DRW(1), + > DGMESH(IH,1),DGMESH(IH,2)) + IF(DGMESH(IZ,3) .EQ. 0.0D0) THEN + DGMESH(IZ,3)=DNW(3) + ELSE IF(ABS(DGMESH(IZ,3)-DNW(3)) .GT. DCUT) THEN + CALL XABORT(NAMSBR// + > ': Z Mesh in assembly is not uniform') + ENDIF + ENDIF + ENDDO + ENDDO + ENDDO + ENDDO + ELSE +*---- +* Get Cartesian mesh +*---- + ALLOCATE(XMESH(MAXMSH+1)) + DO IDIR=1,3 + NAMREC='MESH'//CDIR(IDIR)//' ' + CALL LCMLEN(IPGEO,NAMREC,ILCMLN,ILCMTY) + IF(ILCMLN .GT. 0) THEN + CALL LCMGET(IPGEO,NAMREC,XMESH) + DRW(IDIR)=DBLE(XMESH(ILCMLN))-DBLE(XMESH(1)) + ENDIF + ENDDO + DEALLOCATE(XMESH) + CALL NXTTRM(IRTRN,INTRN,DRW,DCMESH(1,1,ICEL)) +*---- +* Fill DGMESH according to IUNFLD +*---- + IPOS=0 + NZU=MAX(NUCELL(3),1) + DO IZ=1,MAX(NUCELL(3),1) + DO IY=1,NUCELL(2) + DO IX=1,NUCELL(1) + IPOS=IPOS+1 + IF(IUNFLD(1,IPOS) .EQ. ICEL) THEN +*---- +* cell is located at this position +* Turn width according to symmetry +*---- + INTRN=IUNFLD(2,IPOS) + CALL NXTTRM(IRTRN,INTRN,DRW,DNW(1)) + IF(DGMESH(IX,1) .EQ. 0.0D0) THEN + DGMESH(IX,1)=DNW(1) + ELSE IF(ABS(DGMESH(IX,1)-DNW(1)) .GT. DCUT) THEN + CALL XABORT(NAMSBR// + > ': X Mesh in assembly is not uniform') + ENDIF + IF(DGMESH(IY,2) .EQ. 0.0D0) THEN + DGMESH(IY,2)=DNW(2) + ELSE IF(ABS(DGMESH(IY,2)-DNW(2)) .GT. DCUT) THEN + CALL XABORT(NAMSBR// + > ': Y Mesh in assembly is not uniform') + ENDIF + IF(DGMESH(IZ,3) .EQ. 0.0D0) THEN + DGMESH(IZ,3)=DNW(3) + ELSE IF(ABS(DGMESH(IZ,3)-DNW(3)) .GT. DCUT) THEN + CALL XABORT(NAMSBR// + > ': Z Mesh in assembly is not uniform') + ENDIF + ENDIF + ENDDO + ENDDO + ENDDO + ENDIF + IF(ISTATG(13) .GT. 0) THEN + NBGCLS=ISTATG(13) + NBTCLS=NBTCLS+NBGCLS + ALLOCATE(NAGCLS(3,NBGCLS)) + CALL LCMGET(IPGEO,'CLUSTER',NAGCLS) + NTPIN=0 + DO ICLS=1,NBGCLS + WRITE(NAMCL,'(3A4)') (NAGCLS(ITC,ICLS),ITC=1,3) + CALL LCMSIX(IPGEO,NAMCL,1) + ISTATG(:NSTATE)=0 + CALL LCMGET(IPGEO,'STATE-VECTOR',ISTATG) +*---- +* Find cluster dimension and direction +*---- + IDIRC=1 + NCDIM=3 + IF(ISTATG(1) .EQ. 3) THEN + NCDIM=2 + ELSE IF(ISTATG(1) .EQ. 10) THEN + IDIRC=2 + ELSE IF(ISTATG(1) .EQ. 11) THEN + IDIRC=3 + ELSE IF(ISTATG(1) .EQ. 6) THEN + IDIRC=1 + ELSE + CALL XABORT(NAMSBR//': Invalid pin geometry'// + >' -- Only TUBE* permitted') + ENDIF + IF(NSDIM .NE. NCDIM) CALL XABORT(NAMSBR// + >': Sub-geometry and clusters must have the same dimensions') + IF(IDIRC .NE. IDIRR(ICEL)) THEN + IF(IDIRR(ICEL) .NE. 0) CALL XABORT(NAMSBR// + >': Pin and geometry direction are incompatible') + IDIRR(ICEL)=IDIRC + ENDIF + MAXMSH=MAX(MAXMSH,ISTATG(2),ISTATG(3),ISTATG(4),ISTATG(5)) + MAXREG=MAX(MAXREG,ISTATG(6)) + CALL LCMGET(IPGEO,'NPIN',NPIN) + NTPIN=NTPIN+NPIN + ALLOCATE(ISPLT(MAXMSH)) + NBRSP=1 + DO IDIR=1,4 + NAMREC='SPLIT'//CDIR(IDIR)//' ' + CALL LCMLEN(IPGEO,NAMREC,ILCMLN,ILCMTY) + IF(ILCMLN .GT. 0) THEN + CALL LCMGET(IPGEO,NAMREC,ISPLT) + NBSP=0 + DO ISPL=1,ILCMLN + NBSP=NBSP+ABS(ISPLT(ISPL)) + ENDDO + IF(IDIR .EQ. 4) THEN + NBRSP=NBRSP*(NBSP+1) + ELSE + NBRSP=NBRSP*NBSP + ENDIF + MAXMSP=MAX(MAXMSP,NBSP+1) + ENDIF + ENDDO + MAXRSP=MAX(MAXRSP,NBRSP) + DEALLOCATE(ISPLT) + CALL LCMSIX(IPGEO,NAMCL,2) + ENDDO + MAXPIN=MAX(MAXPIN,NTPIN) +*---- +* Now test if pin overlapp +*---- + CALL NXTTPO(IPGEO ,IPRINT,ITYPBC,NBGCLS,NTPIN ,MAXMSH,NCDIM , + > IDIRR(ICEL) ,DRW ,OFFCEN,NAGCLS) + DEALLOCATE(NAGCLS) + ENDIF + IF(IDIRR(ICEL) .EQ. 0) IDIRR(ICEL)=1 + IF(ILCELL .EQ. 1) THEN + CALL LCMSIX(IPGEO,NAMGG,2) + ENDIF + ENDDO + IEDIMG(16)=MAXMSH + IEDIMG(17)=MAXREG + IEDIMG(18)=NBTCLS + IEDIMG(19)=MAX(MAXPIN,1) + IEDIMG(20)=MAXMSP+1 + IEDIMG(21)=MAXRSP + IF(ITYPBC .EQ. 2) THEN + IF(NUCELL(1) .GT. 0) THEN + DO IDIR=1,2 + NAMREC='G00000001SM'//CDIR(IDIR) + CALL LCMPUT(IPTRK,NAMREC,(NUCELL(1)+1),4, + > DGMESH(0,IDIR)) + ENDDO + ENDIF + IDIR=3 + IF(NUCELL(IDIR) .GT. 0) THEN + DO IX=1,NUCELL(IDIR) + DGMESH(IX,IDIR)=DGMESH(IX-1,IDIR)+DGMESH(IX,IDIR) + ENDDO + NAMREC='G00000001SM'//CDIR(IDIR) + CALL LCMPUT(IPTRK,NAMREC,(NUCELL(IDIR)+1),4, + > DGMESH(0,IDIR)) + ENDIF + ELSE + DO IDIR=1,3 + IF(NUCELL(IDIR) .GT. 0) THEN + DO IX=1,NUCELL(IDIR) + DGMESH(IX,IDIR)=DGMESH(IX-1,IDIR)+DGMESH(IX,IDIR) + ENDDO + NAMREC='G00000001SM'//CDIR(IDIR) + CALL LCMPUT(IPTRK,NAMREC,(NUCELL(IDIR)+1),4, + > DGMESH(0,IDIR)) + ENDIF + ENDDO + ENDIF + CALL LCMPUT(IPTRK,'G00000001DIM',NEDIM,1,IEDIMG) +*---- +* Processing finished: +* print routine closing output header if required +* and return +*---- + IF(IPRINT .GE. 10) THEN + WRITE(IOUT,6001) NAMSBR + ENDIF + RETURN +*---- +* Output formats +*---- + 6000 FORMAT('(* Output from --',A6,'-- follows ') + 6001 FORMAT(' Output from --',A6,'-- completed *)') + END |
