Index: /issm/trunk-jpl/src/c/classes/Cfdragcoeffabsgrad.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Cfdragcoeffabsgrad.cpp	(revision 27894)
+++ /issm/trunk-jpl/src/c/classes/Cfdragcoeffabsgrad.cpp	(revision 27895)
@@ -30,4 +30,5 @@
 	this->name = NULL;
 	this->J = 0.;
+	this->firsttimepassed = false;
 }
 /*}}}*/
@@ -40,4 +41,5 @@
 
 	this->J = 0.;
+	this->firsttimepassed = false;
 }
 /*}}}*/
@@ -50,4 +52,5 @@
 
 	this->J = in_J;
+	this->firsttimepassed = false;
 }
 /*}}}*/
@@ -107,14 +110,17 @@
 	IssmDouble J_sum=0.;
 
-	for(Object* & object : femmodel->elements->objects){
-		Element* element=xDynamicCast<Element*>(object);
-		J_part+=this->Cfdragcoeffabsgrad_Calculation(element);
+	if (!this->firsttimepassed){
+		for(Object* & object : femmodel->elements->objects){
+			Element* element=xDynamicCast<Element*>(object);
+			J_part+=this->Cfdragcoeffabsgrad_Calculation(element);
+		}
+
+		ISSM_MPI_Allreduce ( (void*)&J_part,(void*)&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+		ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+		this->J=J_sum;
+
+		this->firsttimepassed = true;
 	}
-
-	ISSM_MPI_Allreduce ( (void*)&J_part,(void*)&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
-	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
-	this->J=J_sum;
-
-	return J;
+	return this->J;
 }/*}}}*/
 IssmDouble Cfdragcoeffabsgrad::Cfdragcoeffabsgrad_Calculation(Element* element){/*{{{*/
Index: /issm/trunk-jpl/src/c/classes/Cfdragcoeffabsgrad.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Cfdragcoeffabsgrad.h	(revision 27894)
+++ /issm/trunk-jpl/src/c/classes/Cfdragcoeffabsgrad.h	(revision 27895)
@@ -18,4 +18,5 @@
 		int         definitionenum;
 		char       *name;
+		bool			firsttimepassed;
 		IssmDouble  J;
 
