Index: /issm/trunk/src/c/parallel/DakotaResponses.cpp
===================================================================
--- /issm/trunk/src/c/parallel/DakotaResponses.cpp	(revision 3027)
+++ /issm/trunk/src/c/parallel/DakotaResponses.cpp	(revision 3028)
@@ -182,4 +182,34 @@
 			if(my_rank==0)responses[i]=max_abs_vz;
 		}
+		else if(strcmp(response_descriptor,"misfit")==0){
+			
+			ParameterInputs* inputs=NULL; //needed to plug velocity into elements.
+			double J=0;
+			int analysis_type,sub_analysis_type;
+			int numberofdofspernode,numberofnodes;
+			Vec u_g=NULL;
+		
+			/*Recover analysis_type: */
+			fem->parameters->FindParam(&analysis_type,"analysis_type");
+			fem->parameters->FindParam(&sub_analysis_type,"sub_analysis_type");
+			fem->parameters->FindParam(&numberofdofspernode,"numberofdofspernode");
+			fem->parameters->FindParam(&numberofnodes,"numberofnodes");
+	
+			/*Recover velocity: */
+			found=results->FindResult(&u_g,"u_g");
+			if(!found)throw ErrorException(__FUNCT__," could not find velocity to compute misfit");
+
+			/*Add to inputs: */
+			inputs->Add("velocity",u_g,numberofdofspernode,numberofnodes);
+
+			/*Compute misfit: */
+			Misfitx( &J, fem->elements,fem->nodes, fem->loads, fem->materials, fem->parameters,inputs,analysis_type,sub_analysis_type);
+	
+			if(my_rank==0)responses[i]=J;
+
+			/*Some cleanup: */
+			VecFree(&u_g);
+
+		}
 		else{
 			if(my_rank==0)printf("%s%s%s"," response descriptor : ",response_descriptor," not supported yet!");
