Index: /issm/branches/trunk-larour-NatGeoScience2016/src/c/analyses/SealevelriseAnalysis.cpp
===================================================================
--- /issm/branches/trunk-larour-NatGeoScience2016/src/c/analyses/SealevelriseAnalysis.cpp	(revision 22158)
+++ /issm/branches/trunk-larour-NatGeoScience2016/src/c/analyses/SealevelriseAnalysis.cpp	(revision 22159)
@@ -38,6 +38,11 @@
 	iomodel->FetchData(&geodetic,"md.slr.geodetic");
 	if (geodetic){
-		iomodel->FetchDataToInput(elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum);
-		iomodel->FetchDataToInput(elements,"md.mask.land_levelset",MaskLandLevelsetEnum);
+		char* masktype=NULL;
+		iomodel->FetchData(&masktype,"md.mask.type");
+		if (strcmp(masktype,"maskpsl")==0){
+			iomodel->FetchDataToInput(elements,"md.mask.ocean_levelset",MaskOceanLevelsetEnum);
+			iomodel->FetchDataToInput(elements,"md.mask.land_levelset",MaskLandLevelsetEnum);
+		}
+		xDelete<char>(masktype);
 	}
 	iomodel->FetchDataToInput(elements,"md.slr.deltathickness",SealevelriseDeltathicknessEnum);
@@ -46,6 +51,6 @@
 	iomodel->FetchDataToInput(elements,"md.geometry.bed",BedEnum);
 
-	/*Initialize cumdeltalthickness input: unfortunately, we don't have femmodel, so we need to iterate on 
-	 *elements, otherwise we would have used InputUpdateFromConstantx: */
+	/*Initialize cumdeltalthickness and sealevel rise rate input: unfortunately, we don't have femmodel, so we 
+	 * need to iterate on elements, otherwise we would have used InputUpdateFromConstantx: */
 	counter=0;
 	for(int i=0;i<iomodel->numberofelements;i++){
@@ -53,4 +58,6 @@
 			Element* element=(Element*)elements->GetObjectByOffset(counter);
 			element->InputUpdateFromConstant(0.0,SealevelriseCumDeltathicknessEnum);
+			element->InputUpdateFromConstant(0.0,SealevelRateEnum);
+			element->InputUpdateFromConstant(0.0,SealevelUmotionRateEnum);
 			counter++;
 		}
@@ -269,33 +276,5 @@
 }/*}}}*/
 void           SealevelriseAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
-	
-	IssmDouble *deltaS  = NULL;
-	IssmDouble *S  = NULL;
-	int*        sidlist = NULL;
-	int         numvertices;
-	
-	numvertices= element->GetNumberOfVertices();
-	sidlist=xNew<int>(numvertices);
-	
-	element->GetVerticesSidList(sidlist);
-
-	deltaS = xNew<IssmDouble>(numvertices);
-	for(int i=0;i<numvertices;i++){
-		deltaS[i]=solution[sidlist[i]];
-	}
-
-	S = xNew<IssmDouble>(numvertices);
-	element->GetInputListOnVertices(S,SealevelEnum,0);
-
-	/*Add deltaS to S:*/
-	for (int i=0;i<numvertices;i++)S[i]+=deltaS[i];
-
-	/*Add S back into inputs: */
-	element->AddInput(SealevelEnum,S,P1Enum);
-
-	/*Free ressources:*/
-	xDelete<int>(sidlist);
-	xDelete<IssmDouble>(deltaS);
-	xDelete<IssmDouble>(S);
+	_error_("not implemeneted yet!");
 
 }/*}}}*/
Index: /issm/branches/trunk-larour-NatGeoScience2016/src/c/classes/FemModel.cpp
===================================================================
--- /issm/branches/trunk-larour-NatGeoScience2016/src/c/classes/FemModel.cpp	(revision 22158)
+++ /issm/branches/trunk-larour-NatGeoScience2016/src/c/classes/FemModel.cpp	(revision 22159)
@@ -2656,4 +2656,5 @@
 		pEast->Assemble();
 	}
+	if(VerboseConvergence())_printf_("\n");
 
 	/*Free ressources:*/
