Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 16910)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 16910)
@@ -0,0 +1,52 @@
+/*!\file Element.cpp
+ * \brief: implementation of the Element object
+ */
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include <stdio.h>
+#include <string.h>
+#include "../classes.h"
+#include "../../shared/shared.h"
+/*}}}*/
+
+/*Constructors/destructor/copy*/
+Element::Element(){/*{{{*/
+	this->inputs     = NULL;
+	this->nodes      = NULL;
+}/*}}}*/
+Element::~Element(){/*{{{*/
+	delete inputs;
+}
+/*}}}*/
+
+/*Other*/
+void Element::AddInput(Input* input_in){/*{{{*/
+
+	/*Call inputs method*/
+	_assert_(this->inputs);
+	this->inputs->AddInput(input_in);
+}/*}}}*/
+bool Element::AllActive(void){/*{{{*/
+
+	int numnodes = this->GetNumberOfNodes();
+	for(int i=0;i<numnodes;i++){
+		if(!this->nodes[i]->IsActive()) return false;
+	}
+	return true;
+}/*}}}*/
+bool Element::AnyActive(void){/*{{{*/
+
+	int numnodes = this->GetNumberOfNodes();
+	for(int i=0;i<numnodes;i++){
+		if(this->nodes[i]->IsActive()) return true;
+	}
+	return false;
+}/*}}}*/
+Input* Element::GetInput(int inputenum){/*{{{*/
+	return inputs->GetInput(inputenum);
+}/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Elements/Element.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 16909)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 16910)
@@ -23,4 +23,5 @@
 class Matpar;
 class Input;
+class Inputs;
 class Gauss;
 class ElementVector;
@@ -33,18 +34,27 @@
 class Element: public Object,public Update{
 
+	public:
+		Inputs   *inputs;
+		Node    **nodes;
+
 	public: 
-
-		virtual        ~Element(){};
-
-		virtual bool        AllActive(void)=0;
-		virtual bool        AnyActive(void)=0;
+		/*Constructors/Destructores*/
+		Element();
+		~Element();
+
+		/*Functions*/
+		void   AddInput(Input* input_in);
+		bool   AllActive(void);
+		bool   AnyActive(void);
+		Input* GetInput(int inputenum);
+
+		/*Virtual functions*/
+		virtual void   AddBasalInput(int input_enum, IssmDouble* values, int interpolation_enum)=0;
+		virtual void   AddInput(int input_enum, IssmDouble* values, int interpolation_enum)=0;
+		virtual void   AddMaterialInput(int input_enum, IssmDouble* values, int interpolation_enum)=0;
 		virtual IssmDouble CharacteristicLength(void)=0;
 		virtual void   Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters)=0;
 		virtual void   SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters)=0;
 		virtual void   SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum)=0;
-		virtual void   AddBasalInput(int input_enum, IssmDouble* values, int interpolation_enum)=0;
-		virtual void   AddInput(int input_enum, IssmDouble* values, int interpolation_enum)=0;
-		virtual void   AddInput(Input* input_in)=0;
-		virtual void   AddMaterialInput(int input_enum, IssmDouble* values, int interpolation_enum)=0;
 		virtual ElementMatrix* CreateKMatrix(void)=0;
 		virtual void   CreateDVector(Vector<IssmDouble>* df)=0;
@@ -114,5 +124,4 @@
 		virtual void   GetInputListOnVertices(IssmDouble* pvalue,int enumtype)=0;
 		virtual void   GetInputListOnVertices(IssmDouble* pvalue,int enumtype,IssmDouble defaultvalue)=0;
-		virtual Input* GetInput(int inputenum)=0;
 		virtual Input* GetMaterialInput(int inputenum)=0;
 		virtual void   GetInputValue(IssmDouble* pvalue,Node* node,int enumtype)=0;
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 16909)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 16910)
@@ -22,6 +22,4 @@
 /*FUNCTION Penta::Penta(){{{*/
 Penta::Penta(){
-
-	this->nodes             = NULL;
 	this->vertices          = NULL;
 	this->material          = NULL;
@@ -34,5 +32,4 @@
 /*FUNCTION Penta::~Penta(){{{*/
 Penta::~Penta(){
-	delete inputs;
 	this->parameters=NULL;
 }
@@ -126,12 +123,4 @@
 	_assert_(this->inputs);
 	this->inputs->AddInput(new PentaInput(input_enum,values,interpolation_enum));
-}
-/*}}}*/
-/*FUNCTION Tria::AddInput{{{*/
-void  Penta::AddInput(Input* input_in){
-
-	/*Call inputs method*/
-	_assert_(this->inputs);
-	this->inputs->AddInput(input_in);
 }
 /*}}}*/
