Index: /issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.cpp	(revision 19380)
+++ /issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.cpp	(revision 19381)
@@ -69,7 +69,4 @@
 	parameters->AddObject(iomodel->CopyConstantObject(DamageLawEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(DamageStabilizationEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(DamagePenaltyThresholdEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(DamagePenaltyLockEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(DamagePenaltyFactorEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(DamageMaxiterEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(DamageMaxDamageEnum));
@@ -91,4 +88,5 @@
 		parameters->AddObject(iomodel->CopyConstantObject(DamageC4Enum));
 		parameters->AddObject(iomodel->CopyConstantObject(DamageStressThresholdEnum));
+		parameters->AddObject(iomodel->CopyConstantObject(DamageKappaEnum));
 		parameters->AddObject(iomodel->CopyConstantObject(DamageHealingEnum));
 		parameters->AddObject(iomodel->CopyConstantObject(DamageEquivStressEnum));
Index: /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp	(revision 19380)
+++ /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp	(revision 19381)
@@ -877,4 +877,5 @@
 	if(materials_type==MatdamageiceEnum){
 		parameters->AddObject(iomodel->CopyConstantObject(DamageC1Enum));
+		parameters->AddObject(iomodel->CopyConstantObject(DamageKappaEnum));
 		parameters->AddObject(iomodel->CopyConstantObject(DamageStressThresholdEnum));
 	}
Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 19380)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 19381)
@@ -46,5 +46,5 @@
 	IssmDouble  eps_xx,eps_xy,eps_yy,eps_xz,eps_yz,eps_zz,eps_eff;
 	IssmDouble  epsmin=1.e-27;
-	IssmDouble  eps_0,eps_f,sigma_0,B,D,n;
+	IssmDouble  eps_0,kappa,sigma_0,B,D,n,envelopeD;
 	int         dim,counter=0;
 	IssmDouble  k1,k2,threshold=1.e-12;
@@ -54,5 +54,5 @@
 	this->ComputeStrainRate();
 	parameters->FindParam(&dim,DomainDimensionEnum);
-	parameters->FindParam(&eps_f,DamageC1Enum);
+	parameters->FindParam(&kappa,DamageKappaEnum);
 	parameters->FindParam(&sigma_0,DamageStressThresholdEnum);
 
@@ -113,33 +113,13 @@
 		/* Compute threshold strain rate from threshold stress */
 		eps_0=pow(sigma_0/B,n); 
-		_assert_(eps_f>eps_0);
-
-		/* Compute kappa (k) from pre-existing level of damage, using Newton-Raphson */
-		/* provide a reasonable initial guess */
-		if(D==0){
-			k1=eps_0;
-		}
-		else{
-			k1=exp(n*eps_0/(eps_f-eps_0)-n*log(1.-D)+log(eps_0)); /* initial guess */
-		}
-	
-		counter=0;
-		while(true){
-      	/*Newton step k2=k1-f(k1)/f'(k1) */
-			k2=k1-(k1+(eps_f-eps_0)/n*log(k1)-eps_0+(eps_f-eps_0)*(log(1.-D)-1./n*log(eps_0)))/(1.+(eps_f-eps_0)/n/k1);
-
-      	if( fabs(k2-k1)/(fabs(k2))<threshold ){
-         	break;
-      	}
-      	else{
-				k1=k2;
-      	   counter++;
-      	}
-
-      	if(counter>50) break;
-   	}
-
-		if(eps_eff>k2){
-			newD[i]=1.-pow(eps_0/eps_eff,1./n)*exp(-(eps_eff-eps_0)/(eps_f-eps_0));
+
+		if(eps_eff>eps_0){
+			/* Compute damage on envelope curve for existing level of effective strain rate */
+			envelopeD=1.-pow(eps_0/eps_eff,1./n)*exp(-(eps_eff-eps_0)/(eps_0*(kappa-1.)));
+
+			if(envelopeD>D){
+				newD[i]=envelopeD;
+			}
+			else newD[i]=D;
 		}
 		else newD[i]=D;
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 19380)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 19381)
@@ -204,8 +204,6 @@
 	DamageHealingEnum,
 	DamageStressThresholdEnum,
+	DamageKappaEnum,
 	DamageStabilizationEnum,
-	DamagePenaltyThresholdEnum,
-	DamagePenaltyLockEnum,
-	DamagePenaltyFactorEnum,
 	DamageMaxiterEnum,
 	DamageSpcdamageEnum,
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 19380)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 19381)
@@ -210,8 +210,6 @@
 		case DamageHealingEnum : return "DamageHealing";
 		case DamageStressThresholdEnum : return "DamageStressThreshold";
+		case DamageKappaEnum : return "DamageKappa";
 		case DamageStabilizationEnum : return "DamageStabilization";
-		case DamagePenaltyThresholdEnum : return "DamagePenaltyThreshold";
-		case DamagePenaltyLockEnum : return "DamagePenaltyLock";
-		case DamagePenaltyFactorEnum : return "DamagePenaltyFactor";
 		case DamageMaxiterEnum : return "DamageMaxiter";
 		case DamageSpcdamageEnum : return "DamageSpcdamage";
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 19380)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 19381)
@@ -213,8 +213,6 @@
 	      else if (strcmp(name,"DamageHealing")==0) return DamageHealingEnum;
 	      else if (strcmp(name,"DamageStressThreshold")==0) return DamageStressThresholdEnum;
