Index: /issm/trunk/src/c/Makefile.am
===================================================================
--- /issm/trunk/src/c/Makefile.am	(revision 5660)
+++ /issm/trunk/src/c/Makefile.am	(revision 5661)
@@ -77,4 +77,6 @@
 					./objects/Bamg/Mesh.cpp\
 					./objects/Bamg/Mesh.h\
+					./objects/Gauss/GaussSeg.h\
+					./objects/Gauss/GaussSeg.cpp\
 					./objects/Gauss/GaussTria.h\
 					./objects/Gauss/GaussTria.cpp\
@@ -632,4 +634,6 @@
 					./objects/Bamg/Mesh.h\
 					./objects/Bamg/Mesh.cpp\
+					./objects/Gauss/GaussSeg.h\
+					./objects/Gauss/GaussSeg.cpp\
 					./objects/Gauss/GaussTria.h\
 					./objects/Gauss/GaussTria.cpp\
Index: /issm/trunk/src/c/objects/Elements/Tria.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Tria.h	(revision 5660)
+++ /issm/trunk/src/c/objects/Elements/Tria.h	(revision 5661)
@@ -22,4 +22,7 @@
 #include "../../EnumDefinitions/EnumDefinitions.h"
 /*}}}*/
+
+/*Element macros*/
+#define NUMVERTICES 3
 
 class Tria: public Element,public TriaHook,public TriaRef{
Index: /issm/trunk/src/c/objects/Gauss/GaussSeg.cpp
===================================================================
--- /issm/trunk/src/c/objects/Gauss/GaussSeg.cpp	(revision 5661)
+++ /issm/trunk/src/c/objects/Gauss/GaussSeg.cpp	(revision 5661)
@@ -0,0 +1,131 @@
+/*!\file GaussSeg.c
+ * \brief: implementation of the GaussSeg object
+ */
+
+/*Include files: {{{1*/
+#include "./../objects.h"
+/*}}}*/
+
+/*GaussSeg constructors and destructors:*/
+/*FUNCTION GaussSeg::GaussSeg() {{{1*/
+GaussSeg::GaussSeg(){
+
+	numgauss=-1;
+
+	weights=NULL;
+	coords=NULL;
+
+	weight=UNDEF;
+	coord=UNDEF;
+}
+/*}}}*/
+/*FUNCTION GaussSeg::GaussSeg(int order) {{{1*/
+GaussSeg::GaussSeg(int order){
+
+	/*Get gauss points*/
+	numgauss=order;
+	GaussLegendreLinear(&coords,&weights,order);
+
+	/*Initialize static fields as undefinite*/
+	weight=UNDEF;
+	coord=UNDEF;
+
+}
+/*}}}*/
+/*FUNCTION GaussSeg::~GaussSeg(){{{1*/
+GaussSeg::~GaussSeg(){
+	xfree((void**)&weights);
+	xfree((void**)&coords);
+}
+/*}}}*/
+
+/*Methods*/
+/*FUNCTION GaussSeg::Echo{{{1*/
+void GaussSeg::Echo(void){
+
+	printf("GaussSeg:\n");
+	printf("   numgauss: %i\n",numgauss);
+
+	if (weights){
+	 printf("   weights = ["); 
+	 for(int i=0;i<numgauss;i++) printf(" %g\n",weights[i]);
+	 printf("]\n");
+	}
+	else printf("weights = NULL\n");
+	if (coords){
+	 printf("   coords = ["); 
+	 for(int i=0;i<numgauss;i++) printf(" %g\n",coords[i]);
+	 printf("]\n");
+	}
+	else printf("coords = NULL\n");
+
+	printf("   weight = %g\n",weight);
+	printf("   coord  = %g\n",coord);
+
+}
+/*}}}*/
+/*FUNCTION GaussSeg::GaussCenter{{{1*/
+void GaussSeg::GaussCenter(void){
+
+	/*update static arrays*/
+	coord=0.0;
+
+}
+/*}}}*/
+/*FUNCTION GaussSeg::GaussPoint{{{1*/
+void GaussSeg::GaussPoint(int ig){
+
+	/*Check input in debugging mode*/
+	 ISSMASSERT(ig>=0 && ig< numgauss);
+
+	 /*update static arrays*/
+	 weight=weights[ig];
+	 coord=coords[ig];
+
+}
+/*}}}*/
+/*FUNCTION GaussSeg::GaussVertex{{{1*/
+void GaussSeg::GaussVertex(int iv){
+
+	/*in debugging mode: check that the default constructor has been called*/
+	ISSMASSERT(numgauss==-1);
+
+	/*update static arrays*/
+	switch(iv){
+		case 0:
+			coord=-1.0;
+			break;
+		case 1:
+			coord=1.0;
+			break;
+		default:
+			ISSMERROR("vertex index should be in [0 1]");
+
+	}
+
+}
+/*}}}*/
+/*FUNCTION GaussSeg::begin{{{1*/
+int GaussSeg::begin(void){
+
+	/*Check that this has been initialized*/
+	ISSMASSERT(numgauss>0);
+	ISSMASSERT(weights);
+	ISSMASSERT(coords);
+
+	/*return first gauss index*/
+	return 0;
+}
+/*}}}*/
+/*FUNCTION GaussSeg::end{{{1*/
+int GaussSeg::end(void){
+
+	/*Check that this has been initialized*/
+	ISSMASSERT(numgauss>0);
+	ISSMASSERT(weights);
+	ISSMASSERT(coords);
+
+	/*return last gauss index +1*/
+	return numgauss;
+}
+/*}}}*/
Index: /issm/trunk/src/c/objects/Gauss/GaussSeg.h
===================================================================
--- /issm/trunk/src/c/objects/Gauss/GaussSeg.h	(revision 5661)
+++ /issm/trunk/src/c/objects/Gauss/GaussSeg.h	(revision 5661)
@@ -0,0 +1,39 @@
+/*!\file GaussSeg.h
+ * \brief: header file for node object
+ */
+
+#ifndef _GAUSSSEG_H_
+#define _GAUSSSEG_H_
+
+/*Headers:*/
+/*{{{1*/
+#include "./../../shared/shared.h"
+/*}}}*/
+
+class GaussSeg{
+
+	private:
+		int numgauss;
+		double* weights;
+		double* coords;
+
+	public:
+		double weight;
+		double coord;
+		
+	public:
+
+		/*GaussSeg constructors, destructors*/
+		GaussSeg();
+		GaussSeg(int order);
+		~GaussSeg();
+
+		/*Methods*/
+		int  begin(void);
+		int  end(void);
+		void Echo(void);
+		void GaussPoint(int ig);
+		void GaussVertex(int iv);
+		void GaussCenter(void);
+};
+#endif  /* _GAUSSTRIA_H_ */
Index: /issm/trunk/src/c/objects/Loads/Icefront.h
===================================================================
--- /issm/trunk/src/c/objects/Loads/Icefront.h	(revision 5660)
+++ /issm/trunk/src/c/objects/Loads/Icefront.h	(revision 5661)
@@ -13,8 +13,8 @@
 class Parameters;
 class IoModel;
+/*}}}*/
 
 #define MAX_ICEFRONT_GRIDS 4 //max number of grids for a certain load
-#define ICEFRONTSTRING 20 //max string length
-/*}}}*/
+#define ICEFRONTSTRING 20    //max string length
 
 class Icefront: public Load {
Index: /issm/trunk/src/c/objects/objects.h
===================================================================
--- /issm/trunk/src/c/objects/objects.h	(revision 5660)
+++ /issm/trunk/src/c/objects/objects.h	(revision 5661)
@@ -24,4 +24,5 @@
 
 /*Gauss*/
+#include "./Gauss/GaussSeg.h"
 #include "./Gauss/GaussTria.h"
 #include "./Gauss/GaussPenta.h"
