Index: /issm/trunk-jpl/src/c/classes/Params/Parameters.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/Parameters.cpp	(revision 22424)
+++ /issm/trunk-jpl/src/c/classes/Params/Parameters.cpp	(revision 22425)
@@ -275,5 +275,4 @@
 /*}}}*/
 void Parameters::FindParam(IssmDouble* pscalar,int param_enum){ _assert_(this);/*{{{*/
-
 	_assert_(param_enum>ParametersSTARTEnum);
 	_assert_(param_enum<ParametersENDEnum);
@@ -668,2 +667,20 @@
 }
 /*}}}*/
+
+/*Specific case with ADOL-C, we might need to get double params for m1qn3*/
+#if defined(_HAVE_ADOLC_) && !defined(_WRAPPERS_) 
+void Parameters::FindParamAndMakePassive(double* 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;
+	if(!this->params[index]) _error_("Parameter " << EnumToStringx(param_enum) <<" not set");
+	this->params[index]->GetParameterValue(&intermediary);
+
+	/*cast to "passive"*/
+	*pscalar=reCast<double>(intermediary);
+}
+/*}}}*/
+#endif
Index: /issm/trunk-jpl/src/c/classes/Params/Parameters.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/Parameters.h	(revision 22424)
+++ /issm/trunk-jpl/src/c/classes/Params/Parameters.h	(revision 22425)
@@ -68,4 +68,9 @@
 		Param* FindParamObject(int enum_type);
 
+		/*Specific instantiations for IssmDouble*: */
+		#if defined(_HAVE_ADOLC_) && !defined(_WRAPPERS_) 
+		void  FindParamAndMakePassive(double* pscalar, int enum_type);
+		#endif
+
 };
 
