Index: /issm/trunk-jpl/src/c/analyses/SealevelriseAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/SealevelriseAnalysis.cpp	(revision 24480)
+++ /issm/trunk-jpl/src/c/analyses/SealevelriseAnalysis.cpp	(revision 24481)
@@ -2,4 +2,5 @@
 #include "../toolkits/toolkits.h"
 #include "../classes/classes.h"
+#include "../classes/Inputs2/TransientInput2.h"
 #include "../shared/shared.h"
 #include "../modules/modules.h"
@@ -58,6 +59,44 @@
 	iomodel->FetchData(&dslmodel,"md.dsl.model");
 	if (dslmodel==1){
+
+		/*deal with global mean steric rate: */
+		IssmDouble* str=NULL; 
+		IssmDouble* times = NULL;
+		int M,N;
+
+		/*fetch str vector:*/
+		iomodel->FetchData(&str,&M,&N,"md.dsl.global_average_thermosteric_sea_level_change"); _assert_(M==2);
+		
+		//recover time vector: 
+		times=xNew<IssmDouble>(N);
+		for(int t=0;t<N;t++) times[t] = str[N+t];
+
+		/*create transient input: */
+		inputs2->SetTransientInput(DslGlobalAverageThermostericSeaLevelChangeEnum,times,N);
+		TransientInput2* transientinput = inputs2->GetTransientInput(DslGlobalAverageThermostericSeaLevelChangeEnum);
+		
+			
+		for(int i=0;i<elements->Size();i++){
+			Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+
+			for(int t=0;t<N;t++){
+				switch(element->ObjectEnum()){
+					case TriaEnum:  transientinput->AddTriaTimeInput( t,1,&element->lid,&str[t],P0Enum); break;
+					case PentaEnum: transientinput->AddPentaTimeInput(t,1,&element->lid,&str[t],P0Enum); break;
+					default: _error_("Not implemented yet");
+				}
+			}
+		}
+
+		/*cleanup:*/
+		xDelete<IssmDouble>(times);
+		iomodel->DeleteData(str,"md.dsl.global_average_thermosteric_sea_level_change");
+
+		/*deal with dynamic sea level fields: */
+
 		iomodel->FetchDataToInput(inputs2,elements,"md.dsl.sea_surface_height_change_above_geoid", DslSeaSurfaceHeightChangeAboveGeoidEnum);
 		iomodel->FetchDataToInput(inputs2,elements,"md.dsl.sea_water_pressure_change_at_sea_floor", DslSeaWaterPressureChangeAtSeaFloor);
+		
+		//TransientInput2* transientinput=inputs2->SetDatasetTransientInput(DslGlobalAverageThermostericSeaLevelChangeEnum,counter, times,N);
 	}
 	else _error_("Dsl model " << dslmodel << " not implemented yet!");
@@ -118,19 +157,8 @@
 	parameters->AddObject(iomodel->CopyConstantObject("md.slr.geodetic",SealevelriseGeodeticEnum));
 
-	/*dsl model: */
-	iomodel->FetchData(&dslmodel,"md.dsl.model");
-	if (dslmodel==1){
-		IssmDouble* temp=NULL; 
-		int M,N;
-		bool interp;
-		iomodel->FindConstant(&interp,"md.timestepping.interp_forcings");
-		iomodel->FetchData(&temp,&N,&M,"md.dsl.global_average_thermosteric_sea_level_change"); _assert_(N==2);
-		parameters->AddObject(new TransientParam(DslGlobalAverageThermostericSeaLevelChangeEnum,&temp[0],&temp[M],interp,M));
-		iomodel->DeleteData(temp,"md.dsl.global_average_thermosteric_sea_level_change");
-	}
-	else _error_("dslmodel " << dslmodel << " not supported yet");
-
+			
+	/*Deal with elasticity {{{*/
 	iomodel->FetchData(&elastic,"md.slr.elastic");
-	if(elastic){
+	if(elastic){ 
 
 		/*love numbers: */
@@ -251,7 +279,6 @@
 		xDelete<IssmDouble>(H_elastic);
 		xDelete<IssmDouble>(H_elastic_local);
-	}
-
-	/*Transitions: */
+	} /*}}}*/
+	/*Transitions:{{{ */
 	iomodel->FetchData(&transitions,&transitions_M,&transitions_N,&ntransitions,"md.slr.transitions");
 	if(transitions){
@@ -265,10 +292,10 @@
 		xDelete<int>(transitions_M);
 		xDelete<int>(transitions_N);
-	}
-
-	/*Requested outputs*/
+	} /*}}}*/
+	/*Requested outputs {{{*/
 	iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.slr.requested_outputs");
 	if(numoutputs)parameters->AddObject(new StringArrayParam(SealevelriseRequestedOutputsEnum,requestedoutputs,numoutputs));
 	iomodel->DeleteData(&requestedoutputs,numoutputs,"md.slr.requested_outputs");
+	/*}}}*/
 
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Elements/Element.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 24480)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 24481)
@@ -372,6 +372,4 @@
 		#endif
 		#ifdef _HAVE_SEALEVELRISE_
-		virtual void UpdateStericRate(int dslmodel)=0;
-		virtual void UpdateDynamicRate(int dslmodel)=0;
 		virtual IssmDouble    GetArea3D(void)=0;
 		virtual IssmDouble    GetAreaSpherical(void)=0;
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 24480)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 24481)
@@ -210,6 +210,4 @@
 		#endif
 		#ifdef _HAVE_SEALEVELRISE_
-		void UpdateDynamicRate(int dslmodel){_error_("not implemented yet!");};
-		void UpdateStericRate(int dslmodel){_error_("not implemented yet!");};
 		IssmDouble    OceanArea(void){_error_("not implemented yet!");};
 		IssmDouble    OceanAverage(IssmDouble* Sg){_error_("not implemented yet!");};
Index: /issm/trunk-jpl/src/c/classes/Elements/Seg.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Seg.h	(revision 24480)
+++ /issm/trunk-jpl/src/c/classes/Elements/Seg.h	(revision 24481)
@@ -171,6 +171,4 @@
 #endif
 #ifdef _HAVE_SEALEVELRISE_
-		void UpdateDynamicRate(int dslmodel){_error_("not implemented yet!");};
-		void UpdateStericRate(int dslmodel){_error_("not implemented yet!");};
 		void    SealevelriseMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old,IssmDouble eartharea){_error_("not implemented yet!");};
 		void    SealevelriseEustatic(Vector<IssmDouble>* pSgi,IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea){_error_("not implemented yet!");};
Index: /issm/trunk-jpl/src/c/classes/Elements/Tetra.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tetra.h	(revision 24480)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tetra.h	(revision 24481)
@@ -177,6 +177,4 @@
 #endif
 #ifdef _HAVE_SEALEVELRISE_
-		void UpdateDynamicRate(int dslmodel){_error_("not implemented yet!");};
-		void UpdateStericRate(int dslmodel){_error_("not implemented yet!");};
 		void    SealevelriseMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old,IssmDouble eartharea){_error_("not implemented yet!");};
 		void    SealevelriseEustatic(Vector<IssmDouble>* pSgi,IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea){_error_("not implemented yet!");};
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 24480)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 24481)
@@ -5436,74 +5436,4 @@
 #endif
 #ifdef _HAVE_SEALEVELRISE_
