Re: netCDF write not working

From: Dennis Shea <shea_at_nyahnyahspammersnyahnyah>
Date: Wed Aug 24 2011 - 08:07:08 MDT

I don't readily see any problem. There is not enough info.
What do you mean by "the file is created but the
variable is empty".

FYI:

do x=1,w
    wetsurge(x-1) = x
end do
do x=1,d
    drysurge(x-1) = x
end do

can be replaced by

wetsurge = ispan(1,w,1)
drysurge = ispan(1,d,1)

Further .... always include a "printVarSummary(...)"

Just for a different look, don't use addfiles

; assign metadata to output vars

wetsurge = ispan(1,w,1)
drysurge = ispan(1,d,1)

wetrh!0 = "surge"
wetrh!1 = "hour"
wetrh&surge = surge
wetrh&hour = hour
copy_VarMeta(wetrh,wetdpt)
copy_VarMeta(wetrh,wettmp)

printVarSummary(wetdpt)
printVarSummary(wettmp)

dryrh!0 = "surge"
dryrh!1 = "hour"
dryrh&surge = surge
dryrh&hour = hour
copy_VarMeta(dryrh,drydpt)
copy_VarMeta(dryrh,drytmp)

printVarSummary(drydpt)
printVarSummary(drytmp)

; output wetsurgedates.txt and drysurgedates.txt
print("Writing output files...")

system("/bin/rm -f wetsurgedates.txt")
system("/bin/rm -f drysurgedates.txt")
asciiwrite("wetsurgedates.txt",wetdates(0:w-1))
asciiwrite("drysurgedates.txt",drydates(0:d-1))

; list variables and data files for output
datavars = (/"wetrh","dryrh","wettmp","drytmp","wetdpt","drydpt"/)

;;;;datafiles =
;;;;(/"wetrh.nc","dryrh.nc","wettmp.nc","drytmp.nc","wetdpt.nc","drydpt.nc"/)
datafiles = datavars + ".nc"
print(datafiles)

surgedim =
(/"wetsurge","drysurge","wetsurge","drysurge","wetsurge","drysurge"/)
surgedimsize = (/w,d,w,d,w,d/)

; remove old data files so new ones can be created
do x=0,5
    system("/bin/rm -f "+datafiles(x))
; create new data files
    outfile = addfile(datafiles(x),"c")
; define variables and dimensions

; put files into define mode
    setfileoption(outfile,"DefineMode",True)
;define variables and dimensions of file vars
    filedimdef(outfile,surgedim(x),surgedimsize(x),False)
    filedimdef(outfile,"hour",dimsizes(hour),False)
    filevardef(outfile,datavars(x),"float",(/surgedim(x),"hour"/))
; take files out of define mode
    setfileoption(outfile,"DefineMode",False)
; write rh, dpt, tmp to files
    if (datavars(x).eq."wetrh") then
        outfile->wetrh = (/wetrh(0:w-1,:)/)
    end if
    if (datavars(x).eq."wettmp") then
        outfile->wettmp = (/wettmp(0:w-1,:)/)
    end if
    if (datavars(x).eq."wetdpt") then
        outfile->wetdpt = (/wetdpt(0:w-1,:)/)
    end if
    if (datavars(x).eq."dryrh") then
        outfile->dryrh = (/dryrh(0:d-1,:)/)
    end if
    if (datavars(x).eq."drytmp") then
        outfile->drytmp = (/drytmp(0:d-1,:)/)
    end if
    if (datavars(x).eq."drydpt") then
        outfile->drydpt = (/drydpt(0:d-1,:)/)
    end if
end do

On 8/23/11 3:53 PM, Nicole Schiffer wrote:
> Hi all-
>
> When I try to write data to a netCDF file, the file is created but the
> variable is empty. The variable in the program contains the correct
> data, so it seems to be something with the file format or writing.
> Here's a snip of the code. Thanks for your help.
>
> -Nicole
>
> ; assign metadata to output vars
> do x=1,w
> wetsurge(x-1) = x
> end do
> do x=1,d
> drysurge(x-1) = x
> end do
> wetrh!0 = "surge"
> wetrh!1 = "hour"
> wetrh&surge = surge
> wetrh&hour = hour
> copy_VarMeta(wetrh,wetdpt)
> copy_VarMeta(wetrh,wettmp)
> dryrh!0 = "surge"
> dryrh!1 = "hour"
> dryrh&surge = surge
> dryrh&hour = hour
> copy_VarMeta(dryrh,drydpt)
> copy_VarMeta(dryrh,drytmp)
>
> ; output wetsurgedates.txt and drysurgedates.txt
> print("Writing output files...")
> asciiwrite("wetsurgedates.txt",wetdates(0:w-1))
> asciiwrite("drysurgedates.txt",drydates(0:d-1))
>
> ; list variables and data files for output
> datavars = (/"wetrh","dryrh","wettmp","drytmp","wetdpt","drydpt"/)
> datafiles =
> (/"wetrh.nc","dryrh.nc","wettmp.nc","drytmp.nc","wetdpt.nc","drydpt.nc"/)
> surgedim =
> (/"wetsurge","drysurge","wetsurge","drysurge","wetsurge","drysurge"/)
> surgedimsize = (/w,d,w,d,w,d/)
> ; remove old data files so new ones can be created
> do x=0,5
> system("rm "+datafiles(x))
> end do
> ; create new data files
> outfile = addfiles(datafiles,"c")
> ; define variables and dimensions
> do x=0,5
> ; put files into define mode
> setfileoption(outfile[x],"DefineMode",True)
> ;define variables and dimensions of file vars
> filedimdef(outfile[x],surgedim(x),surgedimsize(x),False)
> filedimdef(outfile[x],"hour",dimsizes(hour),False)
> filevardef(outfile[x],datavars(x),"float",(/surgedim(x),"hour"/))
> ; take files out of define mode
> setfileoption(outfile[x],"DefineMode",False)
> end do
> ; write rh, dpt, tmp to files
> outfile[0]->wetrh = (/wetrh(0:w-1,:)/)
> outfile[2]->wettmp = (/wettmp(0:w-1,:)/)
> outfile[4]->wetdpt = (/wetdpt(0:w-1,:)/)
> outfile[1]->dryrh = (/dryrh(0:d-1,:)/)
> outfile[3]->drytmp = (/drytmp(0:d-1,:)/)
> outfile[5]->drydpt = (/drydpt(0:d-1,:)/)
>
> delete(outfile)
> delete(datafiles)
> _______________________________________________
> ncl-talk mailing list
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
_______________________________________________
ncl-talk mailing list
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Wed Aug 24 08:07:20 2011

This archive was generated by hypermail 2.1.8 : Thu Aug 25 2011 - 09:54:48 MDT