Index: ../trunk-jpl/test/NightlyRun/test905.m =================================================================== --- ../trunk-jpl/test/NightlyRun/test905.m (revision 25208) +++ ../trunk-jpl/test/NightlyRun/test905.m (revision 25209) @@ -40,14 +40,14 @@ duration=[md.timestepping.start_time:smb_step:md.timestepping.final_time]; ddf=10.0e-3; -md.smb.accuref=[[0.5 0.5];[0. 2.0]]; +md.smb.accuref=[[0.5 0.5];[md.timestepping.start_time md.timestepping.final_time]]; md.smb.accualti=0.0; -md.smb.accugrad=0.0; +md.smb.accugrad=[[0. 0.];[md.timestepping.start_time md.timestepping.final_time]]; md.smb.runoffref=0.9*duration*ddf; md.smb.runoffref=[md.smb.runoffref;duration]; md.smb.runoffalti=0.0; -md.smb.runoffgrad=-6.5e-3*ddf; %lapse rate *ddf*day per year +md.smb.runoffgrad=[[-6.5e-3*ddf -6.5e-3*ddf];[md.timestepping.start_time md.timestepping.final_time]]; %lapse rate *ddf*day per year md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1); md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1); Index: ../trunk-jpl/test/NightlyRun/test905.py =================================================================== --- ../trunk-jpl/test/NightlyRun/test905.py (revision 25208) +++ ../trunk-jpl/test/NightlyRun/test905.py (revision 25209) @@ -54,15 +54,15 @@ duration = np.arange(md.timestepping.start_time, md.timestepping.final_time + smb_step, smb_step) ddf = 10.0e-3 -md.smb.accuref = np.array([[0.5, 0.5], [0., 2.0]]) +md.smb.accuref = np.array([[0.5, 0.5], [md.timestepping.start_time, md.timestepping.final_time]]) md.smb.accualti = 0.0 -md.smb.accugrad = 0.0 +md.smb.accugrad = np.array([[0., 0.], [md.timestepping.start_time, md.timestepping.final_time]]) #md.smb.runoffref = 9. * ddf * np.ones(np.shape(duration)) #constant input for testing md.smb.runoffref = 0.9 * duration * ddf md.smb.runoffref = np.vstack((md.smb.runoffref, duration)) md.smb.runoffalti = 0.0 -md.smb.runoffgrad = -6.5e-3 * ddf #lapse rate *ddf*day per year +md.smb.runoffgrad = np.array([[-6.5e-3 * ddf, -6.5e-3 * ddf], [md.timestepping.start_time, md.timestepping.final_time]]) #lapse rate *ddf*day per year md.basalforcings.groundedice_melting_rate = np.zeros((md.mesh.numberofvertices)) md.basalforcings.floatingice_melting_rate = np.zeros((md.mesh.numberofvertices)) Index: ../trunk-jpl/src/m/classes/SMBgradientscomponents.m =================================================================== --- ../trunk-jpl/src/m/classes/SMBgradientscomponents.m (revision 25208) +++ ../trunk-jpl/src/m/classes/SMBgradientscomponents.m (revision 25209) @@ -48,10 +48,10 @@ if ismember('MasstransportAnalysis',analyses), md = checkfield(md,'fieldname','smb.accuref','singletimeseries',1,'NaN',1,'Inf',1); md = checkfield(md,'fieldname','smb.accualti','numel',1,'NaN',1,'Inf',1); - md = checkfield(md,'fieldname','smb.accugrad','numel',1,'NaN',1,'Inf',1); + md = checkfield(md,'fieldname','smb.accugrad','singletimeseries',1,'NaN',1,'Inf',1); md = checkfield(md,'fieldname','smb.runoffref','singletimeseries',1,'NaN',1,'Inf',1); md = checkfield(md,'fieldname','smb.runoffalti','numel',1,'NaN',1,'Inf',1); - md = checkfield(md,'fieldname','smb.runoffgrad','numel',1,'NaN',1,'Inf',1); + md = checkfield(md,'fieldname','smb.runoffgrad','singletimeseries',1,'NaN',1,'Inf',1); end md = checkfield(md,'fieldname','smb.steps_per_step','>=',1,'numel',[1]); md = checkfield(md,'fieldname','smb.averaging','numel',[1],'values',[0 1 2]); @@ -80,11 +80,10 @@ WriteData(fid,prefix,'name','md.smb.model','data',11,'format','Integer'); WriteData(fid,prefix,'object',self,'class','smb','fieldname','accuref','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts,'scale',1./md.constants.yts); WriteData(fid,prefix,'object',self,'class','smb','fieldname','accualti','format','Double'); - WriteData(fid,prefix,'object',self,'class','smb','fieldname','accugrad','format','Double','scale',1./md.constants.yts); + WriteData(fid,prefix,'object',self,'class','smb','fieldname','accugrad','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts,'scale',1./md.constants.yts); WriteData(fid,prefix,'object',self,'class','smb','fieldname','runoffref','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts,'scale',1./md.constants.yts); WriteData(fid,prefix,'object',self,'class','smb','fieldname','runoffalti','format','Double'); - WriteData(fid,prefix,'object',self,'class','smb','fieldname','runoffgrad', ... - 'format','Double','scale',1./md.constants.yts); + WriteData(fid,prefix,'object',self,'class','smb','fieldname','runoffgrad','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts,'scale',1./md.constants.yts); WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer'); WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer'); Index: ../trunk-jpl/src/m/classes/SMBgradientscomponents.py =================================================================== --- ../trunk-jpl/src/m/classes/SMBgradientscomponents.py (revision 25208) +++ ../trunk-jpl/src/m/classes/SMBgradientscomponents.py (revision 25209) @@ -63,10 +63,10 @@ if 'MasstransportAnalysis' in analyses: md = checkfield(md, 'fieldname', 'smb.accuref', 'singletimeseries', 1, 'NaN', 1, 'Inf', 1) md = checkfield(md, 'fieldname', 'smb.accualti', 'numel', [1], 'NaN', 1, 'Inf', 1) - md = checkfield(md, 'fieldname', 'smb.accugrad', 'numel', [1], 'NaN', 1, 'Inf', 1) + md = checkfield(md, 'fieldname', 'smb.accugrad', 'singletimeseries', 1, 'NaN', 1, 'Inf', 1) md = checkfield(md, 'fieldname', 'smb.runoffref', 'singletimeseries', 1, 'NaN', 1, 'Inf', 1) md = checkfield(md, 'fieldname', 'smb.runoffalti', 'numel', [1], 'NaN', 1, 'Inf', 1) - md = checkfield(md, 'fieldname', 'smb.runoffgrad', 'numel', [1], 'NaN', 1, 'Inf', 1) + md = checkfield(md, 'fieldname', 'smb.runoffgrad', 'singletimeseries', 1, 'NaN', 1, 'Inf', 1) md = checkfield(md, 'fieldname', 'smb.steps_per_step', '>=', 1, 'numel', [1]) md = checkfield(md, 'fieldname', 'smb.averaging', 'numel', [1], 'values', [0, 1, 2]) @@ -79,10 +79,10 @@ WriteData(fid, prefix, 'name', 'md.smb.model', 'data', 11, 'format', 'Integer') WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'accuref', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', yts, 'scale', 1. / yts) WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'accualti', 'format', 'Double') - WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'accugrad', 'format', 'Double', 'scale', 1. / md.constants.yts) + WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'accugrad', 'format', 'DoubleMat', 'scale', 1. / yts, 'scale', 1. / yts) WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'runoffref', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', yts, 'scale', 1. / yts) WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'runoffalti', 'format', 'Double') - WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'runoffgrad', 'format', 'Double', 'scale', 1. / md.constants.yts) + WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'runoffgrad', 'format', 'DoubleMat', 'scale', 1. / yts, 'scale', 1. / yts) WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer') WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer') Index: ../trunk-jpl/src/c/analyses/SmbAnalysis.cpp =================================================================== --- ../trunk-jpl/src/c/analyses/SmbAnalysis.cpp (revision 25208) +++ ../trunk-jpl/src/c/analyses/SmbAnalysis.cpp (revision 25209) @@ -376,17 +376,21 @@ break; case SMBgradientscomponentsEnum: parameters->AddObject(iomodel->CopyConstantObject("md.smb.accualti",SmbAccualtiEnum)); - parameters->AddObject(iomodel->CopyConstantObject("md.smb.accugrad",SmbAccugradEnum)); parameters->AddObject(iomodel->CopyConstantObject("md.smb.runoffalti",SmbRunoffaltiEnum)); - parameters->AddObject(iomodel->CopyConstantObject("md.smb.runoffgrad",SmbRunoffgradEnum)); - iomodel->FetchData(&temp,&N,&M,"md.smb.accuref"); _assert_(N==2); - parameters->AddObject(new TransientParam(SmbAccurefEnum,&temp[0],&temp[M],interp,M)); - iomodel->DeleteData(temp,"md.smb.accuref"); + iomodel->FetchData(&temp,&N,&M,"md.smb.accugrad"); _assert_(N==2); + parameters->AddObject(new TransientParam(SmbAccugradEnum,&temp[0],&temp[M],interp,M)); + iomodel->DeleteData(temp,"md.smb.accugrad"); + iomodel->FetchData(&temp,&N,&M,"md.smb.runoffgrad"); _assert_(N==2); + parameters->AddObject(new TransientParam(SmbRunoffgradEnum,&temp[0],&temp[M],interp,M)); + iomodel->DeleteData(temp,"md.smb.runoffgrad"); - iomodel->FetchData(&temp,&N,&M,"md.smb.runoffref"); _assert_(N==2); - parameters->AddObject(new TransientParam(SmbRunoffrefEnum,&temp[0],&temp[M],interp,M)); - iomodel->DeleteData(temp,"md.smb.runoffref"); + iomodel->FetchData(&temp,&N,&M,"md.smb.accuref"); _assert_(N==2); + parameters->AddObject(new TransientParam(SmbAccurefEnum,&temp[0],&temp[M],interp,M)); + iomodel->DeleteData(temp,"md.smb.accuref"); + iomodel->FetchData(&temp,&N,&M,"md.smb.runoffref"); _assert_(N==2); + parameters->AddObject(new TransientParam(SmbRunoffrefEnum,&temp[0],&temp[M],interp,M)); + iomodel->DeleteData(temp,"md.smb.runoffref"); break; case SMBsemicEnum: /*Nothing to add to parameters*/ Index: ../trunk-jpl/src/c/classes/Elements/Element.cpp =================================================================== --- ../trunk-jpl/src/c/classes/Elements/Element.cpp (revision 25208) +++ ../trunk-jpl/src/c/classes/Elements/Element.cpp (revision 25209) @@ -679,11 +679,11 @@ /*Recover parameters*/ parameters->FindParam(&time,TimeEnum); parameters->FindParam(&accualti,SmbAccualtiEnum); - parameters->FindParam(&accugrad,SmbAccugradEnum); parameters->FindParam(&runoffalti,SmbRunoffaltiEnum); - parameters->FindParam(&runoffgrad,SmbRunoffgradEnum); /*Recover reference values at current time*/ + parameters->FindParam(&accugrad,SmbAccugradEnum,time); + parameters->FindParam(&runoffgrad,SmbRunoffgradEnum,time); parameters->FindParam(&accuref,SmbAccurefEnum,time); parameters->FindParam(&runoffref,SmbRunoffrefEnum,time);