Home > custom > netcdf > nc_convey_mb_file.m

nc_convey_mb_file

PURPOSE ^

creates a mass balance input nc file for GLIMMER using a template infile

SYNOPSIS ^

function nc_convey_mb_file(infile,vnmb,vnprecip,outfile)

DESCRIPTION ^

 creates a mass balance input nc file for GLIMMER using a template infile
   (full file path as string), vnmb is the mass balance variable 
   name (e.g. 'acab'). Outfile will be the new file.

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function nc_convey_mb_file(infile,vnmb,vnprecip,outfile)
0002 % creates a mass balance input nc file for GLIMMER using a template infile
0003 %   (full file path as string), vnmb is the mass balance variable
0004 %   name (e.g. 'acab'). Outfile will be the new file.
0005 
0006 %while (status==0)
0007 [ncid, status] = mexnc ( 'create', outfile);
0008 ncid_in = mexnc ( 'open', infile, nc_nowrite_mode); %open thk input file to copy attributes
0009 [dimid, status] = mexnc ( 'inq_dimid', ncid_in, 'time' );
0010 [name, length, status] = mexnc ( 'inq_dim', ncid_in, dimid);
0011 [dimidt, status] = mexnc ( 'def_dim', ncid, name, length ); % create new dimension time
0012 
0013 [dimid, status] = mexnc ( 'inq_dimid', ncid_in, 'x1' );
0014 [name, length, status] = mexnc ( 'inq_dim', ncid_in, dimid);
0015 [dimidx, status] = mexnc ( 'def_dim', ncid, name, length ); % create new dimension x1
0016 
0017 [dimid, status] = mexnc ( 'inq_dimid', ncid_in, 'y1' );
0018 [name, length, status] = mexnc ( 'inq_dim', ncid_in, dimid);
0019 [dimidy, status] = mexnc ( 'def_dim', ncid, name, length ); % create new dimension y1
0020 
0021 % create variable mapping
0022 [varid, status] = mexnc ( 'def_var', ncid, 'mapping', 'char', 0, [] );
0023 
0024 % copy mapping attributes from ncid_in to ncid
0025 [varid_in, status] = mexnc ( 'inq_varid', ncid_in, 'mapping' );
0026 status = mexnc ( 'copy_att', ncid_in, varid_in, 'grid_mapping_name', ncid, varid );
0027 status = mexnc ( 'copy_att', ncid_in, varid_in, 'standard_parallel', ncid, varid );
0028 status = mexnc ( 'copy_att', ncid_in, varid_in, 'longitude_of_central_meridian', ncid, varid );
0029 status = mexnc ( 'copy_att', ncid_in, varid_in, 'latitude_of_projection_origin', ncid, varid );
0030 status = mexnc ( 'copy_att', ncid_in, varid_in, 'false_easting', ncid, varid );
0031 status = mexnc ( 'copy_att', ncid_in, varid_in, 'false_northing', ncid, varid );
0032 
0033 %% create variable acab
0034 [varid, status] = mexnc ( 'def_var', ncid, vnmb, 'float', 3, [dimidt, dimidy, dimidx]);
0035 % copy acab attributes from ncid_in to ncid
0036 [varid_in, status] = mexnc ( 'inq_varid', ncid_in, vnprecip );
0037 status = mexnc ( 'copy_att', ncid_in, varid_in, 'coordinates', ncid, varid );
0038 status = mexnc ( 'copy_att', ncid_in, varid_in, 'long_name', ncid, varid );
0039 status = mexnc ( 'copy_att', ncid_in, varid_in, 'units', ncid, varid );
0040 status = mexnc ( 'copy_att', ncid_in, varid_in, 'grid_mapping', ncid, varid );
0041 [datatype, attlen, status] = mexnc ( 'inq_att', ncid, varid, 'grid_mapping' );
0042 status = mexnc ( ['put_att_',nc_datatype(datatype)], ncid, varid, 'long_name', datatype, attlen, 'accumulation and ablation');
0043 
0044 
0045 % close both files
0046 status = mexnc ( 'close', ncid_in );
0047 status = mexnc ( 'close', ncid );
0048 %end
0049 if status~=0
0050     error(mexnc( 'strerror', status));
0051 end

Generated on Tue 24-Feb-2009 19:14:50 by m2html © 2003