Index: /issm/trunk/src/c/objects/Beam.cpp
===================================================================
--- /issm/trunk/src/c/objects/Beam.cpp	(revision 802)
+++ /issm/trunk/src/c/objects/Beam.cpp	(revision 803)
@@ -53,5 +53,4 @@
 #undef __FUNCT__
 #define __FUNCT__ "Beam::Echo"
-
 void Beam::Echo(void){
 
@@ -78,4 +77,29 @@
 }
 
+#undef __FUNCT__
+#define __FUNCT__ "Beam::DeepEcho"
+void Beam::DeepEcho(void){
+
+	printf("Beam:\n");
+	printf("   id: %i\n",id);
+	printf("   mid: %i\n",mid);
+	printf("   mparid: %i\n",mparid);
+	printf("   node_ids=[%i,%i]\n",node_ids[0],node_ids[1]);
+	printf("   node_offsets=[%i,%i]\n",node_offsets[0],node_offsets[1]);
+	printf("   matice_offset=%i\n",matice_offset);
+	printf("   matpar_offset=%i\n",matpar_offset);
+	printf("   h=[%g,%g]\n",h[0],h[1]);
+	printf("   s=[%g,%g]\n",s[0],s[1]);
+	printf("   b=[%g,%g]\n",b[0],b[1]);
+	printf("   k=[%g,%g]\n",k[0],k[1]);
+	printf("   onbed=%i\n",onbed);
+	printf("   nodes: \n");
+	if(nodes[0])nodes[0]->Echo();
+	if(nodes[1])nodes[1]->Echo();
+	if(matice)matice->Echo();
+	if(matpar)matpar->Echo();
+
+	return;
+}
 void  Beam::Marshall(char** pmarshalled_dataset){
 
Index: /issm/trunk/src/c/objects/Beam.h
===================================================================
--- /issm/trunk/src/c/objects/Beam.h	(revision 802)
+++ /issm/trunk/src/c/objects/Beam.h	(revision 803)
@@ -48,4 +48,5 @@
 
 		void  Echo();
+		void  DeepEcho();
 		void  Marshall(char** pmarshalled_dataset);
 		int   MarshallSize();
Index: /issm/trunk/src/c/objects/DakotaPlugin.cpp
===================================================================
--- /issm/trunk/src/c/objects/DakotaPlugin.cpp	(revision 802)
+++ /issm/trunk/src/c/objects/DakotaPlugin.cpp	(revision 803)
@@ -37,4 +37,5 @@
 	analysis_type=in_analysis_type;
 	sub_analysis_type=in_sub_analysis_type;
+	counter=0;
 }
 
@@ -50,4 +51,7 @@
 	char*  variable_descriptor=NULL;
 	double* responses=NULL;
+
+	/*increae counter: */
+	counter++;
 
 	/*Before launching analysis, we need to transfer the dakota inputs into Issm 
@@ -73,5 +77,5 @@
 
 	/*run core solution: */
-	SpawnCore(responses,variables,variable_descriptors,numACV,femmodels,inputs,analysis_type,sub_analysis_type);
+	SpawnCore(responses,variables,variable_descriptors,numACV,femmodels,inputs,analysis_type,sub_analysis_type,counter);
 
 	/*populate responses: */
@@ -94,4 +98,9 @@
 	return 0;
 }
+  
+
+int DakotaPlugin::GetCounter(){
+	return counter;
+}
 
 } // namespace SIM
Index: /issm/trunk/src/c/objects/DakotaPlugin.h
===================================================================
--- /issm/trunk/src/c/objects/DakotaPlugin.h	(revision 802)
+++ /issm/trunk/src/c/objects/DakotaPlugin.h	(revision 803)
@@ -30,4 +30,5 @@
   int analysis_type;
   int sub_analysis_type;
+  int counter;
 
 protected:
@@ -39,4 +40,7 @@
   // execute the output filter portion of a direct evaluation invocation
   //int derived_map_of(const Dakota::String& of_name);
+
+  /*add for issm: */
+  int GetCounter();
 
 private:
Index: /issm/trunk/src/c/objects/Element.h
===================================================================
--- /issm/trunk/src/c/objects/Element.h	(revision 802)
+++ /issm/trunk/src/c/objects/Element.h	(revision 803)
@@ -17,4 +17,5 @@
 		virtual       ~Element(){};
 		virtual void  Echo()=0;
+		virtual void  DeepEcho()=0;
 		virtual int   GetId()=0;
 		virtual int   MyRank()=0;
Index: /issm/trunk/src/c/objects/Icefront.cpp
===================================================================
--- /issm/trunk/src/c/objects/Icefront.cpp	(revision 802)
+++ /issm/trunk/src/c/objects/Icefront.cpp	(revision 803)
@@ -94,5 +94,42 @@
 	return;
 }
-		
+void Icefront::DeepEcho(void){
+
+	int i;
+	
+	printf("Icefront:\n");
+	printf("   type: %s\n",type);
+	printf("   sid: %i\n",sid);
+	
+	printf("   mparid: %i\n",mparid);
+	printf("   matpar_offset: %i\n",matpar_offset);
+	printf("   matpar: \n");
+	
+	printf("   element_type: %i\n",element_type);
+	printf("   eid: %i\n",eid);
+	printf("   element_offset: %i\n",eid);
+	printf("   element\n");
+		
+	if (strcmp(type,"segment")==0){
+		printf("   node_ids=[%i,%i]\n",node_ids[0],node_ids[1]);
+		printf("   node_offsets=[%i,%i]\n",node_offsets[0],node_offsets[1]);
+		printf("   h=[%g,%g]\n",h[0],h[1]);
+		printf("   b=[%g,%g]\n",b[0],b[1]);
+		for(i=0;i<2;i++){
+			if(nodes[i])nodes[i]->Echo();
+		}
+	}
+	else{
+		printf("   node_ids=[%i,%i,%i,%i]\n",node_ids[0],node_ids[1],node_ids[2],node_ids[3]);
+		printf("   node_offsets=[%i,%i]\n",node_offsets[0],node_offsets[1],node_offsets[2],node_offsets[3]);
+		printf("   h=[%g,%g,%g,%g]\n",h[0],h[1],h[2],h[3]);
+		printf("   b=[%g,%g,%g,%g]\n",b[0],b[1],b[2],b[3]);
+		for(i=0;i<4;i++){
+			if(nodes[i])nodes[i]->Echo();
+		}
+	}
+
+	return;
+}		
 void  Icefront::Marshall(char** pmarshalled_dataset){
 
Index: /issm/trunk/src/c/objects/Icefront.h
===================================================================
--- /issm/trunk/src/c/objects/Icefront.h	(revision 802)
+++ /issm/trunk/src/c/objects/Icefront.h	(revision 803)
@@ -48,4 +48,5 @@
 
 		void  Echo();
+		void  DeepEcho();
 		void  Marshall(char** pmarshalled_dataset);
 		int   MarshallSize();
Index: /issm/trunk/src/c/objects/Input.cpp
===================================================================
--- /issm/trunk/src/c/objects/Input.cpp	(revision 802)
+++ /issm/trunk/src/c/objects/Input.cpp	(revision 803)
@@ -85,4 +85,17 @@
 
 void Input::Echo(void){
+
+	int i,j;
+	
+	printf("Input:\n");
+	printf("   name: %s\n",name);
+	printf("   type: %i\n",type);
+	if(type==STRING) printf("   string: %s\n",string);
+	if(type==INTEGER) printf("   integer: %i\n",integer);
+	if(type==DOUBLE) printf("   double: %g\n",scalar);
+	if(type==DOUBLEVEC) printf("   doublevec:%p\n",vector);
+}
+
+void Input::DeepEcho(void){
 
 	int i,j;
@@ -100,6 +113,5 @@
 		printf("\n");
 	}
-}
-		
+}		
 int Input::Enum(void){
 
Index: /issm/trunk/src/c/objects/Input.h
===================================================================
--- /issm/trunk/src/c/objects/Input.h	(revision 802)
+++ /issm/trunk/src/c/objects/Input.h	(revision 803)
@@ -42,4 +42,5 @@
 		/*fill virtual routines: */
 		void  Echo();
+		void  DeepEcho(void);
 		void  Marshall(char** pmarshalled_dataset);
 		int   MarshallSize();
Index: /issm/trunk/src/c/objects/Load.h
===================================================================
--- /issm/trunk/src/c/objects/Load.h	(revision 802)
+++ /issm/trunk/src/c/objects/Load.h	(revision 803)
@@ -17,4 +17,5 @@
 		virtual       ~Load(){};
 		virtual void  Echo()=0;
+		virtual void  DeepEcho()=0;
 		virtual int   GetId()=0;
 		virtual int   MyRank()=0;
Index: /issm/trunk/src/c/objects/Material.h
===================================================================
--- /issm/trunk/src/c/objects/Material.h	(revision 802)
+++ /issm/trunk/src/c/objects/Material.h	(revision 803)
@@ -15,4 +15,5 @@
 		virtual       ~Material(){};
 		virtual void  Echo()=0;
+		virtual void  DeepEcho()=0;
 		virtual int   GetId()=0;
 		virtual int   MyRank()=0;
Index: /issm/trunk/src/c/objects/Matice.cpp
===================================================================
--- /issm/trunk/src/c/objects/Matice.cpp	(revision 802)
+++ /issm/trunk/src/c/objects/Matice.cpp	(revision 803)
@@ -38,5 +38,12 @@
 	return;
 }