@@ -1319,9 +1308,4 @@
 int Penta::GetNumberOfVertices(void){
 	return NUMVERTICES; 
-}
-/*}}}*/
-/*FUNCTION Penta::GetInput(int inputenum) {{{*/
-Input* Penta::GetInput(int inputenum){
-	return inputs->GetInput(inputenum);
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 16909)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 16910)
@@ -35,5 +35,4 @@
 		int          sid;
 
-		Node       **nodes;                       // set of nodes
 		Vertex     **vertices;                    // 6 vertices
 		Material    *material;                    // 1 material ice
@@ -42,5 +41,4 @@
 
 		Parameters  *parameters;                  //pointer to solution parameters
-		Inputs      *inputs;
 
 		/*Penta constructors and destructor: {{{*/
@@ -68,6 +66,4 @@
 		/*}}}*/
 		/*Element virtual functions definitions: {{{*/
-		bool        AllActive(void){_error_("not implemented yet");};
-		bool        AnyActive(void){_error_("not implemented yet");};
 		void   BasalFrictionCreateInput(void);
 		IssmDouble CharacteristicLength(void){_error_("not implemented yet");};
@@ -209,5 +205,4 @@
 		void           AddBasalInput(int input_enum, IssmDouble* values, int interpolation_enum);
 		void           AddInput(int input_enum, IssmDouble* values, int interpolation_enum);
-		void           AddInput(Input* input_in);
 		void           AddMaterialInput(int input_enum, IssmDouble* values, int interpolation_enum);
 		void	         NormalBase(IssmDouble* bed_normal, IssmDouble* xyz_list);
@@ -232,5 +227,4 @@
 		void           GetConnectivityList(int* connectivity);
 		int            GetElementType(void);
-		Input*         GetInput(int inputenum);
 		Input*         GetMaterialInput(int inputenum);
 		void           GetInputListOnVertices(IssmDouble* pvalue,int enumtype);
Index: /issm/trunk-jpl/src/c/classes/Elements/Seg.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Seg.cpp	(revision 16909)
+++ /issm/trunk-jpl/src/c/classes/Elements/Seg.cpp	(revision 16910)
@@ -21,5 +21,4 @@
 /*FUNCTION Seg::Seg(){{{*/
 Seg::Seg(){
-	this->nodes      = NULL;
 	this->vertices   = NULL;
 	this->material   = NULL;
@@ -48,10 +47,8 @@
 			this->material = NULL;
 			this->matpar   = NULL;
-
 		}
 /*}}}*/
 /*FUNCTION Seg::~Seg(){{{*/
 Seg::~Seg(){
-	delete inputs;
 	this->parameters=NULL;
 }
@@ -524,9 +521,4 @@
 }
 /*}}}*/
-/*FUNCTION Seg::GetInput(int inputenum) {{{*/
-Input* Seg::GetInput(int inputenum){
-	return inputs->GetInput(inputenum);
-}
-/*}}}*/
 /*FUNCTION Seg::GetNumberOfNodes;{{{*/
 int Seg::GetNumberOfNodes(void){
Index: /issm/trunk-jpl/src/c/classes/Elements/Seg.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Seg.h	(revision 16909)
+++ /issm/trunk-jpl/src/c/classes/Elements/Seg.h	(revision 16910)
@@ -33,5 +33,4 @@
 		int          sid;
 
-		Node       **nodes;                       // nodes
 		Vertex     **vertices;                    // 3 vertices
 		Material    *material;                    // 1 material ice
@@ -39,5 +38,4 @@
 
 		Parameters  *parameters;                  //pointer to solution parameters
-		Inputs      *inputs;
 
 		/*Seg constructors, destructors {{{*/
@@ -67,9 +65,6 @@
 		/*}}}*/
 		/*Element virtual functions definitions: {{{*/
-		bool        AllActive(void){_error_("not implemented yet");};
-		bool        AnyActive(void){_error_("not implemented yet");};
 		void        AddBasalInput(int input_enum, IssmDouble* values, int interpolation_enum){_error_("not implemented yet");};
 		void        AddInput(int input_enum, IssmDouble* values, int interpolation_enum){_error_("not implemented yet");};
-		void        AddInput(Input* input_in){_error_("not implemented yet");};
 		void        AddMaterialInput(int input_enum, IssmDouble* values, int interpolation_enum){_error_("not implemented yet");};
 		IssmDouble  CharacteristicLength(void){_error_("not implemented yet");};
@@ -145,5 +140,4 @@
 		void        GetGroundedPart(int* point1,IssmDouble* fraction1, IssmDouble* fraction2,bool* mainlyfloating){_error_("not implemented yet");};
 		IssmDouble  GetGroundedPortion(IssmDouble* xyz_list){_error_("not implemented yet");};
-		Input*      GetInput(int inputenum);
 		Input*      GetMaterialInput(int inputenum){_error_("not implemented yet");};
 		void        GetInputListOnVertices(IssmDouble* pvalue,int enumtype){_error_("not implemented yet");};
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 16909)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 16910)
@@ -26,5 +26,4 @@
 /*FUNCTION Tria::Tria(){{{*/
 Tria::Tria(){
-	this->nodes      = NULL;
 	this->vertices   = NULL;
 	this->material   = NULL;
@@ -32,5 +31,4 @@
 	this->inputs     = NULL;
 	this->parameters = NULL;
-
 }
 /*}}}*/
