Index: /issm/trunk-jpl/src/c/bamg/Mesh.cpp
===================================================================
--- /issm/trunk-jpl/src/c/bamg/Mesh.cpp	(revision 16199)
+++ /issm/trunk-jpl/src/c/bamg/Mesh.cpp	(revision 16200)
@@ -1053,5 +1053,4 @@
 
 		/*Get options*/
-		int    verbose  = bamgopts->verbose;
 		double anisomax = bamgopts->anisomax;
 		double errg     = bamgopts->errg;
@@ -3312,5 +3311,4 @@
 
 		long NbSwapf =0;
-
 		for(i=0;i<nbv;i++) NbSwapf += vertices[i].Optim(0);
 	}/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 16199)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 16200)
@@ -3306,5 +3306,4 @@
 
 	/*Spawn material*/
-	tria->material=NULL;
 	tria->material=(Material*)this->material->copy();
 	delete tria->material->inputs;
Index: /issm/trunk-jpl/src/c/classes/gauss/GaussTria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/gauss/GaussTria.cpp	(revision 16199)
+++ /issm/trunk-jpl/src/c/classes/gauss/GaussTria.cpp	(revision 16200)
@@ -44,5 +44,4 @@
 	IssmPDouble *seg_weights = NULL;
 	IssmDouble  a1,b1,c1,a2,b2,c2;
-	int     i,index3;
 
 	/*Get Segment gauss points*/
@@ -83,5 +82,5 @@
 
 	/*Build Triangle Gauss point*/
