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

Last change on this file since 5087 was 5084, checked in by Laurent Fairhead, 4 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.