+	      else if (strcmp(name,"DamageKappa")==0) return DamageKappaEnum;
 	      else if (strcmp(name,"DamageStabilization")==0) return DamageStabilizationEnum;
-	      else if (strcmp(name,"DamagePenaltyThreshold")==0) return DamagePenaltyThresholdEnum;
-	      else if (strcmp(name,"DamagePenaltyLock")==0) return DamagePenaltyLockEnum;
-	      else if (strcmp(name,"DamagePenaltyFactor")==0) return DamagePenaltyFactorEnum;
 	      else if (strcmp(name,"DamageMaxiter")==0) return DamageMaxiterEnum;
 	      else if (strcmp(name,"DamageSpcdamage")==0) return DamageSpcdamageEnum;
@@ -260,10 +258,10 @@
 	      else if (strcmp(name,"MeshElements")==0) return MeshElementsEnum;
 	      else if (strcmp(name,"MeshLowerelements")==0) return MeshLowerelementsEnum;
+	      else if (strcmp(name,"MeshNumberofelements2d")==0) return MeshNumberofelements2dEnum;
+	      else if (strcmp(name,"MeshNumberofelements")==0) return MeshNumberofelementsEnum;
          else stage=3;
    }
    if(stage==3){
-	      if (strcmp(name,"MeshNumberofelements2d")==0) return MeshNumberofelements2dEnum;
-	      else if (strcmp(name,"MeshNumberofelements")==0) return MeshNumberofelementsEnum;
-	      else if (strcmp(name,"MeshNumberoflayers")==0) return MeshNumberoflayersEnum;
+	      if (strcmp(name,"MeshNumberoflayers")==0) return MeshNumberoflayersEnum;
 	      else if (strcmp(name,"MeshNumberofvertices2d")==0) return MeshNumberofvertices2dEnum;
 	      else if (strcmp(name,"MeshNumberofvertices")==0) return MeshNumberofverticesEnum;
@@ -383,10 +381,10 @@
 	      else if (strcmp(name,"SurfaceforcingsHref")==0) return SurfaceforcingsHrefEnum;
 	      else if (strcmp(name,"SurfaceforcingsSmbref")==0) return SurfaceforcingsSmbrefEnum;
+	      else if (strcmp(name,"SurfaceforcingsBPos")==0) return SurfaceforcingsBPosEnum;
+	      else if (strcmp(name,"SurfaceforcingsBNeg")==0) return SurfaceforcingsBNegEnum;
          else stage=4;
    }
    if(stage==4){
-	      if (strcmp(name,"SurfaceforcingsBPos")==0) return SurfaceforcingsBPosEnum;
-	      else if (strcmp(name,"SurfaceforcingsBNeg")==0) return SurfaceforcingsBNegEnum;
-	      else if (strcmp(name,"SMBhenning")==0) return SMBhenningEnum;
+	      if (strcmp(name,"SMBhenning")==0) return SMBhenningEnum;
 	      else if (strcmp(name,"SMBcomponents")==0) return SMBcomponentsEnum;
 	      else if (strcmp(name,"SurfaceforcingsAccumulation")==0) return SurfaceforcingsAccumulationEnum;
@@ -506,10 +504,10 @@
 	      else if (strcmp(name,"Matice")==0) return MaticeEnum;
 	      else if (strcmp(name,"Matdamageice")==0) return MatdamageiceEnum;
+	      else if (strcmp(name,"Matpar")==0) return MatparEnum;
+	      else if (strcmp(name,"Node")==0) return NodeEnum;
          else stage=5;
    }
    if(stage==5){
-	      if (strcmp(name,"Matpar")==0) return MatparEnum;
-	      else if (strcmp(name,"Node")==0) return NodeEnum;
-	      else if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum;
+	      if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum;
 	      else if (strcmp(name,"NumericalfluxType")==0) return NumericalfluxTypeEnum;
 	      else if (strcmp(name,"Param")==0) return ParamEnum;
@@ -629,10 +627,10 @@
 	      else if (strcmp(name,"StressTensor")==0) return StressTensorEnum;
 	      else if (strcmp(name,"StressTensorxx")==0) return StressTensorxxEnum;
+	      else if (strcmp(name,"StressTensorxy")==0) return StressTensorxyEnum;
+	      else if (strcmp(name,"StressTensorxz")==0) return StressTensorxzEnum;
          else stage=6;
    }
    if(stage==6){
-	      if (strcmp(name,"StressTensorxy")==0) return StressTensorxyEnum;
-	      else if (strcmp(name,"StressTensorxz")==0) return StressTensorxzEnum;
-	      else if (strcmp(name,"StressTensoryy")==0) return StressTensoryyEnum;
+	      if (strcmp(name,"StressTensoryy")==0) return StressTensoryyEnum;
 	      else if (strcmp(name,"StressTensoryz")==0) return StressTensoryzEnum;
 	      else if (strcmp(name,"StressTensorzz")==0) return StressTensorzzEnum;
@@ -752,10 +750,10 @@
 	      else if (strcmp(name,"Outputdefinition61")==0) return Outputdefinition61Enum;
 	      else if (strcmp(name,"Outputdefinition62")==0) return Outputdefinition62Enum;
+	      else if (strcmp(name,"Outputdefinition63")==0) return Outputdefinition63Enum;
+	      else if (strcmp(name,"Outputdefinition64")==0) return Outputdefinition64Enum;
          else stage=7;
    }
    if(stage==7){
-	      if (strcmp(name,"Outputdefinition63")==0) return Outputdefinition63Enum;
-	      else if (strcmp(name,"Outputdefinition64")==0) return Outputdefinition64Enum;
-	      else if (strcmp(name,"Outputdefinition65")==0) return Outputdefinition65Enum;
+	      if (strcmp(name,"Outputdefinition65")==0) return Outputdefinition65Enum;
 	      else if (strcmp(name,"Outputdefinition66")==0) return Outputdefinition66Enum;
 	      else if (strcmp(name,"Outputdefinition67")==0) return Outputdefinition67Enum;
@@ -875,10 +873,10 @@
 	      else if (strcmp(name,"QmuInName")==0) return QmuInNameEnum;
 	      else if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum;
+	      else if (strcmp(name,"Regular")==0) return RegularEnum;
+	      else if (strcmp(name,"Scaled")==0) return ScaledEnum;
          else stage=8;
    }
    if(stage==8){
-	      if (strcmp(name,"Regular")==0) return RegularEnum;
-	      else if (strcmp(name,"Scaled")==0) return ScaledEnum;
-	      else if (strcmp(name,"Separate")==0) return SeparateEnum;
+	      if (strcmp(name,"Separate")==0) return SeparateEnum;
 	      else if (strcmp(name,"Sset")==0) return SsetEnum;
 	      else if (strcmp(name,"Verbose")==0) return VerboseEnum;
Index: /issm/trunk-jpl/src/m/classes/damage.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/damage.m	(revision 19380)
+++ /issm/trunk-jpl/src/m/classes/damage.m	(revision 19381)
@@ -17,10 +17,8 @@
 		maxiter             = 0;
 		elementinterp       = '';
-		penalty_threshold   = 0;
-		penalty_lock        = 0;
-		penalty_factor      = 0;
 		
 		%general parameters for evolution law: 
 		stress_threshold    = 0;
+		kappa               = 0;
 		c1                  = 0;
 		c2                  = 0;
@@ -80,7 +78,4 @@
 
 			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="maxiter" type="',             class(self.maxiter),'" default="',   num2str(self.maxiter),'">',   '     <section name="damage" />','     <help> maximum number of non linear iterations </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="penalty_lock" type="',        class(self.penalty_lock),'" default="',            num2str(self.penalty_lock),'">',            '     <section name="damage" />','     <help> stabilize unstable damage constraints that keep zigzagging after n iteration (default is 0, no stabilization) </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="penalty_threshold" type="',   class(self.penalty_threshold),'" default="',            num2str(self.penalty_threshold),'">',            '     <section name="damage" />','     <help> threshold to declare convergence of damage evolution solution (default is 0) </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="penalty_factor" type="',      class(self.penalty_factor),'" default="',            num2str(self.penalty_factor),'">',            '     <section name="damage" />','     <help> scaling exponent (default is 3) </help>','</parameter>');
 
 		end % }}}
