source: XIOS/dev/branch_openmp/src/io/netcdf.hpp @ 1555

Last change on this file since 1555 was 1555, checked in by yushan, 3 years ago

all netcdf routines inside critical section

  • Property copyright set to
    Software name : XIOS (Xml I/O Server)
    http://forge.ipsl.jussieu.fr/ioserver
    Creation date : January 2009
    Licence : CeCCIL version2
    see license file in root directory : Licence_CeCILL_V2-en.txt
    or http://www.cecill.info/licences/Licence_CeCILL_V2-en.html
    Holder : CEA/LSCE (Laboratoire des Sciences du CLimat et de l'Environnement)
    CNRS/IPSL (Institut Pierre Simon Laplace)
    Project Manager : Yann Meurdesoif
    yann.meurdesoif@cea.fr
File size: 1.8 KB
Line 
1#ifndef __XIOS_NETCDF_HPP__
2#define __XIOS_NETCDF_HPP__
3#include "mpi_std.hpp"
4#define MPI_INCLUDED
5#include <netcdf.h>
6
7#if defined(USING_NETCDF_INTERNAL)
8  const bool using_netcdf_internal=true ;
9#else
10  const bool using_netcdf_internal=false ;
11#endif
12
13#include "netcdf_version.hpp"
14
15#if NETCDF_VERSION >= 4110
16
17#  if defined(USING_NETCDF_PAR)
18extern "C"
19{
20#  include <netcdf_par.h>
21}
22#  endif
23#endif
24
25#if !defined(USING_NETCDF_PAR)
26#define NC_INDEPENDENT 0
27#define NC_COLLECTIVE  1
28#endif
29
30namespace xios
31{
32  inline int nc_create_par(const char *path, int cmode, MPI_Comm comm, MPI_Info info,int *ncidp)
33  {
34#if defined(USING_NETCDF_PAR)
35    int status;
36    #pragma omp critical (_netcdf)
37    {
38      status = ::nc_create_par(path, cmode, comm, info, ncidp) ;
39    }
40    return status;
41#else
42    ERROR("int nc_create_par(const char *path, int cmode, MPI_Comm comm, MPI_Info info,int *ncidp)",
43           << "must not be use with netcdf sequential version") ;
44    return -1 ;
45#endif
46  }
47
48  inline int nc_open_par(const char *path, int mode, MPI_Comm comm, MPI_Info info,int *ncidp)
49  {
50#if defined(USING_NETCDF_PAR)
51    int status;
52    #pragma omp critical (_netcdf)
53    {
54      status = ::nc_open_par(path, mode, comm, info, ncidp) ;
55    }
56    return status;
57#else
58    ERROR("int nc_open_par(const char *path, int mode, MPI_Comm comm, MPI_Info info,int *ncidp)",
59           << "must not be use with netcdf sequential version") ;
60    return -1 ;
61#endif
62  }
63
64  inline int nc_var_par_access(int ncid, int varid, int par_access)
65  {
66#if defined(USING_NETCDF_PAR)
67    int status = ::nc_var_par_access(ncid, varid, par_access) ;
68   
69    return status;
70#else
71    ERROR("int nc_var_par_access(int ncid, int varid, int par_access)",
72           << "must not be use with netcdf sequential version") ;
73    return -1 ;
74#endif
75  }
76}
77
78
79#endif
Note: See TracBrowser for help on using the repository browser.