Index: /issm/trunk-jpl/src/c/analyses/EnumToAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/EnumToAnalysis.cpp	(revision 17158)
+++ /issm/trunk-jpl/src/c/analyses/EnumToAnalysis.cpp	(revision 17159)
@@ -36,5 +36,6 @@
 		case ExtrudeFromTopAnalysisEnum : return new ExtrudeFromTopAnalysis();
 		case ThermalAnalysisEnum : return new ThermalAnalysis();
-	  case LevelsetAnalysisEnum : return new LevelsetAnalysis();
+		case LevelsetAnalysisEnum : return new LevelsetAnalysis();
+		case ExtrapolationAnalysisEnum : return new ExtrapolationAnalysis();
 		#ifdef _HAVE_GIA_
 		case GiaAnalysisEnum : return new GiaAnalysis();
Index: /issm/trunk-jpl/src/c/analyses/ExtrapolationAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/ExtrapolationAnalysis.cpp	(revision 17158)
+++ /issm/trunk-jpl/src/c/analyses/ExtrapolationAnalysis.cpp	(revision 17159)
@@ -11,5 +11,5 @@
 /*}}}*/
 void ExtrapolationAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
-	_error_("not implemented yet");
+	//do nothing for now
 }
 /*}}}*/
@@ -29,5 +29,4 @@
 		}
 	}
-	iomodel->FetchDataToInput(elements,ExtrapolationVariableEnum);//FIXME: is this the correct way?
 }
 /*}}}*/
@@ -38,13 +37,9 @@
 /*}}}*/
 void ExtrapolationAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
-
-	_error_("not implemented yet");
-
+	// do nothing for now
 }
 /*}}}*/
 void ExtrapolationAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
-	
-	_error_("not implemented yet");
-
+// 	do nothing for now
 }/*}}}*/
 
@@ -52,4 +47,6 @@
 void ExtrapolationAnalysis::Core(FemModel* femmodel){/*{{{*/
 
+	/* Intermediaries */
+	bool save_results;
 	/*activate formulation: */
 	femmodel->SetCurrentConfiguration(ExtrapolationAnalysisEnum);
@@ -58,4 +55,14 @@
 	UpdateConstraints(femmodel->elements);
 	solutionsequence_linear(femmodel);
+
+	/*recover parameters: */
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	if(save_results){
+		if(VerboseSolution()) _printf0_("   Warning: Adding extrapolated variable to results\n");
+		
+		int outputs; 
+		femmodel->parameters->FindParam(&outputs, ExtrapolationVariableEnum);
+		femmodel->RequestedOutputsx(&femmodel->results,&outputs,1);
+	}
 
 }/*}}}*/
@@ -248,18 +255,18 @@
 	Node* node = NULL;
 
-	/* Get further parameters */
+	/* Get parameters */
 	element->FindParam(&extvar_enum, ExtrapolationVariableEnum);
 	
 	Input* levelset_input=element->GetInput(MaskIceLevelsetEnum); _assert_(levelset_input);
 	Input* extvar_input=element->GetInput(extvar_enum); _assert_(extvar_input);
-	
-	GaussPenta* gauss=new GaussPenta();
+
+	Gauss* gauss=element->NewGauss();
 	for(int in=0;in<numnodes;in++){
 		gauss->GaussNode(element->GetElementType(),in);
 		node=element->GetNode(in);
 		levelset_input->GetInputValue(&phi,gauss);
-		extvar_input->GetInputValue(&value,gauss);
 		if(phi<=0.){
 			/* if ice, set dirichlet BC */
+			extvar_input->GetInputValue(&value,gauss);
 			node->ApplyConstraint(1,value);
 		}
Index: /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp	(revision 17158)
+++ /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp	(revision 17159)
@@ -60,5 +60,5 @@
 void LevelsetAnalysis::Core(FemModel* femmodel){/*{{{*/
 
-	#if !defined(_DEVELOPEMENT_)
+	#if !defined(_DEVELOPMENT_)
 	_error_("Not implemented yet");
 	#endif
@@ -66,4 +66,10 @@
 	/*parameters: */
 	bool save_results;
+
+	/* extrapolate */
+	Analysis* analysis = new ExtrapolationAnalysis();
+	femmodel->parameters->SetParam(VxEnum,ExtrapolationVariableEnum);
+	analysis->Core(femmodel);
+	delete analysis;
 
 	/*activate formulation: */
Index: /issm/trunk-jpl/src/c/cores/AnalysisConfiguration.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/AnalysisConfiguration.cpp	(revision 17158)
+++ /issm/trunk-jpl/src/c/cores/AnalysisConfiguration.cpp	(revision 17159)
@@ -116,5 +116,5 @@
 
 		case TransientSolutionEnum:
-			numanalyses=13;
+			numanalyses=14;
 			analyses=xNew<int>(numanalyses);
 			analyses[ 0]=StressbalanceAnalysisEnum;
@@ -131,4 +131,5 @@
 			analyses[11]=ExtrudeFromTopAnalysisEnum;
 			analyses[12]=LevelsetAnalysisEnum;
+			analyses[13]=ExtrapolationAnalysisEnum;
 			break;
 
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp	(revision 17158)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp	(revision 17159)
@@ -75,4 +75,5 @@
 		if(solution_enum==SteadystateSolutionEnum && analysis_enum==EnthalpyAnalysisEnum && isenthalpy==false) continue;
 		if(solution_enum==TransientSolutionEnum && analysis_enum==LevelsetAnalysisEnum && islevelset==false) continue;
+		if(solution_enum==TransientSolutionEnum && analysis_enum==ExtrapolationAnalysisEnum && islevelset==false) continue;
 
 
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 17158)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 17159)
@@ -352,4 +352,6 @@
 	MeshdeformationSolutionEnum,
 	MeshdeformationAnalysisEnum,