@@ -125,15 +120,7 @@
 			self.elementinterp='P1';
 
-			%factor used to compute the values of the penalties: kappa=max(stiffness matrix)*10^penalty_factor
-			self.penalty_factor=3;
-			
-			%stabilize unstable damage constraints that keep zigzagging after n iteration (default is 0, no stabilization)
-			self.penalty_lock=0;
-			
-			%threshold to declare convergence of thermal solution (default is 0)
-			self.penalty_threshold=0;
-		
 			%damage evolution parameters 
-			self.stress_threshold=0;
+			self.stress_threshold=1.3e5;
+			self.kappa=2.8;
 			self.healing=0;
 			self.c1=0;
@@ -158,7 +145,6 @@
 				md = checkfield(md,'fieldname','damage.maxiter','>=0',0);
 				md = checkfield(md,'fieldname','damage.elementinterp','values',{'P1','P2'});
-				md = checkfield(md,'fieldname','damage.penalty_factor','>=',0);
-				md = checkfield(md,'fieldname','damage.penalty_lock','>=',0);
-				md = checkfield(md,'fieldname','damage.penalty_threshold','>=',0);
+				md = checkfield(md,'fieldname','damage.stress_threshold','>=',0);
+				md = checkfield(md,'fieldname','damage.kappa','>',1);
 				md = checkfield(md,'fieldname','damage.healing','>=',0);
 				md = checkfield(md,'fieldname','damage.c1','>=',0);
