Index: /issm/trunk-jpl/src/c/classes/gauss/GaussSeg.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/gauss/GaussSeg.cpp	(revision 16376)
+++ /issm/trunk-jpl/src/c/classes/gauss/GaussSeg.cpp	(revision 16376)
@@ -0,0 +1,90 @@
+/*!\file GaussSeg.c
+ * \brief: implementation of the GaussSeg object
+ */
+
+#include "./GaussSeg.h"
+#include "../../shared/io/Print/Print.h"
+#include "../../shared/Exceptions/exceptions.h"
+#include "../../shared/MemOps/MemOps.h"
+#include "../../shared/Enum/Enum.h"
+#include "../../shared/Numerics/GaussPoints.h"
+#include "../../shared/Numerics/constants.h"
+
+/*GaussSeg constructors and destructors:*/
+/*FUNCTION GaussSeg::GaussSeg(int order) {{{*/
+GaussSeg::GaussSeg(int order){
+
+	/*Get gauss points*/
+	this->numgauss = order;
+	GaussLegendreLinear(&this->coords1,&this->weights,order);
+
+	/*Initialize static fields as undefinite*/
+	weight=UNDEF;
+	coord1=UNDEF;
+}
+/*}}}*/
+/*FUNCTION GaussSeg::~GaussSeg(){{{*/
+GaussSeg::~GaussSeg(){
+	xDelete<IssmDouble>(weights);
+	xDelete<IssmDouble>(coords1);
+}
+/*}}}*/
+
+/*Methods*/
+/*FUNCTION GaussSeg::Echo{{{*/
+void GaussSeg::Echo(void){
+
+	_printf_("GaussSeg:\n");
+	_printf_("   numgauss: " << numgauss << "\n");
+
+	if (weights){
+	 _printf_("   weights = ["); 
+	 for(int i=0;i<numgauss;i++) _printf_(" " << weights[i] << "\n");
+	 _printf_("]\n");
+	}
+	else _printf_("weights = NULL\n");
+	if (coords1){
+	 _printf_("   coords1 = ["); 
+	 for(int i=0;i<numgauss;i++) _printf_(" " << coords1[i] << "\n");
+	 _printf_("]\n");
+	}
+	_printf_("   weight = " << weight << "\n");
+	_printf_("   coord1 = " << coord1 << "\n");
+
+}
+/*}}}*/
+/*FUNCTION GaussSeg::GaussPoint{{{*/
+void GaussSeg::GaussPoint(int ig){
+
+	/*Check input in debugging mode*/
+	 _assert_(ig>=0 && ig< numgauss);
+
+	 /*update static arrays*/
+	 weight=weights[ig];
+	 coord1=coords1[ig];
+}
+/*}}}*/
+/*FUNCTION GaussSeg::begin{{{*/
+int GaussSeg::begin(void){
+
+	/*Check that this has been initialized*/
+	_assert_(numgauss>0);
+	_assert_(weights);
+	_assert_(coords1);
+
+	/*return first gauss index*/
+	return 0;
+}
+/*}}}*/
+/*FUNCTION GaussSeg::end{{{*/
+int GaussSeg::end(void){
+
+	/*Check that this has been initialized*/
+	_assert_(numgauss>0);
+	_assert_(weights);
+	_assert_(coords1);
+
+	/*return last gauss index +1*/
+	return numgauss;
+}
+/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/gauss/GaussSeg.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/gauss/GaussSeg.h	(revision 16376)
+++ /issm/trunk-jpl/src/c/classes/gauss/GaussSeg.h	(revision 16376)
@@ -0,0 +1,34 @@
+/*!\file GaussSeg.h
+ * \brief: header file for node object
+ */
+
+#ifndef _GAUSSSEG_H_
+#define _GAUSSSEG_H_
+
+/*Headers:*/
+#include "../../shared/Numerics/types.h"
+
+class GaussSeg{
+
+	private:
+		int numgauss;
+		IssmDouble* weights;
+		IssmDouble* coords1;
+
+	public:
+		IssmDouble weight;
+		IssmDouble coord1;
+
+	public:
+
+		/*GaussSeg constructors, destructors*/
+		GaussSeg(int order);
+		~GaussSeg();
+
+		/*Methods*/
+		int  begin(void);
+		int  end(void);
+		void Echo(void);
+		void GaussPoint(int ig);
+};
+#endif
Index: /issm/trunk-jpl/src/c/classes/gauss/gaussobjects.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/gauss/gaussobjects.h	(revision 16375)
+++ /issm/trunk-jpl/src/c/classes/gauss/gaussobjects.h	(revision 16376)
@@ -6,4 +6,5 @@
 #define ALL_GAUSS_OBJECTS_H_
 
+#include "./GaussSeg.h"
 #include "./GaussTria.h"
 #include "./GaussPenta.h"