+	LevelsetAnalysisEnum,
+	ExtrapolationAnalysisEnum,
 	/*}}}*/
 	/*Approximations {{{*/
@@ -674,7 +676,5 @@
 	/*}}}*/
 	/*Levelset related enums (will be moved to appropriate place when finished){{{*/
-	LevelsetAnalysisEnum,
 	TransientIslevelsetEnum,
-	ExtrapolationAnalysisEnum,
 	ExtrapolationVariableEnum,
 	/*}}}*/
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 17158)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 17159)
@@ -353,4 +353,6 @@
 		case MeshdeformationSolutionEnum : return "MeshdeformationSolution";
 		case MeshdeformationAnalysisEnum : return "MeshdeformationAnalysis";
+		case LevelsetAnalysisEnum : return "LevelsetAnalysis";
+		case ExtrapolationAnalysisEnum : return "ExtrapolationAnalysis";
 		case ApproximationEnum : return "Approximation";
 		case NoneApproximationEnum : return "NoneApproximation";
@@ -633,7 +635,5 @@
 		case ArrheniusEnum : return "Arrhenius";
 		case LliboutryDuvalEnum : return "LliboutryDuval";
-		case LevelsetAnalysisEnum : return "LevelsetAnalysis";
 		case TransientIslevelsetEnum : return "TransientIslevelset";
-		case ExtrapolationAnalysisEnum : return "ExtrapolationAnalysis";
 		case ExtrapolationVariableEnum : return "ExtrapolationVariable";
 		case MaximumNumberOfDefinitionsEnum : return "MaximumNumberOfDefinitions";
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 17158)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 17159)
@@ -359,4 +359,6 @@
 	      else if (strcmp(name,"MeshdeformationSolution")==0) return MeshdeformationSolutionEnum;
 	      else if (strcmp(name,"MeshdeformationAnalysis")==0) return MeshdeformationAnalysisEnum;
+	      else if (strcmp(name,"LevelsetAnalysis")==0) return LevelsetAnalysisEnum;
+	      else if (strcmp(name,"ExtrapolationAnalysis")==0) return ExtrapolationAnalysisEnum;
 	      else if (strcmp(name,"Approximation")==0) return ApproximationEnum;
 	      else if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum;
@@ -381,10 +383,10 @@
 	      else if (strcmp(name,"GenericParam")==0) return GenericParamEnum;
 	      else if (strcmp(name,"AdolcParam")==0) return AdolcParamEnum;
