source: LMDZ6/branches/Amaury_dev/tools/netcdf95/Datasets/nf95_create_single.f90 @ 5411

Last change on this file since 5411 was 5100, checked in by abarral, 5 months ago

Remove CPP_1D key. It was used once in a single file to wrap a whole internal module -> can't even compile if key is enabled.
(lint) Set NF90_* to lowercase

File size: 1.5 KB
Line 
1module nf95_create_single_m
2
3  use 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 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.