@@ -166,5 +152,4 @@
 				md = checkfield(md,'fieldname','damage.c3','>=',0);
 				md = checkfield(md,'fieldname','damage.c4','>=',0);
-				md = checkfield(md,'fieldname','damage.stress_threshold','>=',0);
 				md = checkfield(md,'fieldname','damage.equiv_stress','numel',[1],'values',[0 1]);
 				md = checkfield(md,'fieldname','damage.requested_outputs','stringrow',1);
@@ -196,7 +181,6 @@
 				fielddisplay(self,'maxiter','maximum number of non linear iterations');
 				fielddisplay(self,'elementinterp','interpolation scheme for finite elements {''P1'',''P2''}');
-				fielddisplay(self,'penalty_lock','stabilize unstable damage constraints that keep zigzagging after n iteration (default is 0, no stabilization)');
-				fielddisplay(self,'penalty_threshold','threshold to declare convergence of damage evolution solution (default is 0)');
-				fielddisplay(self,'penalty_factor','scaling exponent (default is 3)');
+				fielddisplay(self,'stress_threshold','stress threshold for damage initiation [Pa]');
+				fielddisplay(self,'kappa','ductility parameter for stress softening and damage');
 				fielddisplay(self,'c1','damage parameter 1');
 				fielddisplay(self,'c2','damage parameter 2');
@@ -204,5 +188,4 @@
 				fielddisplay(self,'c4','damage parameter 4');
 				fielddisplay(self,'healing','damage healing parameter');
-				fielddisplay(self,'stress_threshold','damage stress threshold [Pa]');
 				fielddisplay(self,'equiv_stress','0: von Mises, 1: max principal');
 				fielddisplay(self,'requested_outputs','additional outputs requested');
@@ -222,12 +205,10 @@
 				WriteData(fid,'object',self,'fieldname','maxiter','format','Integer');
 				WriteData(fid,'enum',DamageElementinterpEnum(),'data',StringToEnum(self.elementinterp),'format','Integer');
-				WriteData(fid,'object',self,'fieldname','penalty_threshold','format','Integer');
-				WriteData(fid,'object',self,'fieldname','penalty_lock','format','Integer');
-				WriteData(fid,'object',self,'fieldname','penalty_factor','format','Double');
+				WriteData(fid,'object',self,'fieldname','stress_threshold','format','Double');
+				WriteData(fid,'object',self,'fieldname','kappa','format','Double');
 				WriteData(fid,'object',self,'fieldname','c1','format','Double');
 				WriteData(fid,'object',self,'fieldname','c2','format','Double');
 				WriteData(fid,'object',self,'fieldname','c3','format','Double');
 				WriteData(fid,'object',self,'fieldname','c4','format','Double');
