Index: /issm/trunk-jpl/src/c/analyses/AdjointBalancethicknessAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/AdjointBalancethicknessAnalysis.cpp	(revision 16862)
+++ /issm/trunk-jpl/src/c/analyses/AdjointBalancethicknessAnalysis.cpp	(revision 16863)
@@ -122,4 +122,5 @@
 
 	/*Clean up and return*/
+	xDelete<int>(responses);
 	xDelete<IssmDouble>(xyz_list);
 	xDelete<IssmDouble>(basis);
Index: /issm/trunk-jpl/src/c/analyses/AdjointHorizAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/AdjointHorizAnalysis.cpp	(revision 16862)
+++ /issm/trunk-jpl/src/c/analyses/AdjointHorizAnalysis.cpp	(revision 16863)
@@ -238,4 +238,5 @@
 	/*Clean up and return*/
 	xDelete<int>(cs_list);
+	xDelete<int>(responses);
 	xDelete<IssmDouble>(xyz_list_top);
 	xDelete<IssmDouble>(vbasis);
@@ -421,4 +422,5 @@
 
 	/*Clean up and return*/
+	xDelete<int>(responses);
 	xDelete<IssmDouble>(xyz_list_top);
 	xDelete<IssmDouble>(basis);
@@ -618,4 +620,5 @@
 
 	/*Clean up and return*/
+	xDelete<int>(responses);
 	xDelete<IssmDouble>(xyz_list);
 	xDelete<IssmDouble>(basis);
Index: /issm/trunk-jpl/src/c/analyses/BalancethicknessAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/BalancethicknessAnalysis.cpp	(revision 16862)
+++ /issm/trunk-jpl/src/c/analyses/BalancethicknessAnalysis.cpp	(revision 16863)
@@ -119,15 +119,20 @@
 	Element* basalelement = element->SpawnBasalElement();
 
+	ElementMatrix* Ke = NULL;
+	switch(element->FiniteElement()){
+		case P1Enum: case P2Enum:
+			Ke = CreateKMatrixCG(basalelement);
+			break;
+		case P1DGEnum:
+			Ke = CreateKMatrixDG(basalelement);
+			break;
+		default:
+			_error_("Element type " << EnumToStringx(element->FiniteElement()) << " not supported yet");
+	}
+
 	int meshtype;
 	element->FindParam(&meshtype,MeshTypeEnum);
-
-	switch(element->FiniteElement()){
-		case P1Enum: case P2Enum:
-			return CreateKMatrixCG(basalelement);
-		case P1DGEnum:
-			return CreateKMatrixDG(basalelement);
-		default:
-			_error_("Element type " << EnumToStringx(element->FiniteElement()) << " not supported yet");
-	}
+	if(meshtype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	return Ke;
 }/*}}}*/
 ElementMatrix* BalancethicknessAnalysis::CreateKMatrixCG(Element* element){/*{{{*/
@@ -306,13 +311,20 @@
 	Element* basalelement = element->SpawnBasalElement();
 
+	ElementVector* pe = NULL;
 	switch(element->FiniteElement()){
 		case P1Enum: case P2Enum:
-			return CreatePVectorCG(basalelement);
+			pe = CreatePVectorCG(basalelement);
+			break;
 		case P1DGEnum:
-			return CreatePVectorDG(basalelement);
+			pe = CreatePVectorDG(basalelement);
+			break;
 		default:
 			_error_("Element type " << EnumToStringx(element->FiniteElement()) << " not supported yet");
 	}
 
+	int meshtype;
+	element->FindParam(&meshtype,MeshTypeEnum);
+	if(meshtype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	return pe;
 }/*}}}*/
 ElementVector* BalancethicknessAnalysis::CreatePVectorCG(Element* element){/*{{{*/
Index: /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp	(revision 16862)
+++ /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp	(revision 16863)
@@ -217,15 +217,20 @@
 	Element* basalelement = element->SpawnBasalElement();
 
+	ElementMatrix* Ke = NULL;
+	switch(element->FiniteElement()){
+		case P1Enum: case P2Enum:
+			Ke = CreateKMatrixCG(basalelement);
+			break;
+		case P1DGEnum:
+			Ke = CreateKMatrixDG(basalelement);
+			break;
+		default:
+			_error_("Element type " << EnumToStringx(element->FiniteElement()) << " not supported yet");
+	}
+
 	int meshtype;
 	element->FindParam(&meshtype,MeshTypeEnum);
-
-	switch(element->FiniteElement()){
-		case P1Enum: case P2Enum:
-			return CreateKMatrixCG(basalelement);
-		case P1DGEnum:
-			return CreateKMatrixDG(basalelement);
-		default:
-			_error_("Element type " << EnumToStringx(element->FiniteElement()) << " not supported yet");
-	}
+	if(meshtype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	return Ke;
 }/*}}}*/
 ElementMatrix* MasstransportAnalysis::CreateKMatrixCG(Element* element){/*{{{*/
@@ -423,13 +428,20 @@
 	Element* basalelement = element->SpawnBasalElement();
 
+	ElementVector* pe = NULL;
 	switch(element->FiniteElement()){
 		case P1Enum: case P2Enum:
-			return CreatePVectorCG(basalelement);
+			pe = CreatePVectorCG(basalelement);
+			break;
 		case P1DGEnum:
-			return CreatePVectorDG(basalelement);
+			pe = CreatePVectorDG(basalelement);
+			break;
 		default:
 			_error_("Element type " << EnumToStringx(element->FiniteElement()) << " not supported yet");
 	}
 
+	int meshtype;
+	element->FindParam(&meshtype,MeshTypeEnum);
+	if(meshtype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	return pe;
 }/*}}}*/
 ElementVector* MasstransportAnalysis::CreatePVectorCG(Element* element){/*{{{*/
