Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/Autodiff/CreateParametersAutodiff.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/Autodiff/CreateParametersAutodiff.cpp	(revision 16069)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/Autodiff/CreateParametersAutodiff.cpp	(revision 16070)
@@ -113,9 +113,14 @@
 		/*initialize a placeholder to store solver pointers: {{{*/
 		GenericParam<Adolc_edf> *theAdolcEDF_p=new GenericParam<Adolc_edf>(AdolcParamEnum);
+#ifdef _HAVE_GSL_
 		theAdolcEDF_p->GetParameterValue().myEDF_for_solverx_p=reg_ext_fct(EDF_for_solverx);
+#endif
+#ifdef _HAVE_MUMPS_
+		theAdolcEDF_p->GetParameterValue().myEDF_for_solverx_p=reg_ext_fct(mumpsSolveEDF);
+#endif
 		// to save some space:
 		// we know we won't use adolc inside of  the solver:
 		theAdolcEDF_p->GetParameterValue().myEDF_for_solverx_p->nestedAdolc=false;
-		// the solution vector is just allocated and doesn't have a meaningfull prior value
+		// the solution vector is just allocated and doesn't have a meaningful prior value
 		theAdolcEDF_p->GetParameterValue().myEDF_for_solverx_p->dp_y_priorRequired=false;
 		// the solver wrapper makes sure the matrix and the right hand side don't change
Index: /issm/trunk-jpl/src/c/toolkits/issm/IssmMpiDenseMat.h
===================================================================
--- /issm/trunk-jpl/src/c/toolkits/issm/IssmMpiDenseMat.h	(revision 16069)
+++ /issm/trunk-jpl/src/c/toolkits/issm/IssmMpiDenseMat.h	(revision 16070)
@@ -518,5 +518,5 @@
 			/*Let's try and use the MUMPS solver here: */
 			#ifdef _HAVE_MUMPS_
-			MpiDenseMumpsSolve(/*output*/ uf->vector,uf->M,uf->m, /*stiffness matrix:*/ this->matrix,this->M,this->N,this->m, /*right hand side load vector: */ pf->vector,pf->M,pf->m);
+			MpiDenseMumpsSolve(/*output*/ uf->vector,uf->M,uf->m, /*stiffness matrix:*/ this->matrix,this->M,this->N,this->m, /*right hand side load vector: */ pf->vector,pf->M,pf->m,parameters);
 			#else
 			_error_("IssmMpiDenseMat solver requires MUMPS solver");
Index: /issm/trunk-jpl/src/c/toolkits/mumps/MpiDenseMumpsSolve.cpp
===================================================================
--- /issm/trunk-jpl/src/c/toolkits/mumps/MpiDenseMumpsSolve.cpp	(revision 16069)
+++ /issm/trunk-jpl/src/c/toolkits/mumps/MpiDenseMumpsSolve.cpp	(revision 16070)
@@ -15,4 +15,5 @@
 #include "../../shared/io/Comm/IssmComm.h"
 #include "../mpi/issmmpi.h"
+#include "./mumpsincludes.h"
 
 /*Mumps header files: */
@@ -73,5 +74,6 @@
 		int* jcn_loc,
 		IssmPDouble *a_loc,
-		IssmPDouble *rhs) { 
+		IssmPDouble *rhs,
+		Parameters* /*unused here*/) {
 	/*Initialize mumps: {{{*/
 	DMUMPS_STRUC_C theMumpsStruc;
@@ -105,8 +107,9 @@
 		int* jcn_loc,
 		IssmDouble *a_loc,
-		IssmDouble *rhs);
+		IssmDouble *rhs,
+		Parameters* parameters);
 #endif 
 
-void MpiDenseMumpsSolve( /*output: */ IssmDouble* uf, int uf_M, int uf_m, /*matrix input: */ IssmDouble* Kff, int Kff_M, int Kff_N, int Kff_m, /*right hand side vector: */ IssmDouble* pf, int pf_M, int pf_m){ /*{{{*/
+void MpiDenseMumpsSolve( /*output: */ IssmDouble* uf, int uf_M, int uf_m, /*matrix input: */ IssmDouble* Kff, int Kff_M, int Kff_N, int Kff_m, /*right hand side vector: */ IssmDouble* pf, int pf_M, int pf_m, Parameters* parameters){ /*{{{*/
 
 	/*Variables: {{{*/
@@ -192,5 +195,6 @@
 		   jcn_loc,
 		   a_loc,
-		   rhs);
+		   rhs,
+		   parameters);
 
 if (my_rank==0) for (int i=0;i<Kff_M;++i) std::cout << i << " : " << rhs[i] << std::endl;
@@ -240,5 +244,6 @@
 		int* jcn_loc,
 		IssmDouble *a_loc,
-		IssmDouble *rhs) { 
+		IssmDouble *rhs,
+		Parameters* parameters) {
   int packedDimsSparseArrLength=1+1+1+local_nnz+local_nnz;
   int *packedDimsSparseArr=xNew<int>(packedDimsSparseArrLength);
Index: /issm/trunk-jpl/src/c/toolkits/mumps/mumpsincludes.h
===================================================================
--- /issm/trunk-jpl/src/c/toolkits/mumps/mumpsincludes.h	(revision 16069)
+++ /issm/trunk-jpl/src/c/toolkits/mumps/mumpsincludes.h	(revision 16070)
@@ -6,5 +6,24 @@
 #define _MUMPS_INCLUDES_H_
 
-void MpiDenseMumpsSolve(IssmDouble* uf,int uf_M,int uf_n, IssmDouble* Kff,int Kff_M, int Kff_N, int Kff_m, IssmDouble* pf, int pf_M, int pf_m);
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "../../shared/Numerics/types.h"
+/*}}}*/
+
+class Parameters;
+
+void MpiDenseMumpsSolve(IssmDouble* uf,int uf_M,int uf_n, IssmDouble* Kff,int Kff_M, int Kff_N, int Kff_m, IssmDouble* pf, int pf_M, int pf_m, Parameters* parameters);
+
+#if defined(_HAVE_ADOLC_) && !defined(_WRAPPERS_)
+// call back functions:
+ADOLC_ext_fct_iArr mumpsSolveEDF;
+ADOLC_ext_fct_iArr_fos_reverse fos_reverse_mumpsSolveEDF;
+ADOLC_ext_fct_iArr_fov_reverse fov_reverse_mumpsSolveEDF;
+#endif
 
 #endif
