Index: /issm/trunk/src/c/EnumDefinitions/EnumAsString.cpp
===================================================================
--- /issm/trunk/src/c/EnumDefinitions/EnumAsString.cpp	(revision 3827)
+++ /issm/trunk/src/c/EnumDefinitions/EnumAsString.cpp	(revision 3828)
@@ -192,4 +192,5 @@
 		case VzOldEnum : return "VzOld";
 		case WeightsEnum : return "Weights";
+		case P1Enum : return "P1";
 		case BetaEnum : return "Beta";
 		case CmGradientEnum : return "CmGradient";
Index: /issm/trunk/src/c/EnumDefinitions/StringAsEnum.cpp
===================================================================
--- /issm/trunk/src/c/EnumDefinitions/StringAsEnum.cpp	(revision 3827)
+++ /issm/trunk/src/c/EnumDefinitions/StringAsEnum.cpp	(revision 3828)
@@ -190,4 +190,5 @@
 	else if (strcmp(name,"VzOld")==0) return VzOldEnum;
 	else if (strcmp(name,"Weights")==0) return WeightsEnum;
+	else if (strcmp(name,"P1")==0) return P1Enum;
 	else if (strcmp(name,"Beta")==0) return BetaEnum;
 	else if (strcmp(name,"CmGradient")==0) return CmGradientEnum;
Index: /issm/trunk/src/c/Makefile.am
===================================================================
--- /issm/trunk/src/c/Makefile.am	(revision 3827)
+++ /issm/trunk/src/c/Makefile.am	(revision 3828)
@@ -68,4 +68,6 @@
 					./objects/Elements/TriaHook.h\
 					./objects/Elements/TriaHook.cpp\
+					./objects/Elements/TriaRef.h\
+					./objects/Elements/TriaRef.cpp\
 					./objects/Inputs/Input.h\
 					./objects/Inputs/TriaVertexInput.h\
@@ -513,4 +515,6 @@
 					./objects/Elements/TriaHook.h\
 					./objects/Elements/TriaHook.cpp\
+					./objects/Elements/TriaRef.h\
+					./objects/Elements/TriaRef.cpp\
 					./objects/Inputs/Input.h\
 					./objects/Inputs/TriaVertexInput.h\
Index: /issm/trunk/src/c/objects/Elements/Tria.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 3827)
+++ /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 3828)
@@ -48,4 +48,7 @@
 	/*id: */
 	this->id=tria_id;
+
+	/*interpolation type: */
+	this->InitInterpolationType(P1Enum);
 	
 	/*hooks: */
@@ -186,4 +189,5 @@
 	/*copy fields: */
 	tria->id=this->id;