-void    Tria::UpdateDynamicRate(int dslmodel){ /*{{{*/
-
-	if (dslmodel==1){
-		//do nothing for now
-		IssmDouble dslrate[3]={0,0,0};
-		this->AddInput2(DslDynamicRateEnum,&dslrate[0],P1Enum);
-	}
-	else if (dslmodel==2){
-		/*IssmDouble eof1[3],eof2[3],eof3[3],eof4[3];
-		IssmDouble steric_rate[3];
-		IssmDouble pc1,pc2,pc3,pc4;
-
-		Element::GetInputListOnVertices(&eof1[0],SealevelriseModeleoftrendEof1Enum);
-		Element::GetInputListOnVertices(&eof2[0],SealevelriseModeleoftrendEof2Enum);
-		Element::GetInputListOnVertices(&eof3[0],SealevelriseModeleoftrendEof3Enum);
-		Element::GetInputListOnVertices(&eof4[0],SealevelriseModeleoftrendEof4Enum);
-
-		Element::GetInputValue(&pc1,SealevelriseModeleoftrendPc1Enum);
-		Element::GetInputValue(&pc2,SealevelriseModeleoftrendPc2Enum);
-		Element::GetInputValue(&pc3,SealevelriseModeleoftrendPc3Enum);
-		Element::GetInputValue(&pc4,SealevelriseModeleoftrendPc4Enum);
-
-		for (int i=0;i<4;i++)steric_rate[i]=pc1*eof1[i]+pc2*eof2[i]+pc3*eof3[i]+pc4*eof4[i];
-
-		//upate input: 
-		this->AddInput2(SealevelriseStericRateEnum,&steric_rate[0],P1Enum);
-		*/
-
-	}
-	else{
-		_error_("dslmodel " << dslmodel  << " not supported yet!");
-	}
-}
-/*}}}*/
-void    Tria::UpdateStericRate(int dslmodel){ /*{{{*/
-
-	IssmDouble dslrate = 0;
-	IssmDouble time;
-	if (dslmodel==1){
-		//grab value of GlobalAverageThermostericSeaLevelChange directly: 
-		this->parameters->FindParam(&time,TimeEnum);
-		this->parameters->FindParam(&dslrate,DslGlobalAverageThermostericSeaLevelChangeEnum,time);
-		this->AddInput2(DslStericRateEnum,&dslrate,P0Enum);
-	}
-	else if (dslmodel==2){
-		/*IssmDouble eof1[3],eof2[3],eof3[3],eof4[3];
-		IssmDouble steric_rate[3];
-		IssmDouble pc1,pc2,pc3,pc4;
-
-		Element::GetInputListOnVertices(&eof1[0],SealevelriseModeleoftrendEof1Enum);
-		Element::GetInputListOnVertices(&eof2[0],SealevelriseModeleoftrendEof2Enum);
-		Element::GetInputListOnVertices(&eof3[0],SealevelriseModeleoftrendEof3Enum);
-		Element::GetInputListOnVertices(&eof4[0],SealevelriseModeleoftrendEof4Enum);
-
-		Element::GetInputValue(&pc1,SealevelriseModeleoftrendPc1Enum);
-		Element::GetInputValue(&pc2,SealevelriseModeleoftrendPc2Enum);
-		Element::GetInputValue(&pc3,SealevelriseModeleoftrendPc3Enum);
-		Element::GetInputValue(&pc4,SealevelriseModeleoftrendPc4Enum);
-
-		for (int i=0;i<4;i++)steric_rate[i]=pc1*eof1[i]+pc2*eof2[i]+pc3*eof3[i]+pc4*eof4[i];
-
-		//upate input:
-		this->AddInput2(SealevelriseStericRateEnum,&steric_rate[0],P1Enum);
-		*/
-	}
-	else{
-		_error_("dslmodel " << dslmodel  << " not supported yet!");
-	}
-}
-/*}}}*/
 IssmDouble    Tria::OceanArea(void){ /*{{{*/
 
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 24480)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 24481)
@@ -163,6 +163,4 @@
 		#endif
 		#ifdef _HAVE_SEALEVELRISE_
-		void UpdateDynamicRate(int dslmodel);
-		void UpdateStericRate(int dslmodel);
 		IssmDouble OceanArea(void);
 		IssmDouble OceanAverage(IssmDouble* Sg);
Index: /issm/trunk-jpl/src/c/cores/sealevelrise_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/sealevelrise_core.cpp	(revision 24480)
+++ /issm/trunk-jpl/src/c/cores/sealevelrise_core.cpp	(revision 24481)
@@ -6,4 +6,6 @@
 #include "../toolkits/toolkits.h"
 #include "../classes/classes.h"