Index: /issm/branches/trunk-larour-NatGeoScience2016/src/c/cores/sealevelrise_core.cpp
===================================================================
--- /issm/branches/trunk-larour-NatGeoScience2016/src/c/cores/sealevelrise_core.cpp	(revision 22158)
+++ /issm/branches/trunk-larour-NatGeoScience2016/src/c/cores/sealevelrise_core.cpp	(revision 22159)
@@ -141,5 +141,5 @@
 		sealevelrise_core_elastic(&U_radial,&U_north,&U_east,femmodel,Sg);
 		
-		/*transform these values into rates (as we only run this once each frequency turns:*/
+		/*transform these values into rates (as we only run this once each frequency turn:*/
 		Sg_rate=Sg->Duplicate(); Sg->Copy(Sg_rate); Sg_rate->Scale(1/(dt*frequency));
 		U_radial_rate=U_radial->Duplicate(); U_radial->Copy(U_radial_rate); U_radial_rate->Scale(1/(dt*frequency));
Index: /issm/branches/trunk-larour-NatGeoScience2016/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/branches/trunk-larour-NatGeoScience2016/src/c/shared/Enum/EnumDefinitions.h	(revision 22158)
+++ /issm/branches/trunk-larour-NatGeoScience2016/src/c/shared/Enum/EnumDefinitions.h	(revision 22159)
@@ -206,4 +206,5 @@
 	InversionVyObsEnum,
 	InversionVzObsEnum,
+	MaskTypeEnum,
 	MaskIceLevelsetEnum,
 	MaskOceanLevelsetEnum,
Index: /issm/branches/trunk-larour-NatGeoScience2016/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatGeoScience2016/src/c/shared/Enum/EnumToStringx.cpp	(revision 22158)
+++ /issm/branches/trunk-larour-NatGeoScience2016/src/c/shared/Enum/EnumToStringx.cpp	(revision 22159)
@@ -212,4 +212,5 @@
 		case InversionVyObsEnum : return "InversionVyObs";
 		case InversionVzObsEnum : return "InversionVzObs";
+		case MaskTypeEnum : return "MaskType";
 		case MaskIceLevelsetEnum : return "MaskIceLevelset";
 		case MaskOceanLevelsetEnum : return "MaskOceanLevelset";
Index: /issm/branches/trunk-larour-NatGeoScience2016/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/branches/trunk-larour-NatGeoScience2016/src/c/shared/Enum/StringToEnumx.cpp	(revision 22158)
+++ /issm/branches/trunk-larour-NatGeoScience2016/src/c/shared/Enum/StringToEnumx.cpp	(revision 22159)
@@ -215,4 +215,5 @@
 	      else if (strcmp(name,"InversionVyObs")==0) return InversionVyObsEnum;
 	      else if (strcmp(name,"InversionVzObs")==0) return InversionVzObsEnum;
+	      else if (strcmp(name,"MaskType")==0) return MaskTypeEnum;
 	      else if (strcmp(name,"MaskIceLevelset")==0) return MaskIceLevelsetEnum;
 	      else if (strcmp(name,"MaskOceanLevelset")==0) return MaskOceanLevelsetEnum;
@@ -259,9 +260,9 @@
 	      else if (strcmp(name,"CalvingLevermann")==0) return CalvingLevermannEnum;
 	      else if (strcmp(name,"CalvingDev")==0) return CalvingDevEnum;
