Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 16161)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 16162)
@@ -1448,5 +1448,5 @@
 
 	/*Go through all the input objects, and find the one corresponding to enum_type, if it exists: */
-	if (enum_type==MaterialsRheologyBbarEnum || enum_type==MaterialsDamageDbarEnum)
+	if (enum_type==MaterialsRheologyBbarEnum || enum_type==DamageDbarEnum)
 	 input=this->material->inputs->GetInput(enum_type);
 	else
@@ -1564,5 +1564,5 @@
 					break;
 				case MaterialsRheologyBbarEnum:
-				case MaterialsDamageDbarEnum:
+				case DamageDbarEnum:
 					/*Material will take care of it*/ break;
 				default:
@@ -1779,5 +1779,5 @@
 		}
 		/*update input*/
-		if (name==MaterialsRheologyBbarEnum || name==MaterialsRheologyBEnum || name==MaterialsDamageDEnum || name==MaterialsDamageDbarEnum){
+		if (name==MaterialsRheologyBbarEnum || name==MaterialsRheologyBEnum || name==DamageDEnum || name==DamageDbarEnum){
 			material->inputs->AddInput(new TriaInput(name,values,P1Enum));
 		}
@@ -1793,5 +1793,5 @@
 		}
 		/*update input*/
-		if(name==MaterialsRheologyBbarEnum || name==MaterialsRheologyBEnum || name==MaterialsDamageDEnum || name==MaterialsDamageDbarEnum){
+		if(name==MaterialsRheologyBbarEnum || name==MaterialsRheologyBEnum || name==DamageDEnum || name==DamageDbarEnum){
 			material->inputs->AddInput(new TriaInput(name,values,P1Enum));
 		}
@@ -1954,5 +1954,5 @@
 				name==FrictionCoefficientEnum ||
 				name==MaterialsRheologyBbarEnum ||
-				name==MaterialsDamageDbarEnum ||
+				name==DamageDbarEnum ||
 				name==GradientEnum ||
 				name==OldGradientEnum ||
@@ -3718,5 +3718,5 @@
 	for(int i=0;i<num_controls;i++){
 
-		if(control_type[i]==MaterialsRheologyBbarEnum || control_type[i]==MaterialsDamageDbarEnum){
+		if(control_type[i]==MaterialsRheologyBbarEnum || control_type[i]==DamageDbarEnum){
 			input=(Input*)material->inputs->GetInput(control_type[i]); _assert_(input);
 		}
@@ -3745,5 +3745,5 @@
 	Input* input=NULL;
 
-	if(enum_type==MaterialsRheologyBbarEnum || enum_type==MaterialsDamageDbarEnum){
+	if(enum_type==MaterialsRheologyBbarEnum || enum_type==DamageDbarEnum){
 		input=(Input*)material->inputs->GetInput(enum_type);
 	}
@@ -3763,5 +3763,5 @@
 	Input* input=NULL;
 
-	if(enum_type==MaterialsRheologyBbarEnum || enum_type==MaterialsDamageDbarEnum){
+	if(enum_type==MaterialsRheologyBbarEnum || enum_type==DamageDbarEnum){
 		input=(Input*)material->inputs->GetInput(enum_type);
 	}
@@ -3782,5 +3782,5 @@
 	Input* input=NULL;
 
-	if(enum_type==MaterialsRheologyBbarEnum || enum_type==MaterialsDamageDbarEnum){
+	if(enum_type==MaterialsRheologyBbarEnum || enum_type==DamageDbarEnum){
 		input=(Input*)material->inputs->GetInput(enum_type);
 	}
@@ -3813,5 +3813,5 @@
 			GradjBSSA(gradient,control_index);
 			break;
-		case MaterialsDamageDbarEnum:
+		case DamageDbarEnum:
 			GradjDSSA(gradient,control_index);
 			break;
@@ -3987,5 +3987,5 @@
 	Input* adjointx_input=inputs->GetInput(AdjointxEnum);                       _assert_(adjointx_input);
 	Input* adjointy_input=inputs->GetInput(AdjointyEnum);                       _assert_(adjointy_input);
-	Input* rheologyd_input=material->inputs->GetInput(MaterialsDamageDbarEnum); _assert_(rheologyd_input);
+	Input* rheologyd_input=material->inputs->GetInput(DamageDbarEnum); _assert_(rheologyd_input);
 
 	/* Start  looping on the number of gaussian points: */
@@ -5367,5 +5367,5 @@
 
 	/*Get input (either in element or material)*/
-	if(control_enum==MaterialsRheologyBbarEnum || control_enum==MaterialsDamageDbarEnum){
+	if(control_enum==MaterialsRheologyBbarEnum || control_enum==DamageDbarEnum){
 		input=(Input*)material->inputs->GetInput(control_enum); _assert_(input);
 	}
@@ -5402,5 +5402,5 @@
 	new_input = new TriaInput(control_enum,values,P1Enum);
 
-	if(control_enum==MaterialsRheologyBbarEnum || control_enum==MaterialsDamageDbarEnum){
+	if(control_enum==MaterialsRheologyBbarEnum || control_enum==DamageDbarEnum){
 		input=(Input*)material->inputs->GetInput(control_enum); _assert_(input);
 	}
Index: /issm/trunk-jpl/src/c/classes/Materials/Matdamageice.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Materials/Matdamageice.cpp	(revision 16161)
+++ /issm/trunk-jpl/src/c/classes/Materials/Matdamageice.cpp	(revision 16162)
@@ -167,5 +167,5 @@
 	IssmDouble D;
 
-	inputs->GetInputAverage(&D,MaterialsDamageDEnum);
+	inputs->GetInputAverage(&D,DamageDEnum);
 	return D;
 }
@@ -177,5 +177,5 @@
 	IssmDouble D;
 
-	inputs->GetInputAverage(&D,MaterialsDamageDEnum);
+	inputs->GetInputAverage(&D,DamageDEnum);
 	return 1/(1-D);
 }
@@ -186,5 +186,5 @@
 	/*Output*/
 	IssmDouble Dbar;
-	inputs->GetInputAverage(&Dbar,MaterialsDamageDbarEnum);
+	inputs->GetInputAverage(&Dbar,DamageDbarEnum);
 	return 1/(1-Dbar);
 }
@@ -195,5 +195,5 @@
 	/*Output*/
 	IssmDouble Dbar;
-	inputs->GetInputAverage(&Dbar,MaterialsDamageDbarEnum);
+	inputs->GetInputAverage(&Dbar,DamageDbarEnum);
 	return Dbar;
 }
@@ -798,7 +798,7 @@
 
 		/*Get D*/
-		if (iomodel->Data(MaterialsDamageDEnum)) {
-			for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(MaterialsDamageDEnum)[iomodel->elements[num_vertices*index+i]-1];
-			this->inputs->AddInput(new TriaInput(MaterialsDamageDbarEnum,nodeinputs,P1Enum));
+		if (iomodel->Data(DamageDEnum)) {
+			for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(DamageDEnum)[iomodel->elements[num_vertices*index+i]-1];
+			this->inputs->AddInput(new TriaInput(DamageDbarEnum,nodeinputs,P1Enum));
 		}
 
@@ -817,11 +817,11 @@
 						}
 						break;
-					case MaterialsDamageDbarEnum:
-						if (iomodel->Data(MaterialsDamageDEnum)){
-							_assert_(iomodel->Data(MaterialsDamageDEnum));_assert_(iomodel->Data(InversionMinParametersEnum)); _assert_(iomodel->Data(InversionMaxParametersEnum)); 
-							for(j=0;j<num_vertices;j++)nodeinputs[j]=iomodel->Data(MaterialsDamageDEnum)[iomodel->elements[num_vertices*index+j]-1];
+					case DamageDbarEnum:
+						if (iomodel->Data(DamageDEnum)){
+							_assert_(iomodel->Data(DamageDEnum));_assert_(iomodel->Data(InversionMinParametersEnum)); _assert_(iomodel->Data(InversionMaxParametersEnum)); 
+							for(j=0;j<num_vertices;j++)nodeinputs[j]=iomodel->Data(DamageDEnum)[iomodel->elements[num_vertices*index+j]-1];
 							for(j=0;j<num_vertices;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(iomodel->elements[num_vertices*index+j]-1)*num_control_type+i];
 							for(j=0;j<num_vertices;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(iomodel->elements[num_vertices*index+j]-1)*num_control_type+i];
-							this->inputs->AddInput(new ControlInput(MaterialsDamageDbarEnum,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
+							this->inputs->AddInput(new ControlInput(DamageDbarEnum,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
 						}
 						break;
@@ -856,7 +856,7 @@
 
 		/*Get D*/
-		if (iomodel->Data(MaterialsDamageDEnum)) {
-			for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(MaterialsDamageDEnum)[iomodel->elements[num_vertices*index+i]-1];
-			this->inputs->AddInput(new PentaInput(MaterialsDamageDEnum,nodeinputs,P1Enum));
+		if (iomodel->Data(DamageDEnum)) {
+			for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(DamageDEnum)[iomodel->elements[num_vertices*index+i]-1];
+			this->inputs->AddInput(new PentaInput(DamageDEnum,nodeinputs,P1Enum));
 		}
 
@@ -875,11 +875,11 @@
 						}
 						break;
-					case MaterialsDamageDbarEnum:
-						if (iomodel->Data(MaterialsDamageDEnum)){
-							_assert_(iomodel->Data(MaterialsDamageDEnum));_assert_(iomodel->Data(InversionMinParametersEnum)); _assert_(iomodel->Data(InversionMaxParametersEnum)); 
-							for(j=0;j<num_vertices;j++)nodeinputs[j]=iomodel->Data(MaterialsDamageDEnum)[iomodel->elements[num_vertices*index+j]-1];
+					case DamageDbarEnum:
+						if (iomodel->Data(DamageDEnum)){
+							_assert_(iomodel->Data(DamageDEnum));_assert_(iomodel->Data(InversionMinParametersEnum)); _assert_(iomodel->Data(InversionMaxParametersEnum)); 
+							for(j=0;j<num_vertices;j++)nodeinputs[j]=iomodel->Data(DamageDEnum)[iomodel->elements[num_vertices*index+j]-1];
 							for(j=0;j<num_vertices;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(iomodel->elements[num_vertices*index+j]-1)*num_control_type+i];
 							for(j=0;j<num_vertices;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(iomodel->elements[num_vertices*index+j]-1)*num_control_type+i];
-							this->inputs->AddInput(new ControlInput(MaterialsDamageDEnum,PentaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
+							this->inputs->AddInput(new ControlInput(DamageDEnum,PentaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1));
 						}
 						break;
@@ -903,6 +903,6 @@
 				name==MaterialsRheologyBbarEnum ||
 				name==MaterialsRheologyNEnum ||
-				name==MaterialsDamageDEnum ||
-				name==MaterialsDamageDbarEnum
+				name==DamageDEnum ||
+				name==DamageDbarEnum
 		){
 		return true;
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp	(revision 16161)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp	(revision 16162)
@@ -40,5 +40,5 @@
 			case FrictionCoefficientEnum:   iomodel->FetchData(1,FrictionCoefficientEnum); break;
 			case MaterialsRheologyBbarEnum: iomodel->FetchData(1,MaterialsRheologyBEnum); break;
-			case MaterialsDamageDbarEnum: iomodel->FetchData(1,MaterialsDamageDEnum); break;
+			case DamageDbarEnum: iomodel->FetchData(1,DamageDEnum); break;
 			default: _error_("Control " << EnumToStringx(reCast<int,IssmDouble>(iomodel->Data(InversionControlParametersEnum)[i])) << " not implemented yet");
 		}
@@ -59,4 +59,4 @@
 
 	/*Free data: */
-	iomodel->DeleteData(4+7,InversionControlParametersEnum,InversionCostFunctionsCoefficientsEnum,InversionMinParametersEnum,InversionMaxParametersEnum,BalancethicknessThickeningRateEnum,VxEnum,VyEnum,ThicknessEnum,FrictionCoefficientEnum,MaterialsRheologyBEnum,MaterialsDamageDEnum);
+	iomodel->DeleteData(4+7,InversionControlParametersEnum,InversionCostFunctionsCoefficientsEnum,InversionMinParametersEnum,InversionMaxParametersEnum,BalancethicknessThickeningRateEnum,VxEnum,VyEnum,ThicknessEnum,FrictionCoefficientEnum,MaterialsRheologyBEnum,DamageDEnum);
 }
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp	(revision 16161)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp	(revision 16162)
@@ -64,5 +64,5 @@
 			break;
 		case MatdamageiceEnum:
-			iomodel->FetchData(3,MaterialsRheologyBEnum,MaterialsRheologyNEnum,MaterialsDamageDEnum);
+			iomodel->FetchData(3,MaterialsRheologyBEnum,MaterialsRheologyNEnum,DamageDEnum);
 			for (i=0;i<iomodel->numberofelements;i++) if(iomodel->my_elements[i]) materials->AddObject(new Matdamageice(i+1,i,iomodel));
 			break;
@@ -73,5 +73,5 @@
 	/*Free data: */
 	iomodel->DeleteData(8,MeshUpperelementsEnum,MeshLowerelementsEnum,
-				MaterialsRheologyBEnum,MaterialsRheologyNEnum,MaterialsDamageDEnum,InversionControlParametersEnum,InversionMinParametersEnum,
+				MaterialsRheologyBEnum,MaterialsRheologyNEnum,DamageDEnum,InversionControlParametersEnum,InversionMinParametersEnum,
 				InversionMaxParametersEnum);
 
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/Stressbalance/UpdateElementsStressbalance.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/Stressbalance/UpdateElementsStressbalance.cpp	(revision 16161)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/Stressbalance/UpdateElementsStressbalance.cpp	(revision 16162)
@@ -102,5 +102,5 @@
 	iomodel->FetchDataToInput(elements,LoadingforceYEnum);
 	if(materials_type==MatdamageiceEnum){
-		iomodel->FetchDataToInput(elements,MaterialsDamageDEnum);
+		iomodel->FetchDataToInput(elements,DamageDEnum);
 	}
 	if(iomodel->dim==3){
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 16161)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 16162)
@@ -154,12 +154,13 @@
 	MaterialsRheologyZEnum,
 	MaterialsRheologyZbarEnum,
-	MaterialsDamageDEnum,
-	MaterialsDamageDbarEnum,
-	MaterialsDamageLawEnum,
-	MaterialsDamageC1Enum,
-	MaterialsDamageC2Enum,
-	MaterialsDamageC3Enum,
-	MaterialsDamageC4Enum,
-	MaterialsDamageStressThresholdEnum,
+	DamageDEnum,
+	DamageDbarEnum,
+	DamageIsdamageEnum,
+	DamageLawEnum,
+	DamageC1Enum,
+	DamageC2Enum,
+	DamageC3Enum,
+	DamageC4Enum,
+	DamageStressThresholdEnum,
 	MaterialsRhoIceEnum,
 	MaterialsRhoWaterEnum,
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 16161)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 16162)
@@ -162,12 +162,13 @@
 		case MaterialsRheologyZEnum : return "MaterialsRheologyZ";
 		case MaterialsRheologyZbarEnum : return "MaterialsRheologyZbar";
-		case MaterialsDamageDEnum : return "MaterialsDamageD";
-		case MaterialsDamageDbarEnum : return "MaterialsDamageDbar";
-		case MaterialsDamageLawEnum : return "MaterialsDamageLaw";
-		case MaterialsDamageC1Enum : return "MaterialsDamageC1";
-		case MaterialsDamageC2Enum : return "MaterialsDamageC2";
-		case MaterialsDamageC3Enum : return "MaterialsDamageC3";
-		case MaterialsDamageC4Enum : return "MaterialsDamageC4";
-		case MaterialsDamageStressThresholdEnum : return "MaterialsDamageStressThreshold";
+		case DamageDEnum : return "DamageD";
+		case DamageDbarEnum : return "DamageDbar";
+		case DamageIsdamageEnum : return "DamageIsdamage";
+		case DamageLawEnum : return "DamageLaw";
+		case DamageC1Enum : return "DamageC1";
+		case DamageC2Enum : return "DamageC2";
+		case DamageC3Enum : return "DamageC3";
+		case DamageC4Enum : return "DamageC4";
+		case DamageStressThresholdEnum : return "DamageStressThreshold";
 		case MaterialsRhoIceEnum : return "MaterialsRhoIce";
 		case MaterialsRhoWaterEnum : return "MaterialsRhoWater";
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 16161)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 16162)
@@ -165,12 +165,13 @@
 	      else if (strcmp(name,"MaterialsRheologyZ")==0) return MaterialsRheologyZEnum;
 	      else if (strcmp(name,"MaterialsRheologyZbar")==0) return MaterialsRheologyZbarEnum;
-	      else if (strcmp(name,"MaterialsDamageD")==0) return MaterialsDamageDEnum;
-	      else if (strcmp(name,"MaterialsDamageDbar")==0) return MaterialsDamageDbarEnum;
-	      else if (strcmp(name,"MaterialsDamageLaw")==0) return MaterialsDamageLawEnum;
-	      else if (strcmp(name,"MaterialsDamageC1")==0) return MaterialsDamageC1Enum;
-	      else if (strcmp(name,"MaterialsDamageC2")==0) return MaterialsDamageC2Enum;
-	      else if (strcmp(name,"MaterialsDamageC3")==0) return MaterialsDamageC3Enum;
-	      else if (strcmp(name,"MaterialsDamageC4")==0) return MaterialsDamageC4Enum;
-	      else if (strcmp(name,"MaterialsDamageStressThreshold")==0) return MaterialsDamageStressThresholdEnum;
+	      else if (strcmp(name,"DamageD")==0) return DamageDEnum;
+	      else if (strcmp(name,"DamageDbar")==0) return DamageDbarEnum;
+	      else if (strcmp(name,"DamageIsdamage")==0) return DamageIsdamageEnum;
+	      else if (strcmp(name,"DamageLaw")==0) return DamageLawEnum;
+	      else if (strcmp(name,"DamageC1")==0) return DamageC1Enum;
+	      else if (strcmp(name,"DamageC2")==0) return DamageC2Enum;
+	      else if (strcmp(name,"DamageC3")==0) return DamageC3Enum;
+	      else if (strcmp(name,"DamageC4")==0) return DamageC4Enum;
+	      else if (strcmp(name,"DamageStressThreshold")==0) return DamageStressThresholdEnum;
 	      else if (strcmp(name,"MaterialsRhoIce")==0) return MaterialsRhoIceEnum;
 	      else if (strcmp(name,"MaterialsRhoWater")==0) return MaterialsRhoWaterEnum;
@@ -259,9 +260,9 @@
 	      else if (strcmp(name,"ThermalMaxiter")==0) return ThermalMaxiterEnum;
 	      else if (strcmp(name,"ThermalPenaltyFactor")==0) return ThermalPenaltyFactorEnum;
-	      else if (strcmp(name,"ThermalPenaltyLock")==0) return ThermalPenaltyLockEnum;
          else stage=3;
    }
    if(stage==3){
-	      if (strcmp(name,"ThermalPenaltyThreshold")==0) return ThermalPenaltyThresholdEnum;
+	      if (strcmp(name,"ThermalPenaltyLock")==0) return ThermalPenaltyLockEnum;
+	      else if (strcmp(name,"ThermalPenaltyThreshold")==0) return ThermalPenaltyThresholdEnum;
 	      else if (strcmp(name,"ThermalSpctemperature")==0) return ThermalSpctemperatureEnum;
 	      else if (strcmp(name,"ThermalStabilization")==0) return ThermalStabilizationEnum;
@@ -382,9 +383,9 @@
 	      else if (strcmp(name,"Node")==0) return NodeEnum;
 	      else if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum;
-	      else if (strcmp(name,"NumericalfluxType")==0) return NumericalfluxTypeEnum;
          else stage=4;
    }
    if(stage==4){
-	      if (strcmp(name,"Param")==0) return ParamEnum;
+	      if (strcmp(name,"NumericalfluxType")==0) return NumericalfluxTypeEnum;
+	      else if (strcmp(name,"Param")==0) return ParamEnum;
 	      else if (strcmp(name,"L1L2IceFront")==0) return L1L2IceFrontEnum;
 	      else if (strcmp(name,"HOIceFront")==0) return HOIceFrontEnum;
@@ -505,9 +506,9 @@
 	      else if (strcmp(name,"StressTensorxz")==0) return StressTensorxzEnum;
 	      else if (strcmp(name,"StressTensoryy")==0) return StressTensoryyEnum;
-	      else if (strcmp(name,"StressTensoryz")==0) return StressTensoryzEnum;
          else stage=5;
    }
    if(stage==5){
-	      if (strcmp(name,"StressTensorzz")==0) return StressTensorzzEnum;
+	      if (strcmp(name,"StressTensoryz")==0) return StressTensoryzEnum;
+	      else if (strcmp(name,"StressTensorzz")==0) return StressTensorzzEnum;
 	      else if (strcmp(name,"GiaCrossSectionShape")==0) return GiaCrossSectionShapeEnum;
 	      else if (strcmp(name,"GiadWdt")==0) return GiadWdtEnum;
Index: /issm/trunk-jpl/src/m/classes/damage.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/damage.m	(revision 16161)
+++ /issm/trunk-jpl/src/m/classes/damage.m	(revision 16162)
@@ -8,5 +8,5 @@
 	% {{{
 		%damage 
-		isdamage                   = NaN;
+		isdamage            = NaN;
 		D                   = NaN;
 		law                 = '';
@@ -56,12 +56,14 @@
 		function md = checkconsistency(obj,md,solution,analyses) % {{{
 			
-			md = checkfield(md,'materials.D','>=0',0,'size',[md.mesh.numberofvertices 1]);
-			md = checkfield(md,'materials.law','values',{'undamaged','pralong'});
+			if obj.isdamage,
+				md = checkfield(md,'damage.D','>=0',0,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'damage.law','values',{'undamaged','pralong'});
+			end
 			if strcmpi(obj.law,'pralong'),
-				md = checkfield(md,'materials.c1','>=',0);
-				md = checkfield(md,'materials.c2','>=',0);
-				md = checkfield(md,'materials.c3','>=',0);
-				md = checkfield(md,'materials.c4','>=',0);
-				md = checkfield(md,'materials.stress_threshold','>=',0);
+				md = checkfield(md,'damage.c1','>=',0);
+				md = checkfield(md,'damage.c2','>=',0);
+				md = checkfield(md,'damage.c3','>=',0);
+				md = checkfield(md,'damage.c4','>=',0);
+				md = checkfield(md,'damage.stress_threshold','>=',0);
 			end
 
@@ -82,13 +84,16 @@
 		end % }}}
 		function marshall(obj,md,fid) % {{{
-			
-			WriteData(fid,'object',obj,'class','materials','fieldname','D','format','DoubleMat','mattype',1);
-			WriteData(fid,'object',obj,'class','materials','fieldname','law','format','String');
+		
+			WriteData(fid,'object',obj,'class','damage','fieldname','isdamage','format','DoubleMat','mattype',1);
+			if obj.isdamage,
+				WriteData(fid,'object',obj,'class','damage','fieldname','D','format','DoubleMat','mattype',1);
+				WriteData(fid,'object',obj,'class','damage','fieldname','law','format','String');
+			end
 			if strcmpi(obj.law,'pralong'),
-				WriteData(fid,'object',obj,'class','materials','fieldname','c1','format','Double');
-				WriteData(fid,'object',obj,'class','materials','fieldname','c2','format','Double');
-				WriteData(fid,'object',obj,'class','materials','fieldname','c3','format','Double');
-				WriteData(fid,'object',obj,'class','materials','fieldname','c4','format','Double');
-				WriteData(fid,'object',obj,'class','materials','fieldname','stress_threshold','format','Double');
+				WriteData(fid,'object',obj,'class','damage','fieldname','c1','format','Double');
+				WriteData(fid,'object',obj,'class','damage','fieldname','c2','format','Double');
+				WriteData(fid,'object',obj,'class','damage','fieldname','c3','format','Double');
+				WriteData(fid,'object',obj,'class','damage','fieldname','c4','format','Double');
+				WriteData(fid,'object',obj,'class','damage','fieldname','stress_threshold','format','Double');
 			end
 
Index: /issm/trunk-jpl/src/m/classes/damage.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/damage.py	(revision 16162)
+++ /issm/trunk-jpl/src/m/classes/damage.py	(revision 16162)
@@ -0,0 +1,86 @@
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from StringToEnum import StringToEnum
+from checkfield import *
+from WriteData import *
+
+class damage(object):
+	"""
+	DAMAGE class definition
+
+	   Usage:
+	      damage=damage();
+	"""
+
+	def __init__(self,*args):    # {{{
+			
+		#damage: 
+		isdamage = float('NaN')
+		self.D   = float('NaN')
+		self.law   = ''
+		
+		#parameters for law 'initial': 
+		self.stress_threshold    = float('NaN')
+		self.c1                  = float('NaN')
+		self.c2                  = float('NaN')
+		self.c3                  = float('NaN')
+		self.c4                  = float('NaN')
+
+		if not len(args):
+			self.setdefaultparameters()
+		else:
+			raise RuntimeError("constructor not supported")
+
+	# }}}
+	def __repr__(self):    # {{{
+		s ='   Damage:\n'
+
+		s+="%s\n" % fielddisplay(self,"D","damage tensor (scalar for now)")
+		s+="%s\n" % fielddisplay(self,"law","damage law (string) from ['undamaged','pralong']")
+
+		if (self.law=='pralong'):
+			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]")
+
+		return s
+	# }}}
+	def setdefaultparameters(self):    # {{{
+
+		#damage parameters: 
+		self.isdamage=0
+		self.D=0
+		self.law='undamaged'
+		self.stress_threshold=0
+		self.c1=0
+		self.c2=0
+		self.c3=0
+		self.c4=0
+
+	# }}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+	
+		md = checkfield(md,'damage.D','>=',0,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'damage.law','values',['undamaged','pralong'])
+		if self.law == 'pralong':
+			md = checkfield(md,'damage.c1','>=',0)
+			md = checkfield(md,'damage.c2','>=',0)
+			md = checkfield(md,'damage.c3','>=',0)
+			md = checkfield(md,'damage.c4','>=',0)
+			md = checkfield(md,'damage.stress_threshold','>=',0)
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		WriteData(fid,'object',self,'class','damage','fieldname','D','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'class','damage','fieldname','law','format','String')
+		if self.damage_law=='pralong':
+			WriteData(fid,'object',self,'class','damage','fieldname','c1','format','Double')
+			WriteData(fid,'object',self,'class','damage','fieldname','c2','format','Double')
+			WriteData(fid,'object',self,'class','damage','fieldname','c3','format','Double')
+			WriteData(fid,'object',self,'class','damage','fieldname','c4','format','Double')
+			WriteData(fid,'object',self,'class','damage','fieldname','stress_threshold','format','Double')
+	# }}}
Index: /issm/trunk-jpl/src/m/classes/matdamageice.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/matdamageice.m	(revision 16161)
+++ /issm/trunk-jpl/src/m/classes/matdamageice.m	(revision 16162)
@@ -122,12 +122,12 @@
 			md = checkfield(md,'materials.rheology_law','values',{'None' 'Paterson' 'Arrhenius' 'LliboutryDuval'});
 			
-			md = checkfield(md,'materials.damage_D','>',0,'size',[md.mesh.numberofvertices 1]);
-			md = checkfield(md,'materials.damage_law','values',{'initial'});
+			md = checkfield(md,'damage.D','>',0,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'damage.law','values',{'undamaged' 'pralong'});
 			if strcmpi(obj.damage_law,'initial'),
-				md = checkfield(md,'materials.damage_c1','>=',0);
-				md = checkfield(md,'materials.damage_c2','>=',0);
-				md = checkfield(md,'materials.damage_c3','>=',0);
-				md = checkfield(md,'materials.damage_c4','>=',0);
-				md = checkfield(md,'materials.damage_stress_threshold','>=',0);
+				md = checkfield(md,'damage.c1','>=',0);
+				md = checkfield(md,'damage.c2','>=',0);
+				md = checkfield(md,'damage.c3','>=',0);
+				md = checkfield(md,'damage.c4','>=',0);
+				md = checkfield(md,'damage.stress_threshold','>=',0);
 			end
 
@@ -161,12 +161,12 @@
 			fielddisplay(obj,'mantle_shear_modulus','Mantle shear modulus [Pa]');
 			fielddisplay(obj,'mantle_density','Mantle density [g/cm^-3]');
-			fielddisplay(obj,'damage_D','damage tensor (scalar)');
-			fielddisplay(obj,'damage_law','damage law (string) from {''initial''}');
+			fielddisplay(obj,'D','damage tensor (scalar)');
+			fielddisplay(obj,'law','damage law (string) from {''initial''}');
 			if strcmpi(obj.damage_law,'initial'),
-				fielddisplay(obj,'damage_c1','damage parameter 1');
-				fielddisplay(obj,'damage_c2','damage parameter 2');
-				fielddisplay(obj,'damage_c3','damage parameter 3');
-				fielddisplay(obj,'damage_c4','damage parameter 4');
-				fielddisplay(obj,'damage_stress_threshold','damage stress threshold [Pa]');
+				fielddisplay(obj,'c1','damage parameter 1');
+				fielddisplay(obj,'c2','damage parameter 2');
+				fielddisplay(obj,'c3','damage parameter 3');
+				fielddisplay(obj,'c4','damage parameter 4');
+				fielddisplay(obj,'stress_threshold','damage stress threshold [Pa]');
 			end
 
@@ -195,12 +195,12 @@
 			
 			%damage: 
-			WriteData(fid,'object',obj,'class','materials','fieldname','damage_D','format','DoubleMat','mattype',1);
-			WriteData(fid,'object',obj,'class','materials','fieldname','damage_law','format','String');
-			if strcmpi(obj.damage_law,'initial'),
-				WriteData(fid,'object',obj,'class','materials','fieldname','damage_c1','format','Double');
-				WriteData(fid,'object',obj,'class','materials','fieldname','damage_c2','format','Double');
-				WriteData(fid,'object',obj,'class','materials','fieldname','damage_c3','format','Double');
-				WriteData(fid,'object',obj,'class','materials','fieldname','damage_c4','format','Double');
-				WriteData(fid,'object',obj,'class','materials','fieldname','damage_stress_threshold','format','Double');
+			WriteData(fid,'object',obj,'class','damage','fieldname','D','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',obj,'class','damage','fieldname','law','format','String');
+			if strcmpi(obj.damage_law,'pralong'),
+				WriteData(fid,'object',obj,'class','damage','fieldname','c1','format','Double');
+				WriteData(fid,'object',obj,'class','damage','fieldname','c2','format','Double');
+				WriteData(fid,'object',obj,'class','damage','fieldname','c3','format','Double');
+				WriteData(fid,'object',obj,'class','damage','fieldname','c4','format','Double');
+				WriteData(fid,'object',obj,'class','damage','fieldname','stress_threshold','format','Double');
 			end
 
Index: /issm/trunk-jpl/src/m/classes/matdamageice.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/matdamageice.py	(revision 16161)
+++ /issm/trunk-jpl/src/m/classes/matdamageice.py	(revision 16162)
@@ -183,11 +183,11 @@
 		WriteData(fid,'object',self,'class','materials','fieldname','mantle_density','format','Double','scale',10.**3.);
 		
-		WriteData(fid,'object',self,'class','materials','fieldname','damage_D','format','DoubleMat','mattype',1)
-		WriteData(fid,'object',self,'class','materials','fieldname','damage_law','format','String')
+		WriteData(fid,'object',self,'class','damage','fieldname','D','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'class','damage','fieldname','law','format','String')
 		if self.damage_law=='initial':
-			WriteData(fid,'object',self,'class','materials','fieldname','damage_c1','format','Double')
-			WriteData(fid,'object',self,'class','materials','fieldname','damage_c2','format','Double')
-			WriteData(fid,'object',self,'class','materials','fieldname','damage_c3','format','Double')
-			WriteData(fid,'object',self,'class','materials','fieldname','damage_c4','format','Double')
-			WriteData(fid,'object',self,'class','materials','fieldname','damage_stress_threshold','format','Double')
+			WriteData(fid,'object',self,'class','damage','fieldname','c1','format','Double')
+			WriteData(fid,'object',self,'class','damage','fieldname','c2','format','Double')
+			WriteData(fid,'object',self,'class','damage','fieldname','c3','format','Double')
+			WriteData(fid,'object',self,'class','damage','fieldname','c4','format','Double')
+			WriteData(fid,'object',self,'class','damage','fieldname','stress_threshold','format','Double')
 	# }}}
Index: /issm/trunk-jpl/src/m/classes/model/model.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/model/model.py	(revision 16161)
+++ /issm/trunk-jpl/src/m/classes/model/model.py	(revision 16162)
@@ -10,4 +10,5 @@
 from basalforcings import basalforcings
 from matice import matice
+from damage import damage
 from friction import friction
 from flowequation import flowequation
@@ -58,4 +59,5 @@
 		self.basalforcings    = basalforcings()
 		self.materials        = matice()
+		self.damage           = damage()
 		self.friction         = friction()
 		self.flowequation     = flowequation()
@@ -99,4 +101,5 @@
 		        'basalforcings',\
 		        'materials',\
+		        'damage',\
 		        'friction',\
 		        'flowequation',\
@@ -136,4 +139,5 @@
 		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("basalforcings","[%s,%s]" % ("1x1",obj.basalforcings.__class__.__name__),"bed forcings"))
 		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("materials","[%s,%s]" % ("1x1",obj.materials.__class__.__name__),"material properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("damage","[%s,%s]" % ("1x1",obj.damage.__class__.__name__),"damage propagation laws"))
 		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("friction","[%s,%s]" % ("1x1",obj.friction.__class__.__name__),"basal friction/drag properties"))
 		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("flowequation","[%s,%s]" % ("1x1",obj.flowequation.__class__.__name__),"flow equations"))
@@ -627,4 +631,6 @@
 		md.materials.rheology_n=project3d(md,'vector',md.materials.rheology_n,'type','element')
 
+		#damage
+		md.damage.D=project3d(md,'vector',md.damage.D,'type','node')
 		#parameters
 		md.geometry.surface=project3d(md,'vector',md.geometry.surface,'type','node')
Index: /issm/trunk-jpl/src/m/dev/devpath.py
===================================================================
--- /issm/trunk-jpl/src/m/dev/devpath.py	(revision 16161)
+++ /issm/trunk-jpl/src/m/dev/devpath.py	(revision 16162)
@@ -24,3 +24,9 @@
 from plotmodel import plotmodel
 
+c = get_ipython().config
+c.InteractiveShellApp.exec_lines = []
+c.InteractiveShellApp.exec_lines.append('%load_ext autoreload')
+c.InteractiveShellApp.exec_lines.append('%autoreload 2')
+c.InteractiveShellApp.exec_lines.append('print "Warning: disable autoreload in startup.py to improve performance." ')
+
 print("\n  ISSM development path correctly loaded\n\n")
Index: /issm/trunk-jpl/src/m/enum/DamageC1Enum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/DamageC1Enum.m	(revision 16162)
+++ /issm/trunk-jpl/src/m/enum/DamageC1Enum.m	(revision 16162)
@@ -0,0 +1,11 @@
+function macro=DamageC1Enum()
+%DAMAGEC1ENUM - Enum of DamageC1
+%
+%   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=DamageC1Enum()
+
+macro=StringToEnum('DamageC1');
Index: /issm/trunk-jpl/src/m/enum/DamageC2Enum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/DamageC2Enum.m	(revision 16162)
+++ /issm/trunk-jpl/src/m/enum/DamageC2Enum.m	(revision 16162)
@@ -0,0 +1,11 @@
+function macro=DamageC2Enum()
+%DAMAGEC2ENUM - Enum of DamageC2
+%
+%   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=DamageC2Enum()
+
+macro=StringToEnum('DamageC2');
Index: /issm/trunk-jpl/src/m/enum/DamageC3Enum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/DamageC3Enum.m	(revision 16162)
+++ /issm/trunk-jpl/src/m/enum/DamageC3Enum.m	(revision 16162)
@@ -0,0 +1,11 @@
+function macro=DamageC3Enum()
+%DAMAGEC3ENUM - Enum of DamageC3
+%
+%   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=DamageC3Enum()
+
+macro=StringToEnum('DamageC3');
Index: /issm/trunk-jpl/src/m/enum/DamageC4Enum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/DamageC4Enum.m	(revision 16162)
+++ /issm/trunk-jpl/src/m/enum/DamageC4Enum.m	(revision 16162)
@@ -0,0 +1,11 @@
+function macro=DamageC4Enum()
+%DAMAGEC4ENUM - Enum of DamageC4
+%
+%   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=DamageC4Enum()
+
+macro=StringToEnum('DamageC4');
Index: /issm/trunk-jpl/src/m/enum/DamageDEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/DamageDEnum.m	(revision 16162)
+++ /issm/trunk-jpl/src/m/enum/DamageDEnum.m	(revision 16162)
@@ -0,0 +1,11 @@
+function macro=DamageDEnum()
+%DAMAGEDENUM - Enum of DamageD
+%
+%   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=DamageDEnum()
+
+macro=StringToEnum('DamageD');
Index: /issm/trunk-jpl/src/m/enum/DamageDbarEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/DamageDbarEnum.m	(revision 16162)
+++ /issm/trunk-jpl/src/m/enum/DamageDbarEnum.m	(revision 16162)
@@ -0,0 +1,11 @@
+function macro=DamageDbarEnum()
+%DAMAGEDBARENUM - Enum of DamageDbar
+%
+%   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=DamageDbarEnum()
+
+macro=StringToEnum('DamageDbar');
Index: /issm/trunk-jpl/src/m/enum/DamageIsdamageEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/DamageIsdamageEnum.m	(revision 16162)
+++ /issm/trunk-jpl/src/m/enum/DamageIsdamageEnum.m	(revision 16162)
@@ -0,0 +1,11 @@
+function macro=DamageIsdamageEnum()
+%DAMAGEISDAMAGEENUM - Enum of DamageIsdamage
+%
+%   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=DamageIsdamageEnum()
+
+macro=StringToEnum('DamageIsdamage');
Index: /issm/trunk-jpl/src/m/enum/DamageLawEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/DamageLawEnum.m	(revision 16162)
+++ /issm/trunk-jpl/src/m/enum/DamageLawEnum.m	(revision 16162)
@@ -0,0 +1,11 @@
+function macro=DamageLawEnum()
+%DAMAGELAWENUM - Enum of DamageLaw
+%
+%   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=DamageLawEnum()
+
+macro=StringToEnum('DamageLaw');
Index: /issm/trunk-jpl/src/m/enum/DamageStressThresholdEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/DamageStressThresholdEnum.m	(revision 16162)
+++ /issm/trunk-jpl/src/m/enum/DamageStressThresholdEnum.m	(revision 16162)
@@ -0,0 +1,11 @@
+function macro=DamageStressThresholdEnum()
+%DAMAGESTRESSTHRESHOLDENUM - Enum of DamageStressThreshold
+%
+%   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=DamageStressThresholdEnum()
+
+macro=StringToEnum('DamageStressThreshold');
Index: /issm/trunk-jpl/src/m/enum/EnumDefinitions.py
===================================================================
--- /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 16161)
+++ /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 16162)
@@ -154,12 +154,13 @@
 def MaterialsRheologyZEnum(): return StringToEnum("MaterialsRheologyZ")[0]
 def MaterialsRheologyZbarEnum(): return StringToEnum("MaterialsRheologyZbar")[0]
-def MaterialsDamageDEnum(): return StringToEnum("MaterialsDamageD")[0]
-def MaterialsDamageDbarEnum(): return StringToEnum("MaterialsDamageDbar")[0]
-def MaterialsDamageLawEnum(): return StringToEnum("MaterialsDamageLaw")[0]
-def MaterialsDamageC1Enum(): return StringToEnum("MaterialsDamageC1")[0]
-def MaterialsDamageC2Enum(): return StringToEnum("MaterialsDamageC2")[0]
-def MaterialsDamageC3Enum(): return StringToEnum("MaterialsDamageC3")[0]
-def MaterialsDamageC4Enum(): return StringToEnum("MaterialsDamageC4")[0]
-def MaterialsDamageStressThresholdEnum(): return StringToEnum("MaterialsDamageStressThreshold")[0]
+def DamageDEnum(): return StringToEnum("DamageD")[0]
+def DamageDbarEnum(): return StringToEnum("DamageDbar")[0]
+def DamageIsdamageEnum(): return StringToEnum("DamageIsdamage")[0]
+def DamageLawEnum(): return StringToEnum("DamageLaw")[0]
+def DamageC1Enum(): return StringToEnum("DamageC1")[0]
+def DamageC2Enum(): return StringToEnum("DamageC2")[0]
+def DamageC3Enum(): return StringToEnum("DamageC3")[0]
+def DamageC4Enum(): return StringToEnum("DamageC4")[0]
+def DamageStressThresholdEnum(): return StringToEnum("DamageStressThreshold")[0]
 def MaterialsRhoIceEnum(): return StringToEnum("MaterialsRhoIce")[0]
 def MaterialsRhoWaterEnum(): return StringToEnum("MaterialsRhoWater")[0]
Index: sm/trunk-jpl/src/m/enum/MaterialsDamageC1Enum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/MaterialsDamageC1Enum.m	(revision 16161)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=MaterialsDamageC1Enum()
-%MATERIALSDAMAGEC1ENUM - Enum of MaterialsDamageC1
-%
-%   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=MaterialsDamageC1Enum()
-
-macro=StringToEnum('MaterialsDamageC1');
Index: sm/trunk-jpl/src/m/enum/MaterialsDamageC2Enum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/MaterialsDamageC2Enum.m	(revision 16161)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=MaterialsDamageC2Enum()
-%MATERIALSDAMAGEC2ENUM - Enum of MaterialsDamageC2
-%
-%   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=MaterialsDamageC2Enum()
-
-macro=StringToEnum('MaterialsDamageC2');
Index: sm/trunk-jpl/src/m/enum/MaterialsDamageC3Enum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/MaterialsDamageC3Enum.m	(revision 16161)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=MaterialsDamageC3Enum()
-%MATERIALSDAMAGEC3ENUM - Enum of MaterialsDamageC3
-%
-%   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=MaterialsDamageC3Enum()
-
-macro=StringToEnum('MaterialsDamageC3');
Index: sm/trunk-jpl/src/m/enum/MaterialsDamageC4Enum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/MaterialsDamageC4Enum.m	(revision 16161)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=MaterialsDamageC4Enum()
-%MATERIALSDAMAGEC4ENUM - Enum of MaterialsDamageC4
-%
-%   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=MaterialsDamageC4Enum()
-
-macro=StringToEnum('MaterialsDamageC4');
Index: sm/trunk-jpl/src/m/enum/MaterialsDamageDEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/MaterialsDamageDEnum.m	(revision 16161)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=MaterialsDamageDEnum()
-%MATERIALSDAMAGEDENUM - Enum of MaterialsDamageD
-%
-%   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=MaterialsDamageDEnum()
-
-macro=StringToEnum('MaterialsDamageD');
Index: sm/trunk-jpl/src/m/enum/MaterialsDamageDbarEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/MaterialsDamageDbarEnum.m	(revision 16161)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=MaterialsDamageDbarEnum()
-%MATERIALSDAMAGEDBARENUM - Enum of MaterialsDamageDbar
-%
-%   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=MaterialsDamageDbarEnum()
-
-macro=StringToEnum('MaterialsDamageDbar');
Index: sm/trunk-jpl/src/m/enum/MaterialsDamageLawEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/MaterialsDamageLawEnum.m	(revision 16161)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=MaterialsDamageLawEnum()
-%MATERIALSDAMAGELAWENUM - Enum of MaterialsDamageLaw
-%
-%   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=MaterialsDamageLawEnum()
-
-macro=StringToEnum('MaterialsDamageLaw');
Index: sm/trunk-jpl/src/m/enum/MaterialsDamageStressThresholdEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/MaterialsDamageStressThresholdEnum.m	(revision 16161)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=MaterialsDamageStressThresholdEnum()
-%MATERIALSDAMAGESTRESSTHRESHOLDENUM - Enum of MaterialsDamageStressThreshold
-%
-%   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=MaterialsDamageStressThresholdEnum()
-
-macro=StringToEnum('MaterialsDamageStressThreshold');
Index: /issm/trunk-jpl/src/m/exp/expwrite.m
===================================================================
--- /issm/trunk-jpl/src/m/exp/expwrite.m	(revision 16161)
+++ /issm/trunk-jpl/src/m/exp/expwrite.m	(revision 16162)
@@ -41,5 +41,13 @@
 	fprintf(fid,'%s\n','## Icon:0');
 	fprintf(fid,'%s\n','# Points Count Value');
-	fprintf(fid,'%i %f\n',[length(a(n).x) a(n).density]);
+	if isfield(a,'density'),
+		if ~isempty(a(n).density),
+			fprintf(fid,'%i %f\n',[length(a(n).x) a(n).density]);
+		else
+			fprintf(fid,'%i %f\n',[length(a(n).x) 1.]);
+		end
+	else
+		fprintf(fid,'%i %f\n',[length(a(n).x) 1.]);
+	end
 	fprintf(fid,'%s\n','# X pos Y pos');
 	fprintf(fid,'%10.10f %10.10f\n',[a(n).x(:) a(n).y(:)]');
Index: /issm/trunk-jpl/src/m/plot/applyoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/plot/applyoptions.py	(revision 16161)
+++ /issm/trunk-jpl/src/m/plot/applyoptions.py	(revision 16162)
@@ -123,5 +123,11 @@
 	#view
 
-	#axis
+	#axis {{{
+	if options.exist('axis'):
+		if options.getfieldvalue('axis',True)=='off':
+			p.gca().ticklabel_format(style='plain')
+			p.setp(p.gca().get_xticklabels(), visible=False)
+			p.setp(p.gca().get_yticklabels(), visible=False)
+	# }}}
 
 	#box
@@ -164,6 +170,17 @@
 
 	#colorbar {{{
-	if options.getfieldvalue('colorbar','off')==1:
-		cb=p.colorbar()
+	if options.getfieldvalue('colorbar',1)==1:
+		if options.exist('clim'):
+			# build custom colorbar (does not yet allow customizing the location)
+			fig = p.gcf()
+			ax = p.gca()
+			divider = make_axes_locatable(ax)
+			cax = divider.new_horizontal("5%", pad=0.05, axes_class=maxes.Axes)
+			fig.add_axes(cax) 
+			cmap = mpl.cm.jet
+			norm = mpl.colors.Normalize(vmin=lims[0], vmax=lims[1])
+			cb = mpl.colorbar.ColorbarBase(cax, cmap=cmap, norm=norm)
+		else:
+			cb=p.colorbar()
 		cb.locator=MaxNLocator(nbins=5) # default 5 ticks
 		cb.update_ticks()