+#include "../classes/Inputs2/TriaInput2.h"
+#include "../classes/Inputs2/TransientInput2.h"
 #include "../shared/shared.h"
 #include "../modules/modules.h"
@@ -565,16 +567,21 @@
 void GetDynamicRate(Vector<IssmDouble> ** pdynamic_rate_g, FemModel* femmodel){ /*{{{*/
 
-	int dslmodel=0;
+	int dslmodel=-1;
+	IssmDouble time;
 
 	/*variables:*/
 	Vector<IssmDouble> *dynamic_rate_g  = NULL; 
 
-	/*Update dynamic rates before retrieving them on Vertex SID set:*/
+	/*Update steric rates before retrieving them on Vertex SID set:*/
 	femmodel->parameters->FindParam(&dslmodel,DslModelEnum);
-
-	for(int el=0;el<femmodel->elements->Size();el++){
-		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(el));
-		element->UpdateDynamicRate(dslmodel);
-	}
+	femmodel->parameters->FindParam(&time,TimeEnum);
+	if(dslmodel==1){
+		TransientInput2* transient_input  = femmodel->inputs2->GetTransientInput(DslSeaSurfaceHeightChangeAboveGeoidEnum);
+		TriaInput2* tria_input=transient_input->GetTriaInput(time);
+		Input2* tria_input_copy=tria_input->copy();
+		tria_input_copy->ChangeEnum(DslDynamicRateEnum);
+		femmodel->inputs2->AddInput(tria_input_copy);
+	}
+	else _error_("not implemented yet");
 
 	GetVectorFromInputsx(&dynamic_rate_g,femmodel,DslDynamicRateEnum,VertexSIdEnum);
@@ -585,4 +592,5 @@
 
 	int dslmodel=-1;
+	IssmDouble time;
 
 	/*variables:*/
@@ -591,9 +599,14 @@
 	/*Update steric rates before retrieving them on Vertex SID set:*/
 	femmodel->parameters->FindParam(&dslmodel,DslModelEnum);
-
-	for(int el=0;el<femmodel->elements->Size();el++){
-		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(el));
-		element->UpdateStericRate(dslmodel);
-	}
+	femmodel->parameters->FindParam(&time,TimeEnum);
+	if(dslmodel==1){
+		TransientInput2* transient_input  = femmodel->inputs2->GetTransientInput(DslGlobalAverageThermostericSeaLevelChangeEnum);
+		TriaInput2* tria_input=transient_input->GetTriaInput(time);
+		Input2* tria_input_copy=tria_input->copy();
+		tria_input_copy->ChangeEnum(DslStericRateEnum);
+		femmodel->inputs2->AddInput(tria_input_copy);
+	}
+	else _error_("not implemented yet");
+
 	GetVectorFromInputsx(&steric_rate_g,femmodel,DslStericRateEnum,VertexSIdEnum);
 	*psteric_rate_g=steric_rate_g;
Index: /issm/trunk-jpl/src/c/shared/Enum/Enum.vim
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 24480)
+++ /issm/trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 24481)
@@ -129,5 +129,4 @@
 syn keyword cConstant DomainDimensionEnum
 syn keyword cConstant DomainTypeEnum
-syn keyword cConstant DslGlobalAverageThermostericSeaLevelChangeEnum
 syn keyword cConstant DslModelEnum
 syn keyword cConstant EarthIdEnum
@@ -521,4 +520,5 @@
 syn keyword cConstant DrivingStressXEnum
 syn keyword cConstant DrivingStressYEnum
+syn keyword cConstant DslGlobalAverageThermostericSeaLevelChangeEnum
 syn keyword cConstant DslSeaSurfaceHeightChangeAboveGeoidEnum
 syn keyword cConstant DslStericRateEnum
@@ -1329,5 +1329,4 @@
 syn keyword cType Cfsurfacesquare
 syn keyword cType Channel
-syn keyword cType classes
 syn keyword cType Constraint
 syn keyword cType Constraints
