1 |
guez |
108 |
module createnewfield_m |
2 |
|
|
|
3 |
|
|
implicit none |
4 |
|
|
|
5 |
|
|
contains |
6 |
|
|
|
7 |
guez |
109 |
subroutine CreateNewField(name, my_shape) |
8 |
guez |
108 |
|
9 |
|
|
USE netcdf, ONLY: nf90_clobber, nf90_double, nf90_unlimited |
10 |
|
|
USE netcdf95, ONLY: nf95_create, nf95_def_dim, nf95_def_var, nf95_enddef |
11 |
guez |
109 |
USE write_field, ONLY: ncid, record, fieldname, varid, nbfield |
12 |
guez |
108 |
|
13 |
|
|
character(len = *), intent(in):: name |
14 |
guez |
109 |
integer, intent(in):: my_shape(:) |
15 |
guez |
108 |
|
16 |
|
|
! Local: |
17 |
guez |
109 |
integer Dimid(size(my_shape) + 1), n_dim |
18 |
guez |
108 |
|
19 |
|
|
!-------------------------------------------------------------------- |
20 |
|
|
|
21 |
|
|
NbField = NbField + 1 |
22 |
guez |
109 |
FieldName(NbField) = ADJUSTL(name) |
23 |
|
|
Record(NbField) = 1 |
24 |
|
|
n_dim = size(my_shape) |
25 |
guez |
108 |
|
26 |
guez |
109 |
call NF95_CREATE(TRIM(FieldName(NbField)) // '.nc', NF90_CLOBBER, & |
27 |
|
|
Ncid(NbField)) |
28 |
|
|
call NF95_DEF_DIM(Ncid(NbField), 'X', my_shape(1), Dimid(1)) |
29 |
|
|
if (n_dim >= 2) then |
30 |
|
|
call NF95_DEF_DIM(Ncid(NbField), 'Y', my_shape(2), Dimid(2)) |
31 |
|
|
if (n_dim >= 3) then |
32 |
|
|
call NF95_DEF_DIM(Ncid(NbField), 'Z', my_shape(3), Dimid(3)) |
33 |
|
|
end if |
34 |
|
|
end if |
35 |
|
|
call NF95_DEF_DIM(Ncid(NbField), 'iter', NF90_UNLIMITED, Dimid(n_dim + 1)) |
36 |
|
|
call NF95_DEF_VAR(Ncid(NbField), FieldName(NbField), NF90_DOUBLE, & |
37 |
|
|
Dimid, Varid(NbField)) |
38 |
|
|
call NF95_ENDDEF(Ncid(NbField)) |
39 |
guez |
108 |
|
40 |
|
|
end subroutine CreateNewField |
41 |
|
|
|
42 |
|
|
end module createnewfield_m |