Index: /issm/trunk-jpl/src/c/analyses/damage_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/damage_core.cpp	(revision 16213)
+++ /issm/trunk-jpl/src/c/analyses/damage_core.cpp	(revision 16214)
@@ -30,5 +30,5 @@
 
 	femmodel->SetCurrentConfiguration(DamageEvolutionAnalysisEnum);
-	solutionsequence_damage_nonlinear(femmodel);
+	solutionsequence_linear(femmodel);
 
 	if(save_results){
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 16213)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 16214)
@@ -7126,8 +7126,12 @@
 	int         i;
 	IssmDouble  values[numdof];
-	int        *doflist = NULL;
+	IssmDouble  max_damage;
+	int			*doflist = NULL;
 
 	/*Get dof list: */
 	GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
+
+	/*Get user-supplied max_damage: */
+	this->parameters->FindParam(&max_damage,DamageMaxDamageEnum);
 
 	/*Use the dof list to index into the solution vector: */
@@ -7136,4 +7140,7 @@
 		/*Check solution*/
 		if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector");
+		/*Enforce D < max_damage and D > 0 */
+		if(values[i]>max_damage) values[i]=max_damage;
+		else if(values[i]<0) values[i]=0;
 	}
 
Index: /issm/trunk-jpl/src/c/classes/Loads/Pengrid.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Loads/Pengrid.cpp	(revision 16213)
+++ /issm/trunk-jpl/src/c/classes/Loads/Pengrid.cpp	(revision 16214)
@@ -738,5 +738,7 @@
 	parameters->FindParam(&max_damage,DamageMaxDamageEnum);
 	
-	//Figure out if damage is over max_damage, in which case, this penalty needs to be activated.
+	//Figure out if damage>max_damage, in which case, this penalty needs to be activated.
+	//Would need to do the same for damage<0 if penalties are used.  For now, ConstraintStatex 
+	//is not called in solutionsequence_damage_nonlinear, so no penalties are applied.
 
 	if (damage>max_damage){