@@ -1336,6 +1335,6 @@
 syn keyword cType ControlInput2
 syn keyword cType Covertree
+syn keyword cType DataSetParam
 syn keyword cType DatasetInput2
-syn keyword cType DataSetParam
 syn keyword cType Definition
 syn keyword cType DependentObject
@@ -1349,6 +1348,6 @@
 syn keyword cType ElementInput2
 syn keyword cType ElementMatrix
+syn keyword cType ElementVector
 syn keyword cType Elements
-syn keyword cType ElementVector
 syn keyword cType ExponentialVariogram
 syn keyword cType ExternalResult
@@ -1357,10 +1356,9 @@
 syn keyword cType Friction
 syn keyword cType Gauss
-syn keyword cType GaussianVariogram
-syn keyword cType gaussobjects
 syn keyword cType GaussPenta
 syn keyword cType GaussSeg
 syn keyword cType GaussTetra
 syn keyword cType GaussTria
+syn keyword cType GaussianVariogram
 syn keyword cType GenericExternalResult
 syn keyword cType GenericOption
@@ -1377,5 +1375,4 @@
 syn keyword cType IssmDirectApplicInterface
 syn keyword cType IssmParallelDirectApplicInterface
-syn keyword cType krigingobjects
 syn keyword cType Load
 syn keyword cType Loads
@@ -1388,5 +1385,4 @@
 syn keyword cType Matice
 syn keyword cType Matlitho
-syn keyword cType matrixobjects
 syn keyword cType MatrixParam
 syn keyword cType Misfit
@@ -1401,6 +1397,6 @@
 syn keyword cType Observations
 syn keyword cType Option
+syn keyword cType OptionUtilities
 syn keyword cType Options
-syn keyword cType OptionUtilities
 syn keyword cType Param
 syn keyword cType Parameters
@@ -1416,10 +1412,10 @@
 syn keyword cType Regionaloutput
 syn keyword cType Results
+syn keyword cType RiftStruct
 syn keyword cType Riftfront
-syn keyword cType RiftStruct
 syn keyword cType Seg
 syn keyword cType SegInput2
+syn keyword cType SegRef
 syn keyword cType Segment
-syn keyword cType SegRef
 syn keyword cType SpcDynamic
 syn keyword cType SpcStatic
@@ -1440,4 +1436,8 @@
 syn keyword cType Vertex
 syn keyword cType Vertices
+syn keyword cType classes
+syn keyword cType gaussobjects
+syn keyword cType krigingobjects
+syn keyword cType matrixobjects
 syn keyword cType AdjointBalancethickness2Analysis
 syn keyword cType AdjointBalancethicknessAnalysis
@@ -1458,6 +1458,6 @@
 syn keyword cType FreeSurfaceBaseAnalysis
 syn keyword cType FreeSurfaceTopAnalysis
+syn keyword cType GLheightadvectionAnalysis
 syn keyword cType GiaIvinsAnalysis
-syn keyword cType GLheightadvectionAnalysis
 syn keyword cType HydrologyDCEfficientAnalysis
 syn keyword cType HydrologyDCInefficientAnalysis
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 24480)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 24481)
@@ -123,5 +123,4 @@
 	DomainDimensionEnum,
 	DomainTypeEnum,
-	DslGlobalAverageThermostericSeaLevelChangeEnum,
 	DslModelEnum,
 	EarthIdEnum,
@@ -517,4 +516,5 @@
 	DrivingStressXEnum,
 	DrivingStressYEnum,
+	DslGlobalAverageThermostericSeaLevelChangeEnum,
 	DslSeaSurfaceHeightChangeAboveGeoidEnum,
 	DslSeaWaterPressureChangeAtSeaFloor,
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 24480)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 24481)
@@ -131,5 +131,4 @@
 		case DomainDimensionEnum : return "DomainDimension";
 		case DomainTypeEnum : return "DomainType";
-		case DslGlobalAverageThermostericSeaLevelChangeEnum : return "DslGlobalAverageThermostericSeaLevelChange";
 		case DslModelEnum : return "DslModel";
 		case EarthIdEnum : return "EarthId";