-		
+void Matice::DeepEcho(void){
+
+	printf("Matice:\n");
+	printf("   mid: %i\n",mid);
+	printf("   B: %g\n",B);
+	printf("   n: %g\n",n);
+	return;
+}		
 void  Matice::Marshall(char** pmarshalled_dataset){
 
@@ -138,4 +145,6 @@
 */
 
+
+
 	/*output: */
 	double viscosity;
Index: /issm/trunk/src/c/objects/Matice.h
===================================================================
--- /issm/trunk/src/c/objects/Matice.h	(revision 802)
+++ /issm/trunk/src/c/objects/Matice.h	(revision 803)
@@ -22,4 +22,5 @@
 
 		void  Echo();
+		void  DeepEcho();
 		void  Marshall(char** pmarshalled_dataset);
 		int   MarshallSize();
Index: /issm/trunk/src/c/objects/Matpar.cpp
===================================================================
--- /issm/trunk/src/c/objects/Matpar.cpp	(revision 802)
+++ /issm/trunk/src/c/objects/Matpar.cpp	(revision 803)
@@ -57,5 +57,21 @@
 	return;
 }
-		
+
+void Matpar::DeepEcho(void){
+
+	printf("Matpar:\n");
+	printf("   mid: %i\n",mid);
+	printf("   rho_ice: %g\n",rho_ice);
+	printf("   rho_water: %g\n",rho_water);
+	printf("   heatcapacity: %g\n",heatcapacity);
+	printf("   thermalconductivity: %g\n",thermalconductivity);
+	printf("   latentheat: %g\n",latentheat);
+	printf("   beta: %g\n",beta);
+	printf("   meltingpoint: %g\n",meltingpoint);
+	printf("   mixed_layer_capacity: %g\n",mixed_layer_capacity);
+	printf("   thermal_exchange_velocity: %g\n",thermal_exchange_velocity);
+	printf("   g: %g\n",g);
+	return;
+}		
 void  Matpar::Marshall(char** pmarshalled_dataset){
 
@@ -163,4 +179,5 @@
 }
 double Matpar::GetRhoIce(){
+	
 	return rho_ice;
 }
Index: /issm/trunk/src/c/objects/Matpar.h
===================================================================
--- /issm/trunk/src/c/objects/Matpar.h	(revision 802)
+++ /issm/trunk/src/c/objects/Matpar.h	(revision 803)
@@ -32,4 +32,5 @@
 
 		void  Echo();
+		void  DeepEcho();
 		void  Marshall(char** pmarshalled_dataset);
 		int   MarshallSize();
Index: /issm/trunk/src/c/objects/Node.cpp
===================================================================
--- /issm/trunk/src/c/objects/Node.cpp	(revision 802)
+++ /issm/trunk/src/c/objects/Node.cpp	(revision 803)
@@ -87,5 +87,38 @@
 	return;
 }
