Index: /issm/trunk-jpl/m4/analyses.m4
===================================================================
--- /issm/trunk-jpl/m4/analyses.m4	(revision 21999)
+++ /issm/trunk-jpl/m4/analyses.m4	(revision 22000)
@@ -868,30 +868,4 @@
 
 dnl }}}
-dnl with-Meshdeformation{{{
-
-AC_ARG_WITH([Meshdeformation],
-
-	AS_HELP_STRING([--with-Meshdeformation = YES], [compile with Meshdeformation capabilities (default is yes)]),
-
-	[MESHDEFORMATION=$withval],[MESHDEFORMATION=yes])
-
-AC_MSG_CHECKING(for Meshdeformation capability compilation)
-
-
-HAVE_MESHDEFORMATION=no 
-
-if test "x$MESHDEFORMATION" = "xyes"; then
-
-	HAVE_MESHDEFORMATION=yes
-
-	AC_DEFINE([_HAVE_MESHDEFORMATION_],[1],[with Meshdeformation capability])
-
-fi
-
-AM_CONDITIONAL([MESHDEFORMATION], [test x$HAVE_MESHDEFORMATION = xyes])
-
-AC_MSG_RESULT($HAVE_MESHDEFORMATION)
-
-dnl }}}
 dnl with-Levelset{{{
 
Index: /issm/trunk-jpl/src/c/analyses/EnumToAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/EnumToAnalysis.cpp	(revision 21999)
+++ /issm/trunk-jpl/src/c/analyses/EnumToAnalysis.cpp	(revision 22000)
@@ -110,4 +110,7 @@
 		case EsaAnalysisEnum : return new EsaAnalysis();
 		#endif
+		#ifdef _HAVE_LOVE_
+		case LoveAnalysisEnum : return new LoveAnalysis();
+		#endif
 		#ifdef _HAVE_LEVELSET_
 		case LevelsetAnalysisEnum : return new LevelsetAnalysis();
Index: /issm/trunk-jpl/src/c/classes/Options/GenericOption.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Options/GenericOption.h	(revision 21999)
+++ /issm/trunk-jpl/src/c/classes/Options/GenericOption.h	(revision 22000)
@@ -102,5 +102,6 @@
 };
 
-#if defined(_HAVE_ADOLC_) && !defined(_WRAPPERS_)  //We hook off this specific specialization when not running ADOLC, otherwise we get a redeclaration with the next specialization. 
+#if defined(_HAVE_ADOLC_) && !defined(_WRAPPERS_) 
+/*We hook off this specific specialization when not running ADOLC, otherwise we get a redeclaration with the next specialization*/
 template <> inline void GenericOption<IssmPDouble*>::Get(IssmPDouble** pvalue){ /*{{{*/
 
Index: /issm/trunk-jpl/src/c/classes/Options/Options.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Options/Options.cpp	(revision 21999)
+++ /issm/trunk-jpl/src/c/classes/Options/Options.cpp	(revision 22000)
@@ -79,5 +79,5 @@
 			_printf_("The dynamic_cast from Object* to Option* is failing.\n");
 			_printf_("\n");
-			_printf_("A quick qorkaround consists of using a C-like cast\n");
+			_printf_("A quick workaround consists of using a C-like cast\n");
 			_printf_("\n");
 			_printf_("Open Options.cpp and change the dynamic_cast in Options::GetOption by a C-like cast\n");
@@ -94,21 +94,5 @@
 			}
 			else{
-				/*If the object is a Cell, recursive call to its options*/ 
-				if(option->ObjectEnum()==OptionCellEnum){
-					GenericOption<Options*>* celloption=(GenericOption<Options*>*)option;
-					return celloption->value->GetOption(name);
-				}
-				/*If the object is a Struct loop over its size and recursive call*/
-				else if(option->ObjectEnum()==OptionStructEnum){
-					for(int i=0;i<option->NumEl();i++){
-						GenericOption<Options**>* structoption=(GenericOption<Options**>*)option;
-						_assert_(structoption->value[i]);
-						return structoption->value[i]->GetOption(name);
-					}
-				}
-				/*Else: not supported*/
-				else{
-					_error_("Cannot recover field \"" << name << "\" for an option of type " << EnumToStringx(option->ObjectEnum()));
-				}
+				_error_("Cannot recover field \"" << name << "\" for an option of type " << EnumToStringx(option->ObjectEnum()));
 			}
 		}
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 21999)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 22000)
@@ -953,6 +953,4 @@
 	OptionEnum,
 	GenericOptionEnum,
-	OptionCellEnum,
-	OptionStructEnum,
 	/*}}}*/
 	/*Solutions and Analyses{{{ */
@@ -1007,5 +1005,4 @@
 	LoveSolutionEnum,
 	LoveAnalysisEnum,
