Index: /issm/trunk/src/c/objects/Loads/Icefront.cpp
===================================================================
--- /issm/trunk/src/c/objects/Loads/Icefront.cpp	(revision 5160)
+++ /issm/trunk/src/c/objects/Loads/Icefront.cpp	(revision 5161)
@@ -110,8 +110,8 @@
 	helement->Echo();
 	hmatpar->Echo();
-	printf("   parameters\n");
-	parameters->Echo();
-	printf("   inputs\n");
-	inputs->Echo();
+	printf("   parameters: %p\n",parameters);
+	if(parameters)parameters->Echo();
+	printf("   inputs: %p\n",inputs);
+	if(inputs)inputs->Echo();
 }
 /*}}}*/
@@ -125,8 +125,8 @@
 	helement->DeepEcho();
 	hmatpar->DeepEcho();
-	printf("   parameters\n");
-	parameters->DeepEcho();
-	printf("   inputs\n");
-	inputs->DeepEcho();
+	printf("   parameters: %p\n",parameters);
+	if(parameters)parameters->DeepEcho();
+	printf("   inputs: %p\n",inputs);
+	if(inputs)inputs->DeepEcho();
 }
 /*}}}*/
Index: /issm/trunk/src/c/objects/Loads/Riftfront.cpp
===================================================================
--- /issm/trunk/src/c/objects/Loads/Riftfront.cpp	(revision 5160)
+++ /issm/trunk/src/c/objects/Loads/Riftfront.cpp	(revision 5161)
@@ -105,8 +105,8 @@
 	delete inputs;
 	this->parameters=NULL;
+
 	delete hnodes;
 	delete helements;
 	delete hmatpar;
-	delete helements;
 }
 /*}}}*/
@@ -115,5 +115,24 @@
 /*FUNCTION Riftfront::Echo {{{1*/
 void Riftfront::Echo(void){
-	this->DeepEcho();
+	printf("Riftfront:\n");
+	printf("   id: %i\n",id);
+	printf("   analysis_type: %s\n",EnumToString(analysis_type));
+	printf("   hnodes: %p\n",hnodes);
+	printf("   helements: %p\n",helements);
+	printf("   hmatpar: %p\n",hmatpar);
+	printf("   parameters: %p\n",parameters);
+	printf("   inputs: %p\n",inputs);
+	
+	printf("   internal parameters: \n");
+	printf("      penalty_lock: %i\n",penalty_lock);
+	printf("      active: %s\n",active ? "true":"false");
+	printf("      frosen: %s\n",frozen ? "true":"false");
+	printf("      counter: %i\n",counter);
+	printf("      prestable: %s\n",prestable ? "true":"false");
+	printf("      material_converged: %s\n",material_converged ? "true":"false");
+	printf("      normal: %g|%g\n",normal[0],normal[1]);
+	printf("      length: %g\n",length);
+	printf("      fraction: %g\n",fraction);
+		
 }
 /*}}}1*/
@@ -128,7 +147,7 @@
 	hmatpar->DeepEcho();
 	printf("   parameters\n");
-	parameters->DeepEcho();
+	if(parameters)parameters->DeepEcho();
 	printf("   inputs\n");
-	inputs->DeepEcho();
+	if(inputs)inputs->DeepEcho();
 }
 /*}}}*/
@@ -283,5 +302,30 @@
 	riftfront->hmatpar=(Hook*)this->hmatpar->copy();
 
+	/*internal data: */
+	riftfront->penalty_lock=this->penalty_lock;
+	riftfront->active=this->active;
+	riftfront->frozen=this->frozen;
+	riftfront->counter=this->counter;
+	riftfront->prestable=this->prestable;
+	riftfront->material_converged=this->material_converged;
+	riftfront->normal[0]=this->normal[0];
+	riftfront->normal[1]=this->normal[1];
+	riftfront->length=this->length;
+	riftfront->fraction=this->fraction;
+	
 	return riftfront;
+
+}
+/*}}}*/
+		
+/*Update virtual functions definitions:*/
+/*FUNCTION Riftfront::InputUpdateFromConstant(int constant,int name) {{{1*/
+void  Riftfront::InputUpdateFromConstant(int constant,int name){
+
+	/*Check that name is a Riftfront input*/
+	if (!IsInput(name)) return;
+
+	/*update input*/
+	this->inputs->AddInput(new IntInput(name,constant));
 
 }
@@ -426,4 +470,6 @@
 		 there is none (0 stiffness implies decoupling of the flank rifts, which is exactly what we want): */
 	}
+	/*Free ressources:*/
+	xfree((void**)&doflist);
 
 }
@@ -976,2 +1022,15 @@
 }
 /*}}}1*/
+/*FUNCTION Riftfront::IsInput{{{1*/
+bool Riftfront::IsInput(int name){
+	if (
+				name==ConvergedEnum ||
+				name==ThicknessEnum ||
+				name==SurfaceEnum ||
+				name==BedEnum 
+		){
+		return true;
+	}
+	else return false;
+}
+/*}}}*/
Index: /issm/trunk/src/c/objects/Loads/Riftfront.h
===================================================================
--- /issm/trunk/src/c/objects/Loads/Riftfront.h	(revision 5160)
+++ /issm/trunk/src/c/objects/Loads/Riftfront.h	(revision 5161)
@@ -64,5 +64,5 @@
 		void    InputUpdateFromVector(bool* vector, int name, int type){ISSMERROR("Not implemented yet!");}
 		void    InputUpdateFromConstant(double constant, int name){ISSMERROR("Not implemented yet!");}
-		void    InputUpdateFromConstant(int constant, int name){ISSMERROR("Not implemented yet!");}
+		void    InputUpdateFromConstant(int constant, int name);
 		void    InputUpdateFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
 		void    InputUpdateFromSolution(double* solution){ISSMERROR("Not implemented yet!");}
@@ -77,5 +77,5 @@
 		bool  InAnalysis(int analysis_type);
 		/*}}}*/
-		/*Riftfront management: {{{1*/
+		/*Riftfront specific routines: {{{1*/
 		void  GetDofList(int** pdoflist);
 		bool  PreStable();
@@ -90,4 +90,5 @@
 		int   IsMaterialStable(void);
 		void  OutputProperties(Vec riftproperties);
+		bool  IsInput(int name);
 		/*}}}*/
 };