-	      else if (strcmp(name,"CalvingMinthickness")==0) return CalvingMinthicknessEnum;
          else stage=3;
    }
    if(stage==3){
-	      if (strcmp(name,"DefaultCalving")==0) return DefaultCalvingEnum;
+	      if (strcmp(name,"CalvingMinthickness")==0) return CalvingMinthicknessEnum;
+	      else if (strcmp(name,"DefaultCalving")==0) return DefaultCalvingEnum;
 	      else if (strcmp(name,"CalvinglevermannCoeff")==0) return CalvinglevermannCoeffEnum;
 	      else if (strcmp(name,"CalvinglevermannMeltingrate")==0) return CalvinglevermannMeltingrateEnum;
@@ -382,9 +383,9 @@
 	      else if (strcmp(name,"SmbNumRequestedOutputs")==0) return SmbNumRequestedOutputsEnum;
 	      else if (strcmp(name,"SmbRequestedOutputs")==0) return SmbRequestedOutputsEnum;
-	      else if (strcmp(name,"SmbIsInitialized")==0) return SmbIsInitializedEnum;
          else stage=4;
    }
    if(stage==4){
-	      if (strcmp(name,"SmbDzini")==0) return SmbDziniEnum;
+	      if (strcmp(name,"SmbIsInitialized")==0) return SmbIsInitializedEnum;
+	      else if (strcmp(name,"SmbDzini")==0) return SmbDziniEnum;
 	      else if (strcmp(name,"SmbDini")==0) return SmbDiniEnum;
 	      else if (strcmp(name,"SmbReini")==0) return SmbReiniEnum;
@@ -505,9 +506,9 @@
 	      else if (strcmp(name,"AndroidFrictionCoefficient")==0) return AndroidFrictionCoefficientEnum;
 	      else if (strcmp(name,"ResetPenalties")==0) return ResetPenaltiesEnum;
-	      else if (strcmp(name,"SurfaceAbsVelMisfit")==0) return SurfaceAbsVelMisfitEnum;
          else stage=5;
    }
    if(stage==5){
-	      if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum;
+	      if (strcmp(name,"SurfaceAbsVelMisfit")==0) return SurfaceAbsVelMisfitEnum;
+	      else if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum;
 	      else if (strcmp(name,"SurfaceAverageVelMisfit")==0) return SurfaceAverageVelMisfitEnum;
 	      else if (strcmp(name,"SurfaceLogVelMisfit")==0) return SurfaceLogVelMisfitEnum;
@@ -628,9 +629,9 @@
 	      else if (strcmp(name,"Outputdefinition26")==0) return Outputdefinition26Enum;
 	      else if (strcmp(name,"Outputdefinition27")==0) return Outputdefinition27Enum;
-	      else if (strcmp(name,"Outputdefinition28")==0) return Outputdefinition28Enum;
          else stage=6;
    }
    if(stage==6){
-	      if (strcmp(name,"Outputdefinition29")==0) return Outputdefinition29Enum;
+	      if (strcmp(name,"Outputdefinition28")==0) return Outputdefinition28Enum;
+	      else if (strcmp(name,"Outputdefinition29")==0) return Outputdefinition29Enum;
 	      else if (strcmp(name,"Outputdefinition30")==0) return Outputdefinition30Enum;
 	      else if (strcmp(name,"Outputdefinition31")==0) return Outputdefinition31Enum;
@@ -751,9 +752,9 @@
 	      else if (strcmp(name,"ToolkitsOptionsStrings")==0) return ToolkitsOptionsStringsEnum;
 	      else if (strcmp(name,"QmuErrName")==0) return QmuErrNameEnum;
-	      else if (strcmp(name,"QmuInName")==0) return QmuInNameEnum;
          else stage=7;
    }
    if(stage==7){
-	      if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum;
+	      if (strcmp(name,"QmuInName")==0) return QmuInNameEnum;
+	      else if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum;
 	      else if (strcmp(name,"Regular")==0) return RegularEnum;
 	      else if (strcmp(name,"Scaled")==0) return ScaledEnum;
@@ -874,9 +875,9 @@
 	      else if (strcmp(name,"Profiler")==0) return ProfilerEnum;
 	      else if (strcmp(name,"MatrixParam")==0) return MatrixParamEnum;
-	      else if (strcmp(name,"Masscon")==0) return MassconEnum;
          else stage=8;
    }
    if(stage==8){
-	      if (strcmp(name,"Massconaxpby")==0) return MassconaxpbyEnum;
+	      if (strcmp(name,"Masscon")==0) return MassconEnum;
+	      else if (strcmp(name,"Massconaxpby")==0) return MassconaxpbyEnum;
 	      else if (strcmp(name,"NodeSId")==0) return NodeSIdEnum;
 	      else if (strcmp(name,"ElementSId")==0) return ElementSIdEnum;
@@ -997,9 +998,9 @@
 	      else if (strcmp(name,"P0Array")==0) return P0ArrayEnum;
 	      else if (strcmp(name,"P1")==0) return P1Enum;
-	      else if (strcmp(name,"P1DG")==0) return P1DGEnum;
          else stage=9;
    }
    if(stage==9){
-	      if (strcmp(name,"P1bubble")==0) return P1bubbleEnum;
+	      if (strcmp(name,"P1DG")==0) return P1DGEnum;
+	      else if (strcmp(name,"P1bubble")==0) return P1bubbleEnum;
 	      else if (strcmp(name,"P1bubblecondensed")==0) return P1bubblecondensedEnum;
 	      else if (strcmp(name,"P2")==0) return P2Enum;