+	tria->interpolation_type=this->interpolation_type;
 	if(this->inputs){
 		tria->inputs=(Inputs*)this->inputs->Copy();
@@ -240,4 +244,5 @@
 	 *object data (thanks to DataSet::Demarshall):*/
 	memcpy(&id,marshalled_dataset,sizeof(id));marshalled_dataset+=sizeof(id);
+	memcpy(&interpolation_type,marshalled_dataset,sizeof(interpolation_type));marshalled_dataset+=sizeof(interpolation_type);
 
 	/*demarshall hooks: */
@@ -306,4 +311,5 @@
 	/*marshall Tria data: */
 	memcpy(marshalled_dataset,&id,sizeof(id));marshalled_dataset+=sizeof(id);
+	memcpy(marshalled_dataset,&interpolation_type,sizeof(interpolation_type));marshalled_dataset+=sizeof(interpolation_type);
 
 	/*Marshall hooks: */
@@ -330,4 +336,5 @@
 	
 	return sizeof(id)
+		+sizeof(interpolation_type)
 		+hnodes.MarshallSize()
 		+hmatice.MarshallSize()
Index: /issm/trunk/src/c/objects/Elements/Tria.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Tria.h	(revision 3827)
+++ /issm/trunk/src/c/objects/Elements/Tria.h	(revision 3828)
@@ -10,4 +10,5 @@
 #include "./Element.h"
 #include "./TriaHook.h"
+#include "./TriaRef.h"
 class Parameters;
 class Inputs;
@@ -21,5 +22,5 @@
 /*}}}*/
 
-class Tria: public Element,public TriaHook{
+class Tria: public Element,public TriaHook,public TriaRef{
 
 	public:
@@ -116,6 +117,5 @@
 		double GetAreaCoordinate(double x, double y, int which_one);
 		/*}}}*/
-
-		/*updates:*/
+		/*FUNCTION updates{{{1*/
 		void  UpdateFromDakota(void* inputs);
 		void  UpdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type);
@@ -134,5 +134,5 @@
 		void  UpdateInputsFromConstant(bool constant, int name){ISSMERROR("Not implemented yet!");}
 		void  pdateInputsFromSolution(double* solution, int analysis_type, int sub_analysis_type);
-
+		/*}}}*/
 
 };
Index: /issm/trunk/src/c/objects/Elements/TriaRef.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/TriaRef.cpp	(revision 3828)
+++ /issm/trunk/src/c/objects/Elements/TriaRef.cpp	(revision 3828)
@@ -0,0 +1,35 @@
+/*!\file TriaRef.c
+ * \brief: implementation of the TriaRef object
+ */
+
+/*Headers:*/
+/*{{{1*/
+#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 "../objects.h"
+#include "../../EnumDefinitions/EnumDefinitions.h"
+#include "../../shared/shared.h"
+#include "../../DataSet/DataSet.h"
+#include "../../include/include.h"
+/*}}}*/
+
+/*Object constructors and destructor*/
+/*FUNCTION TriaRef::TriaRef(){{{1*/
+TriaRef::TriaRef(){
+}
+/*}}}*/
+/*FUNCTION TriaRef::~TriaRef(){{{1*/
+TriaRef::~TriaRef(){
+}
+/*}}}*/
+/*FUNCTION TriaRef::InitInterpolationType(int type){{{1*/
+void TriaRef::InitInterpolationType(int type){
+	this->interpolation_type=type;
+}
+/*}}}*/
Index: /issm/trunk/src/c/objects/Elements/TriaRef.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/TriaRef.h	(revision 3828)
+++ /issm/trunk/src/c/objects/Elements/TriaRef.h	(revision 3828)
@@ -0,0 +1,25 @@
+/*!\file:  TriaRef.h
+ * \brief abstract class for handling Tria oriented routines, like nodal functions, 
+ * strain rate generation, etc ...
+ */ 
+
+
+#ifndef _TRIAREF_H_
+#define _TRIAREF_H_
+
+class TriaRef{
+	
+
+	public: 
+		int interpolation_type; //L1, L2, H1, H2, etc ...
+		
+		/*FUNCTION constructors, destructors {{{1*/
+		TriaRef();
+		~TriaRef();
+		void InitInterpolationType(int type);
+		/*}}}*/
+		/*FUNCTION numerics {{{1*/
+		/*}}}*/
+
+};
+#endif
Index: /issm/trunk/src/c/objects/Inputs/TriaVertexInput.cpp
===================================================================
--- /issm/trunk/src/c/objects/Inputs/TriaVertexInput.cpp	(revision 3827)
+++ /issm/trunk/src/c/objects/Inputs/TriaVertexInput.cpp	(revision 3828)
@@ -133,19 +133,4 @@
 
 /*Object functions*/
-/*FUNCTION TriaVertexInput::GetParameterValue(bool* pvalue) {{{1*/
-void TriaVertexInput::GetParameterValue(bool* pvalue){ISSMERROR(" not supported yet!");}
-/*}}}*/
-/*FUNCTION TriaVertexInput::GetParameterValue(int* pvalue){{{1*/
-void TriaVertexInput::GetParameterValue(int* pvalue){ISSMERROR(" not supported yet!");}
-/*}}}*/
-/*FUNCTION TriaVertexInput::GetParameterValue(double* pvalue){{{1*/
-void TriaVertexInput::GetParameterValue(double* pvalue){ISSMERROR(" not supported yet!");}
-/*}}}*/
-/*FUNCTION TriaVertexInput::GetParameterValue(double* pvalue,Node* node){{{1*/
-void TriaVertexInput::GetParameterValue(double* pvalue,Node* node){ISSMERROR(" not supported yet!");}
-/*}}}*/
-/*FUNCTION TriaVertexInput::GetParameterValue(double* pvalue,Node* node1,Node* node2,double gauss_coord){{{1*/
-void TriaVertexInput::GetParameterValue(double* pvalue,Node* node1,Node* node2,double gauss_coord){ISSMERROR(" not supported yet!");}
-/*}}}*/
 /*FUNCTION TriaVertexInput::GetParameterValue(double* pvalue,double* gauss){{{1*/
 void TriaVertexInput::GetParameterValue(double* pvalue,double* gauss){
@@ -162,7 +147,4 @@
 
 }
-/*}}}*/
-/*FUNCTION TriaVertexInput::GetParameterValue(double* pvalue,double* gauss,double defaultvalue){{{1*/
-void TriaVertexInput::GetParameterValue(double* pvalue,double* gauss,double defaultvalue){ISSMERROR(" not supported yet!");}
 /*}}}*/
 /*FUNCTION TriaVertexInput::GetParameterValues(double* values,double* gauss_pointers, int numgauss){{{1*/
Index: /issm/trunk/src/c/objects/Inputs/TriaVertexInput.h
===================================================================
--- /issm/trunk/src/c/objects/Inputs/TriaVertexInput.h	(revision 3827)
+++ /issm/trunk/src/c/objects/Inputs/TriaVertexInput.h	(revision 3828)
@@ -10,7 +10,8 @@
 /*{{{1*/
 #include "./Input.h"
+#include "../Elements/TriaRef.h"
 /*}}}*/
 
-class TriaVertexInput: public Input{
+class TriaVertexInput: public Input,public TriaRef{
 
 	private: 
@@ -49,12 +50,12 @@
 		/*}}}*/
 		/*numerics: {{{1*/
-		void GetParameterValue(bool* pvalue);
-		void GetParameterValue(int* pvalue);
-		void GetParameterValue(double* pvalue);
-		void GetParameterValue(double* pvalue,Node* node);
-		void GetParameterValue(double* pvalue,Node* node1,Node* node2,double gauss_coord);
+		void GetParameterValue(bool* pvalue){ISSMERROR("not implemented yet");}
+		void GetParameterValue(int* pvalue){ISSMERROR("not implemented yet");}
+		void GetParameterValue(double* pvalue){ISSMERROR("not implemented yet");}
+		
+		void GetParameterValue(double* pvalue,Node* node){ISSMERROR("not implemented yet");}
+		void GetParameterValue(double* pvalue,Node* node1,Node* node2,double gauss_coord){ISSMERROR("not implemented yet");}
 		void GetParameterValue(double* pvalue,double* gauss);
-		void GetParameterValue(double* pvalue,double* gauss,double defaultvalue);
-		
+		void GetParameterValue(double* pvalue,double* gauss,double defaultvalue){ISSMERROR("not implemented yet");}
 		void GetParameterValues(double* values,double* gauss_pointers, int numgauss);
 	
Index: /issm/trunk/src/c/objects/objects.h
===================================================================
--- /issm/trunk/src/c/objects/objects.h	(revision 3827)
+++ /issm/trunk/src/c/objects/objects.h	(revision 3828)
@@ -36,5 +36,8 @@
 #include "./Elements/Element.h"
 #include "./Elements/Penta.h"
+#include "./Elements/PentaHook.h"
 #include "./Elements/Tria.h"
+#include "./Elements/TriaHook.h"
+#include "./Elements/TriaRef.h"
 #include "./Elements/Sing.h"
 
