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 2368 for branches/nemo_v3_3_beta/NEMOGCM/EXTERNAL – NEMO

Ignore:
Timestamp:
2010-11-09T16:38:45+01:00 (13 years ago)
Author:
acc
Message:

nemo_v3_3_beta. Changes to code relating to key_netcdf4 option to provide more robust compilation. See #755 and #754

Location:
branches/nemo_v3_3_beta/NEMOGCM/EXTERNAL
Files:
2 edited
1 moved

Legend:

Unmodified
Added
Removed
  • branches/nemo_v3_3_beta/NEMOGCM/EXTERNAL/IOIPSL/src/histcom.f90

    r2364 r2368  
    77!- 
    88  USE netcdf 
    9   USE nc4dummy ! needed to allow compilation with netcdf3 libraries 
     9  USE nc4interface ! needed to allow compilation with netcdf3 libraries 
    1010!- 
    1111  USE stringop, ONLY : nocomma,cmpblank,findpos,find_str,strlowercase 
     
    3636!- to describe the grid, just two vectors. 
    3737!--------------------------------------------------------------------- 
    38 !- 
    39   TYPE, PUBLIC :: snc4_ctl    !: netcdf4 chunking control structure  
    40                               !: (optional on histbeg and histend calls) 
    41      SEQUENCE 
    42      INTEGER :: ni 
    43      INTEGER :: nj 
    44      INTEGER :: nk 
    45      LOGICAL :: luse 
    46   END TYPE snc4_ctl 
    4738!- 
    4839  INTERFACE histbeg 
     
    428419!- 
    429420  IF (PRESENT(snc4chunks)) THEN 
    430     IF (snc4chunks%luse) m_c = NF90_HDF5  ! will conflict if compiling with netcdf4 libraries without "key_netcdf4" 
     421    IF (snc4chunks%luse) CALL get_nf90_symbol("NF90_HDF5", m_c) 
    431422  ENDIF 
    432423!- 
     
    15641555           ichunksz(3) = MIN(ichunksz(3), MAX((ichunksz(3)-1)/snc4chunks%nk + 1, 1)) 
    15651556           ! Always use a chunk size of 1 for the unlimited dimension 
    1566            iret = NF90_DEF_VAR_CHUNKING(nfid, nvid, ichunkalg, ichunksz) ! will conflict if compiling with netcdf4 libraries without "key_netcdf4" 
    1567  
    1568            iret = NF90_DEF_VAR_DEFLATE(nfid, nvid, ishuffle, ideflate, ideflate_level) ! will conflict if compiling with netcdf4 libraries without "key_netcdf4" 
    1569  
     1557           iret = SET_NF90_DEF_VAR_CHUNKING(nfid, nvid, ichunkalg, ichunksz) 
     1558           iret = SET_NF90_DEF_VAR_DEFLATE(nfid, nvid, ishuffle, ideflate, ideflate_level) 
    15701559          ENDIF 
    15711560        ENDIF 
  • branches/nemo_v3_3_beta/NEMOGCM/EXTERNAL/IOIPSL/src/nc4interface.F90

    r2366 r2368  
    1 MODULE nc4dummy 
     1MODULE nc4interface 
    22!- 
    33!- 
     
    1010      !!                   calls when compiling without netcdf4 libraries 
    1111      !!-------------------------------------------------------------------- 
    12      INTEGER, PUBLIC :: NF90_HDF5 
     12  !- netcdf4 chunking control structure 
     13  !- (optional on histbeg and histend calls) 
     14  TYPE, PUBLIC :: snc4_ctl 
     15     SEQUENCE 
     16     INTEGER :: ni 
     17     INTEGER :: nj 
     18     INTEGER :: nk 
     19     LOGICAL :: luse 
     20  END TYPE snc4_ctl 
     21 
    1322CONTAINS 
    1423!=== 
    15    INTEGER FUNCTION NF90_DEF_VAR_CHUNKING(idum1, idum2, idum3, iarr1) 
     24   SUBROUTINE GET_NF90_SYMBOL(sym_name, ivalue) 
     25      CHARACTER(len=*),      INTENT(in)  :: sym_name 
     26      INTEGER,               INTENT(out) :: ivalue 
     27      ivalue = -999 
     28   END SUBROUTINE GET_NF90_SYMBOL 
     29   INTEGER FUNCTION SET_NF90_DEF_VAR_CHUNKING(idum1, idum2, idum3, iarr1) 
    1630      !!-------------------------------------------------------------------- 
    1731      !!                   ***  SUBROUTINE NF90_DEF_VAR_CHUNKING  *** 
     
    2135      INTEGER,               INTENT(in) :: idum1, idum2, idum3 
    2236      INTEGER, DIMENSION(4), INTENT(in) :: iarr1 
    23       IF(lwp) WRITE(numout,*) 'Warning: Attempt to chunk output variable without NetCDF4 support' 
    24       NF90_DEF_VAR_CHUNKING = -1 
    25    END FUNCTION NF90_DEF_VAR_CHUNKING 
     37      WRITE(*,*) 'Warning: Attempt to chunk output variable without NetCDF4 support' 
     38      SET_NF90_DEF_VAR_CHUNKING = -1 
     39   END FUNCTION SET_NF90_DEF_VAR_CHUNKING 
    2640 
    27    INTEGER FUNCTION NF90_DEF_VAR_DEFLATE(idum1, idum2, idum3, idum4, idum5) 
     41   INTEGER FUNCTION SET_NF90_DEF_VAR_DEFLATE(idum1, idum2, idum3, idum4, idum5) 
    2842      !!-------------------------------------------------------------------- 
    2943      !!                   ***  SUBROUTINE NF90_DEF_VAR_DEFLATE  *** 
     
    3246      !!-------------------------------------------------------------------- 
    3347      INTEGER,               INTENT(in) :: idum1, idum2, idum3, idum4, idum5 
    34       IF(lwp) WRITE(numout,*) 'Warning: Attempt to compress output variable without NetCDF4 support' 
    35       NF90_DEF_VAR_DEFLATE = -1 
    36    END FUNCTION NF90_DEF_VAR_DEFLATE 
     48      WRITE(*,*) 'Warning: Attempt to compress output variable without NetCDF4 support' 
     49      SET_NF90_DEF_VAR_DEFLATE = -1 
     50   END FUNCTION SET_NF90_DEF_VAR_DEFLATE 
    3751#else 
    3852      !!-------------------------------------------------------------------- 
     
    4054      !!               calls when compiling without netcdf4 libraries 
    4155      !!-------------------------------------------------------------------- 
     56 
     57   USE netcdf 
     58 
     59   !- netcdf4 chunking control structure 
     60   !- (optional on histbeg and histend calls) 
     61!$AGRIF_DO_NOT_TREAT 
     62   TYPE, PUBLIC :: snc4_ctl 
     63      SEQUENCE 
     64      INTEGER :: ni 
     65      INTEGER :: nj 
     66      INTEGER :: nk 
     67      LOGICAL :: luse 
     68   END TYPE snc4_ctl 
     69!$AGRIF_END_DO_NOT_TREAT 
     70 
     71CONTAINS 
     72   INTEGER FUNCTION SET_NF90_DEF_VAR_CHUNKING(nfid, nvid, ichunkalg, ichunksz) 
     73      !!-------------------------------------------------------------------- 
     74      !!                   ***  SUBROUTINE NF90_DEF_VAR_CHUNKING  *** 
     75      !! 
     76      !! ** Purpose :   Interface NetCDF4 routine to enable compiling with NetCDF4 libraries 
     77      !!                but no key_netcdf4 
     78      !!-------------------------------------------------------------------- 
     79      INTEGER,               INTENT(in) :: nfid 
     80      INTEGER,               INTENT(in) :: nvid 
     81      INTEGER,               INTENT(in) :: ichunkalg 
     82      INTEGER, DIMENSION(:), INTENT(in) :: ichunksz 
     83      !! 
     84      INTEGER                           :: iret 
     85      !! 
     86      iret = NF90_DEF_VAR_CHUNKING(nfid, nvid, ichunkalg, ichunksz) 
     87      SET_NF90_DEF_VAR_CHUNKING = iret 
     88   END FUNCTION SET_NF90_DEF_VAR_CHUNKING 
     89 
     90   INTEGER FUNCTION SET_NF90_DEF_VAR_DEFLATE(nfid, nvid, ishuffle, ideflate, ideflate_level) 
     91      !!-------------------------------------------------------------------- 
     92      !!                   ***  SUBROUTINE NF90_DEF_VAR_DEFLATE  *** 
     93      !! 
     94      !! ** Purpose :   Interface NetCDF4 routine to enable compiling with NetCDF4 libraries 
     95      !!                but no key_netcdf4 
     96      !!-------------------------------------------------------------------- 
     97      INTEGER,               INTENT(in) :: nfid 
     98      INTEGER,               INTENT(in) :: nvid 
     99      INTEGER,               INTENT(in) :: ishuffle 
     100      INTEGER,               INTENT(in) :: ideflate 
     101      INTEGER,               INTENT(in) :: ideflate_level 
     102      !! 
     103      INTEGER                           :: iret 
     104      !! 
     105      iret = NF90_DEF_VAR_DEFLATE(nfid, nvid, ishuffle, ideflate, ideflate_level) 
     106      SET_NF90_DEF_VAR_DEFLATE = iret 
     107   END FUNCTION SET_NF90_DEF_VAR_DEFLATE 
     108 
     109   SUBROUTINE GET_NF90_SYMBOL(sym_name, ivalue) 
     110      CHARACTER(len=*),      INTENT(in)  :: sym_name 
     111      INTEGER,               INTENT(out) :: ivalue 
     112      SELECT CASE (sym_name) 
     113         CASE ("NF90_HDF5") 
     114            ivalue = NF90_HDF5 
     115         CASE DEFAULT 
     116            WRITE(*,*) "Warning: unknown case in GET_NF90_SYMBOL" 
     117      END SELECT 
     118   END SUBROUTINE GET_NF90_SYMBOL 
    42119#endif 
    43120 
    44121!------------------ 
    45 END MODULE nc4dummy 
     122END MODULE nc4interface 
  • branches/nemo_v3_3_beta/NEMOGCM/EXTERNAL/XMLIO_SERVER/src/IOSERVER/mod_ioserver_namelist.f90

    r2364 r2368  
    11MODULE mod_ioserver_namelist 
    22 
     3  USE nc4interface 
    34  LOGICAL,SAVE :: using_server 
    45  LOGICAL,SAVE :: using_oasis 
     
    1112 
    1213  INTEGER,PARAMETER,PRIVATE :: starting_unit=356 
    13   TYPE, PUBLIC :: snc4_ctl    !: netcdf4 chunking control structure 
    14                               !: (optional on histbeg and histend calls) 
    15      SEQUENCE 
    16      INTEGER :: ni 
    17      INTEGER :: nj 
    18      INTEGER :: nk 
    19      LOGICAL :: luse 
    20   END TYPE snc4_ctl 
    2114  TYPE(snc4_ctl), SAVE :: snc4ioset 
    2215  INTEGER :: nn_nchunks_i, nn_nchunks_j, nn_nchunks_k 
Note: See TracChangeset for help on using the changeset viewer.