@@ -54,10 +52,8 @@
 		this->material = NULL;
 		this->matpar   = NULL;
-
 }
 /*}}}*/
 /*FUNCTION Tria::~Tria(){{{*/
 Tria::~Tria(){
-	delete inputs;
 	this->parameters=NULL;
 }
@@ -189,12 +185,4 @@
 	_assert_(this->inputs);
 	this->inputs->AddInput(new TriaInput(input_enum,values,interpolation_enum));
-}
-/*}}}*/
-/*FUNCTION Tria::AddInput{{{*/
-void  Tria::AddInput(Input* input_in){
-
-	/*Call inputs method*/
-	_assert_(this->inputs);
-	this->inputs->AddInput(input_in);
 }
 /*}}}*/
@@ -1395,9 +1383,4 @@
 int Tria::GetNumberOfVertices(void){
 	return NUMVERTICES;
-}
-/*}}}*/
-/*FUNCTION Tria::GetInput(int inputenum) {{{*/
-Input* Tria::GetInput(int inputenum){
-	return inputs->GetInput(inputenum);
 }
 /*}}}*/
@@ -6400,29 +6383,4 @@
 
 #ifdef _HAVE_HYDROLOGY_
-/*FUNCTION Tria::AllActive{{{*/
-bool Tria::AllActive(void){
-
-	/*Intermediaries*/
-	const int  numnodes = NUMVERTICES;
-
-	for(int i=0;i<numnodes;i++){
-		if(!this->nodes[i]->IsActive()) return false;
-	}
-
-	return true;
-}
-/*}}}*/
-/*FUNCTION Tria::AnyActive{{{*/
-bool Tria::AnyActive(void){
-
-	/*Intermediaries*/
-	const int  numnodes = NUMVERTICES;
-
-	for(int i=0;i<numnodes;i++){
-		if(this->nodes[i]->IsActive()) return true;
-	}
-
-	return false;
-}/*}}}*/
 /*FUNCTION Tria::CreateHydrologyWaterVelocityInput {{{*/
 void Tria::CreateHydrologyWaterVelocityInput(void){
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 16909)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 16910)
@@ -35,5 +35,4 @@
 		int          sid;
 
-		Node       **nodes;                       // nodes
 		Vertex     **vertices;                    // 3 vertices
 		Material    *material;                    // 1 material ice
@@ -41,5 +40,4 @@
 
 		Parameters  *parameters;                  //pointer to solution parameters
-		Inputs      *inputs;
 
 		/*Tria constructors, destructors {{{*/
@@ -67,6 +65,4 @@
 		/*}}}*/
 		/*Element virtual functions definitions: {{{*/
-		bool        AllActive(void);
-		bool        AnyActive(void);
 		IssmDouble  CharacteristicLength(void);
 		void        ComputeBasalStress(Vector<IssmDouble>* sigma_b);
@@ -220,5 +216,4 @@
 		void           AddBasalInput(int input_enum, IssmDouble* values, int interpolation_enum);
 		void           AddInput(int input_enum, IssmDouble* values, int interpolation_enum);
-		void           AddInput(Input* input_in);
 		void           AddMaterialInput(int input_enum, IssmDouble* values, int interpolation_enum);
 		ElementMatrix* CreateKMatrix(void);
@@ -273,5 +268,4 @@
 		void           NormalBase(IssmDouble* normal,IssmDouble* xyz_list);
 		IssmDouble     GetMaterialParameter(int enum_in);
-		Input*         GetInput(int inputenum);
 		Input*         GetMaterialInput(int inputenum);
 		void           GetInputListOnVertices(IssmDouble* pvalue,int enumtype);
