New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 624 – NEMO

Changeset 624


Ignore:
Timestamp:
2007-02-27T15:46:47+01:00 (17 years ago)
Author:
opalod
Message:

nemo_v2_bugfix_025:RB: suppress hard-coded logical units except for dimg and coupled

Location:
trunk/NEMO
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/LIM_SRC/limdia.F90

    r508 r624  
    241241       ! opening  "ice_evolu" file 
    242242       irecl = ( jpchinf + 1 ) * nvinfo  
    243        OPEN( numevo_ice, file='ice.evolu', status='unknown', RECL = irecl) 
    244        OPEN( numevo_ice, file='ice.evolu', status='unknown') 
     243       CALL ctlopn( numevo_ice, 'ice_evolu', 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL',   & 
     244          &           irecl, numout, .TRUE., 1 ) 
    245245 
    246246       !- ecriture de 2 lignes d''entete : 
  • trunk/NEMO/OPA_SRC/IOM/in_out_manager.F90

    r623 r624  
    5656   !!                        logical units 
    5757   !!---------------------------------------------------------------------- 
    58    INTEGER            ::   numstp     =  1        !: logical unit for time step 
    59    INTEGER            ::   numout     =  2        !: logical unit for output print 
    60    INTEGER            ::   numid                  !: logical unit for debug print 
    61    INTEGER            ::   numnam     =  3        !: logical unit for namelist 
    62    INTEGER            ::   numnam_ice =  4        !: logical unit for ice namelist 
    63    INTEGER            ::   numevo_ice = 17        !: logical unit for ice variables (temp. evolution) 
    64    INTEGER            ::   numsol     = 25        !: logical unit for solver statistics 
    65    INTEGER            ::   numwri     = 40        !: logical unit for output write 
    66    INTEGER            ::   numisp     = 41        !: logical unit for island statistics 
    67    INTEGER            ::   numgap     = 45        !: logical unit for differences diagnostic 
    68    INTEGER            ::   numbol     = 67        !: logical unit for "bol" diagnostics 
    69    INTEGER            ::   numptr     = 68        !: logical unit for Poleward TRansports 
    70    INTEGER            ::   numflo     = 69        !: logical unit for drifting floats 
     58   INTEGER            ::   numstp                 !: logical unit for time step 
     59   INTEGER            ::   numout                 !: logical unit for output print 
     60   INTEGER            ::   numnam                 !: logical unit for namelist 
     61   INTEGER            ::   numnam_ice             !: logical unit for ice namelist 
     62   INTEGER            ::   numevo_ice             !: logical unit for ice variables (temp. evolution) 
     63   INTEGER            ::   numsol                 !: logical unit for solver statistics 
     64   INTEGER            ::   numwri                 !: logical unit for output write 
     65   INTEGER            ::   numisp                 !: logical unit for island statistics 
     66   INTEGER            ::   numgap                 !: logical unit for differences diagnostic 
     67   INTEGER            ::   numbol                 !: logical unit for "bol" diagnostics 
     68   INTEGER            ::   numptr                 !: logical unit for Poleward TRansports 
     69   INTEGER            ::   numflo                 !: logical unit for drifting floats 
    7170 
    7271   !!---------------------------------------------------------------------- 
     
    158157     LOGICAL :: llopn  
    159158     !--------------------------------------------------------------------- 
    160      getunit = 50   ! choose a unit that is big enough then it is 
     159     getunit = 15   ! choose a unit that is big enough then it is 
    161160                    !  not already used in OPA 
    162161     llopn = .TRUE. 
  • trunk/NEMO/OPA_SRC/ctlopn.F90

    r392 r624  
    1515      USE Agrif_Util 
    1616#endif 
     17      USE in_out_manager 
    1718      IMPLICIT NONE 
    1819 
     20      INTEGER, INTENT( out ) ::   & 
     21         knum      ! logical unit to open 
    1922      INTEGER, INTENT( in ) ::   & 
    20 #if !defined key_agrif 
    21          knum,     & ! logical unit to open 
    22 #endif 
    2323         krequ,    & ! =1 file required (stop if not exist) 
    2424         !           ! =0 file not required (create the file if does not exist) 
    2525         kout,     & ! number of logical units for write 
    2626         klengh      ! record length 
    27  
    28       INTEGER ::   iost 
    2927      CHARACTER (len=* ), INTENT( in ) ::   & 
    3028         cdacce,   & ! access specifier 
     
    3432      CHARACTER (len=* ), INTENT( in ) ::   & 
    3533         cdfile      ! file name to open 
    36 #endif 
    37  
    38       LOGICAL ::  ldwp   ! boolean term for print 
    39  
    40 #if defined key_agrif 
    41       LOGICAL :: op 
    42       INTEGER, INTENT( inout ) ::   & 
    43          knum      ! logical unit to open 
     34#else 
    4435      CHARACTER (len=* ), INTENT( inout ) ::   & 
    4536         cdfile      ! file name to open 
    4637#endif 
     38 
     39      INTEGER ::   iost 
     40      LOGICAL ::  ldwp   ! boolean term for print 
     41 
    4742      !!---------------------------------------------------------------------- 
    4843      !!  OPA 9.0 , LOCEAN-IPSL (2005)  
     
    5550         cdfile= TRIM(Agrif_CFixed())//'_'//TRIM(cdfile) 
    5651      endif 
    57       INQUIRE(UNIT=knum,OPENED=op) 
    58       IF (op) THEN 
    5952        knum=Agrif_Get_Unit() 
    60       ENDIF 
     53#else 
     54        knum=getunit() 
    6155#endif 
    6256 
  • trunk/NEMO/OPA_SRC/mppini.F90

    r516 r624  
    345345     ! Save processor layout in layout.dat file  
    346346       IF (lwp) THEN 
    347         inum = 11     
    348  
    349         OPEN(inum,FILE='layout.dat') 
     347        CALL ctlopn( inum, 'layout.dat', 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL',   & 
     348           &         1, numout, .FALSE., 1 ) 
    350349        WRITE(inum,'(a)') '   jpnij     jpi     jpj     jpk  jpiglo  jpjglo' 
    351350        WRITE(inum,'(6i8)') jpnij,jpi,jpj,jpk,jpiglo,jpjglo 
  • trunk/NEMO/OPA_SRC/mppini_2.h90

    r473 r624  
    466466      ! Save processor layout in ascii file 
    467467      IF (lwp) THEN 
    468          inum = 11 ! how do we know that 11 is ok??? 
    469          OPEN(inum,FILE='layout.dat') 
     468         CALL ctlopn( inum, 'layout.dat', 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL',   & 
     469            &         1, numout, .FALSE., 1 ) 
    470470         WRITE(inum,'(6i8)') jpnij,jpi,jpj,jpk,jpiglo,jpjglo 
    471471         WRITE(inum,'(a)') 'NAREA nlci nlcj nldi nldj nlei nlej nimpp njmpp' 
  • trunk/NEMO/OPA_SRC/opa.F90

    r599 r624  
    190190       
    191191      ! open listing and namelist units 
    192       IF ( numout /= 0 .AND. numout /= 6 ) THEN  
    193          CALL ctlopn( numout, file_out, 'UNKNOWN', 'FORMATTED',   & 
    194             &         'SEQUENTIAL', 1, numout, .FALSE., 1 ) 
    195       ENDIF 
     192      CALL ctlopn( numout, file_out, 'UNKNOWN', 'FORMATTED',   & 
     193         &         'SEQUENTIAL', 1, numout, .FALSE., 1 ) 
    196194 
    197195      WRITE(numout,*) 
  • trunk/NEMO/OPA_SRC/prtctl.F90

    r516 r624  
    1212 
    1313   !! * Module declaration 
     14   INTEGER, DIMENSION(:), ALLOCATABLE :: numid 
    1415   INTEGER, DIMENSION(:), ALLOCATABLE, SAVE ::   &  !: 
    1516      nlditl , nldjtl ,   &  !: first, last indoor index for each i-domain 
     
    9192 
    9293      !! * Local declarations 
    93       INTEGER :: overlap, numid, jn, sind, eind, kdir 
     94      INTEGER :: overlap, jn, sind, eind, kdir,j_id 
    9495      CHARACTER (len=15) :: cl2 
    9596      REAL(wp) :: zsum1, zsum2, zvctl1, zvctl2 
     
    136137      ! Loop over each sub-domain, i.e. the total number of processors ijsplt 
    137138      DO jn = sind, eind 
    138  
    139          numid = 90 + jn 
    140  
     139         ! Set logical unit 
     140         j_id =jn - narea + 1 
    141141         ! Set indices for the SUM control 
    142142         IF( .NOT. lsp_area ) THEN 
     
    187187         ! Print the result 
    188188         IF( PRESENT(clinfo3) )   THEN 
    189             WRITE(numid,FMT='(a,D23.16,3x,a,D23.16)')clinfo1, zsum1-zvctl1, cl2, zsum2-zvctl2 
     189            WRITE(numid(j_id),FMT='(a,D23.16,3x,a,D23.16)')clinfo1, zsum1-zvctl1, cl2, zsum2-zvctl2 
    190190            SELECT CASE( clinfo3 ) 
    191191            CASE ( 'tra-ta' )  
     
    199199            END SELECT 
    200200         ELSEIF ( PRESENT(clinfo2) .OR. PRESENT(tab2d_2) .OR. PRESENT(tab3d_2) )   THEN 
    201             WRITE(numid,FMT='(a,D23.16,3x,a,D23.16)')clinfo1, zsum1, cl2, zsum2 
     201            WRITE(numid(j_id),FMT='(a,D23.16,3x,a,D23.16)')clinfo1, zsum1, cl2, zsum2 
    202202         ELSE 
    203             WRITE(numid,FMT='(a,D23.16)')clinfo1, zsum1 
     203            WRITE(numid(j_id),FMT='(a,D23.16)')clinfo1, zsum1 
    204204         ENDIF 
    205205 
     
    232232 
    233233      !! * Local declarations 
    234       INTEGER ::  numid, jn, sind, eind, iltime 
     234      INTEGER :: jn, sind, eind, iltime, j_id 
    235235      !!---------------------------------------------------------------------- 
    236236 
     
    257257      ! Loop over each sub-domain, i.e. number of processors ijsplt 
    258258      DO jn = sind, eind 
    259  
    260          numid = 90 + jn 
     259          
     260         ! Set logical unit 
     261         j_id = jn - narea +1 
    261262 
    262263         IF( PRESENT(ivar1) .AND. PRESENT(clinfo2) .AND. PRESENT(ivar2) )   THEN 
    263             WRITE(numid,*)clinfo1, ivar1, clinfo2, ivar2 
     264            WRITE(numid(j_id),*)clinfo1, ivar1, clinfo2, ivar2 
    264265         ELSEIF ( PRESENT(ivar1) .AND. PRESENT(clinfo2) .AND. .NOT. PRESENT(ivar2) )   THEN 
    265             WRITE(numid,*)clinfo1, ivar1, clinfo2 
     266            WRITE(numid(j_id),*)clinfo1, ivar1, clinfo2 
    266267         ELSEIF ( PRESENT(ivar1) .AND. .NOT. PRESENT(clinfo2) .AND. PRESENT(ivar2) )   THEN 
    267             WRITE(numid,*)clinfo1, ivar1, ivar2 
     268            WRITE(numid(jn-narea+1),*)clinfo1, ivar1, ivar2 
    268269         ELSEIF ( PRESENT(ivar1) .AND. .NOT. PRESENT(clinfo2) .AND. .NOT. PRESENT(ivar2) )   THEN 
    269             WRITE(numid,*)clinfo1, ivar1 
     270            WRITE(numid(j_id),*)clinfo1, ivar1 
    270271         ELSE 
    271             WRITE(numid,*)clinfo1 
     272            WRITE(numid(j_id),*)clinfo1 
    272273         ENDIF 
    273274 
     
    287288      !!---------------------------------------------------------------------- 
    288289      !! * Local declarations 
    289       INTEGER ::   jn, numid, sind, eind 
     290      INTEGER ::   jn, sind, eind, j_id 
    290291      CHARACTER (len=28) :: clfile_out 
    291292      CHARACTER (len=23) :: clb_name 
     
    344345      ENDIF 
    345346 
     347      ALLOCATE(numid(eind-sind+1)) 
     348 
    346349      DO jn = sind, eind 
    347          numid = 90 + jn 
    348350         WRITE(clfile_out,FMT=clb_name) jn-1 
    349          OPEN ( UNIT=numid, FILE=TRIM(clfile_out),FORM='FORMATTED' ) 
    350          WRITE(numid,*) 
    351          WRITE(numid,*) '                 L O D Y C - I P S L' 
    352          WRITE(numid,*) '                     O P A model' 
    353          WRITE(numid,*) '            Ocean General Circulation Model' 
    354          WRITE(numid,*) '               version OPA 9.0  (2005) ' 
    355          WRITE(numid,*) 
    356          WRITE(numid,*) '                   PROC number: ', jn 
    357          WRITE(numid,*) 
    358          WRITE(numid,FMT="(19x,a20)")cl_run 
     351         j_id = jn -narea + 1 
     352         CALL ctlopn( numid(j_id), clfile_out, 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL',   & 
     353            &         1, numout, .FALSE., 1 ) 
     354         WRITE(numid(j_id),*) 
     355         WRITE(numid(j_id),*) '                 L O D Y C - I P S L' 
     356         WRITE(numid(j_id),*) '                     O P A model' 
     357         WRITE(numid(j_id),*) '            Ocean General Circulation Model' 
     358         WRITE(numid(j_id),*) '               version OPA 9.0  (2005) ' 
     359         WRITE(numid(j_id),*) 
     360         WRITE(numid(j_id),*) '                   PROC number: ', jn 
     361         WRITE(numid(j_id),*) 
     362         WRITE(numid(j_id),FMT="(19x,a20)")cl_run 
    359363 
    360364         ! Print the SUM control indices 
     
    365369            njctle = njmpptl(jn) + nlejtl(jn) - 1 
    366370         ENDIF 
    367          WRITE(numid,*)  
    368          WRITE(numid,*) 'prt_ctl :  Sum control indices' 
    369          WRITE(numid,*) '~~~~~~~' 
    370          WRITE(numid,*) 
    371          WRITE(numid,9000)'                                nlej   = ', nlejtl(jn), '              ' 
    372          WRITE(numid,9000)'                  ------------- njctle = ', njctle, ' -------------' 
    373          WRITE(numid,9001)'                  |                                       |' 
    374          WRITE(numid,9001)'                  |                                       |' 
    375          WRITE(numid,9001)'                  |                                       |' 
    376          WRITE(numid,9002)'           nictls = ', nictls,  '                           nictle = ', nictle 
    377          WRITE(numid,9002)'           nldi   = ', nlditl(jn),  '                           nlei   = ', nleitl(jn) 
    378          WRITE(numid,9001)'                  |                                       |' 
    379          WRITE(numid,9001)'                  |                                       |' 
    380          WRITE(numid,9001)'                  |                                       |' 
    381          WRITE(numid,9004)'  njmpp  = ',njmpptl(jn),'   ------------- njctls = ', njctls, ' -------------' 
    382          WRITE(numid,9003)'           nimpp  = ', nimpptl(jn), '        nldj   = ', nldjtl(jn), '              ' 
    383          WRITE(numid,*) 
    384          WRITE(numid,*) 
     371         WRITE(numid(j_id),*)  
     372         WRITE(numid(j_id),*) 'prt_ctl :  Sum control indices' 
     373         WRITE(numid(j_id),*) '~~~~~~~' 
     374         WRITE(numid(j_id),*) 
     375         WRITE(numid(j_id),9000)'                                nlej   = ', nlejtl(jn), '              ' 
     376         WRITE(numid(j_id),9000)'                  ------------- njctle = ', njctle, ' -------------' 
     377         WRITE(numid(j_id),9001)'                  |                                       |' 
     378         WRITE(numid(j_id),9001)'                  |                                       |' 
     379         WRITE(numid(j_id),9001)'                  |                                       |' 
     380         WRITE(numid(j_id),9002)'           nictls = ', nictls,  '                           nictle = ', nictle 
     381         WRITE(numid(j_id),9002)'           nldi   = ', nlditl(jn),  '                           nlei   = ', nleitl(jn) 
     382         WRITE(numid(j_id),9001)'                  |                                       |' 
     383         WRITE(numid(j_id),9001)'                  |                                       |' 
     384         WRITE(numid(j_id),9001)'                  |                                       |' 
     385         WRITE(numid(j_id),9004)'  njmpp  = ',njmpptl(jn),'   ------------- njctls = ', njctls, ' -------------' 
     386         WRITE(numid(j_id),9003)'           nimpp  = ', nimpptl(jn), '        nldj   = ', nldjtl(jn), '              ' 
     387         WRITE(numid(j_id),*) 
     388         WRITE(numid(j_id),*) 
    385389 
    3863909000     FORMAT(a41,i4.4,a14) 
Note: See TracChangeset for help on using the changeset viewer.