Ignore:
Timestamp:
10/12/16 16:14:03 (8 years ago)
Author:
ymipsl
Message:

New version independant of netcd I/O for benchmarking.

YM

Location:
codes/icosagcm/trunk/src
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/trunk/src/disvert.f90

    r467 r488  
    192192    INTEGER :: ncid,levid,ilevid,hyaiid,hybiid,hyamid,hybmid,P0id 
    193193    INTEGER :: l 
    194  
     194     
     195    IF (no_io) RETURN 
     196     
    195197!$OMP BARRIER 
    196198!$OMP MASTER     
  • codes/icosagcm/trunk/src/netcdf_mod.F90

    r398 r488  
    11MODULE netcdf_mod 
     2 
     3#ifndef CPP_NO_IO 
     4 
    25  USE netcdf 
     6  LOGICAL,PARAMETER :: no_io = .FALSE. 
     7 
    38#ifndef CPP_NETCDF4 
    49  INTEGER ::  NF90_NETCDF4 
     
    2833   END 
    2934#endif 
     35 
     36 
     37#else 
     38 
     39  LOGICAL,PARAMETER :: no_io = .TRUE. 
     40 
     41  INTEGER ::  NF90_NETCDF4 
     42  INTEGER ::  NF90_MPIIO 
     43  INTEGER ::  NF90_CHUNKED 
     44   
     45  INTEGER,EXTERNAL :: NF90_CREATE_PAR 
     46  INTEGER,EXTERNAL :: NF90_DEF_VAR_CHUNKING  
     47  INTEGER,EXTERNAL :: NF90_CREATE 
     48  INTEGER,EXTERNAL ::  NF90_DEF_DIM 
     49  INTEGER,EXTERNAL :: NF90_PUT_ATT 
     50  INTEGER,EXTERNAL :: NF90_ENDDEF   
     51  INTEGER,EXTERNAL :: NF90_CLOSE 
     52  INTEGER,EXTERNAL :: NF90_SYNC 
     53  INTEGER,EXTERNAL :: NF90_OPEN 
     54  INTEGER,EXTERNAL :: NF90_INQ_VARID 
     55  INTEGER,EXTERNAL :: NF90_GET_ATT 
     56   
     57  INTEGER ::  NF90_NOWRITE   
     58  INTEGER :: NF90_CLOBBER 
     59  INTEGER ::  NF90_UNLIMITED 
     60  INTEGER :: NF90_DOUBLE 
     61  INTEGER :: NF90_FLOAT 
     62  INTEGER :: NF90_GLOBAL 
     63   
     64  INTERFACE nf90_put_var 
     65    MODULE PROCEDURE   nf90_put_var_int0, nf90_put_var_int1, nf90_put_var_int2, nf90_put_var_int3,& 
     66                                                 nf90_put_var_real0, nf90_put_var_real1, nf90_put_var_real2, nf90_put_var_real3 
     67  END INTERFACE nf90_put_var 
     68 
     69  INTERFACE nf90_get_var 
     70    MODULE PROCEDURE   nf90_get_var_int0, nf90_get_var_int1, nf90_get_var_int2, nf90_get_var_int3,& 
     71                                                 nf90_get_var_real0, nf90_get_var_real1, nf90_get_var_real2, nf90_get_var_real3 
     72  END INTERFACE nf90_get_var 
     73   
     74 CONTAINS 
     75    
     76   function nf90_def_var(ncid, name, xtype, dimids, varid) 
     77        integer,                         intent( in) :: ncid 
     78        character (len = *),             intent( in) :: name 
     79        integer,                         intent( in) :: xtype 
     80        integer, dimension(:), optional, intent( in) :: dimids 
     81        integer,                         intent(out) :: varid 
     82        integer                                      :: nf90_def_var 
     83    end function nf90_def_var 
     84     
     85     
     86    function nf90_put_var_int0(ncid, varid, values, start, count, stride, map) 
     87        integer,                         intent( in) :: ncid, varid 
     88        integer,                          intent( in) :: values 
     89        integer, dimension(:), optional, intent( in) :: start, count, stride, map 
     90        integer                                      :: nf90_put_var_int0 
     91    end function nf90_put_var_int0 
     92 
     93    function nf90_put_var_int1(ncid, varid, values, start, count, stride, map) 
     94        integer,                         intent( in) :: ncid, varid 
     95        integer,                          intent( in) :: values(:) 
     96        integer, dimension(:), optional, intent( in) :: start, count, stride, map 
     97        integer                                      :: nf90_put_var_int1 
     98    end function nf90_put_var_int1 
     99 
     100    function nf90_put_var_int2(ncid, varid, values, start, count, stride, map) 
     101        integer,                         intent( in) :: ncid, varid 
     102        integer,                          intent( in) :: values(:,:) 
     103        integer, dimension(:), optional, intent( in) :: start, count, stride, map 
     104        integer                                      :: nf90_put_var_int2 
     105    end function nf90_put_var_int2 
     106 
     107    function nf90_put_var_int3(ncid, varid, values, start, count, stride, map) 
     108        integer,                         intent( in) :: ncid, varid 
     109        integer,                          intent( in) :: values(:,:,:) 
     110        integer, dimension(:), optional, intent( in) :: start, count, stride, map 
     111        integer                                      :: nf90_put_var_int3 
     112    end function nf90_put_var_int3 
     113     
     114    function nf90_put_var_real0(ncid, varid, values, start, count, stride, map) 
     115        integer,                         intent( in) :: ncid, varid 
     116        real,                              intent( in) :: values 
     117        integer, dimension(:), optional, intent( in) :: start, count, stride, map 
     118        integer                                      :: nf90_put_var_real0    
     119   end function nf90_put_var_real0 
     120 
     121    function nf90_put_var_real1(ncid, varid, values, start, count, stride, map) 
     122        integer,                         intent( in) :: ncid, varid 
     123        real,                              intent( in) :: values(:) 
     124        integer, dimension(:), optional, intent( in) :: start, count, stride, map 
     125        integer                                      :: nf90_put_var_real1    
     126   end function nf90_put_var_real1 
     127 
     128    function nf90_put_var_real2(ncid, varid, values, start, count, stride, map) 
     129        integer,                         intent( in) :: ncid, varid 
     130        real,                              intent( in) :: values(:,:) 
     131        integer, dimension(:), optional, intent( in) :: start, count, stride, map 
     132        integer                                      :: nf90_put_var_real2    
     133   end function nf90_put_var_real2 
     134 
     135    function nf90_put_var_real3(ncid, varid, values, start, count, stride, map) 
     136        integer,                         intent( in) :: ncid, varid 
     137        real,                              intent( in) :: values(:,:,:) 
     138        integer, dimension(:), optional, intent( in) :: start, count, stride, map 
     139        integer                                      :: nf90_put_var_real3    
     140   end function nf90_put_var_real3 
     141  
     142  
     143     function nf90_get_var_int0(ncid, varid, values, start, count, stride, map) 
     144        integer,                         intent( in) :: ncid, varid 
     145        integer,                          intent( out) :: values 
     146        integer, dimension(:), optional, intent( in) :: start, count, stride, map 
     147        integer                                      :: nf90_get_var_int0 
     148    end function nf90_get_var_int0 
     149 
     150    function nf90_get_var_int1(ncid, varid, values, start, count, stride, map) 
     151        integer,                         intent( in) :: ncid, varid 
     152        integer,                          intent( out) :: values(:) 
     153        integer, dimension(:), optional, intent( in) :: start, count, stride, map 
     154        integer                                      :: nf90_get_var_int1 
     155    end function nf90_get_var_int1 
     156 
     157    function nf90_get_var_int2(ncid, varid, values, start, count, stride, map) 
     158        integer,                         intent( in) :: ncid, varid 
     159        integer,                          intent( out) :: values(:,:) 
     160        integer, dimension(:), optional, intent( in) :: start, count, stride, map 
     161        integer                                      :: nf90_get_var_int2 
     162    end function nf90_get_var_int2 
     163 
     164    function nf90_get_var_int3(ncid, varid, values, start, count, stride, map) 
     165        integer,                         intent( in) :: ncid, varid 
     166        integer,                          intent( out) :: values(:,:,:) 
     167        integer, dimension(:), optional, intent( in) :: start, count, stride, map 
     168        integer                                      :: nf90_get_var_int3 
     169    end function nf90_get_var_int3 
     170     
     171    function nf90_get_var_real0(ncid, varid, values, start, count, stride, map) 
     172        integer,                         intent( in) :: ncid, varid 
     173        real,                              intent( out) :: values 
     174        integer, dimension(:), optional, intent( in) :: start, count, stride, map 
     175        integer                                      :: nf90_get_var_real0    
     176   end function nf90_get_var_real0 
     177 
     178    function nf90_get_var_real1(ncid, varid, values, start, count, stride, map) 
     179        integer,                         intent( in) :: ncid, varid 
     180        real,                              intent( out) :: values(:) 
     181        integer, dimension(:), optional, intent( in) :: start, count, stride, map 
     182        integer                                      :: nf90_get_var_real1    
     183   end function nf90_get_var_real1 
     184 
     185    function nf90_get_var_real2(ncid, varid, values, start, count, stride, map) 
     186        integer,                         intent( in) :: ncid, varid 
     187        real,                              intent( out) :: values(:,:) 
     188        integer, dimension(:), optional, intent( in) :: start, count, stride, map 
     189        integer                                      :: nf90_get_var_real2    
     190   end function nf90_get_var_real2 
     191 
     192    function nf90_get_var_real3(ncid, varid, values, start, count, stride, map) 
     193        integer,                         intent( in) :: ncid, varid 
     194        real,                              intent( out) :: values(:,:,:) 
     195        integer, dimension(:), optional, intent( in) :: start, count, stride, map 
     196        integer                                      :: nf90_get_var_real3    
     197   end function nf90_get_var_real3 
     198   
     199END MODULE netcdf_mod 
     200 
     201  SUBROUTINE NF90_CREATE_PAR 
     202  END 
     203   
     204 SUBROUTINE NF90_DEF_VAR_CHUNKING  
     205 END 
     206  
     207 SUBROUTINE NF90_CREATE 
     208 END 
     209  
     210 SUBROUTINE  NF90_DEF_DIM 
     211 END 
     212  
     213 SUBROUTINE NF90_PUT_ATT 
     214 END 
     215  
     216 SUBROUTINE NF90_ENDDEF  
     217 END 
     218   
     219 SUBROUTINE NF90_CLOSE 
     220 END 
     221  
     222 SUBROUTINE NF90_SYNC 
     223 END 
     224  
     225 SUBROUTINE NF90_OPEN 
     226 END 
     227  
     228 SUBROUTINE NF90_INQ_VARID 
     229 END 
     230  
     231 SUBROUTINE NF90_GET_ATT 
     232 END 
     233 
     234#endif 
     235 
  • codes/icosagcm/trunk/src/restart.f90

    r483 r488  
    7070  REAL(rstd),ALLOCATABLE :: lon(:),lat(:),bounds_lon(:,:),bounds_lat(:,:) 
    7171    
     72    IF (no_io) RETURN 
     73     
    7274    restart_file_name="restart" 
    7375    CALL getin("restart_file_name",restart_file_name) 
     
    419421  REAL(rstd),ALLOCATABLE :: lon(:),lat(:),bounds_lon(:,:),bounds_lat(:,:) 
    420422  REAL(rstd) :: it_temp(1) 
     423   
     424    IF (no_io) RETURN 
     425     
    421426    start_file_name="start" 
    422427    CALL getin("start_file_name",start_file_name) 
  • codes/icosagcm/trunk/src/time.f90

    r347 r488  
    105105  CHARACTER(LEN=255) :: time_frequency 
    106106 
     107  IF (no_io) RETURN 
    107108  CALL getin("dt",dt) 
    108109 
    109110!$OMP BARRIER 
    110111!$OMP MASTER   
    111     IF (is_mpi_root) THEN  
     112    IF (is_mpi_root ) THEN  
    112113      status = NF90_CREATE('time_counter.nc', NF90_CLOBBER, ncid) 
    113114      status = NF90_DEF_DIM(ncid,'time_counter',NF90_UNLIMITED,timeid) 
     
    141142  REAL(rstd) ::time_array(1) 
    142143 
     144  IF (no_io) RETURN 
     145 
    143146!$OMP BARRIER 
    144147!$OMP MASTER 
     
    160163  IMPLICIT NONE 
    161164    INTEGER :: status 
     165 
     166    IF (no_io) RETURN 
    162167     
    163168!$OMP BARRIER 
  • codes/icosagcm/trunk/src/write_field.f90

    r378 r488  
    2727      use netcdf_mod 
    2828      CHARACTER(LEN=255) :: netcdf_prec 
     29       
    2930      !$OMP CRITICAL 
    3031      netcdf_prec='float' 
     
    6869    USE dimensions 
    6970    USE mpipara 
     71    USE netcdf_mod 
    7072    IMPLICIT NONE   
    7173     CHARACTER(LEN=*),INTENT(IN) :: name_in 
     
    7678       
    7779      TYPE(t_field),POINTER :: field_glo(:) 
    78  
     80       
     81      IF (no_io) RETURN 
     82       
    7983!$OMP BARRIER 
    8084!$OMP MASTER       
     
    17771781    
    17781782   SUBROUTINE Close_files 
    1779    USE netcdf 
     1783   USE netcdf_mod 
    17801784   IMPLICIT NONE 
    17811785     INTEGER :: i,k,status 
Note: See TracChangeset for help on using the changeset viewer.