-	MeshdeformationAnalysisEnum,
 	LevelsetAnalysisEnum,
 	ExtrapolationAnalysisEnum,
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 21999)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 22000)
@@ -920,6 +920,4 @@
 		case OptionEnum : return "Option";
 		case GenericOptionEnum : return "GenericOption";
-		case OptionCellEnum : return "OptionCell";
-		case OptionStructEnum : return "OptionStruct";
 		case AdjointBalancethicknessAnalysisEnum : return "AdjointBalancethicknessAnalysis";
 		case AdjointBalancethickness2AnalysisEnum : return "AdjointBalancethickness2Analysis";
@@ -972,5 +970,4 @@
 		case LoveSolutionEnum : return "LoveSolution";
 		case LoveAnalysisEnum : return "LoveAnalysis";
-		case MeshdeformationAnalysisEnum : return "MeshdeformationAnalysis";
 		case LevelsetAnalysisEnum : return "LevelsetAnalysis";
 		case ExtrapolationAnalysisEnum : return "ExtrapolationAnalysis";
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 21999)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 22000)
@@ -941,6 +941,4 @@
 	      else if (strcmp(name,"Option")==0) return OptionEnum;
 	      else if (strcmp(name,"GenericOption")==0) return GenericOptionEnum;
-	      else if (strcmp(name,"OptionCell")==0) return OptionCellEnum;
-	      else if (strcmp(name,"OptionStruct")==0) return OptionStructEnum;
 	      else if (strcmp(name,"AdjointBalancethicknessAnalysis")==0) return AdjointBalancethicknessAnalysisEnum;
 	      else if (strcmp(name,"AdjointBalancethickness2Analysis")==0) return AdjointBalancethickness2AnalysisEnum;
@@ -993,16 +991,15 @@
 	      else if (strcmp(name,"LoveSolution")==0) return LoveSolutionEnum;
 	      else if (strcmp(name,"LoveAnalysis")==0) return LoveAnalysisEnum;
-	      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;
+	      else if (strcmp(name,"SIAApproximation")==0) return SIAApproximationEnum;
+	      else if (strcmp(name,"SSAApproximation")==0) return SSAApproximationEnum;
+	      else if (strcmp(name,"SSAHOApproximation")==0) return SSAHOApproximationEnum;
          else stage=9;
    }
    if(stage==9){
-	      if (strcmp(name,"SIAApproximation")==0) return SIAApproximationEnum;
-	      else if (strcmp(name,"SSAApproximation")==0) return SSAApproximationEnum;
-	      else if (strcmp(name,"SSAHOApproximation")==0) return SSAHOApproximationEnum;
-	      else if (strcmp(name,"SSAFSApproximation")==0) return SSAFSApproximationEnum;
+	      if (strcmp(name,"SSAFSApproximation")==0) return SSAFSApproximationEnum;
 	      else if (strcmp(name,"L1L2Approximation")==0) return L1L2ApproximationEnum;
 	      else if (strcmp(name,"HOApproximation")==0) return HOApproximationEnum;
Index: /issm/trunk-jpl/src/wrappers/matlab/io/FetchMatlabData.cpp
===================================================================
--- /issm/trunk-jpl/src/wrappers/matlab/io/FetchMatlabData.cpp	(revision 21999)
+++ /issm/trunk-jpl/src/wrappers/matlab/io/FetchMatlabData.cpp	(revision 22000)
@@ -1093,96 +1093,4 @@
 	return(ochar);
 }/*}}}*/
