Index: /issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 7351)
+++ /issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 7352)
@@ -65,4 +65,5 @@
 	parameters->AddObject(new DoubleParam(HeatCapacityEnum,iomodel->heatcapacity));
 	parameters->AddObject(new IntParam(ArtDiffEnum,iomodel->artdiff));
+	parameters->AddObject(new IntParam(MeltingRateCorrectionApplyEnum,iomodel->melting_rate_correction_apply));
 	parameters->AddObject(new DoubleParam(PenaltyMeltingEnum,iomodel->penalty_melting));
 	parameters->AddObject(new IntParam(MinThermalConstraintsEnum,iomodel->min_thermal_constraints));
Index: /issm/trunk/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp	(revision 7351)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp	(revision 7352)
@@ -29,4 +29,5 @@
 	IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"accumulation_rate");
 	IoModelFetchData(&iomodel->melting_rate,NULL,NULL,iomodel_handle,"melting_rate");
+	if(iomodel->melting_rate_correction_apply)IoModelFetchData(&iomodel->melting_rate_correction,NULL,NULL,iomodel_handle,"melting_rate_correction");
 	IoModelFetchData(&iomodel->vx,NULL,NULL,iomodel_handle,"vx");
 	IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy");
@@ -60,4 +61,5 @@
 	xfree((void**)&iomodel->accumulation_rate);
 	xfree((void**)&iomodel->melting_rate);
+	xfree((void**)&iomodel->melting_rate_correction);
 	xfree((void**)&iomodel->vx);
 	xfree((void**)&iomodel->vy);
Index: /issm/trunk/src/c/objects/Elements/Tria.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 7351)
+++ /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 7352)
@@ -2321,5 +2321,5 @@
 	int        i,j,ig;
 	double     Jdettria,dt;
-	double     accumulation_g,melting_g,thickness_g;
+	double     accumulation_g,melting_g,melting_correction_g,thickness_g;
 	double     xyz_list[NUMVERTICES][3];
 	double     L[NUMVERTICES];
@@ -2335,6 +2335,8 @@
 	Input* accumulation_input=inputs->GetInput(AccumulationRateEnum); _assert_(accumulation_input);
 	Input* melting_input=inputs->GetInput(MeltingRateEnum);           _assert_(melting_input);
+	Input* melting_correction_input=inputs->GetInput(MeltingRateCorrectionEnum);           
 	Input* thickness_input=inputs->GetInput(ThicknessEnum);           _assert_(thickness_input);
 
+	/*Initialize melting_correction_g to 0, do not forget!:*/
 	/* Start  looping on the number of gaussian points: */
 	gauss=new GaussTria(2);
@@ -2349,6 +2351,7 @@
 		melting_input->GetParameterValue(&melting_g,gauss);
 		thickness_input->GetParameterValue(&thickness_g,gauss);
-
-		for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*(thickness_g+dt*(accumulation_g-melting_g))*L[i];
+		if(melting_correction_input) melting_correction_input->GetParameterValue(&melting_correction_g,gauss);
+
+		for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*(thickness_g+dt*(accumulation_g-melting_g-melting_correction_g))*L[i];
 	}
 
@@ -3678,4 +3681,8 @@
 		for(i=0;i<3;i++)nodeinputs[i]=iomodel->melting_rate[tria_vertex_ids[i]-1]/iomodel->yts;
 		this->inputs->AddInput(new TriaVertexInput(MeltingRateEnum,nodeinputs));
+	}
+	if (iomodel->melting_rate_correction) {
+		for(i=0;i<3;i++)nodeinputs[i]=iomodel->melting_rate_correction[tria_vertex_ids[i]-1]/iomodel->yts;
+		this->inputs->AddInput(new TriaVertexInput(MeltingRateCorrectionEnum,nodeinputs));
 	}
 	if (iomodel->accumulation_rate) {
Index: /issm/trunk/src/c/objects/IoModel.cpp
===================================================================
--- /issm/trunk/src/c/objects/IoModel.cpp	(revision 7351)
+++ /issm/trunk/src/c/objects/IoModel.cpp	(revision 7352)
@@ -83,4 +83,5 @@
 	xfree((void**)&this->geothermalflux);
 	xfree((void**)&this->melting_rate);
+	xfree((void**)&this->melting_rate_correction);
 	xfree((void**)&this->accumulation_rate);
 	xfree((void**)&this->dhdt);
@@ -205,4 +206,5 @@
 	IoModelFetchData(&this->mixed_layer_capacity,iomodel_handle,"mixed_layer_capacity");
 	IoModelFetchData(&this->thermal_exchange_velocity,iomodel_handle,"thermal_exchange_velocity");
+	IoModelFetchData(&this->melting_rate_correction_apply,iomodel_handle,"melting_rate_correction_apply");
 	
 	/*qmu: */
@@ -268,4 +270,6 @@
 	this->temperature=NULL;
 	this->melting_rate=NULL;
+	this->melting_rate_correction=NULL;
+	this->melting_rate_correction_apply=0;
 	this->geothermalflux=NULL;
 	this->elementonbed=NULL;
Index: /issm/trunk/src/c/objects/IoModel.h
===================================================================
--- /issm/trunk/src/c/objects/IoModel.h	(revision 7351)
+++ /issm/trunk/src/c/objects/IoModel.h	(revision 7352)
@@ -180,4 +180,6 @@
 		/*basal: */
 		double*  melting_rate;
+		double*  melting_rate_correction;
+		int      melting_rate_correction_apply;
 		double*  accumulation_rate;
 		double*  dhdt;
Index: /issm/trunk/src/m/classes/model.m
===================================================================
--- /issm/trunk/src/m/classes/model.m	(revision 7351)
+++ /issm/trunk/src/m/classes/model.m	(revision 7352)
@@ -251,4 +251,6 @@
 		 temperature=NaN; %temperature solution vector
 		 melting_rate=NaN;
+		 melting_rate_correction=NaN;
+		 melting_rate_correction_apply=NaN;
 		 pressure=NaN;
 
@@ -480,4 +482,7 @@
 			 md.latentheat=3.34*10^5;
 
+			 %melting rate correction: 
+			 md.melting_rate_correction_apply=0; %do not apply
+
 			 %ice thermal conductivity lamda (W/m/K)
 			 md.thermalconductivity=2.4;
Index: /issm/trunk/src/m/model/marshall.m
===================================================================
--- /issm/trunk/src/m/model/marshall.m	(revision 7351)
+++ /issm/trunk/src/m/model/marshall.m	(revision 7352)
@@ -90,4 +90,8 @@
 WriteData(fid,md.accumulation_rate,'Mat','accumulation_rate');
 WriteData(fid,md.melting_rate,'Mat','melting_rate');
+WriteData(fid,md.melting_rate_correction_apply,'Integer','melting_rate_correction_apply');
+if md.melting_rate_correction_apply,
+	WriteData(fid,md.melting_rate_correction,'Mat','melting_rate_correction');
+end
 WriteData(fid,md.dhdt,'Mat','dhdt');
 