-				WriteData(fid,'object',self,'fieldname','stress_threshold','format','Double');
 				WriteData(fid,'object',self,'fieldname','healing','format','Double');
 				WriteData(fid,'object',self,'fieldname','equiv_stress','format','Integer');
Index: /issm/trunk-jpl/src/m/classes/damage.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/damage.py	(revision 19380)
+++ /issm/trunk-jpl/src/m/classes/damage.py	(revision 19381)
@@ -19,24 +19,22 @@
 		#damage: 
 		self.isdamage           = 0.
-		self.D						= float('NaN')
-		self.law						= float('NaN')
-		self.spcdamage				= float('NaN')
-		self.max_damage			= float('NaN')
+		self.D			= float('NaN')
+		self.law		= float('NaN')
+		self.spcdamage		= float('NaN')
+		self.max_damage		= float('NaN')
 		
 		#numerical
-		self.stabilization		= float('NaN')
-		self.maxiter				= float('NaN')
+		self.stabilization	= float('NaN')
+		self.maxiter		= float('NaN')
 		self.elementinterp      = ''
-		self.penalty_threshold	= float('NaN')
-		self.penalty_lock			= float('NaN')
-		self.penalty_factor		= float('NaN')
 
 		#general parameters for evolution law: 
 		self.stress_threshold   = float('NaN')
+		self.kappa              = float('NaN')
 		self.c1                 = float('NaN')
 		self.c2                 = float('NaN')
 		self.c3                 = float('NaN')
 		self.c4                 = float('NaN')
-		self.healing				= float('NaN')
+		self.healing		= float('NaN')
 		self.equiv_stress       = float('NaN')
 		self.requested_outputs  = []
@@ -61,12 +59,10 @@
 			s+="%s\n" % fielddisplay(self,"maxiter","maximum number of non linear iterations")
 			s+="%s\n" %	fielddisplay(self,"elementinterp","interpolation scheme for finite elements [''P1'',''P2'']")
-			s+="%s\n" % fielddisplay(self,"penalty_lock","stabilize unstable damage constraints that keep zigzagging after n iteration (default is 0, no stabilization)")
-			s+="%s\n" % fielddisplay(self,"penalty_threshold","threshold to declare convergence of damage evolution solution (default is 0)")
-			s+="%s\n" % fielddisplay(self,"penalty_factor","scaling exponent (default is 3)")
+			s+="%s\n" % fielddisplay(self,"stress_threshold","stress threshold for damage initiation [Pa]")
+			s+="%s\n" % fielddisplay(self,"kappa","ductility parameter for stress softening and damage [>1]")
 			s+="%s\n" % fielddisplay(self,"c1","damage parameter 1 ")
 			s+="%s\n" % fielddisplay(self,"c2","damage parameter 2 ")
 			s+="%s\n" % fielddisplay(self,"c3","damage parameter 3 ")
 			s+="%s\n" % fielddisplay(self,"c4","damage parameter 4 ")
-			s+="%s\n" % fielddisplay(self,"stress_threshold","damage stress threshold [Pa]")
 			s+="%s\n" % fielddisplay(self,"healing","damage healing parameter")
 			s+="%s\n" % fielddisplay(self,"equiv_stress","0: von Mises, 1: max principal")
@@ -98,15 +94,7 @@
 		self.elementinterp='P1'
 
-		#factor used to compute the values of the penalties: kappa=max(stiffness matrix)*10^penalty_factor
-		self.penalty_factor=3
-			
-		#stabilize unstable damage constraints that keep zigzagging after n iteration (default is 0, no stabilization)
-		self.penalty_lock=0
-			
-		#threshold to declare convergence of thermal solution (default is 0)
-		self.penalty_threshold=0
-		
 		#damage evolution parameters 
-		self.stress_threshold=0
+		self.stress_threshold=1.3e5
+		self.kappa=2.8
 		self.c1=0
 		self.c2=0
@@ -141,7 +129,6 @@
 			md = checkfield(md,'fieldname','damage.maxiter','>=0',0)
 			md = checkfield(md,'fieldname','damage.elementinterp','values',['P1','P2'])
-			md = checkfield(md,'fieldname','damage.penalty_factor','>=0',0)
-			md = checkfield(md,'fieldname','damage.penalty_lock','>=0',0)
-			md = checkfield(md,'fieldname','damage.penalty_threshold','>=0',0)
+			md = checkfield(md,'fieldname','damage.stress_threshold','>=',0)
+			md = checkfield(md,'fieldname','damage.kappa','>',1)
 			md = checkfield(md,'fieldname','damage.healing','>=',0)
 			md = checkfield(md,'fieldname','damage.c1','>=',0)