-GenericOption<Options**>* OptionStructParse( char* name, const mxArray* prhs[]){ /*{{{*/
-
-	int            i;
-	char           namei[161];
-	Option*                   option      = NULL;
-	GenericOption<Options**>  *ostruct    = NULL;
-	const mwSize  *ipt        = NULL;
-	const mxArray *structi;
-	mwIndex        sindex;
-
-	/*check and parse the name  */
-	ostruct=new GenericOption<Options**>();
-	ostruct->name =xNew<char>(strlen(name)+1);
-	memcpy(ostruct->name,name,(strlen(name)+1)*sizeof(char));
-
-	/*check and parse the value  */
-	if (!mxIsClass(prhs[0],"struct")){
-		_error_("Value of option \"" << ostruct->name  << "\" must be class \"struct\", not class \"" << mxGetClassName(prhs[0]) <<"\".");
-	}
-	ostruct->numel=mxGetNumberOfElements(prhs[0]);
-	ostruct->ndims=mxGetNumberOfDimensions(prhs[0]);
-	ipt           =mxGetDimensions(prhs[0]);
-	ostruct->size =xNew<int>(ostruct->ndims);
-	for (i=0; i<ostruct->ndims; i++) ostruct->size[i]=(int)ipt[i];
-	if (ostruct->numel) ostruct->value=xNew<Options*>(ostruct->numel);
-
-	/*loop through and process each element of the struct array  */
-	for (sindex=0; sindex<ostruct->numel; sindex++) {
-		ostruct->value[sindex]=new Options;
-
-		/*loop through and process each field for the element  */
-		for (i=0; i<mxGetNumberOfFields(prhs[0]); i++) {
-			sprintf(namei,"%s.%s",name,mxGetFieldNameByNumber(prhs[0],i));
-			structi=mxGetFieldByNumber(prhs[0],sindex,i);
-
-			option=(Option*)OptionParse(namei,&structi);
-			ostruct->value[sindex]->AddObject((Object*)option);
-			option=NULL;
-		}
-	}
-
-	return(ostruct);
-}/*}}}*/
-GenericOption<Options*>* OptionCellParse( char* name, const mxArray* prhs[]){ /*{{{*/
-
-	int            i;
-	int           *dims;
-	char           namei[161];
-	char           cstr[81];
-	GenericOption<Options*> *ocell      = NULL;
-	Option        *option     = NULL;
-	const mwSize  *ipt        = NULL;
-	const mxArray *celli;
-	mwIndex        cindex;
-
-	/*check and parse the name  */
-	ocell=new GenericOption<Options*>();
-	ocell->name =xNew<char>(strlen(name)+1);
-	memcpy(ocell->name,name,(strlen(name)+1)*sizeof(char));
-
-	/*check and parse the value  */
-	if (!mxIsClass(prhs[0],"cell")){
-		_error_("Value of option \"" << ocell->name  << "\" must be class \"cell\", not class \"" << mxGetClassName(prhs[0]) <<"\".");
-	}
-
-	ocell->numel=mxGetNumberOfElements(prhs[0]);
-	ocell->ndims=mxGetNumberOfDimensions(prhs[0]);
-	ipt         =mxGetDimensions(prhs[0]);
-	ocell->size =xNew<int>(ocell->ndims);
-	for (i=0; i<ocell->ndims; i++) ocell->size[i]=(int)ipt[i];
-	ocell->value=new Options;
-
-	/*loop through and process each element of the cell array  */
-	dims=xNew<int>(ocell->ndims);
-	for (cindex=0; cindex<ocell->numel; cindex++) {
-		ColumnWiseDimsFromIndex(dims,(int)cindex,ocell->size,ocell->ndims);
-		StringFromDims(cstr,dims,ocell->ndims);
-		#ifdef _INTEL_WIN_
-			_snprintf(namei,161,"%s%s",name,cstr);
-		#else
-			snprintf(namei,161,"%s%s",name,cstr);
-		#endif
-		celli=mxGetCell(prhs[0],cindex);
-
-		option=(Option*)OptionParse(namei,&celli);
-		ocell->value->AddObject((Object*)option);
-		option=NULL;
-	}
-	xDelete<int>(dims);
-
-	return(ocell);
-}/*}}}*/
 Option* OptionParse(char* name, const mxArray* prhs[]){ /*{{{*/
 
@@ -1199,15 +1107,6 @@
 	else if(mxIsClass(prhs[0],"char"))
 	 option=(Option*)OptionCharParse(name,prhs);
-	else if(mxIsClass(prhs[0],"struct"))
-	 option=(Option*)OptionStructParse(name,prhs);
-	else if(mxIsClass(prhs[0],"cell"))
-	 option=(Option*)OptionCellParse(name,prhs);
 	else {
-		_printf0_("  Converting value of option \"" << name << "\" from unrecognized class \"" << mxGetClassName(prhs[0]) << "\" to class \"" << "struct" << "\".\n");
-		if (!mexCallMATLAB(1,lhs,1,(mxArray**)prhs,"struct")) {
-			option=(Option*)OptionStructParse(name,(const mxArray**)lhs);
-			mxDestroyArray(lhs[0]);
-		}
-		else _error_("Second argument value of option \""<< name <<"\" is of unrecognized class \""<< mxGetClassName(prhs[0]) <<"\".");
+		_error_("Second argument value of option \""<< name <<"\" is of unrecognized class \""<< mxGetClassName(prhs[0]) <<"\".");
 	}
 
Index: /issm/trunk-jpl/src/wrappers/matlab/io/matlabio.h
===================================================================
--- /issm/trunk-jpl/src/wrappers/matlab/io/matlabio.h	(revision 21999)
+++ /issm/trunk-jpl/src/wrappers/matlab/io/matlabio.h	(revision 22000)
@@ -59,6 +59,4 @@
 GenericOption<bool*>*     OptionLogicalParse( char* name, const mxArray* prhs[]);
 GenericOption<char*>*     OptionCharParse( char* name, const mxArray* prhs[]);
-GenericOption<Options**>* OptionStructParse( char* name, const mxArray* prhs[]);
-GenericOption<Options*>*  OptionCellParse( char* name, const mxArray* prhs[]);
 
 mxArray* mxGetAssignedField(const mxArray* pmxa_array,int number, const char* field);
