Index: /issm/trunk/src/c/objects/Elements/Penta.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 5723)
+++ /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 5724)
@@ -3862,5 +3862,4 @@
 
 	/*Free ressources:*/
-	delete gauss;
 	xfree((void**)&doflist);
 
Index: /issm/trunk/src/c/objects/Gauss/GaussPenta.cpp
===================================================================
--- /issm/trunk/src/c/objects/Gauss/GaussPenta.cpp	(revision 5723)
+++ /issm/trunk/src/c/objects/Gauss/GaussPenta.cpp	(revision 5724)
@@ -80,5 +80,62 @@
 }
 /*}}}*/
-/*FUNCTION GaussPenta::GaussPenta{{{1*/
+/*FUNCTION GaussPenta::GaussPenta(int index1, int index2, int order){{{1*/
+GaussPenta::GaussPenta(int index1, int index2,int order){
+
+	/*Intermediaties*/
+	double *seg_coords  = NULL;
+	double *seg_weights = NULL;
+	int     i;
+
+	/*Get Segment gauss points*/
+	numgauss=order;
+	GaussLegendreLinear(&seg_coords,&seg_weights,numgauss);
+
+	/*Allocate GaussTria fields*/
+	coords1=(double*)xmalloc(numgauss*sizeof(double));
+	coords2=(double*)xmalloc(numgauss*sizeof(double));
+	coords3=(double*)xmalloc(numgauss*sizeof(double));
+	coords4=(double*)xmalloc(numgauss*sizeof(double));
+	weights=(double*)xmalloc(numgauss*sizeof(double));
+
+	if(index1==0 && index2==3){
+		for(i=0;i<numgauss;i++) coords1[i]=1.0;
+		for(i=0;i<numgauss;i++) coords2[i]=0.0;
+		for(i=0;i<numgauss;i++) coords3[i]=0.0;
+		for(i=0;i<numgauss;i++) coords4[i]=seg_coords[i];
+		for(i=0;i<numgauss;i++) weights[i]=seg_weights[i];
+	}
+	else if (index1==1 && index2==4){
+		for(i=0;i<numgauss;i++) coords1[i]=0.0;
+		for(i=0;i<numgauss;i++) coords2[i]=1.0;
+		for(i=0;i<numgauss;i++) coords3[i]=0.0;
+		for(i=0;i<numgauss;i++) coords4[i]=seg_coords[i];
+		for(i=0;i<numgauss;i++) weights[i]=seg_weights[i];
+	}
+	else if (index1==2 && index2==5){
+		for(i=0;i<numgauss;i++) coords1[i]=0.0;
+		for(i=0;i<numgauss;i++) coords2[i]=0.0;
+		for(i=0;i<numgauss;i++) coords3[i]=1.0;
+		for(i=0;i<numgauss;i++) coords4[i]=seg_coords[i];
+		for(i=0;i<numgauss;i++) weights[i]=seg_weights[i];
+	}
+	else{
+		ISSMERROR("Tria not supported yet");
+	}
+
+	/*Initialize static fields as undefined*/
+	weight=UNDEF;
+	coord1=UNDEF;
+	coord2=UNDEF;
+	coord3=UNDEF;
+	coord4=UNDEF;
+
+	/*clean up*/
+	xfree((void**)&seg_coords);
+	xfree((void**)&seg_weights);
+
+}
+/*}}}*/
+/*FUNCTION GaussPenta::GaussPenta(int index1, int index2, int index3, int order){{{1*/
 GaussPenta::GaussPenta(int index1, int index2, int index3, int order){
 
Index: /issm/trunk/src/c/objects/Gauss/GaussPenta.h
===================================================================
--- /issm/trunk/src/c/objects/Gauss/GaussPenta.h	(revision 5723)
+++ /issm/trunk/src/c/objects/Gauss/GaussPenta.h	(revision 5724)
@@ -34,4 +34,5 @@
 		GaussPenta();
 		GaussPenta(int order_horiz,int order_vert);
+		GaussPenta(int index1, int index2,int order);
 		GaussPenta(int index1, int index2, int index3, int order);
 		~GaussPenta();
