source: LMDZ6/trunk/tools/netcdf95/Datasets/nf95_create_single.f90 @ 5075

Last change on this file since 5075 was 5075, checked in by abarral, 12 months ago

[continued & end] replace netcdf by lmdz_netcdf.F90 wrapper
"use netcdf" is now only used in lmdz_netcdf.F90 (except ecrad and obsolete/)
<include "netcdf.inc"> is now likewise only used in lmdz_netcdf.F90.

systematically specify explicitely <USE lmdz_netcdf, ONLY:> (probably left some missing, to correct later on)

Further replacement of nf_put_* by nf90_put_* (same for _get_)

[minor] replace deprecated boolean operators along the way

File size: 1.5 KB
Line 
1module nf95_create_single_m
2
3  use lmdz_netcdf, only: NF90_MAX_NAME
4
5  implicit none
6
7  type coord_def
8     character(len = NF90_MAX_NAME) name
9     integer nclen
10     character(len = :), allocatable:: attr_name(:), attr_val(:)
11  end type coord_def
12
13  private NF90_MAX_NAME
14
15contains
16
17  subroutine nf95_create_single(name, coordinates, ncid, varid, varid_coord)
18
19    ! Shortcut to create a file containing a single primary variable.
20
21    use lmdz_netcdf, only: NF90_CLOBBER, NF90_FLOAT
22
23    use nf95_create_m, only: nf95_create
24    use nf95_def_dim_m, only: nf95_def_dim
25    use nf95_def_var_m, only: nf95_def_var
26    use nf95_put_att_m, only: nf95_put_att
27
28    character(len = *), intent(in):: name
29    type(coord_def), intent(in):: coordinates(:)
30    integer, intent(out):: ncid, varid, varid_coord(:)
31
32    ! Local:
33    integer i, j
34    integer dimids(size(coordinates))
35
36    !----------------------------------------------------------------------
37
38    call nf95_create(name // ".nc", NF90_CLOBBER, ncid)
39
40    do i = 1, size(coordinates)
41       call nf95_def_dim(ncid, coordinates(i)%name, coordinates(i)%nclen, &
42            dimids(i))
43       call nf95_def_var(ncid, coordinates(i)%name, NF90_FLOAT, dimids(i), &
44            varid_coord(i))
45
46       do j = 1, size(coordinates(i)%attr_name)
47          call nf95_put_att(ncid, varid_coord(i), coordinates(i)%attr_name(j), &
48               coordinates(i)%attr_val(j))
49       end do
50    end do
51
52    call nf95_def_var(ncid, name, NF90_FLOAT, dimids, varid)
53
54  end subroutine nf95_create_single
55
56end module nf95_create_single_m
Note: See TracBrowser for help on using the repository browser.