@@ -523,4 +522,5 @@
 		case DrivingStressXEnum : return "DrivingStressX";
 		case DrivingStressYEnum : return "DrivingStressY";
+		case DslGlobalAverageThermostericSeaLevelChangeEnum : return "DslGlobalAverageThermostericSeaLevelChange";
 		case DslSeaSurfaceHeightChangeAboveGeoidEnum : return "DslSeaSurfaceHeightChangeAboveGeoid";
 		case DslStericRateEnum : return "DslStericRate";
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 24480)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 24481)
@@ -131,5 +131,4 @@
 	      else if (strcmp(name,"DomainDimension")==0) return DomainDimensionEnum;
 	      else if (strcmp(name,"DomainType")==0) return DomainTypeEnum;
-	      else if (strcmp(name,"DslGlobalAverageThermostericSeaLevelChange")==0) return DslGlobalAverageThermostericSeaLevelChangeEnum;
 	      else if (strcmp(name,"DslModel")==0) return DslModelEnum;
 	      else if (strcmp(name,"EarthId")==0) return EarthIdEnum;
@@ -137,9 +136,9 @@
 	      else if (strcmp(name,"EsaHElastic")==0) return EsaHElasticEnum;
 	      else if (strcmp(name,"EsaHemisphere")==0) return EsaHemisphereEnum;