-		
+
+void Node::DeepEcho(void){
+
+	int i;
+
+	printf("Node:\n");
+	printf("   id: %i\n",id);
+	printf("   partitionborder: %i\n",partitionborder);
+	printf("   clone: %i\n",clone);
+	printf("   numberofdofs: %i\n",numberofdofs);
+	printf("   x=[%g,%g,%g]\n",x[0],x[1],x[2]);
+	printf("   onbed: %i\n",onbed);
+	printf("   onsurface: %i\n",onsurface);
+	printf("   upper_node_id=%i\n",upper_node_id);
+	printf("   upper_node_offset=%i\n",upper_node_offset);
+	printf("   doflist:|");
+	for(i=0;i<numberofdofs;i++){
+		if(i>MAXDOFSPERNODE)break;
+		printf("%i|",doflist[i]);
+	}
+	printf("   doflist1:|");
+	printf("%i|",doflist1[1]);
+	printf("\n");
+
+	printf("   set membership: m,n,f,s sets \n");
+	for(i=0;i<numberofdofs;i++){
+		if(i>MAXDOFSPERNODE)break;
+		printf("      dof %i: %i %i %i %i\n",i,mset[i],nset[i],fset[i],sset[i]);
+	}
+	printf("\n");
+	if(upper_node)printf("   upper_node pointer: %p\n",upper_node);
+
+	return;
+}		
 void  Node::Marshall(char** pmarshalled_dataset){
 
Index: /issm/trunk/src/c/objects/Node.h
===================================================================
--- /issm/trunk/src/c/objects/Node.h	(revision 802)
+++ /issm/trunk/src/c/objects/Node.h	(revision 803)
@@ -45,4 +45,5 @@
 
 		void  Echo();
+		void  DeepEcho();
 		void  Marshall(char** pmarshalled_dataset);
 		int   MarshallSize();
Index: /issm/trunk/src/c/objects/Object.h
===================================================================
--- /issm/trunk/src/c/objects/Object.h	(revision 802)
+++ /issm/trunk/src/c/objects/Object.h	(revision 803)
@@ -17,4 +17,5 @@
 		virtual       ~Object() {};
 		virtual void  Echo()=0;
+		virtual void  DeepEcho()=0;
 		virtual int   GetId()=0;
 		virtual int   MyRank()=0;
Index: /issm/trunk/src/c/objects/Param.cpp
===================================================================
--- /issm/trunk/src/c/objects/Param.cpp	(revision 802)
+++ /issm/trunk/src/c/objects/Param.cpp	(revision 803)
@@ -153,5 +153,63 @@
 	}
 }
-	
+
+#undef __FUNCT__ 
+#define __FUNCT__  "Param Deep Echo"
+void Param::DeepEcho(void){
+
+	int i,j;
+	
+	printf("Param:\n");
+	printf("   id: %i\n",id);
+	printf("   name: %s\n",name);
+	
+	switch(type){
+		case STRING:
+			printf("   string value: %s\n",string);
+			break;
+			
+		case  STRINGARRAY:
+			printf("   string array: %i strings\n",M);
+			for(i=0;i<M;i++){
+				printf("      %i: %s\n",i,stringarray[i]);
+			}
+	
+		case INTEGER:
+			printf("   integer value: %i\n",integer);
+			break;
+	
+		case DOUBLE:
+			printf("   double value: %g\n",ddouble);
+			break;
+		
+		case DOUBLEVEC:
+			printf("   double vector. size: %i ndof: %i\n",M,ndof);
+			for(i=0;i<M;i++)printf("%g\n",doublevec[i]);
+			break;
+	
+		case DOUBLEMAT:
+			printf("   double matrix. size: %i,%i\n",M,N);
+			for(i=0;i<M;i++){
+				for(j=0;j<N;j++){
+					printf("%g ",*(doublemat+N*i+j));
+				}
+				printf("\n");
+			}
+			break;
+
+		case PETSCVEC:
+			printf("   Petsc vector: \n");
+			VecView(vec,PETSC_VIEWER_STDOUT_WORLD);
+			break;
+
+		case  PETSCMAT:
+			printf("   Petsc matrix: \n");
+			MatView(mat,PETSC_VIEWER_STDOUT_WORLD);
+			break;
+
+		default:
+			throw ErrorException(__FUNCT__,exprintf("%s%i","unknow parameter type ",type));
+	}
+}	
 #undef __FUNCT__
 #define __FUNCT__ "Marshall"
Index: /issm/trunk/src/c/objects/Param.h
===================================================================
--- /issm/trunk/src/c/objects/Param.h	(revision 802)
+++ /issm/trunk/src/c/objects/Param.h	(revision 803)
@@ -39,4 +39,5 @@
 
 		void  Echo();
+		void  DeepEcho();
 		void  Marshall(char** pmarshalled_dataset);
 		int   MarshallSize();
Index: /issm/trunk/src/c/objects/ParameterInputs.cpp
===================================================================
--- /issm/trunk/src/c/objects/ParameterInputs.cpp	(revision 802)
+++ /issm/trunk/src/c/objects/ParameterInputs.cpp	(revision 803)
@@ -37,4 +37,10 @@
 }
 
+void ParameterInputs::DeepEcho(){
+
+	printf("ParameterInputs echo: \n");
+	dataset->DeepEcho();
+
+}
 void ParameterInputs::purge(char* name){
 
@@ -324,5 +330,5 @@
 
 			/*Add parameter to inputs: */
-			this->Add("root",parameter,1,numberofnodes);
+			this->Add(root,parameter,1,numberofnodes);
 
 			/*increment i to skip the distributed values just collected: */
Index: /issm/trunk/src/c/objects/ParameterInputs.h
===================================================================
--- /issm/trunk/src/c/objects/ParameterInputs.h	(revision 802)
+++ /issm/trunk/src/c/objects/ParameterInputs.h	(revision 803)
@@ -21,4 +21,5 @@
 		~ParameterInputs();
 		void Echo();
+		void DeepEcho();
 		
 		void Add(char* name,char* string);
Index: /issm/trunk/src/c/objects/Pengrid.cpp
===================================================================
--- /issm/trunk/src/c/objects/Pengrid.cpp	(revision 802)
+++ /issm/trunk/src/c/objects/Pengrid.cpp	(revision 803)
@@ -61,5 +61,21 @@
 	return;
 }
-		
+void Pengrid::DeepEcho(void){
+
+	printf("Pengrid:\n");
+	printf("   id: %i\n",id);
+	printf("   mparid: %i\n",mparid);
+	printf("   dof: %i\n",dof);
+	printf("   active: %i\n",active);
+	printf("   penalty_offset: %g\n",penalty_offset);
+	printf("   thermal_steadystate: %i\n",thermal_steadystate);
+	printf("   node_id: [%i]\n",node_id);
+	printf("   node_offset: [%i]\n",node_offset);
+	printf("   matpar_offset=%i\n",matpar_offset);
+	
+	if(node)node->Echo();
+	if(matpar)matpar->Echo();
+	return;
+}		
 void  Pengrid::Marshall(char** pmarshalled_dataset){
 
Index: /issm/trunk/src/c/objects/Pengrid.h
===================================================================
--- /issm/trunk/src/c/objects/Pengrid.h	(revision 802)
+++ /issm/trunk/src/c/objects/Pengrid.h	(revision 803)
@@ -37,4 +37,5 @@
 
 		void  Echo();
+		void  DeepEcho();
 		void  Marshall(char** pmarshalled_dataset);
 		int   MarshallSize();
Index: /issm/trunk/src/c/objects/Penpair.cpp
===================================================================
--- /issm/trunk/src/c/objects/Penpair.cpp	(revision 802)
+++ /issm/trunk/src/c/objects/Penpair.cpp	(revision 803)
@@ -80,5 +80,29 @@
 	return;
 }
