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

Last change on this file was 5084, checked in by Laurent Fairhead, 12 months ago

Reverting to r4065. Updating fortran standard broke too much stuff. Will do it by smaller chunks
AB, LF

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.