+	      else if (strcmp(name,"EsaRequestedOutputs")==0) return EsaRequestedOutputsEnum;
          else stage=2;
    }
    if(stage==2){
-	      if (strcmp(name,"EsaRequestedOutputs")==0) return EsaRequestedOutputsEnum;
-	      else if (strcmp(name,"EsaUElastic")==0) return EsaUElasticEnum;
+	      if (strcmp(name,"EsaUElastic")==0) return EsaUElasticEnum;
 	      else if (strcmp(name,"ExtrapolationVariable")==0) return ExtrapolationVariableEnum;
 	      else if (strcmp(name,"FemModelComm")==0) return FemModelCommEnum;
@@ -260,9 +259,9 @@
 	      else if (strcmp(name,"MaterialsLithosphereShearModulus")==0) return MaterialsLithosphereShearModulusEnum;
 	      else if (strcmp(name,"MaterialsMantleDensity")==0) return MaterialsMantleDensityEnum;
+	      else if (strcmp(name,"MaterialsMantleShearModulus")==0) return MaterialsMantleShearModulusEnum;
          else stage=3;
    }
    if(stage==3){
-	      if (strcmp(name,"MaterialsMantleShearModulus")==0) return MaterialsMantleShearModulusEnum;
-	      else if (strcmp(name,"MaterialsMeltingpoint")==0) return MaterialsMeltingpointEnum;
+	      if (strcmp(name,"MaterialsMeltingpoint")==0) return MaterialsMeltingpointEnum;
 	      else if (strcmp(name,"MaterialsMixedLayerCapacity")==0) return MaterialsMixedLayerCapacityEnum;
 	      else if (strcmp(name,"MaterialsMuWater")==0) return MaterialsMuWaterEnum;
@@ -383,9 +382,9 @@
 	      else if (strcmp(name,"SmbRunoffref")==0) return SmbRunoffrefEnum;
 	      else if (strcmp(name,"SmbSealev")==0) return SmbSealevEnum;
+	      else if (strcmp(name,"SmbStepsPerStep")==0) return SmbStepsPerStepEnum;
          else stage=4;
    }
    if(stage==4){
-	      if (strcmp(name,"SmbStepsPerStep")==0) return SmbStepsPerStepEnum;
-	      else if (strcmp(name,"SmbSwIdx")==0) return SmbSwIdxEnum;
+	      if (strcmp(name,"SmbSwIdx")==0) return SmbSwIdxEnum;
 	      else if (strcmp(name,"SmbT0dry")==0) return SmbT0dryEnum;
 	      else if (strcmp(name,"SmbT0wet")==0) return SmbT0wetEnum;
@@ -506,9 +505,9 @@
 	      else if (strcmp(name,"CalvingFluxLevelset")==0) return CalvingFluxLevelsetEnum;
 	      else if (strcmp(name,"CalvingMeltingFluxLevelset")==0) return CalvingMeltingFluxLevelsetEnum;
+	      else if (strcmp(name,"Converged")==0) return ConvergedEnum;
          else stage=5;
    }
    if(stage==5){
-	      if (strcmp(name,"Converged")==0) return ConvergedEnum;
-	      else if (strcmp(name,"CrevasseDepth")==0) return CrevasseDepthEnum;
+	      if (strcmp(name,"CrevasseDepth")==0) return CrevasseDepthEnum;
 	      else if (strcmp(name,"DamageD")==0) return DamageDEnum;
 	      else if (strcmp(name,"DamageDOld")==0) return DamageDOldEnum;
@@ -535,4 +534,5 @@
 	      else if (strcmp(name,"DrivingStressX")==0) return DrivingStressXEnum;
 	      else if (strcmp(name,"DrivingStressY")==0) return DrivingStressYEnum;
+	      else if (strcmp(name,"DslGlobalAverageThermostericSeaLevelChange")==0) return DslGlobalAverageThermostericSeaLevelChangeEnum;
 	      else if (strcmp(name,"DslSeaSurfaceHeightChangeAboveGeoid")==0) return DslSeaSurfaceHeightChangeAboveGeoidEnum;
 	      else if (strcmp(name,"DslStericRate")==0) return DslStericRateEnum;
Index: /issm/trunk-jpl/src/m/classes/dsl.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/dsl.m	(revision 24480)
+++ /issm/trunk-jpl/src/m/classes/dsl.m	(revision 24481)
@@ -9,5 +9,5 @@
 		global_average_thermosteric_sea_level_change; %corresponds to zostoga field in CMIP5 archives. Specified as a temporally variable global rate (mm/yr)
 		sea_surface_height_change_above_geoid; %corresponds to zos field in CMIP5 archives. Spatial average is 0. Specified as a spatio-temporally variable rate (mm/yr)
-		sea_water_pressure_change_at_sea_floor; %corresponds to bpo field in CMIP5 archives. Specified as a spatio-temporally variable rate (in Pa/yr)
+		sea_water_pressure_change_at_sea_floor; %corresponds to bpo field in CMIP5 archives. Specified as a spatio-temporally variable rate (in mm/yr equivalent, not in Pa/yr!) for each ensemble
 
 	end
@@ -38,4 +38,5 @@
 			%Early return
 			if ~ismember('SealevelriseAnalysis',analyses), return; end
+			md = checkfield(md,'fieldname','dsl.global_average_thermosteric_sea_level_change','NaN',1,'Inf',1);
 			md = checkfield(md,'fieldname','dsl.sea_surface_height_change_above_geoid','NaN',1,'Inf',1,'timeseries',1);
 			md = checkfield(md,'fieldname','dsl.sea_water_pressure_change_at_sea_floor','NaN',1,'Inf',1,'timeseries',1);
@@ -53,7 +54,7 @@
 
 			WriteData(fid,prefix,'name','md.dsl.model','data',1,'format','Integer');
-			WriteData(fid,prefix,'object',self,'fieldname','global_average_thermosteric_sea_level_change','format','DoubleMat','mattype',1,'timeserieslength',1+1,'yts',md.constants.yts,'scale',1e-3/md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','global_average_thermosteric_sea_level_change','format','DoubleMat','mattype',1,'timeseries',1,'timeserieslength',2,'yts',md.constants.yts,'scale',1e-3/md.constants.yts);
 			WriteData(fid,prefix,'object',self,'fieldname','sea_water_pressure_change_at_sea_floor','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1e-3/md.constants.yts);
-			WriteData(fid,prefix,'object',self,'fieldname','sea_surface_height_change_above_geoid','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			WriteData(fid,prefix,'object',self,'fieldname','sea_surface_height_change_above_geoid','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1e-3/md.constants.yts);
 
 		end % }}}