-		
+void Penpair::DeepEcho(void){
+
+	int i;
+
+	printf("Penpair:\n");
+	printf("   id: %i\n",id);
+	printf("   penalty_offset: %g\n",penalty_offset);
+	printf("   penalty_lock: %i\n",penalty_lock);
+	printf("   numdofs: %i\n",numdofs);
+	printf("   node_ids: [%i %i]\n",node_ids[0],node_ids[1]);
+	printf("   node_offsets: [%i %i]\n",node_offsets[0],node_offsets[1]);
+	printf("   dof: %i\n",dof);
+	printf("   element_ids: [%i %i]\n",element_ids[0],element_ids[1]);
+	printf("   element_offsets: [%i %i]\n",element_offsets[0],element_offsets[1]);
+	printf("   friction: %g\n",friction);
+	printf("   fill: %i\n",fill);
+	printf("   normal: %g %g\n",normal[0],normal[1]);
+	printf("   length: %g\n",length);
+	
+	for(i=0;i<2;i++){
+		if(nodes[i])nodes[i]->Echo();
+		if(elements[i])elements[i]->Echo();
+	}
+	return;
+}		
 void  Penpair::Marshall(char** pmarshalled_dataset){
 
Index: /issm/trunk/src/c/objects/Penpair.h
===================================================================
--- /issm/trunk/src/c/objects/Penpair.h	(revision 802)
+++ /issm/trunk/src/c/objects/Penpair.h	(revision 803)
@@ -44,4 +44,5 @@
 
 		void  Echo();
+		void  DeepEcho();
 		void  Marshall(char** pmarshalled_dataset);
 		int   MarshallSize();
Index: /issm/trunk/src/c/objects/Penta.cpp
===================================================================
--- /issm/trunk/src/c/objects/Penta.cpp	(revision 802)
+++ /issm/trunk/src/c/objects/Penta.cpp	(revision 803)
@@ -103,5 +103,40 @@
 	return;
 }
-
+void Penta::DeepEcho(void){
+
+	printf("Penta:\n");
+	printf("   id: %i\n",id);
+	printf("   mid: %i\n",mid);
+	printf("   mparid: %i\n",mparid);
+
+	printf("   node_ids=[%i,%i,%i,%i,%i,%i]\n",node_ids[0],node_ids[1],node_ids[2],node_ids[3],node_ids[4],node_ids[5]);
+	printf("   node_offsets=[%i,%i,%i,%i,%i,%i]\n",node_offsets[0],node_offsets[1],node_offsets[2],node_offsets[3],node_offsets[4],node_offsets[5]);
+	printf("   matice_offset=%i\n",matice_offset);
+	printf("   matpar_offset=%i\n",matpar_offset);
+
+	printf("   h=[%i,%i,%i,%i,%i,%i]\n",h[0],h[1],h[2],h[3],h[4],h[5]);
+	printf("   s=[%i,%i,%i,%i,%i,%i]\n",s[0],s[1],s[2],s[3],s[4],s[5]);
+	printf("   b=[%i,%i,%i,%i,%i,%i]\n",b[0],b[1],b[2],b[3],b[4],b[5]);
+	printf("   k=[%i,%i,%i,%i,%i,%i]\n",k[0],k[1],k[2],k[3],k[4],k[5]);
+	
+	printf("   friction_type: %i\n",friction_type);
+	printf("   p: %g\n",p);
+	printf("   q: %g\n",q);
+	printf("   shelf: %i\n",shelf);
+	printf("   onbed: %i\n",onbed);
+	printf("   onsurface: %i\n",onsurface);
+	printf("   meanvel: %g\n",meanvel);
+	printf("   epsvel: %g\n",epsvel);
+	printf("   collapse: %i\n",collapse);
+	
+	printf("   melting=[%i,%i,%i,%i,%i,%i]\n",melting[0],melting[1],melting[2],melting[3],melting[4],melting[5]);
+	printf("   accumulation=[%i,%i,%i,%i,%i,%i]\n",accumulation[0],accumulation[1],accumulation[2],accumulation[3],accumulation[4],accumulation[5]);
+	printf("   geothermalflux=[%i,%i,%i,%i,%i,%i]\n",geothermalflux[0],geothermalflux[1],geothermalflux[2],geothermalflux[3],geothermalflux[4],geothermalflux[5]);
+	printf("   artdiff: %i\n",artdiff);
+	printf("   thermal_steadystate: %i\n",thermal_steadystate);
+	printf("   viscosity_overshoot: %i\n",viscosity_overshoot);
+	printf("   stokesreconditioning: %i\n",stokesreconditioning);
+	return;
+}
 void  Penta::Marshall(char** pmarshalled_dataset){
 
Index: /issm/trunk/src/c/objects/Penta.h
===================================================================
--- /issm/trunk/src/c/objects/Penta.h	(revision 802)
+++ /issm/trunk/src/c/objects/Penta.h	(revision 803)
@@ -65,4 +65,5 @@
 
 		void  Echo();
+		void  DeepEcho();
 		void  Marshall(char** pmarshalled_dataset);
 		int   MarshallSize();
Index: /issm/trunk/src/c/objects/Result.cpp
===================================================================
--- /issm/trunk/src/c/objects/Result.cpp	(revision 802)
+++ /issm/trunk/src/c/objects/Result.cpp	(revision 803)
@@ -108,5 +108,20 @@
 	}
 }