-	for(i=0;i<numgauss;i++){
+	for(int i=0;i<numgauss;i++){
 		coords1[i]=0.5*(a1+a2) + 0.5*seg_coords[i]*(a2-a1);
 		coords2[i]=0.5*(b1+b2) + 0.5*seg_coords[i]*(b2-b1);
@@ -107,5 +106,4 @@
 	IssmPDouble *seg_coords  = NULL;
 	IssmPDouble *seg_weights = NULL;
-	int     i,index3;
 
 	/*Get Segment gauss points*/
@@ -120,5 +118,5 @@
 
 	/*Build Triangle Gauss point*/
-	for(i=0;i<numgauss;i++){
+	for(int i=0;i<numgauss;i++){
 		coords1[i]=0.5*(area_coordinates[0][0]+area_coordinates[1][0]) + 0.5*seg_coords[i]*(area_coordinates[1][0]-area_coordinates[0][0]);
 		coords2[i]=0.5*(area_coordinates[0][1]+area_coordinates[1][1]) + 0.5*seg_coords[i]*(area_coordinates[1][1]-area_coordinates[0][1]);
Index: /issm/trunk-jpl/src/c/modules/ConstraintsStatex/ConstraintsStatex.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ConstraintsStatex/ConstraintsStatex.cpp	(revision 16199)
+++ /issm/trunk-jpl/src/c/modules/ConstraintsStatex/ConstraintsStatex.cpp	(revision 16200)
@@ -11,7 +11,9 @@
 
 	/*output: */
-	int converged                  = 0;
-	int num_unstable_constraints   = 0;
-	int min_mechanical_constraints = 0;
+	int converged                     = 1;
+	int num_unstable_constraints      = 0;
+	int min_mechanical_constraints    = 0;
+	int  unstable                     = 0;
+	int  sum_num_unstable_constraints = 0;
 	int analysis_type;
 
@@ -23,27 +25,31 @@
 	femmodel->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
 
-	/*Do we have penalties linked to rifts? In this case, run our special rifts penalty 
-	 * management routine, otherwise, skip : */
-
-	/*No constraints management by default!:*/
-	num_unstable_constraints=0;
-	converged=1;
-
+	/*Rift penalties first*/
 	#ifdef _HAVE_RIFTS_
 	if(RiftIsPresent(femmodel->loads,analysis_type)){
-
 		RiftConstraintsState(&converged,&num_unstable_constraints,femmodel->loads,min_mechanical_constraints,analysis_type);
 	}
 	#endif
 
-	/*FIXME: this function is actually called by Hydrology and damage evolution. Should be renamed*/
-	#ifdef _HAVE_THERMAL_
-	if(PengridIsPresent(femmodel->loads,analysis_type)){
-		ThermalConstraintsState(femmodel->loads,&converged,&num_unstable_constraints,analysis_type);
+	/*Deal with pengrid*/
+	for(int i=0;i<femmodel->loads->Size();i++){
+		Load* load=(Load*)femmodel->loads->GetObjectByOffset(i);
+		if(load->InAnalysis(analysis_type)){
+			if(load->ObjectEnum()==PengridEnum){
+				Pengrid* pengrid=(Pengrid*)load;
+				pengrid->ConstraintActivate(&unstable);
+				num_unstable_constraints += unstable;
+			}
+		}
 	}
-	#endif
+	ISSM_MPI_Reduce(&num_unstable_constraints,&sum_num_unstable_constraints,1,ISSM_MPI_INT,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&sum_num_unstable_constraints,1,ISSM_MPI_INT,0,IssmComm::GetComm());                
+	num_unstable_constraints=sum_num_unstable_constraints;
+
+	/*Have we converged? : */
+	if(num_unstable_constraints) converged=0;
 
 	/*Assign output pointers: */
-	*pconverged=converged;
-	*pnum_unstable_constraints=num_unstable_constraints;
+	*pconverged                = converged;
+	*pnum_unstable_constraints = num_unstable_constraints;
 }
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/Enthalpy/CreateConstraintsEnthalpy.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/Enthalpy/CreateConstraintsEnthalpy.cpp	(revision 16199)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/Enthalpy/CreateConstraintsEnthalpy.cpp	(revision 16200)
@@ -11,5 +11,4 @@
 
 	/*Intermediary*/
-	int        i,j;
 	int        count;
 	int        M,N;
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/FreeSurfaceBase/CreateLoadsFreeSurfaceBase.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/FreeSurfaceBase/CreateLoadsFreeSurfaceBase.cpp	(revision 16199)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/FreeSurfaceBase/CreateLoadsFreeSurfaceBase.cpp	(revision 16200)
@@ -10,5 +10,4 @@
 
 	/*Intermediaries*/
-	int element;
 	int penpair_ids[2];
 	int count=0;
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/FreeSurfaceBase/UpdateElementsFreeSurfaceBase.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/FreeSurfaceBase/UpdateElementsFreeSurfaceBase.cpp	(revision 16199)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/FreeSurfaceBase/UpdateElementsFreeSurfaceBase.cpp	(revision 16200)
@@ -11,12 +11,9 @@
 void	UpdateElementsFreeSurfaceBase(Elements* elements, IoModel* iomodel,int analysis_counter,int analysis_type){
 
-	int    finiteelement;
-	bool   dakota_analysis;
-
 	/*Now, is the model 3d? otherwise, do nothing: */
 	if (iomodel->dim==2)return;
 
 	/*Finite element type*/
-	finiteelement = P1Enum;
+	int finiteelement = P1Enum;
 
 	/*Update elements: */
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/FreeSurfaceTop/CreateLoadsFreeSurfaceTop.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/FreeSurfaceTop/CreateLoadsFreeSurfaceTop.cpp	(revision 16199)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/FreeSurfaceTop/CreateLoadsFreeSurfaceTop.cpp	(revision 16200)
@@ -10,5 +10,4 @@
 
 	/*Intermediaries*/
-	int element;
 	int penpair_ids[2];
 	int count=0;
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/FreeSurfaceTop/UpdateElementsFreeSurfaceTop.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/FreeSurfaceTop/UpdateElementsFreeSurfaceTop.cpp	(revision 16199)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/FreeSurfaceTop/UpdateElementsFreeSurfaceTop.cpp	(revision 16200)
@@ -11,11 +11,8 @@
 void	UpdateElementsFreeSurfaceTop(Elements* elements, IoModel* iomodel,int analysis_counter,int analysis_type){
 
-	int    finiteelement;
-	bool   dakota_analysis;
-
 	/*Now, is the model 3d? otherwise, do nothing: */
 	if (iomodel->dim==2)return;
 
-	finiteelement = P1Enum;
+	int finiteelement = P1Enum;
 
 	/*Update elements: */
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyShreve/CreateParametersHydrologyShreve.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyShreve/CreateParametersHydrologyShreve.cpp	(revision 16199)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyShreve/CreateParametersHydrologyShreve.cpp	(revision 16200)
@@ -12,5 +12,4 @@
 	Parameters *parameters = NULL;
 	int         hydrology_model;
-	bool        isefficientlayer;
 
 	/*Get parameters: */
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/NodesPartitioning.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/NodesPartitioning.cpp	(revision 16199)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/NodesPartitioning.cpp	(revision 16200)
@@ -46,5 +46,4 @@
 	/*Intermediaries*/
 	int  i,i1,i2;
-	int  cols;
 	int  e1,e2;
 	int  pos;
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/Stressbalance/CreateLoadsStressbalance.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/Stressbalance/CreateLoadsStressbalance.cpp	(revision 16199)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/Stressbalance/CreateLoadsStressbalance.cpp	(revision 16200)
@@ -10,6 +10,4 @@
 
 	/*Intermediary*/
-	int         segment_width;
-	int         element;
 	int         i;
 	int         count;