@@ -149,5 +136,4 @@
 			md = checkfield(md,'fieldname','damage.c3','>=',0)
 			md = checkfield(md,'fieldname','damage.c4','>=',0)
-			md = checkfield(md,'fieldname','damage.stress_threshold','>=',0)
 			md = checkfield(md,'fieldname','damage.healing','>=',0)
 			md = checkfield(md,'fieldname','damage.equiv_stress','numel',[1],'values',[0,1])
@@ -170,12 +156,10 @@
 			WriteData(fid,'object',self,'fieldname','maxiter','format','Integer')
 			WriteData(fid,'enum',DamageElementinterpEnum(),'data',StringToEnum(self.elementinterp)[0],'format','Integer')
-			WriteData(fid,'object',self,'fieldname','penalty_threshold','format','Integer')
-			WriteData(fid,'object',self,'fieldname','penalty_lock','format','Integer')
-			WriteData(fid,'object',self,'fieldname','penalty_factor','format','Double')
+			WriteData(fid,'object',self,'fieldname','stress_threshold','format','Double')
+			WriteData(fid,'object',self,'fieldname','kappa','format','Double')
 			WriteData(fid,'object',self,'fieldname','c1','format','Double')
 			WriteData(fid,'object',self,'fieldname','c2','format','Double')
 			WriteData(fid,'object',self,'fieldname','c3','format','Double')
 			WriteData(fid,'object',self,'fieldname','c4','format','Double')
-			WriteData(fid,'object',self,'fieldname','stress_threshold','format','Double')
 			WriteData(fid,'object',self,'fieldname','healing','format','Double')
 			WriteData(fid,'object',self,'fieldname','equiv_stress','format','Integer')
Index: /issm/trunk-jpl/src/m/enum/DamageKappaEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/DamageKappaEnum.m	(revision 19381)
+++ /issm/trunk-jpl/src/m/enum/DamageKappaEnum.m	(revision 19381)
@@ -0,0 +1,11 @@
+function macro=DamageKappaEnum()
+%DAMAGEKAPPAENUM - Enum of DamageKappa
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=DamageKappaEnum()
+
+macro=StringToEnum('DamageKappa');
Index: sm/trunk-jpl/src/m/enum/DamagePenaltyFactorEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/DamagePenaltyFactorEnum.m	(revision 19380)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=DamagePenaltyFactorEnum()
-%DAMAGEPENALTYFACTORENUM - Enum of DamagePenaltyFactor
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=DamagePenaltyFactorEnum()
-
-macro=StringToEnum('DamagePenaltyFactor');
Index: sm/trunk-jpl/src/m/enum/DamagePenaltyLockEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/DamagePenaltyLockEnum.m	(revision 19380)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=DamagePenaltyLockEnum()
-%DAMAGEPENALTYLOCKENUM - Enum of DamagePenaltyLock
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=DamagePenaltyLockEnum()
-
-macro=StringToEnum('DamagePenaltyLock');
Index: sm/trunk-jpl/src/m/enum/DamagePenaltyThresholdEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/DamagePenaltyThresholdEnum.m	(revision 19380)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=DamagePenaltyThresholdEnum()
-%DAMAGEPENALTYTHRESHOLDENUM - Enum of DamagePenaltyThreshold
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=DamagePenaltyThresholdEnum()
-
-macro=StringToEnum('DamagePenaltyThreshold');
Index: /issm/trunk-jpl/src/m/enum/EnumDefinitions.py
===================================================================
--- /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 19380)
+++ /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 19381)
@@ -202,8 +202,6 @@
 def DamageHealingEnum(): return StringToEnum("DamageHealing")[0]
 def DamageStressThresholdEnum(): return StringToEnum("DamageStressThreshold")[0]
+def DamageKappaEnum(): return StringToEnum("DamageKappa")[0]
 def DamageStabilizationEnum(): return StringToEnum("DamageStabilization")[0]
-def DamagePenaltyThresholdEnum(): return StringToEnum("DamagePenaltyThreshold")[0]
-def DamagePenaltyLockEnum(): return StringToEnum("DamagePenaltyLock")[0]
-def DamagePenaltyFactorEnum(): return StringToEnum("DamagePenaltyFactor")[0]
 def DamageMaxiterEnum(): return StringToEnum("DamageMaxiter")[0]
 def DamageSpcdamageEnum(): return StringToEnum("DamageSpcdamage")[0]
