Index: /issm/trunk-jpl/src/c/cores/controladm1qn3_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/controladm1qn3_core.cpp	(revision 23280)
+++ /issm/trunk-jpl/src/c/cores/controladm1qn3_core.cpp	(revision 23281)
@@ -241,4 +241,5 @@
 	#elif defined(_HAVE_CODIPACK_)
 	auto& tape_codi = IssmDouble::getGlobalTape();
+	codi_global.input_indices.clear();
 	if(my_rank==0){
 		for (int i=0;i<intn;i++) {
@@ -280,4 +281,7 @@
 	/*Go through our dependent variables, and compute the response:*/
 	dependents=xNew<IssmPDouble>(num_dependents);
+	#if defined(_HAVE_CODIPACK_)
+	codi_global.output_indices.clear();
+	#endif
 	for(int i=0;i<dependent_objects->Size();i++){
 		DependentObject* dep=(DependentObject*)dependent_objects->GetObjectByOffset(i);
@@ -385,4 +389,5 @@
 		auto in_size = codi_global.input_indices.size();
 		for(size_t i = 0; i < in_size; ++i) {
+			_assert_(i<num_independents);
 			weightVectorTimesJac[i] = tape_codi.getGradient(codi_global.input_indices[i]);
 		}
