1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
from __future__ import print_function
import cmor
import numpy
import cdms2
f = cdms2.open("Test/GR30s_halo.nc")
nlon = f['grid_center_lat'].shape[1]
nlat = f['grid_center_lat'].shape[0]
error_flag = cmor.setup(inpath='Test', netcdf_file_action=cmor.CMOR_APPEND)
error_flag = cmor.dataset(
outpath='Joerg',
experiment_id='DcppC2',
institution='GICC (Generic International Climate Center, Geneva, Switzerland)',
institute_id="GICC",
source='GICCM1 (2002): ',
calendar='360_day',
realization=1,
contact='Rusty Koder (koder@middle_earth.net) ',
history='Output from archivcl_A1.nce/giccm_03_std_2xCO2_2256.',
comment='Equilibrium reached after 30-year spin-up ',
references='Model described by Koder and Tolkien ',
model_id="GICCM1",
forcing="Ant",
parent_experiment_id="lgm", branch_time=0)
ntables = [cmor.load_table("Tables/CMIP6_grids")]
ntables.append(cmor.load_table("Tables/CMIP5_OImon"))
cmor.set_table(ntables[0])
axes = numpy.zeros(2, numpy.int32)
axes[0] = cmor.axis(
table_entry='i_index',
length=nlon,
coord_vals=numpy.arange(0, nlon, 1, numpy.float32),
units='1')
axes[1] = cmor.axis(
table_entry='j_index',
length=nlat,
coord_vals=numpy.arange(0, nlat, 1, numpy.float32),
units='1')
olat_val = f("grid_center_lat").filled().astype('f')
olon_val = f("grid_center_lon").filled().astype('f')
bnds_olat = f("grid_corner_lat").filled().astype('f')
bnds_olon = f("grid_corner_lon").filled().astype('f')
grid_id = cmor.grid(
axis_ids=axes,
latitude=olat_val,
longitude=olon_val,
latitude_vertices=bnds_olat,
longitude_vertices=bnds_olon)
cmor.set_table(ntables[1])
ntimes = 12
tim_id = cmor.axis(table_entry="time",
units="months since 2010")
time_vals = numpy.arange(ntimes).astype('f')
bnds_time = numpy.arange(ntimes + 1).astype('f')
var_ids = cmor.variable(
table_entry="sic",
units="%",
## positive = vartabin(3,i),
axis_ids=[grid_id, tim_id]
)
fnm = ""
for i in range(ntimes):
print('writing time:', time_vals[i], bnds_time[i:i + 2])
data = numpy.random.random((nlon, nlat))
error_flag = cmor.write(
var_id=var_ids,
data=data,
ntimes_passed=1,
file_suffix=fnm,
time_vals=time_vals[i],
time_bnds=bnds_time[i:i + 2])
fnm = cmor.close(var_ids, file_name=True, preserve=True)
print('dumped to:', fnm)
cmor.close()
|