-	
+
+void Result::DeepEcho(void){
+
+	printf("Result:\n");
+	printf("   id: %i\n",id);
+	printf("   time: %g\n",time);
+	printf("   step: %i\n",step);
+	printf("   field name: %s\n",fieldname);
+	if(field){
+		printf("   field pointer %p\n",field);
+	}
+	else{
+		printf("   field pointer %p\n",dfield);
+		printf("   field size %i\n",size);
+	}
+}	
 #undef __FUNCT__ 
 #define __FUNCT__ "Result::Marshall"
Index: /issm/trunk/src/c/objects/Result.h
===================================================================
--- /issm/trunk/src/c/objects/Result.h	(revision 802)
+++ /issm/trunk/src/c/objects/Result.h	(revision 803)
@@ -30,4 +30,5 @@
 
 		void  Echo();
+		void  DeepEcho();
 		int   GetId(void); 
 		int   MyRank(void);
Index: /issm/trunk/src/c/objects/Rgb.cpp
===================================================================
--- /issm/trunk/src/c/objects/Rgb.cpp	(revision 802)
+++ /issm/trunk/src/c/objects/Rgb.cpp	(revision 803)
@@ -43,5 +43,13 @@
 	return;
 }
-		
+void Rgb::DeepEcho(void){
+
+	printf("Rgb:\n");
+	printf("   id: %i\n",id);
+	printf("   nodeid1: %i\n",nodeid1);
+	printf("   nodeid2: %i\n",nodeid2);
+	printf("   dof: %i\n",dof);
+	return;
+}		
 void  Rgb::Marshall(char** pmarshalled_dataset){
 
Index: /issm/trunk/src/c/objects/Rgb.h
===================================================================
--- /issm/trunk/src/c/objects/Rgb.h	(revision 802)
+++ /issm/trunk/src/c/objects/Rgb.h	(revision 803)
@@ -24,4 +24,5 @@
 
 		void   Echo();
+		void   DeepEcho();
 		void   Marshall(char** pmarshalled_dataset);
 		int    MarshallSize();
Index: /issm/trunk/src/c/objects/Sing.cpp
===================================================================
--- /issm/trunk/src/c/objects/Sing.cpp	(revision 802)
+++ /issm/trunk/src/c/objects/Sing.cpp	(revision 803)
@@ -70,4 +70,25 @@
 }
 
+#undef __FUNCT__
+#define __FUNCT__ "Sing::DeepEcho"
+void Sing::DeepEcho(void){
+
+	printf("Sing:\n");
+	printf("   id: %i\n",id);
+	printf("   mid: %i\n",mid);
+	printf("   mparid: %i\n",mparid);
+	printf("   node_id=[%i]\n",node_id);
+	printf("   node_offset=[%i]\n",node_offset);
+	printf("   matice_offset=%i\n",matice_offset);
+	printf("   matpar_offset=%i\n",matpar_offset);
+	printf("   h=[%g]\n",h);
+	printf("   k=[%g]\n",h);
+	printf("   node: \n");
+	if(node)node->Echo();
+	if(matice)matice->Echo();
+	if(matpar)matpar->Echo();
+
+	return;
+}
 void  Sing::Marshall(char** pmarshalled_dataset){
 
Index: /issm/trunk/src/c/objects/Sing.h
===================================================================
--- /issm/trunk/src/c/objects/Sing.h	(revision 802)
+++ /issm/trunk/src/c/objects/Sing.h	(revision 803)
@@ -43,4 +43,5 @@
 
 		void  Echo();
+		void  DeepEcho();
 		void  Marshall(char** pmarshalled_dataset);
 		int   MarshallSize();
Index: /issm/trunk/src/c/objects/Spc.cpp
===================================================================
--- /issm/trunk/src/c/objects/Spc.cpp	(revision 802)
+++ /issm/trunk/src/c/objects/Spc.cpp	(revision 803)
@@ -43,5 +43,14 @@
 	return;
 }
