source: LMDZ6/trunk/libf/misc/lmdz_netcdf.F90 @ 5071

Last change on this file since 5071 was 5071, checked in by abarral, 2 months ago

Replace nf_put_var* by nf90_put_var as discussed w/ Lionel

File size: 1.2 KB
Line 
1! ---------------------------------------------
2! This module serves as a wrapper around netcdf.
3! It serves two primary functions:
4!  1) Turn netcdf into a "real" fortran module, without the INCLUDE call
5!  2) Handle the NC_DOUBLE CPP key. Ideally, this key should ONLY appear here (WIP). TODO
6! Ideally, the "real" netcdf module/headers should ONLY be called here. (WIP) TODO
7! ---------------------------------------------
8! TODO check that none of the wrapped functions remain elsewhere
9! TODO check all uses of `use netcdf` + netcdf.inc
10
11MODULE lmdz_netcdf
12  USE, INTRINSIC :: ISO_FORTRAN_ENV, ONLY : REAL64, REAL32
13  USE netcdf
14  IMPLICIT NONE
15  ! Note: as we want to expose netcdf through this module, we don't make all PRIVATE by default as usual
16  ! Instead, explicitely make PRIVATE the relevant items.
17  PRIVATE CPP_NC_DOUBLE
18
19  INCLUDE 'netcdf.inc'
20
21#ifdef NC_DOUBLE
22  LOGICAL, PARAMETER :: CPP_NC_DOUBLE = .TRUE.  ! Define a variable to reduce use of preprocessor ahead
23  INTEGER, PARAMETER :: NF90_FORMAT = NF90_DOUBLE
24  INTEGER, PARAMETER :: REAL_FORMAT = REAL64
25#else
26  LOGICAL, PARAMETER :: CPP_NC_DOUBLE = .FALSE.
27  INTEGER, PARAMETER :: NF90_FORMAT = NF90_FLOAT
28  INTEGER, PARAMETER :: REAL_FORMAT = REAL32
29#endif
30CONTAINS
31
32END MODULE lmdz_netcdf
Note: See TracBrowser for help on using the repository browser.