--- trunk/bibio/Writefield/createnewfield.f 2014/09/16 14:00:41 108 +++ trunk/bibio/Writefield/createnewfield.f 2014/09/17 10:08:00 109 @@ -4,33 +4,38 @@ contains - subroutine CreateNewField(name, dimx, dimy, dimz) + subroutine CreateNewField(name, my_shape) USE netcdf, ONLY: nf90_clobber, nf90_double, nf90_unlimited USE netcdf95, ONLY: nf95_create, nf95_def_dim, nf95_def_var, nf95_enddef - USE write_field, ONLY: fieldid, fieldindex, fieldname, fieldvarid, nbfield + USE write_field, ONLY: ncid, record, fieldname, varid, nbfield character(len = *), intent(in):: name - integer, intent(in):: dimx, dimy, dimz + integer, intent(in):: my_shape(:) ! Local: - integer TabDim(4) + integer Dimid(size(my_shape) + 1), n_dim !-------------------------------------------------------------------- NbField = NbField + 1 - FieldName(NbField) = TRIM(ADJUSTL(name)) - FieldIndex(NbField) = 1 - - call NF95_CREATE(TRIM(ADJUSTL(name)) // '.nc', NF90_CLOBBER, & - FieldId(NbField)) - call NF95_DEF_DIM(FieldId(NbField), 'X', dimx, TabDim(1)) - call NF95_DEF_DIM(FieldId(NbField), 'Y', dimy, TabDim(2)) - call NF95_DEF_DIM(FieldId(NbField), 'Z', dimz, TabDim(3)) - call NF95_DEF_DIM(FieldId(NbField), 'iter', NF90_UNLIMITED, TabDim(4)) - call NF95_DEF_VAR(FieldId(NbField), FieldName(NbField), NF90_DOUBLE, & - TabDim, FieldVarId(NbField)) - call NF95_ENDDEF(FieldId(NbField)) + FieldName(NbField) = ADJUSTL(name) + Record(NbField) = 1 + n_dim = size(my_shape) + + call NF95_CREATE(TRIM(FieldName(NbField)) // '.nc', NF90_CLOBBER, & + Ncid(NbField)) + call NF95_DEF_DIM(Ncid(NbField), 'X', my_shape(1), Dimid(1)) + if (n_dim >= 2) then + call NF95_DEF_DIM(Ncid(NbField), 'Y', my_shape(2), Dimid(2)) + if (n_dim >= 3) then + call NF95_DEF_DIM(Ncid(NbField), 'Z', my_shape(3), Dimid(3)) + end if + end if + call NF95_DEF_DIM(Ncid(NbField), 'iter', NF90_UNLIMITED, Dimid(n_dim + 1)) + call NF95_DEF_VAR(Ncid(NbField), FieldName(NbField), NF90_DOUBLE, & + Dimid, Varid(NbField)) + call NF95_ENDDEF(Ncid(NbField)) end subroutine CreateNewField