Index: /issm/trunk-jpl/src/c/modules/AutodiffDriversx/AutodiffDriversx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/AutodiffDriversx/AutodiffDriversx.cpp	(revision 13297)
+++ /issm/trunk-jpl/src/c/modules/AutodiffDriversx/AutodiffDriversx.cpp	(revision 13298)
@@ -8,4 +8,6 @@
 #include "../../toolkits/toolkits.h"
 #include "../../EnumDefinitions/EnumDefinitions.h"
+#include "../../shared/Numerics/adolc_edf.h"
+
 
 void AutodiffDriversx(Elements* elements,Nodes* nodes,Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters,Results* results){
@@ -43,7 +45,30 @@
 		}
 
-		/*Call AD driver: */
+		// get the dimension for the solverx arguments
+		int configuration_type;
+		parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+		int solveSize=nodes->NumberOfDofs(configuration_type,FsetEnum);
+                int edf_n=solveSize*(solveSize+1), edf_m=solveSize;
+		// get the EDF pointer:
+		ext_diff_fct *anEDF_for_solverx_p=dynamic_cast<GenericParam<Adolc_edf> * >(parameters->FindParamObject(AdolcParamEnum))->GetParameterValue().myEDF_for_solverx_p;
+		// set the forward method function pointers
+		anEDF_for_solverx_p->fos_forward=EDF_fos_forward_for_solverx;
+                anEDF_for_solverx_p->fov_forward=EDF_fov_forward_for_solverx;
+                // allocate the space for the parameters to invoke the forward methods
+		anEDF_for_solverx_p->dp_x=xNew<double>(edf_n);
+                anEDF_for_solverx_p->dp_X=xNew<double>(edf_n);
+                anEDF_for_solverx_p->dpp_X=xNew<double>(edf_n, num_independents);
+                anEDF_for_solverx_p->dp_y=xNew<double>(edf_m);
+                anEDF_for_solverx_p->dp_Y=xNew<double>(edf_m);
+                anEDF_for_solverx_p->dpp_Y=xNew<double>(edf_m, num_independents);
+		// Call AD driver:
 		jacobian(1,num_dependents,num_independents,xp,J);
-
+		// delete the allocated space for the parameters
+		xDelete(anEDF_for_solverx_p->dp_x);
+                xDelete(anEDF_for_solverx_p->dp_X);
+                xDelete(anEDF_for_solverx_p->dpp_X,edf_n);
+                xDelete(anEDF_for_solverx_p->dp_y);
+                xDelete(anEDF_for_solverx_p->dp_Y);
+                xDelete(anEDF_for_solverx_p->dpp_Y,edf_m);
 		/*Add jacobian matrix to results: */
 		matJ=xNew<IssmDouble>(num_dependents*num_independents);