-		
+
+void Spc::DeepEcho(void){
+
+	printf("Spc:\n");
+	printf("   sid: %i\n",sid);
+	printf("   nodeid: %i\n",nodeid);
+	printf("   dof: %i\n",dof);
+	printf("   value: %g\n",value);
+	return;
+}		
 void  Spc::Marshall(char** pmarshalled_dataset){
 
Index: /issm/trunk/src/c/objects/Spc.h
===================================================================
--- /issm/trunk/src/c/objects/Spc.h	(revision 802)
+++ /issm/trunk/src/c/objects/Spc.h	(revision 803)
@@ -24,4 +24,5 @@
 
 		void   Echo();
+		void   DeepEcho();
 		void   Marshall(char** pmarshalled_dataset);
 		int    MarshallSize();
Index: /issm/trunk/src/c/objects/Tria.cpp
===================================================================
--- /issm/trunk/src/c/objects/Tria.cpp	(revision 802)
+++ /issm/trunk/src/c/objects/Tria.cpp	(revision 803)
@@ -108,5 +108,42 @@
 	return;
 }
-
+#undef __FUNCT__
+#define __FUNCT__ "Tria::DeepEcho"
+
+void Tria::DeepEcho(void){
+
+	printf("Tria:\n");
+	printf("   id: %i\n",id);
+	printf("   mid: %i\n",mid);
+	printf("   mparid: %i\n",mparid);
+	printf("   node_ids=[%i,%i,%i]\n",node_ids[0],node_ids[1],node_ids[2]);
+	printf("   node_offsets=[%i,%i,%i]\n",node_offsets[0],node_offsets[1],node_offsets[2]);
+	printf("   matice_offset=%i\n",matice_offset);
+	printf("   matpar_offset=%i\n",matpar_offset);
+	printf("   h=[%g,%g,%g]\n",h[0],h[1],h[2]);
+	printf("   s=[%g,%g,%g]\n",s[0],s[1],s[2]);
+	printf("   b=[%g,%g,%g]\n",b[0],b[1],b[2]);
+	printf("   k=[%g,%g,%g]\n",k[0],k[1],k[2]);
+	printf("   melting=[%g,%g,%g]\n",melting[0],melting[1],melting[2]);
+	printf("   accumulation=[%g,%g,%g]\n",accumulation[0],accumulation[1],accumulation[2]);
+	printf("   geothermalflux=[%g,%g,%g]\n",geothermalflux[0],geothermalflux[1],geothermalflux[2]);
+	printf("   friction_type: %i\n",friction_type);
+	printf("   p: %g\n",p);
+	printf("   q: %g\n",q);
+	printf("   shelf: %i\n",shelf);
+	printf("   meanvel: %g\n",meanvel);
+	printf("   epsvel: %g\n",epsvel);
+	printf("   onbed: %i\n",onbed);
+	printf("   viscosity_overshoot=%g\n",viscosity_overshoot);
+	printf("   artdiff=%g\n",artdiff);
+	printf("   nodes: \n");
+	if(nodes[0])nodes[0]->Echo();
+	if(nodes[1])nodes[1]->Echo();
+	if(nodes[2])nodes[2]->Echo();
+	if(matice)matice->Echo();
+	if(matpar)matpar->Echo();
+
+	return;
+}
 void  Tria::Marshall(char** pmarshalled_dataset){
 
Index: /issm/trunk/src/c/objects/Tria.h
===================================================================
--- /issm/trunk/src/c/objects/Tria.h	(revision 802)
+++ /issm/trunk/src/c/objects/Tria.h	(revision 803)
@@ -59,4 +59,5 @@
 
 		void  Echo();
+		void  DeepEcho();
 		void  Marshall(char** pmarshalled_dataset);
 		int   MarshallSize();
