Index: /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp	(revision 21891)
+++ /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp	(revision 21892)
@@ -500,5 +500,5 @@
 		gllevelset_input=element->GetInput(MaskGroundediceLevelsetEnum); _assert_(gllevelset_input);
 		element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating);
-	   gauss = element->NewGauss(point1,fraction1,fraction2,mainlyfloating,3);
+	   gauss = element->NewGauss(point1,fraction1,fraction2,3);
 	}
 	else{
Index: /issm/trunk-jpl/src/c/classes/Elements/Element.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 21891)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 21892)
@@ -251,4 +251,5 @@
       virtual Gauss*     NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order_horiz,int order_vert)=0;
       virtual Gauss*     NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,bool mainlyfloating,int order)=0;
+      virtual Gauss*     NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,int order)=0;
 		virtual Gauss*     NewGaussBase(int order)=0;
 		virtual Gauss*     NewGaussLine(int vertex1,int vertex2,int order)=0;
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 21891)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 21892)
@@ -121,4 +121,5 @@
 		Gauss*         NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order_horiz,int order_vert);
 		Gauss*         NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,bool mainlyfloating,int order);
+		Gauss*         NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,int order){_error_("not implemented yet");};
 		Gauss*         NewGaussBase(int order);
 		Gauss*         NewGaussLine(int vertex1,int vertex2,int order);
Index: /issm/trunk-jpl/src/c/classes/Elements/Seg.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Seg.h	(revision 21891)
+++ /issm/trunk-jpl/src/c/classes/Elements/Seg.h	(revision 21892)
@@ -110,4 +110,5 @@
       Gauss*      NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order_horiz,int order_vert){_error_("not implemented yet");};
       Gauss*      NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,bool mainlyfloating,int order){_error_("not implemented yet");};
+      Gauss*      NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,int order){_error_("not implemented yet");};
 		Gauss*      NewGaussBase(int order){_error_("not implemented yet");};
 		Gauss*      NewGaussLine(int vertex1,int vertex2,int order){_error_("not implemented yet");};
Index: /issm/trunk-jpl/src/c/classes/Elements/Tetra.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tetra.h	(revision 21891)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tetra.h	(revision 21892)
@@ -118,4 +118,5 @@
       Gauss*      NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order_horiz,int order_vert);
       Gauss*      NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,bool mainlyfloating,int order){_error_("not implemented yet");};
+      Gauss*      NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,int order){_error_("not implemented yet");};
 		Gauss*      NewGaussBase(int order);
 		Gauss*      NewGaussLine(int vertex1,int vertex2,int order){_error_("not implemented yet");};
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 21891)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 21892)
@@ -2348,4 +2348,9 @@
 }
 /*}}}*/
+Gauss*     Tria::NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,int order){/*{{{*/
+
+	return new GaussTria(point1,fraction1,fraction2,order);
+}
+/*}}}*/
 Gauss*     Tria::NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order_horiz,int order_vert){/*{{{*/
 
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 21891)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 21892)
@@ -181,4 +181,5 @@
       Gauss*         NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order);
       Gauss*         NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,bool mainlyfloating,int order);
+      Gauss*         NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,int order);
       Gauss*         NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order_horiz,int order_vert);
 		Gauss*         NewGaussBase(int order);
Index: /issm/trunk-jpl/src/c/classes/gauss/GaussTria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/gauss/GaussTria.cpp	(revision 21891)
+++ /issm/trunk-jpl/src/c/classes/gauss/GaussTria.cpp	(revision 21892)
@@ -287,4 +287,61 @@
 }
 /*}}}*/
+GaussTria::GaussTria(int index,IssmDouble r1,IssmDouble r2,int order){/*{{{*/
+
+	/*
+	 *  ^ 
+	 *  ------------------
+	 * 1|\              |
+	 *  |  \            |
+	 *  |    \          |
+	 *  |      \        |
+	 *  |        \      |
+	 *  |          \    |
+	 *  |    +(x,y)  \  |
+	 *  |              \|
+	 *  +---------------+-->
+	 *  0               1
+	 *
+	 */
+	int         ig;
+	IssmDouble x,y;
+	IssmDouble xy_list[3][2];
+
+	/*Double number of gauss points*/
+	GaussTria *gauss1    = NULL;
+	GaussTria *gauss2    = NULL;
+	gauss1=new GaussTria(index,r1,r2,1,order); //for the mainly floating part
+	gauss2=new GaussTria(index,r1,r2,0,order); //for the mainly grounded part
+
+	this->numgauss = gauss1->numgauss + gauss2->numgauss;
+	this->coords1=xNew<IssmDouble>(this->numgauss);
+	this->coords2=xNew<IssmDouble>(this->numgauss);
+	this->coords3=xNew<IssmDouble>(this->numgauss);
+	this->weights=xNew<IssmDouble>(this->numgauss);
+
+	for(ig=0;ig<gauss1->numgauss;ig++){ // Add the first triangle gauss points
+		this->coords1[ig]=gauss1->coords1[ig];
+		this->coords2[ig]=gauss1->coords2[ig];
+		this->coords3[ig]=gauss1->coords3[ig];
+		this->weights[ig]=gauss1->weights[ig];
+	}
+	for(ig=0;ig<gauss2->numgauss;ig++){ // Add the second triangle gauss points
+		this->coords1[gauss1->numgauss+ig]=gauss2->coords1[ig];
+		this->coords2[gauss1->numgauss+ig]=gauss2->coords2[ig];
+		this->coords3[gauss1->numgauss+ig]=gauss2->coords3[ig];
+		this->weights[gauss1->numgauss+ig]=gauss2->weights[ig];
+	}
+
+	/*Delete gauss points*/
+	delete gauss1;
+	delete gauss2;
+
+	/*Initialize static fields as undefined*/
+	weight=UNDEF;
+	coord1=UNDEF;
+	coord2=UNDEF;
+	coord3=UNDEF;
+}
+/*}}}*/
 GaussTria::~GaussTria(){/*{{{*/
 	xDelete<IssmDouble>(weights);
Index: /issm/trunk-jpl/src/c/classes/gauss/GaussTria.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/gauss/GaussTria.h	(revision 21891)
+++ /issm/trunk-jpl/src/c/classes/gauss/GaussTria.h	(revision 21892)
@@ -31,4 +31,5 @@
 		GaussTria(int index1,int index2,int order);
 		GaussTria(int index,IssmDouble r1, IssmDouble r2,bool maintlyfloating,int order);
+		GaussTria(int index,IssmDouble r1, IssmDouble r2,int order);
 		GaussTria(IssmDouble area_coordinates[2][3],int order);
 		~GaussTria();
