s_albani@cornell_edu
New Member
Hi!
I have a problem with the land compenent in CESM1.1. I would appreciate if I could get some insight on how to deal with this.
I need to specify ldomain from an existing input nc file I have from an older case run with cesm1.0.3, which I did the following way:
./xmlchange -file env_run.xml -id LND_DOMAIN_FILE -val fracdata_0.9x1.25_lgm21ka.110315.nc
The model crashes, with the following message from lnd.log:
Attempting to read ldomain from /glade/p/cesm/cseg/runs/ccsm4_0/b40.lgm21ka.1deg.003/SourceMods/src.clm//fracdata_0.9x1.25_lgm21ka.110315.nc
(GETFIL): attempting to find local file fracdata_0.9x1.25_lgm21ka.110315.nc
(GETFIL): using /glade/p/cesm/cseg/runs/ccsm4_0/b40.lgm21ka.1deg.003/SourceMods/src.clm//fracdata_0.9x1.25_lgm21ka.110315.nc
I think the problem is that cesm1.1 is expecting a different file format for this variable than cesm1.0.3 used to do.
My input file (fracdata_0.9x1.25_lgm21ka.110315.nc) looks like:
variables:
int NUMLON(lsmlat) ;
NUMLON:long_name = "number of grid cells at each latitude" ;
NUMLON:units = "unitless" ;
double LONGXY(lsmlat, lsmlon) ;
LONGXY:long_name = "longitude" ;
LONGXY:units = "degrees east" ;
double LATIXY(lsmlat, lsmlon) ;
LATIXY:long_name = "latitude" ;
LATIXY:units = "degrees north" ;
int LANDMASK(lsmlat, lsmlon) ;
LANDMASK:long_name = "land/ocean mask" ;
LANDMASK:units = "0=ocean and 1=land" ;
double LANDFRAC(lsmlat, lsmlon) ;
LANDFRAC:long_name = "land fraction" ;
LANDFRAC:units = "unitless" ;
The default expected file should be something like:
ncdump -h /glade/p/cesm/cseg//inputdata/share/domains/domain.lnd.fv0.9x1.25_gx1v6.090309.nc
netcdf domain.lnd.fv0.9x1.25_gx1v6.090309 {
dimensions:
n = 55296 ;
ni = 288 ;
nj = 192 ;
nv = 4 ;
variables:
double xc(nj, ni) ;
xc:long_name = "longitude of grid cell center" ;
xc:units = "degrees_east" ;
xc:bounds = "xv" ;
double yc(nj, ni) ;
yc:long_name = "latitude of grid cell center" ;
yc:units = "degrees_north" ;
yc:bounds = "yv" ;
yc:filter1 = " set_fv_pole_yc ON, yc = -+90 at j=1,j=nj" ;
double xv(nj, ni, nv) ;
xv:long_name = "longitude of grid cell verticies" ;
xv:units = "degrees_east" ;
double yv(nj, ni, nv) ;
yv:long_name = "latitude of grid cell verticies" ;
yv:units = "degrees_north" ;
int mask(nj, ni) ;
mask:long_name = "domain mask" ;
mask:note = "unitless" ;
mask:coordinates = "xc yc" ;
mask:comment = "0 value indicates cell is not active" ;
double area(nj, ni) ;
area:long_name = "area of grid cell in radians squared" ;
area:coordinates = "xc yc" ;
area:units = "radian2" ;
double frac(nj, ni) ;
frac:long_name = "fraction of grid cell that is active" ;
frac:coordinates = "xc yc" ;
frac:note = "unitless" ;
frac:filter1 = "error if frac> 1.0+eps or frac < 0.0-eps; eps = 0.1000000E-11" ;
frac:filter2 = "limit frac to [fminval,fmaxval]; fminval= 0.1000000E-02 fmaxval= 1.000000" ;
Does anyone know if there a tool to convert the old format into the one used by CESM1.1?
In case this is the issue...otherwise any additional insight would be very welcome!
Thanks for any help!
I have a problem with the land compenent in CESM1.1. I would appreciate if I could get some insight on how to deal with this.
I need to specify ldomain from an existing input nc file I have from an older case run with cesm1.0.3, which I did the following way:
./xmlchange -file env_run.xml -id LND_DOMAIN_FILE -val fracdata_0.9x1.25_lgm21ka.110315.nc
The model crashes, with the following message from lnd.log:
Attempting to read ldomain from /glade/p/cesm/cseg/runs/ccsm4_0/b40.lgm21ka.1deg.003/SourceMods/src.clm//fracdata_0.9x1.25_lgm21ka.110315.nc
(GETFIL): attempting to find local file fracdata_0.9x1.25_lgm21ka.110315.nc
(GETFIL): using /glade/p/cesm/cseg/runs/ccsm4_0/b40.lgm21ka.1deg.003/SourceMods/src.clm//fracdata_0.9x1.25_lgm21ka.110315.nc
I think the problem is that cesm1.1 is expecting a different file format for this variable than cesm1.0.3 used to do.
My input file (fracdata_0.9x1.25_lgm21ka.110315.nc) looks like:
variables:
int NUMLON(lsmlat) ;
NUMLON:long_name = "number of grid cells at each latitude" ;
NUMLON:units = "unitless" ;
double LONGXY(lsmlat, lsmlon) ;
LONGXY:long_name = "longitude" ;
LONGXY:units = "degrees east" ;
double LATIXY(lsmlat, lsmlon) ;
LATIXY:long_name = "latitude" ;
LATIXY:units = "degrees north" ;
int LANDMASK(lsmlat, lsmlon) ;
LANDMASK:long_name = "land/ocean mask" ;
LANDMASK:units = "0=ocean and 1=land" ;
double LANDFRAC(lsmlat, lsmlon) ;
LANDFRAC:long_name = "land fraction" ;
LANDFRAC:units = "unitless" ;
The default expected file should be something like:
ncdump -h /glade/p/cesm/cseg//inputdata/share/domains/domain.lnd.fv0.9x1.25_gx1v6.090309.nc
netcdf domain.lnd.fv0.9x1.25_gx1v6.090309 {
dimensions:
n = 55296 ;
ni = 288 ;
nj = 192 ;
nv = 4 ;
variables:
double xc(nj, ni) ;
xc:long_name = "longitude of grid cell center" ;
xc:units = "degrees_east" ;
xc:bounds = "xv" ;
double yc(nj, ni) ;
yc:long_name = "latitude of grid cell center" ;
yc:units = "degrees_north" ;
yc:bounds = "yv" ;
yc:filter1 = " set_fv_pole_yc ON, yc = -+90 at j=1,j=nj" ;
double xv(nj, ni, nv) ;
xv:long_name = "longitude of grid cell verticies" ;
xv:units = "degrees_east" ;
double yv(nj, ni, nv) ;
yv:long_name = "latitude of grid cell verticies" ;
yv:units = "degrees_north" ;
int mask(nj, ni) ;
mask:long_name = "domain mask" ;
mask:note = "unitless" ;
mask:coordinates = "xc yc" ;
mask:comment = "0 value indicates cell is not active" ;
double area(nj, ni) ;
area:long_name = "area of grid cell in radians squared" ;
area:coordinates = "xc yc" ;
area:units = "radian2" ;
double frac(nj, ni) ;
frac:long_name = "fraction of grid cell that is active" ;
frac:coordinates = "xc yc" ;
frac:note = "unitless" ;
frac:filter1 = "error if frac> 1.0+eps or frac < 0.0-eps; eps = 0.1000000E-11" ;
frac:filter2 = "limit frac to [fminval,fmaxval]; fminval= 0.1000000E-02 fmaxval= 1.000000" ;
Does anyone know if there a tool to convert the old format into the one used by CESM1.1?
In case this is the issue...otherwise any additional insight would be very welcome!
Thanks for any help!