/*!\file DragCoefficientAbsGradientx * \brief: compute misfit between observations and model */ #include "./DragCoefficientAbsGradientx.h" #include "../../shared/shared.h" #include "../../toolkits/toolkits.h" void DragCoefficientAbsGradientx( IssmDouble* pJ, Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials,Parameters* parameters,int weight_index){ /*Intermediary*/ int i; Element* element=NULL; /*output: */ IssmDouble J=0; IssmDouble J_sum; /*Compute Misfit: */ for (i=0;iSize();i++){ element=dynamic_cast(elements->GetObjectByOffset(i)); J+=element->DragCoefficientAbsGradient(weight_index); } /*Sum all J from all cpus of the cluster:*/ #ifdef _HAVE_MPI_ MPI_Reduce (&J,&J_sum,1,MPI_DOUBLE,MPI_SUM,0,IssmComm::GetComm() ); MPI_Bcast(&J_sum,1,MPI_DOUBLE,0,IssmComm::GetComm()); J=J_sum; #endif /*Assign output pointers: */ *pJ=J; }