Index: /issm/trunk/src/c/ModelProcessorx/Balancedthickness/CreateConstraintsBalancedthickness.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Balancedthickness/CreateConstraintsBalancedthickness.cpp	(revision 3438)
+++ /issm/trunk/src/c/ModelProcessorx/Balancedthickness/CreateConstraintsBalancedthickness.cpp	(revision 3439)
@@ -29,5 +29,5 @@
 	count=1;
 	/*Create spcs from x,y,z, as well as the spc values on those spcs: */
-	for (i=0;i<iomodel->numberofnodes;i++){
+	for (i=0;i<iomodel->numberofvertices;i++){
 	#ifdef _PARALLEL_
 	/*keep only this partition's nodes:*/
Index: /issm/trunk/src/c/ModelProcessorx/Balancedvelocities/CreateConstraintsBalancedvelocities.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Balancedvelocities/CreateConstraintsBalancedvelocities.cpp	(revision 3438)
+++ /issm/trunk/src/c/ModelProcessorx/Balancedvelocities/CreateConstraintsBalancedvelocities.cpp	(revision 3439)
@@ -37,5 +37,5 @@
 
 	/*Create spcs from x,y,z, as well as the spc values on those spcs: */
-	for (i=0;i<iomodel->numberofnodes;i++){
+	for (i=0;i<iomodel->numberofvertices;i++){
 	#ifdef _PARALLEL_
 	/*keep only this partition's nodes:*/
Index: /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateElementsNodesAndMaterialsDiagnosticHoriz.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateElementsNodesAndMaterialsDiagnosticHoriz.cpp	(revision 3438)
+++ /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateElementsNodesAndMaterialsDiagnosticHoriz.cpp	(revision 3439)
@@ -23,12 +23,4 @@
 	DataSet*    materials = NULL;
 	
-	/*Objects: */
-	Node*       node   = NULL;
-	Vertex*     vertex = NULL;
-	Tria*       tria = NULL;
-	Penta*      penta = NULL;
-	Matice*     matice  = NULL;
-	Matpar*     matpar  = NULL;
-
 	/*Now, is the flag macayaealpattyn on? otherwise, do nothing: */
 	if (!iomodel->ismacayealpattyn)goto cleanup_and_return;
Index: /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp	(revision 3438)
+++ /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp	(revision 3439)
@@ -18,4 +18,5 @@
 	int segment_width;
 	int element;
+	int i;
 
 	/*Create loads: */
Index: /issm/trunk/src/c/ModelProcessorx/DiagnosticHutter/CreateConstraintsDiagnosticHutter.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/DiagnosticHutter/CreateConstraintsDiagnosticHutter.cpp	(revision 3438)
+++ /issm/trunk/src/c/ModelProcessorx/DiagnosticHutter/CreateConstraintsDiagnosticHutter.cpp	(revision 3439)
@@ -45,5 +45,5 @@
 
 	/*vx and vy are spc'd if we are not on gridonhutter: */
-	for (i=0;i<iomodel->numberofnodes;i++){
+	for (i=0;i<iomodel->numberofvertices;i++){
 	#ifdef _PARALLEL_
 	/*keep only this partition's nodes:*/
Index: /issm/trunk/src/c/ModelProcessorx/DiagnosticHutter/CreateElementsNodesAndMaterialsDiagnosticHutter.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/DiagnosticHutter/CreateElementsNodesAndMaterialsDiagnosticHutter.cpp	(revision 3438)
+++ /issm/trunk/src/c/ModelProcessorx/DiagnosticHutter/CreateElementsNodesAndMaterialsDiagnosticHutter.cpp	(revision 3439)
@@ -44,5 +44,5 @@
 	if (strcmp(iomodel->meshtype,"2d")==0){
 
-		for (i=0;i<iomodel->numberofnodes;i++){
+		for (i=0;i<iomodel->numberofvertices;i++){
 
 			if(iomodel->my_nodes[i]){
@@ -56,9 +56,9 @@
 			}
 
-		} //for (i=0;i<iomodel->numberofnodes;i++)
+		} //for (i=0;i<iomodel->numberofvertices;i++)
 	} //if (strcmp(iomodel->meshtype,"2d")==0)
 	else{
 
-		for (i=0;i<iomodel->numberofnodes;i++){
+		for (i=0;i<iomodel->numberofvertices;i++){
 
 			if(iomodel->my_nodes[i]){
@@ -76,5 +76,5 @@
 			}
 
-		} //for (i=0;i<iomodel->numberofnodes;i++)
+		} //for (i=0;i<iomodel->numberofvertices;i++)
 
 	} //if (strcmp(iomodel->meshtype,"2d")==0)
@@ -111,5 +111,5 @@
 	IoModelFetchData(&iomodel->gridoniceshelf,NULL,NULL,iomodel_handle,"gridoniceshelf");
 
-	for (i=0;i<iomodel->numberofnodes;i++){
+	for (i=0;i<iomodel->numberofvertices;i++){
 
 		/*vertices and nodes (same number, as we are running continuous galerkin formulation: */
Index: /issm/trunk/src/c/ModelProcessorx/DiagnosticStokes/CreateConstraintsDiagnosticStokes.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/DiagnosticStokes/CreateConstraintsDiagnosticStokes.cpp	(revision 3438)
+++ /issm/trunk/src/c/ModelProcessorx/DiagnosticStokes/CreateConstraintsDiagnosticStokes.cpp	(revision 3439)
@@ -38,5 +38,5 @@
 	count=0;
 	/*Create spcs from x,y,z, as well as the spc values on those spcs: */
-	for (i=0;i<iomodel->numberofnodes;i++){
+	for (i=0;i<iomodel->numberofvertices;i++){
 	#ifdef _PARALLEL_
 	/*keep only this partition's nodes:*/
Index: /issm/trunk/src/c/ModelProcessorx/DiagnosticStokes/CreateLoadsDiagnosticStokes.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/DiagnosticStokes/CreateLoadsDiagnosticStokes.cpp	(revision 3438)
+++ /issm/trunk/src/c/ModelProcessorx/DiagnosticStokes/CreateLoadsDiagnosticStokes.cpp	(revision 3439)
@@ -81,5 +81,5 @@
 	IoModelFetchData(&iomodel->gridonstokes,NULL,NULL,iomodel_handle,"gridonstokes");
 	
-	for (i=0;i<iomodel->numberofnodes;i++){
+	for (i=0;i<iomodel->numberofvertices;i++){
 	#ifdef _PARALLEL_
 	/*keep only this partition's nodes:*/
Index: /issm/trunk/src/c/ModelProcessorx/DiagnosticVert/CreateConstraintsDiagnosticVert.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/DiagnosticVert/CreateConstraintsDiagnosticVert.cpp	(revision 3438)
+++ /issm/trunk/src/c/ModelProcessorx/DiagnosticVert/CreateConstraintsDiagnosticVert.cpp	(revision 3439)
@@ -40,5 +40,5 @@
 
 	/*Create spcs from x,y,z, as well as the spc values on those spcs: */
-	for (i=0;i<iomodel->numberofnodes;i++){
+	for (i=0;i<iomodel->numberofvertices;i++){
       #ifdef _PARALLEL_
 		/*keep only this partition's nodes:*/
Index: /issm/trunk/src/c/ModelProcessorx/Melting/CreateLoadsMelting.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Melting/CreateLoadsMelting.cpp	(revision 3438)
+++ /issm/trunk/src/c/ModelProcessorx/Melting/CreateLoadsMelting.cpp	(revision 3439)
@@ -49,5 +49,5 @@
 	IoModelFetchData(&iomodel->gridonbed,NULL,NULL,iomodel_handle,"gridonbed");
 
-	for (i=0;i<iomodel->numberofnodes;i++){
+	for (i=0;i<iomodel->numberofvertices;i++){
 	#ifdef _PARALLEL_
 	/*keep only this partition's nodes:*/
Index: /issm/trunk/src/c/ModelProcessorx/Prognostic/CreateConstraintsPrognostic.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Prognostic/CreateConstraintsPrognostic.cpp	(revision 3438)
+++ /issm/trunk/src/c/ModelProcessorx/Prognostic/CreateConstraintsPrognostic.cpp	(revision 3439)
@@ -38,5 +38,5 @@
 
 	/*Create spcs from x,y,z, as well as the spc values on those spcs: */
-	for (i=0;i<iomodel->numberofnodes;i++){
+	for (i=0;i<iomodel->numberofvertices;i++){
 	#ifdef _PARALLEL_
 	/*keep only this partition's nodes:*/
Index: /issm/trunk/src/c/ModelProcessorx/Prognostic2/CreateElementsNodesAndMaterialsPrognostic2.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Prognostic2/CreateElementsNodesAndMaterialsPrognostic2.cpp	(revision 3438)
+++ /issm/trunk/src/c/ModelProcessorx/Prognostic2/CreateElementsNodesAndMaterialsPrognostic2.cpp	(revision 3439)
@@ -104,5 +104,5 @@
 		for (j=0;j<3;j++){
 
-			if(my_nodes[3*i+j]){ 
+			if(iomodel->my_nodes[3*i+j]){ 
 
 				//Get id of the vertex on which the current node is located
Index: /issm/trunk/src/c/ModelProcessorx/Thermal/CreateConstraintsThermal.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Thermal/CreateConstraintsThermal.cpp	(revision 3438)
+++ /issm/trunk/src/c/ModelProcessorx/Thermal/CreateConstraintsThermal.cpp	(revision 3439)
@@ -40,5 +40,5 @@
 
 	/*Create spcs from x,y,z, as well as the spc values on those spcs: */
-	for (i=0;i<iomodel->numberofnodes;i++){
+	for (i=0;i<iomodel->numberofvertices;i++){
 	#ifdef _PARALLEL_
 	/*keep only this partition's nodes:*/
Index: /issm/trunk/src/c/ModelProcessorx/Thermal/CreateLoadsThermal.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Thermal/CreateLoadsThermal.cpp	(revision 3438)
+++ /issm/trunk/src/c/ModelProcessorx/Thermal/CreateLoadsThermal.cpp	(revision 3439)
@@ -50,5 +50,5 @@
 	IoModelFetchData(&iomodel->spctemperature,NULL,NULL,iomodel_handle,"spctemperature");
 
-	for (i=0;i<iomodel->numberofnodes;i++){
+	for (i=0;i<iomodel->numberofvertices;i++){
 	#ifdef _PARALLEL_
 	/*keep only this partition's nodes:*/
Index: /issm/trunk/src/c/objects/Beam.cpp
===================================================================
--- /issm/trunk/src/c/objects/Beam.cpp	(revision 3438)
+++ /issm/trunk/src/c/objects/Beam.cpp	(revision 3439)
@@ -52,4 +52,51 @@
 
 	return;
+}
+/*}}}*/
+/*FUNCTION Beam iomodel constructor {{{1*/
+Beam::Beam(int i,IoModel* iomodel){
+
+
+	/*beam constructor input: */
+	int   beam_id;
+	int   beam_matice_id;
+	int   beam_matpar_id;
+	int   beam_numpar_id;
+	int   beam_node_ids[2];
+	double beam_h[2];
+	double beam_s[2];
+	double beam_b[2];
+	double beam_k[2];
+	int    beam_onbed;
+	
+	
+	/*id: */
+	beam_id=i+1; 
+	this->id=beam_id;
+
+	/*hooks: */
+	beam_matice_id=i+1; //refers to the corresponding material property card
+	beam_matpar_id=iomodel->numberofvertices-iomodel->numberofvertices+1;//refers to the corresponding matpar property card
+	beam_numpar_id=1;
+	beam_node_ids[0]=i+1;
+	beam_node_ids[1]=(int)iomodel->uppernodes[i]; //grid that lays right on top
+	
+	this->hnodes.Init(beam_node_ids,2);
+	this->hmatice.Init(&beam_matice_id,1);
+	this->hmatpar.Init(&beam_matpar_id,1);
+	this->hnumpar.Init(&beam_numpar_id,1);
+
+	/*properties: */
+	beam_h[0]=iomodel->thickness[i];
+	beam_h[1]=iomodel->thickness[(int)(iomodel->uppernodes[i]-1)];
+	beam_s[0]=iomodel->surface[i];
+	beam_s[1]=iomodel->surface[(int)(iomodel->uppernodes[i]-1)];
+	beam_b[0]=iomodel->bed[i];
+	beam_b[1]=iomodel->bed[(int)(iomodel->uppernodes[i]-1)];
+	beam_k[0]=iomodel->drag[i];
+	beam_k[1]=iomodel->drag[(int)(iomodel->uppernodes[i]-1)];
+	beam_onbed=(bool)iomodel->gridonbed[i];
+
+	this->properties.Init(2,beam_h, beam_s, beam_b, beam_k,NULL, NULL, NULL, UNDEF, UNDEF, UNDEF, UNDEF, beam_onbed, UNDEF, UNDEF, UNDEF, UNDEF);
 }
 /*}}}*/
Index: /issm/trunk/src/c/objects/Beam.h
===================================================================
--- /issm/trunk/src/c/objects/Beam.h	(revision 3438)
+++ /issm/trunk/src/c/objects/Beam.h	(revision 3439)
@@ -13,4 +13,5 @@
 #include "./ParameterInputs.h"
 #include "./ElementProperties.h"
+#include "../ModelProcessorx/IoModel.h"
 #include "./Hook.h"
 
@@ -37,9 +38,12 @@
 	public:
 
+		/*constructors, destructors: {{{1*/
 		Beam();
 		Beam(int beam_id,int* beam_node_ids, int beam_matice_id, int beam_matpar_id, int beam_numpar_id, ElementProperties* beam_properties);
 		Beam(int beam_id,Hook* beam_hnodes, Hook* beam_hmatice, Hook* beam_hmatpar, Hook* beam_hnumpar, ElementProperties* beam_properties);
+		Beam(int i, IoModel* iomodel);
 		~Beam();
-
+		/*}}}*/
+		/*object management: {{{1*/
 		void  Echo();
 		void  DeepEcho();
@@ -52,4 +56,7 @@
 		int   MyRank();
 		void  Configure(void* loads,void* nodes,void* materials,void* parameters);
+		Object* copy();
+		/*}}}*/
+		/*object management: {{{1*/
 		void  CreateKMatrix(Mat Kgg,void* inputs,int analysis_type,int sub_analysis_type);
 		void  CreatePVector(Vec pg, void* inputs, int analysis_type,int sub_analysis_type);
@@ -62,5 +69,4 @@
 		void* GetMatPar();
 
-		Object* copy();
 		void  NodeConfiguration(int* beam_node_ids,Node* beam_nodes[2],int* beam_node_offsets);
 		void  MaticeConfiguration(Matice* matice,int matice_offset);
@@ -68,6 +74,6 @@
 		void  ComputePressure(Vec p_g);
 		void  GetNodes(void** vpnodes);
-		
-		/*not implemented: */
+		/*}}}*/
+		/*not implemented: {{{1*/
 		int   GetShelf();
 		int   GetOnBed();
@@ -85,4 +91,5 @@
 		void  GetJacobianDeterminant(double* pJdet,double* z_list, double gauss_coord);
 		double MassFlux(double* segment,double* ug);
+		/*}}}*/
 
 };
Index: /issm/trunk/src/c/objects/Node.cpp
===================================================================
--- /issm/trunk/src/c/objects/Node.cpp	(revision 3438)
+++ /issm/trunk/src/c/objects/Node.cpp	(revision 3439)
@@ -128,5 +128,5 @@
 	if (!iomodel->gridonhutter[i]){
 		for(k=1;k<=numdofs;k++){
-			node->FreezeDof(k);
+			this->FreezeDof(k);
 		}
 	}
Index: /issm/trunk/src/c/objects/Node.h
===================================================================
--- /issm/trunk/src/c/objects/Node.h	(revision 3438)
+++ /issm/trunk/src/c/objects/Node.h	(revision 3439)
@@ -44,4 +44,5 @@
 		Node(int id,DofIndexing* indexing, NodeProperties* properties, Hook* vertex, Hook* upper_node);
 		Node(int i, IoModel* iomodel);
+		Node(int i,int j,IoModel* iomodel);
 		~Node();
 		/*}}}*/
Index: /issm/trunk/src/c/objects/Sing.cpp
===================================================================
--- /issm/trunk/src/c/objects/Sing.cpp	(revision 3438)
+++ /issm/trunk/src/c/objects/Sing.cpp	(revision 3439)
@@ -52,4 +52,38 @@
 
 	return;
+}
+/*}}}*/
+/*FUNCTION Sing iomodel constructor {{{1*/
+Sing::Sing(int i, IoModel* iomodel){
+
+	int sing_matice_id;
+	int sing_matpar_id;
+	int sing_numpar_id;
+	
+	int sing_g;
+	double sing_h;
+	double sing_k;
+
+
+	/*id: */
+	this->id=i+1;
+
+	/*hooks: */
+	sing_matice_id=i+1; //refers to the corresponding material property card
+	sing_matpar_id=iomodel->numberofvertices+1;//refers to the corresponding matpar property card
+	sing_numpar_id=1;
+	sing_g=i+1;
+
+	this->hnodes.Init(&sing_g,1);
+	this->hmatice.Init(&sing_matice_id,1);
+	this->hmatpar.Init(&sing_matpar_id,1);
+	this->hnumpar.Init(&sing_numpar_id,1);
+
+	/*properties: */
+	sing_h=iomodel->thickness[i];
+	sing_k=iomodel->drag[i];
+
+	this->properties.Init(1,&sing_h, NULL, NULL, &sing_k, NULL, NULL, NULL, UNDEF, UNDEF, UNDEF, UNDEF, UNDEF,UNDEF, UNDEF,UNDEF,UNDEF);
+
 }
 /*}}}*/
Index: /issm/trunk/src/c/objects/Sing.h
===================================================================
--- /issm/trunk/src/c/objects/Sing.h	(revision 3438)
+++ /issm/trunk/src/c/objects/Sing.h	(revision 3439)
@@ -12,4 +12,5 @@
 #include "./ParameterInputs.h"
 #include "./ElementProperties.h"
+#include "../ModelProcessorx/IoModel.h"
 #include "./Hook.h"
 
@@ -33,19 +34,25 @@
 	public:
 
+		/*constructors, destructors: {{{1*/
 		Sing();
 		Sing(int sing_id,int* sing_node_ids, int sing_matice_id, int sing_matpar_id, int sing_numpar_id, ElementProperties* sing_properties);
 		Sing(int sing_id,Hook* sing_hnodes, Hook* sing_hmatice, Hook* sing_hmatpar, Hook* sing_hnumpar, ElementProperties* sing_properties);
+		Sing(int i, IoModel* iomodel);
 		~Sing();
-
+		/*}}}*/
+		/*object management: {{{1*/
+		void  Configure(void* loads,void* nodes,void* materials,void* parameters);
+		Object* copy();
+		void  DeepEcho();
+		void  Demarshall(char** pmarshalled_dataset);
 		void  Echo();
-		void  DeepEcho();
+		int   Enum();
+		int   GetId(); 
+		char* GetName();
 		void  Marshall(char** pmarshalled_dataset);
 		int   MarshallSize();
-		char* GetName();
-		void  Demarshall(char** pmarshalled_dataset);
-		int   Enum();
-		int   GetId(); 
 		int   MyRank();
-		void  Configure(void* loads,void* nodes,void* materials,void* parameters);
+		/*}}}*/
+		/*numerics: {{{1*/
 		void  CreateKMatrix(Mat Kgg,void* inputs,int analysis_type,int sub_analysis_type);
 		void  CreatePVector(Vec pg, void* inputs, int analysis_type,int sub_analysis_type);
@@ -57,6 +64,4 @@
 		void  CreatePVectorDiagnosticHutter(Vec pg,void* inputs,int analysis_type,int sub_analysis_type);
 		void* GetMatPar();
-
-		Object* copy();
 		void  NodeConfiguration(int sing_node_id,Node* sing_node,int sing_node_offset);
 		void  MaticeConfiguration(Matice* matice,int matice_offset);
@@ -64,6 +69,6 @@
 		void  ComputePressure(Vec p_g);
 		void  GetNodes(void** vpnodes);
-		
-		/*not implemented: */
+		/*}}}*/
+		/*not implemented: {{{1*/
 		int   GetShelf();
 		int   GetOnBed();
@@ -78,4 +83,5 @@
 		double CostFunction(void*,int,int);
 		double MassFlux(double* segment,double* ug);
+		/*}}}*/
 
 
