Index: ../trunk-jpl/src/m/consistency/checkfield.py =================================================================== --- ../trunk-jpl/src/m/consistency/checkfield.py (revision 19284) +++ ../trunk-jpl/src/m/consistency/checkfield.py (revision 19285) @@ -166,5 +166,18 @@ md = md.checkmessage(options.getfieldvalue('message',\ "field '%s' should have md.mesh.numberofvertices or md.mesh.numberofvertices+1 lines" % fieldname)) + #Check single value forcings (size and times) + if options.getfieldvalue('singletimeseries',0): + if numpy.size(field,0)==2: + if not all(field[-1,:]==numpy.sort(field[-1,:])): + md = md.checkmessage(options.getfieldvalue('message',\ + "field '%s' columns should be sorted chronologically" % fieldname)) + if any(field[-1,0:-1]==field[-1,1:]): + md = md.checkmessage(options.getfieldvalue('message',\ + "field '%s' columns must not contain duplicate timesteps" % fieldname)) + else: + md = md.checkmessage(options.getfieldvalue('message',\ + "field '%s' should have 2 lines" % fieldname)) + return md Index: ../trunk-jpl/src/m/consistency/checkfield.m =================================================================== --- ../trunk-jpl/src/m/consistency/checkfield.m (revision 19284) +++ ../trunk-jpl/src/m/consistency/checkfield.m (revision 19285) @@ -203,7 +203,7 @@ md = checkmessage(md,getfieldvalue(options,'message',... ['field ''' fieldname ''' should have only one column as there are md.mesh.numberofvertices lines'])); end - elseif size(field,1)==md.mesh.numberofvertices+1 || size(field,1)==2 + elseif size(field,1)==md.mesh.numberofvertices+1 if any(field(end,:)~=sort(field(end,:))), md = checkmessage(md,getfieldvalue(options,'message',... ['field ''' fieldname ''' columns should be sorted chronologically'])); @@ -217,3 +217,20 @@ ['field ''' fieldname ''' should have md.mesh.numberofvertices or md.mesh.numberofvertices+1 lines'])); end end + +%Check single value forcings (size and times) +if getfieldvalue(options,'singletimeseries',0), + if size(field,1)==2 + if any(field(end,:)~=sort(field(end,:))), + md = checkmessage(md,getfieldvalue(options,'message',... + ['field ''' fieldname ''' columns should be sorted chronologically'])); + end + if any(field(end,1:end-1)==field(end,2:end)), + md = checkmessage(md,getfieldvalue(options,'message',... + ['field ''' fieldname ''' columns must not contain duplicate timesteps'])); + end + else + md = checkmessage(md,getfieldvalue(options,'message',... + ['field ''' fieldname ''' should have 2 lines'])); + end +end Index: ../trunk-jpl/src/m/classes/SMBd18opdd.py =================================================================== --- ../trunk-jpl/src/m/classes/SMBd18opdd.py (revision 19284) +++ ../trunk-jpl/src/m/classes/SMBd18opdd.py (revision 19285) @@ -88,7 +88,7 @@ if self.isd18opd: md = checkfield(md,'fieldname','surfaceforcings.temperatures_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1) md = checkfield(md,'fieldname','surfaceforcings.precipitations_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1) - md = checkfield(md,'fieldname','surfaceforcings.delta18o','NaN',1,'size',[2,numpy.nan],'timeseries',1) + md = checkfield(md,'fieldname','surfaceforcings.delta18o','NaN',1,'size',[2,numpy.nan],'singletimeseries',1) md = checkfield(md,'fieldname','surfaceforcings.dpermil','>=',0,'numel',[1]) return md Index: ../trunk-jpl/src/m/classes/SMBd18opdd.m =================================================================== --- ../trunk-jpl/src/m/classes/SMBd18opdd.m (revision 19284) +++ ../trunk-jpl/src/m/classes/SMBd18opdd.m (revision 19285) @@ -65,7 +65,7 @@ if(self.isd18opd==1) md = checkfield(md,'fieldname','surfaceforcings.temperatures_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1,'timeseries',1); md = checkfield(md,'fieldname','surfaceforcings.precipitations_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1,'timeseries',1); - md = checkfield(md,'fieldname','surfaceforcings.delta18o','NaN',1,'size',[2,NaN],'timeseries',1); + md = checkfield(md,'fieldname','surfaceforcings.delta18o','NaN',1,'size',[2,NaN],'singletimeseries',1); md = checkfield(md,'fieldname','surfaceforcings.dpermil','>=',0,'numel',1); end end Index: ../trunk-jpl/src/m/classes/SMBpdd.py =================================================================== --- ../trunk-jpl/src/m/classes/SMBpdd.py (revision 19284) +++ ../trunk-jpl/src/m/classes/SMBpdd.py (revision 19285) @@ -117,22 +117,22 @@ md = checkfield(md,'fieldname','surfaceforcings.monthlytemperatures','NaN',1,'timeseries',1) md = checkfield(md,'fieldname','surfaceforcings.precipitation','NaN',1,'timeseries',1) elif self.isdelta18o: - md = checkfield(md,'fieldname','surfaceforcings.delta18o','NaN',1,'size',[2,numpy.nan],'timeseries',1) - md = checkfield(md,'fieldname','surfaceforcings.delta18o_surface','NaN',1,'size',[2,numpy.nan],'timeseries',1) + md = checkfield(md,'fieldname','surfaceforcings.delta18o','NaN',1,'size',[2,numpy.nan],'singletimeseries',1) + md = checkfield(md,'fieldname','surfaceforcings.delta18o_surface','NaN',1,'size',[2,numpy.nan],'singletimeseries',1) md = checkfield(md,'fieldname','surfaceforcings.temperatures_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1) md = checkfield(md,'fieldname','surfaceforcings.temperatures_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1) md = checkfield(md,'fieldname','surfaceforcings.precipitations_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1) md = checkfield(md,'fieldname','surfaceforcings.precipitations_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1) - md = checkfield(md,'fieldname','surfaceforcings.Tdiff','NaN',1,'size',[2,numpy.nan],'timeseries',1) - md = checkfield(md,'fieldname','surfaceforcings.sealev','NaN',1,'size',[2,numpy.nan],'timeseries',1) + md = checkfield(md,'fieldname','surfaceforcings.Tdiff','NaN',1,'size',[2,numpy.nan],'singletimeseries',1) + md = checkfield(md,'fieldname','surfaceforcings.sealev','NaN',1,'size',[2,numpy.nan],'singletimeseries',1) elif self.ismungsm: md = checkfield(md,'fieldname','surfaceforcings.temperatures_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1) md = checkfield(md,'fieldname','surfaceforcings.temperatures_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1) md = checkfield(md,'fieldname','surfaceforcings.precipitations_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1) md = checkfield(md,'fieldname','surfaceforcings.precipitations_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1) - md = checkfield(md,'fieldname','surfaceforcings.Pfac','NaN',1,'size',[2,numpy.nan],'timeseries',1) - md = checkfield(md,'fieldname','surfaceforcings.Tdiff','NaN',1,'size',[2,numpy.nan],'timeseries',1) - md = checkfield(md,'fieldname','surfaceforcings.sealev','NaN',1,'size',[2,numpy.nan],'timeseries',1) + md = checkfield(md,'fieldname','surfaceforcings.Pfac','NaN',1,'size',[2,numpy.nan],'singletimeseries',1) + md = checkfield(md,'fieldname','surfaceforcings.Tdiff','NaN',1,'size',[2,numpy.nan],'singletimeseries',1) + md = checkfield(md,'fieldname','surfaceforcings.sealev','NaN',1,'size',[2,numpy.nan],'singletimeseries',1) return md # }}} Index: ../trunk-jpl/src/m/classes/SMBpdd.m =================================================================== --- ../trunk-jpl/src/m/classes/SMBpdd.m (revision 19284) +++ ../trunk-jpl/src/m/classes/SMBpdd.m (revision 19285) @@ -77,22 +77,22 @@ md = checkfield(md,'fieldname','surfaceforcings.monthlytemperatures','timeseries',1,'NaN',1); md = checkfield(md,'fieldname','surfaceforcings.precipitation','timeseries',1,'NaN',1); elseif(self.isdelta18o==1) - md = checkfield(md,'fieldname','surfaceforcings.delta18o','NaN',1,'size',[2,NaN],'timeseries',1); - md = checkfield(md,'fieldname','surfaceforcings.delta18o_surface','NaN',1,'size',[2,NaN],'timeseries',1); + md = checkfield(md,'fieldname','surfaceforcings.delta18o','NaN',1,'size',[2,NaN],'singletimeseries',1); + md = checkfield(md,'fieldname','surfaceforcings.delta18o_surface','NaN',1,'size',[2,NaN],'singletimeseries',1); md = checkfield(md,'fieldname','surfaceforcings.temperatures_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1,'timeseries',1); md = checkfield(md,'fieldname','surfaceforcings.temperatures_lgm','size',[md.mesh.numberofvertices+1 12],'NaN',1,'timeseries',1); md = checkfield(md,'fieldname','surfaceforcings.precipitations_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1,'timeseries',1); md = checkfield(md,'fieldname','surfaceforcings.precipitations_lgm','size',[md.mesh.numberofvertices+1 12],'NaN',1,'timeseries',1); - md = checkfield(md,'fieldname','surfaceforcings.Tdiff','NaN',1,'size',[2,NaN],'timeseries',1); - md = checkfield(md,'fieldname','surfaceforcings.sealev','NaN',1,'size',[2,NaN],'timeseries',1); + md = checkfield(md,'fieldname','surfaceforcings.Tdiff','NaN',1,'size',[2,NaN],'singletimeseries',1); + md = checkfield(md,'fieldname','surfaceforcings.sealev','NaN',1,'size',[2,NaN],'singletimeseries',1); elseif(self.ismungsm==1) md = checkfield(md,'fieldname','surfaceforcings.temperatures_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1,'timeseries',1); md = checkfield(md,'fieldname','surfaceforcings.temperatures_lgm','size',[md.mesh.numberofvertices+1 12],'NaN',1,'timeseries',1); md = checkfield(md,'fieldname','surfaceforcings.precipitations_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1,'timeseries',1); md = checkfield(md,'fieldname','surfaceforcings.precipitations_lgm','size',[md.mesh.numberofvertices+1 12],'NaN',1,'timeseries',1); - md = checkfield(md,'fieldname','surfaceforcings.Pfac','NaN',1,'size',[2,NaN],'timeseries',1); - md = checkfield(md,'fieldname','surfaceforcings.Tdiff','NaN',1,'size',[2,NaN],'timeseries',1); - md = checkfield(md,'fieldname','surfaceforcings.sealev','NaN',1,'size',[2,NaN],'timeseries',1); + md = checkfield(md,'fieldname','surfaceforcings.Pfac','NaN',1,'size',[2,NaN],'singletimeseries',1); + md = checkfield(md,'fieldname','surfaceforcings.Tdiff','NaN',1,'size',[2,NaN],'singletimeseries',1); + md = checkfield(md,'fieldname','surfaceforcings.sealev','NaN',1,'size',[2,NaN],'singletimeseries',1); end end end % }}}