Index: /issm/trunk-jpl/src/c/classes/Params/Parameters.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/Parameters.cpp	(revision 24151)
+++ /issm/trunk-jpl/src/c/classes/Params/Parameters.cpp	(revision 24152)
@@ -55,4 +55,13 @@
 }
 /*}}}*/
+int Parameters::EnumToIndex(int enum_in){/*{{{*/
+
+	/*Make sure this parameter is at the right place*/
+	#ifdef _ISSM_DEBUG_
+	if(enum_in<=ParametersSTARTEnum) _error_("Enum "<<EnumToStringx(enum_in)<<" should appear after ParametersSTARTEnum");
+	if(enum_in>=ParametersENDEnum)   _error_("Enum "<<EnumToStringx(enum_in)<<" should appear before ParametersENDEnum");
+	#endif
+	return enum_in - ParametersSTARTEnum -1;
+}/*}}}*/
 
 void Parameters::AddObject(Param* newparam){/*{{{*/
@@ -63,9 +72,5 @@
 
 	/*Get index in array*/
-	#ifdef _ISSM_DEBUG_
-	if(param_enum<=ParametersSTARTEnum) _error_("Cannot add param: Enum "<<EnumToStringx(param_enum)<<" should appear after ParametersSTARTEnum");
-	if(param_enum>=ParametersENDEnum)   _error_("Cannot add param: Enum "<<EnumToStringx(param_enum)<<" should appear before ParametersENDEnum");
-	#endif
-	int index = param_enum - ParametersSTARTEnum -1;
+	int index = EnumToIndex(param_enum);
 
 	/*Delete param if it already exists*/
@@ -238,8 +243,5 @@
 void Parameters::Delete(int param_enum){/*{{{*/
 
-	_assert_(param_enum>ParametersSTARTEnum);
-	_assert_(param_enum<ParametersENDEnum);
-
-	int index = param_enum - ParametersSTARTEnum -1;
+	int index = EnumToIndex(param_enum);
 	if(this->params[index]){
 		delete this->params[index];
@@ -252,8 +254,5 @@
 bool Parameters::Exist(int param_enum){/*{{{*/
 
-	_assert_(param_enum>ParametersSTARTEnum);
-	_assert_(param_enum<ParametersENDEnum);
-
-	int index = param_enum - ParametersSTARTEnum -1;
+	int index = EnumToIndex(param_enum);
 	if(this->params[index]) return true;
 
@@ -263,8 +262,5 @@
 void Parameters::FindParam(bool* pbool,int param_enum){ _assert_(this);/*{{{*/
 
-	_assert_(param_enum>ParametersSTARTEnum);
-	_assert_(param_enum<ParametersENDEnum);
-
-	int index = param_enum - ParametersSTARTEnum -1;
+	int index = EnumToIndex(param_enum);
 	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
 	this->params[index]->GetParameterValue(pbool);
@@ -273,8 +269,5 @@
 void Parameters::FindParam(int* pinteger,int param_enum){ _assert_(this);/*{{{*/
 
-	_assert_(param_enum>ParametersSTARTEnum);
-	_assert_(param_enum<ParametersENDEnum);
-
-	int index = param_enum - ParametersSTARTEnum -1;
+	int index = EnumToIndex(param_enum);
 	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
 	this->params[index]->GetParameterValue(pinteger);
@@ -282,8 +275,5 @@
 /*}}}*/
 void Parameters::FindParam(IssmDouble* pscalar,int param_enum){ _assert_(this);/*{{{*/
-	_assert_(param_enum>ParametersSTARTEnum);
-	_assert_(param_enum<ParametersENDEnum);
-
-	int index = param_enum - ParametersSTARTEnum -1;
+	int index = EnumToIndex(param_enum);
 	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
 	this->params[index]->GetParameterValue(pscalar);
@@ -292,8 +282,5 @@
 void Parameters::FindParam(IssmDouble* pscalar, int param_enum,IssmDouble time){ _assert_(this);/*{{{*/
 
-	_assert_(param_enum>ParametersSTARTEnum);
-	_assert_(param_enum<ParametersENDEnum);
-
-	int index = param_enum - ParametersSTARTEnum -1;
+	int index = EnumToIndex(param_enum);
 	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
 	this->params[index]->GetParameterValue(pscalar,time);
@@ -302,8 +289,5 @@
 void Parameters::FindParam(IssmDouble* pscalar,int row,IssmDouble time, int param_enum){ _assert_(this);/*{{{*/
 
-	_assert_(param_enum>ParametersSTARTEnum);
-	_assert_(param_enum<ParametersENDEnum);
-
-	int index = param_enum - ParametersSTARTEnum -1;
+	int index = EnumToIndex(param_enum);
 	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
 	this->params[index]->GetParameterValue(pscalar,row,time);
@@ -312,8 +296,5 @@
 void Parameters::FindParam(char** pstring,int param_enum){ _assert_(this);/*{{{*/
 
-	_assert_(param_enum>ParametersSTARTEnum);
-	_assert_(param_enum<ParametersENDEnum);
-
-	int index = param_enum - ParametersSTARTEnum -1;
+	int index = EnumToIndex(param_enum);
 	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
 	this->params[index]->GetParameterValue(pstring);
@@ -323,8 +304,5 @@
 void Parameters::FindParam(char*** pstringarray,int* pM,int param_enum){ _assert_(this);/*{{{*/
 
-	_assert_(param_enum>ParametersSTARTEnum);
-	_assert_(param_enum<ParametersENDEnum);
-
-	int index = param_enum - ParametersSTARTEnum -1;
+	int index = EnumToIndex(param_enum);
 	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
 	this->params[index]->GetParameterValue(pstringarray,pM);
@@ -333,8 +311,5 @@
 void Parameters::FindParam(int** pintarray,int* pM, int param_enum){ _assert_(this);/*{{{*/
 
-	_assert_(param_enum>ParametersSTARTEnum);
-	_assert_(param_enum<ParametersENDEnum);
-
-	int index = param_enum - ParametersSTARTEnum -1;
+	int index = EnumToIndex(param_enum);
 	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
 	this->params[index]->GetParameterValue(pintarray,pM);
@@ -344,8 +319,5 @@
 void Parameters::FindParam(int** pintarray,int* pM,int *pN,int param_enum){ _assert_(this);/*{{{*/
 
-	_assert_(param_enum>ParametersSTARTEnum);
-	_assert_(param_enum<ParametersENDEnum);
-
-	int index = param_enum - ParametersSTARTEnum -1;
+	int index = EnumToIndex(param_enum);
 	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
 	this->params[index]->GetParameterValue(pintarray,pM,pN);
@@ -355,8 +327,5 @@
 void Parameters::FindParam(IssmDouble** pIssmDoublearray,int* pM, int param_enum){ _assert_(this);/*{{{*/
 
-	_assert_(param_enum>ParametersSTARTEnum);
-	_assert_(param_enum<ParametersENDEnum);
-
-	int index = param_enum - ParametersSTARTEnum -1;
+	int index = EnumToIndex(param_enum);
 
 	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
@@ -367,8 +336,5 @@
 void Parameters::FindParam(IssmDouble** pIssmDoublearray,int* pM, int* pN,int param_enum){ _assert_(this);/*{{{*/
 
-	_assert_(param_enum>ParametersSTARTEnum);
-	_assert_(param_enum<ParametersENDEnum);
-
-	int index = param_enum - ParametersSTARTEnum -1;
+	int index = EnumToIndex(param_enum);
 	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
 	this->params[index]->GetParameterValue(pIssmDoublearray,pM,pN);
@@ -377,8 +343,5 @@
 void Parameters::FindParam(IssmDouble*** parray,int* pM,int** pmdims_array,int** pndims_array,int param_enum){ _assert_(this);/*{{{*/
 
-	_assert_(param_enum>ParametersSTARTEnum);
-	_assert_(param_enum<ParametersENDEnum);
-
-	int index = param_enum - ParametersSTARTEnum -1;
+	int index = EnumToIndex(param_enum);
 	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
 	this->params[index]->GetParameterValue(parray,pM,pmdims_array,pndims_array);
@@ -387,8 +350,5 @@
 void Parameters::FindParam(Vector<IssmDouble>** pvec,int param_enum){ _assert_(this);/*{{{*/
 
-	_assert_(param_enum>ParametersSTARTEnum);
-	_assert_(param_enum<ParametersENDEnum);
-
-	int index = param_enum - ParametersSTARTEnum -1;
+	int index = EnumToIndex(param_enum);
 	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
 	this->params[index]->GetParameterValue(pvec);
@@ -397,8 +357,5 @@
 void Parameters::FindParam(Matrix<IssmDouble>** pmat,int param_enum){ _assert_(this);/*{{{*/
 
-	_assert_(param_enum>ParametersSTARTEnum);
-	_assert_(param_enum<ParametersENDEnum);
-
-	int index = param_enum - ParametersSTARTEnum -1;
+	int index = EnumToIndex(param_enum);
 	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
 	this->params[index]->GetParameterValue(pmat);
@@ -407,8 +364,5 @@
 void Parameters::FindParam(FILE** pfid,int param_enum){ _assert_(this);/*{{{*/
 
-	_assert_(param_enum>ParametersSTARTEnum);
-	_assert_(param_enum<ParametersENDEnum);
-
-	int index = param_enum - ParametersSTARTEnum -1;
+	int index = EnumToIndex(param_enum);
 	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
 	this->params[index]->GetParameterValue(pfid);
@@ -418,8 +372,5 @@
 	_assert_(this);
 
-	_assert_(param_enum>ParametersSTARTEnum);
-	_assert_(param_enum<ParametersENDEnum);
-
-	int index = param_enum - ParametersSTARTEnum -1;
+	int index = EnumToIndex(param_enum);
 	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
 	this->params[index]->GetParameterValue(pdataset);
@@ -427,10 +378,8 @@
 /*}}}*/
 void Parameters::FindParamAndMakePassive(IssmPDouble* pscalar,int param_enum){ _assert_(this);/*{{{*/
-	_assert_(param_enum>ParametersSTARTEnum);
-	_assert_(param_enum<ParametersENDEnum);
 
 	/*Get "active" parameter*/
 	IssmDouble intermediary;
-	int index = param_enum - ParametersSTARTEnum -1;
+	int index = EnumToIndex(param_enum);
 	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
 	this->params[index]->GetParameterValue(&intermediary);
@@ -442,8 +391,5 @@
 void Parameters::FindParamAndMakePassive(IssmPDouble** pvec,int* pM, int param_enum){ _assert_(this);/*{{{*/
 
-	_assert_(param_enum>ParametersSTARTEnum);
-	_assert_(param_enum<ParametersENDEnum);
-
-	int index = param_enum - ParametersSTARTEnum -1;
+	int index = EnumToIndex(param_enum);
 
 	/*Output*/
@@ -465,8 +411,5 @@
 	_assert_(this);
 
-	_assert_(dataset_type>ParametersSTARTEnum);
-	_assert_(dataset_type<ParametersENDEnum);
-
-	int index = dataset_type - ParametersSTARTEnum -1;
+	int index = EnumToIndex(dataset_type);
 	if(!this->params[index]) _error_("Parameter " << EnumToStringx(dataset_type) <<" not set");
 	if(this->params[index]->ObjectEnum()!=DataSetParamEnum) _error_("Parameter " << EnumToStringx(dataset_type) <<" is not a DataSetParam!");
@@ -486,13 +429,6 @@
 /*}}}*/
 IssmDouble Parameters::FindParam(int param_enum){ _assert_(this);/*{{{*/
-	#ifdef _ISSM_DEBUG_
-	if(param_enum<ParametersSTARTEnum || param_enum>ParametersENDEnum){
-		_error_(EnumToStringx(param_enum) <<" is not with the parameter Enums");
-	}
-	#endif
-	_assert_(param_enum>ParametersSTARTEnum);
-	_assert_(param_enum<ParametersENDEnum);
-
-	int index = param_enum - ParametersSTARTEnum -1;
+
+	int index = EnumToIndex(param_enum);
 	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
 
@@ -653,11 +589,5 @@
 Param* Parameters::FindParamObject(int param_enum){/*{{{*/
 
-	#ifdef _ISSM_DEBUG_
-	if(param_enum<=ParametersSTARTEnum) _error_("Cannot find param: Enum "<<EnumToStringx(param_enum)<<" should appear after ParametersSTARTEnum");
-	if(param_enum>=ParametersENDEnum)   _error_("Cannot find param: Enum "<<EnumToStringx(param_enum)<<" should appear before ParametersENDEnum");
-	#endif
-
-	int index = param_enum - ParametersSTARTEnum -1;
-	return this->params[index];
+	return this->params[EnumToIndex(param_enum)];
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Params/Parameters.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/Parameters.h	(revision 24151)
+++ /issm/trunk-jpl/src/c/classes/Params/Parameters.h	(revision 24152)
@@ -20,4 +20,5 @@
 	private:
 		Param* params[NUMPARAMS];
+		int    EnumToIndex(int enum_in);
 
 	public:
