Ejemplo n.º 1
0
    def save_results(self):
        if self.nc is None:
            return

        output_file = self.get_output()

        if output_file is None:
            print "No output file selected; cannot proceed."
            return

        print "Saving the mask to %s" % output_file

        nc = NC(output_file, 'w')

        nc.createDimension('x', self.x.size)
        nc.createDimension('y', self.y.size)

        x = nc.createVariable("x", 'f8', ('x',))
        y = nc.createVariable("y", 'f8', ('y',))
        mask = nc.createVariable("ftt_mask", 'i4', ('y', 'x'))

        mask.long_name = "Drainage basin area for regional modeling"

        x_orig = self.nc.variables['x']
        y_orig = self.nc.variables['y']

        for var, old_var in zip([x,y], [x_orig, y_orig]):
            for attr in old_var.ncattrs():
                var.setncattr(attr, old_var.getncattr(attr))

        x[:] = self.x
        y[:] = self.y

        nc.variables['ftt_mask'][:] = (self.mask == 2)
        nc.close()

        print "Done."
Ejemplo n.º 2
0
thk_var.long_name = "land ice thickness"
thk_var.standard_name = "land_ice_thickness"
thk_var.grid_mapping = mapping_var
thk_var[:] = np.flipud(result)

rho_var = nc.createVariable("rho", 'b', dimensions=("y", "x"),fill_value=fill_value)
rho_var.long_name = "data density integer mask"
rho_var.flag_values = "0b, 1b"
rho_var.flag_meanings = "no_data data"
rho_var.grid_mapping = mapping_var
rho_var[:] = np.flipud(rho)

x[:] = easting
y[:] = northing

# Save the projection information:
nc.projection = proj4_str

nc.Conventions = "CF-1.5"

# writing global attributes
import time
script_command = ' '.join([time.ctime(), ':', __file__.split('/')[-1],
                           ' '.join([str(l) for l in args])])
nc.history = script_command

print "writing to %s ...\n" % out_filename
print "run nc2cdo.py to add lat/lon variables" 
nc.close()

Ejemplo n.º 3
0
bheatflx_var[:] = qgeo * np.ones_like(x)

# generate (somewhat) reasonable acab
acab_max = 2.5  # m/a
acab_min = -3.0  # m/a
np.linspace(acab_max, acab_min, 100)
acab = np.ones_like(x)
acab[:5] = 0
acab[5:105] = np.linspace(acab_max, acab_min, 100)
acab[105:] = acab_min

acab_var = nc.createVariable("climatic_mass_balance", 'f', dimensions=("x", ))
acab_var.units = "m year-1"
acab_var.standard_name = "land_ice_surface_specific_mass_balance"
acab_var[:] = acab

# Set boundary conditions
# ------------------------------------------------------------------------------
#
# (A) Surface temperature for temperature equation bc
Tma = -6.0  # degC, mean annual air temperature at Tarfala
zcts = 1400  # m a.s.l.; altitude where CTS is at the surface

artm = np.zeros_like(x)
artm[(topg + thk) < zcts] = Tma
artm_var = nc.createVariable("ice_surface_temp", 'f', dimensions=("x", ))
artm_var.units = "deg_C"
artm_var[:] = artm

nc.close()
Ejemplo n.º 4
0
        npz_vars[var_name]=data
    print data.shape
    out_var[:,:,:]=data[...]
    for the_att in old_var.ncattrs():
        setattr(out_var,the_att,getattr(old_var,the_att).strip())

for var_name in ['x','y','z']:
    old_var=one_d[var_name]
    for the_att in old_var.ncattrs():
        new_var=out_vars[var_name]
        setattr(new_var,the_att,getattr(old_var,the_att))

nc_out.description='subset of BOMEX run created with make_subset.py'
nc_out.in_file=in_file

nc_in.close()
nc_out.close()

var_descrip={'W':{'long_name':'vertical velocity','units':'m/s'},
             'TABS':{'long_name':'temperature','units':'K'},
             'p':{'long_name':'pressure','units':'hPa'},
             'QV':{'long_name':'vapor mixing ratio','units':'g/kg'},
             'z':{'long_name':'height','units':'m'},
             'x':{'long_name':'xcoord','units':'m'},
             'y':{'long_name':'ycoord','units':'m'},
             }

var__file="""output from SAM LES run BOMEX_256x256x150_25m_20m_2s_16_0000009240.nc
             written by make_sub_set.py on 2012/Jan/30"""

npz_vars['var_descrip']=var_descrip
Ejemplo n.º 5
0
    if dim_name is None:
        dim_name='dim_%d' % dim_length
    try:
        ncfile.createDimension(dim_name,dim_length)
    except:
        pass
    return dim_name

def add_var(ncfile,var_name,var_val):
    the_dim='dim_%d' % var_val.shape[0]
    new_var=ncfile.createVariable(var_name,var_val.dtype,(the_dim,'var_cols'))
    new_var[:,:]=var_val[...]
    return new_var
                          
                          

dimnames=[add_dim(ncfile,item[0]) for item in keep_arrays]
ncfile.createDimension('var_cols',6)
varnames=[add_var(ncfile,item[2],item[1]) for item in keep_arrays]

col_names=array_list[0][2].dtype.names
col_units=[array_list[0][2].dtype.fields[name][2] for name in col_names]
col_units=[item.split('_')[1] for item in col_units]
ncfile.units=','.join(col_units)
ncfile.col_names=','.join(col_names)
    
## array_lengths.sort()
## array_lengths=set(array_lengths)
ncfile.close()