-	      else if (strcmp(name,"BoolInput")==0) return BoolInputEnum;
-	      else if (strcmp(name,"BoolParam")==0) return BoolParamEnum;
          else stage=4;
    }
    if(stage==4){
-	      if (strcmp(name,"Contour")==0) return ContourEnum;
+	      if (strcmp(name,"BoolInput")==0) return BoolInputEnum;
+	      else if (strcmp(name,"BoolParam")==0) return BoolParamEnum;
+	      else if (strcmp(name,"Contour")==0) return ContourEnum;
 	      else if (strcmp(name,"ControlInput")==0) return ControlInputEnum;
 	      else if (strcmp(name,"DatasetInput")==0) return DatasetInputEnum;
@@ -504,10 +506,10 @@
 	      else if (strcmp(name,"Enthalpy")==0) return EnthalpyEnum;
 	      else if (strcmp(name,"EnthalpyPicard")==0) return EnthalpyPicardEnum;
-	      else if (strcmp(name,"ThicknessAbsGradient")==0) return ThicknessAbsGradientEnum;
-	      else if (strcmp(name,"ThicknessAlongGradient")==0) return ThicknessAlongGradientEnum;
          else stage=5;
    }
    if(stage==5){
-	      if (strcmp(name,"ThicknessAcrossGradient")==0) return ThicknessAcrossGradientEnum;
+	      if (strcmp(name,"ThicknessAbsGradient")==0) return ThicknessAbsGradientEnum;
+	      else if (strcmp(name,"ThicknessAlongGradient")==0) return ThicknessAlongGradientEnum;
+	      else if (strcmp(name,"ThicknessAcrossGradient")==0) return ThicknessAcrossGradientEnum;
 	      else if (strcmp(name,"IntMatParam")==0) return IntMatParamEnum;
 	      else if (strcmp(name,"RheologyBbarAbsGradient")==0) return RheologyBbarAbsGradientEnum;
@@ -627,10 +629,10 @@
 	      else if (strcmp(name,"Verbose")==0) return VerboseEnum;
 	      else if (strcmp(name,"TriangleInterp")==0) return TriangleInterpEnum;
-	      else if (strcmp(name,"BilinearInterp")==0) return BilinearInterpEnum;
-	      else if (strcmp(name,"NearestInterp")==0) return NearestInterpEnum;
          else stage=6;
    }
    if(stage==6){
-	      if (strcmp(name,"XY")==0) return XYEnum;
+	      if (strcmp(name,"BilinearInterp")==0) return BilinearInterpEnum;
+	      else if (strcmp(name,"NearestInterp")==0) return NearestInterpEnum;
+	      else if (strcmp(name,"XY")==0) return XYEnum;
 	      else if (strcmp(name,"XYZ")==0) return XYZEnum;
 	      else if (strcmp(name,"Dense")==0) return DenseEnum;
@@ -648,7 +650,5 @@
 	      else if (strcmp(name,"Arrhenius")==0) return ArrheniusEnum;
 	      else if (strcmp(name,"LliboutryDuval")==0) return LliboutryDuvalEnum;
-	      else if (strcmp(name,"LevelsetAnalysis")==0) return LevelsetAnalysisEnum;
 	      else if (strcmp(name,"TransientIslevelset")==0) return TransientIslevelsetEnum;
-	      else if (strcmp(name,"ExtrapolationAnalysis")==0) return ExtrapolationAnalysisEnum;
 	      else if (strcmp(name,"ExtrapolationVariable")==0) return ExtrapolationVariableEnum;
 	      else if (strcmp(name,"MaximumNumberOfDefinitions")==0) return MaximumNumberOfDefinitionsEnum;
Index: /issm/trunk-jpl/src/m/enum/EnumDefinitions.py
===================================================================
--- /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 17158)
+++ /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 17159)
@@ -345,4 +345,6 @@
 def MeshdeformationSolutionEnum(): return StringToEnum("MeshdeformationSolution")[0]
 def MeshdeformationAnalysisEnum(): return StringToEnum("MeshdeformationAnalysis")[0]
+def LevelsetAnalysisEnum(): return StringToEnum("LevelsetAnalysis")[0]
+def ExtrapolationAnalysisEnum(): return StringToEnum("ExtrapolationAnalysis")[0]
 def ApproximationEnum(): return StringToEnum("Approximation")[0]
 def NoneApproximationEnum(): return StringToEnum("NoneApproximation")[0]
@@ -625,7 +627,5 @@
 def ArrheniusEnum(): return StringToEnum("Arrhenius")[0]
 def LliboutryDuvalEnum(): return StringToEnum("LliboutryDuval")[0]
-def LevelsetAnalysisEnum(): return StringToEnum("LevelsetAnalysis")[0]
 def TransientIslevelsetEnum(): return StringToEnum("TransientIslevelset")[0]
-def ExtrapolationAnalysisEnum(): return StringToEnum("ExtrapolationAnalysis")[0]
 def ExtrapolationVariableEnum(): return StringToEnum("ExtrapolationVariable")[0]
 def MaximumNumberOfDefinitionsEnum(): return StringToEnum("MaximumNumberOfDefinitions")[0]
