Index: /issm/trunk/src/c/objects/Elements/Penta.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 5916)
+++ /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 5917)
@@ -739,84 +739,47 @@
 void  Penta::CreatePVector(Vec pg, Vec pf){
 
+	/*retrive parameters: */
 	int analysis_type;
-
-	/*retrive parameters: */
 	parameters->FindParam(&analysis_type,AnalysisTypeEnum);
 
-	/*if debugging mode, check that all pointers exist*/
+	/*if debugging mode, check that all pointers exist {{{2*/
 	ISSMASSERT(this->nodes && this->matice && this->matpar && this->neighbors && this->parameters && this->inputs);
+	/*}}}*/
 
 	/*Just branch to the correct element stiffness matrix generator, according to the type of analysis we are carrying out: */
-	if (analysis_type==DiagnosticHorizAnalysisEnum){
-		int approximation;
-		inputs->GetParameterValue(&approximation,ApproximationEnum);
-		if(approximation==MacAyealApproximationEnum){
-			CreatePVectorDiagnosticMacAyeal( pg);
-		}
-		else if(approximation==PattynApproximationEnum){
-			CreatePVectorDiagnosticPattyn( pg);
-		}
-		else if(approximation==HutterApproximationEnum){
-			return;
-		}
-		else if(approximation==NoneApproximationEnum){
-			return;
-		}
-		else if(approximation==StokesApproximationEnum){
-			CreatePVectorDiagnosticStokes( pg);
-		}
-		else if(approximation==MacAyealPattynApproximationEnum){
-			CreatePVectorDiagnosticMacAyeal( pg);
-			CreatePVectorDiagnosticPattyn( pg);
-		}
-		else if(approximation==PattynStokesApproximationEnum){
-			CreatePVectorDiagnosticPattyn( pg);
-			CreatePVectorDiagnosticStokes( pg);
-			CreatePVectorCouplingPattynStokes( pg);
-		}
-		else ISSMERROR("Approximation %s not supported yet",EnumToString(approximation));
-	}
-	else if (analysis_type==AdjointHorizAnalysisEnum){
-		int approximation;
-		inputs->GetParameterValue(&approximation,ApproximationEnum);
-		if(approximation==MacAyealApproximationEnum){
-			CreatePVectorAdjointMacAyeal( pg);
-		}
-		else if(approximation==PattynApproximationEnum){
-			CreatePVectorAdjointPattyn( pg);
-		}
-		else if(approximation==StokesApproximationEnum){
-			CreatePVectorAdjointStokes( pg);
-		}
-		else if(approximation==NoneApproximationEnum){
-			return;
-		}
-		else ISSMERROR("Approximation %s not supported yet",EnumToString(approximation));
-	}
-	else if (analysis_type==DiagnosticHutterAnalysisEnum){
-		CreatePVectorDiagnosticHutter( pg);
-	}
-	else if (analysis_type==DiagnosticVertAnalysisEnum){
-		CreatePVectorDiagnosticVert( pg);
-	}
-	else if (analysis_type==BedSlopeXAnalysisEnum || analysis_type==SurfaceSlopeXAnalysisEnum || analysis_type==BedSlopeYAnalysisEnum || analysis_type==SurfaceSlopeYAnalysisEnum){
-		CreatePVectorSlope( pg);
-	}
-	else if (analysis_type==PrognosticAnalysisEnum){
-		CreatePVectorPrognostic( pg);
-	}
-	else if (analysis_type==BalancedthicknessAnalysisEnum){
-		CreatePVectorBalancedthickness( pg);
-	}
-	else if (analysis_type==BalancedvelocitiesAnalysisEnum){
-		CreatePVectorBalancedvelocities( pg);
-	}
-	else if (analysis_type==ThermalAnalysisEnum){
-		CreatePVectorThermal( pg);
-	}
-	else if (analysis_type==MeltingAnalysisEnum){
-		CreatePVectorMelting( pg);
-	}
-	else ISSMERROR("analysis %i (%s) not supported yet",analysis_type,EnumToString(analysis_type));
+	switch(analysis_type){
+		case DiagnosticHorizAnalysisEnum:
+			CreatePVectorDiagnosticHoriz( pg);
+			break;
+		case AdjointHorizAnalysisEnum:
+			CreatePVectorAdjointHoriz( pg);
+			break;
+		case DiagnosticHutterAnalysisEnum:
+			CreatePVectorDiagnosticHutter( pg);
+			break;
+		case DiagnosticVertAnalysisEnum:
+			CreatePVectorDiagnosticVert( pg);
+			break;
+		case BedSlopeXAnalysisEnum: case SurfaceSlopeXAnalysisEnum: case BedSlopeYAnalysisEnum: case SurfaceSlopeYAnalysisEnum:
+			CreatePVectorSlope( pg);
+			break;
+		case PrognosticAnalysisEnum:
+			CreatePVectorPrognostic( pg);
+			break;
+		case BalancedthicknessAnalysisEnum:
+			CreatePVectorBalancedthickness( pg);
+			break;
+		case BalancedvelocitiesAnalysisEnum:
+			CreatePVectorBalancedvelocities( pg);
+			break;
+		case ThermalAnalysisEnum:
+			CreatePVectorThermal( pg);
+			break;
+		case MeltingAnalysisEnum:
+			CreatePVectorMelting( pg);
+			break;
+		default:
+			ISSMERROR("analysis %i (%s) not supported yet",analysis_type,EnumToString(analysis_type));
+	}
 
 }
@@ -2995,4 +2958,27 @@
 }
 /*}}}*/
+/*FUNCTION Penta::CreatePVectorAdjointHoriz{{{1*/
+void  Penta::CreatePVectorAdjointHoriz(Vec pg){
+
+	int approximation;
+	inputs->GetParameterValue(&approximation,ApproximationEnum);
+
+	switch(approximation){
+		case MacAyealApproximationEnum:
+			CreatePVectorAdjointMacAyeal( pg);
+			break;
+		case PattynApproximationEnum:
+			CreatePVectorAdjointPattyn( pg);
+			break;
+		case NoneApproximationEnum:
+			return;
+		case StokesApproximationEnum:
+			CreatePVectorAdjointStokes( pg);
+			break;
+		default:
+			ISSMERROR("Approximation %s not supported yet",EnumToString(approximation));
+	}
+}
+/*}}}*/
 /*FUNCTION Penta::CreatePVectorAdjointMacAyeal{{{1*/
 void  Penta::CreatePVectorAdjointMacAyeal(Vec p_g){
@@ -3241,4 +3227,38 @@
 	xfree((void**)&doflist);
 
+}
+/*}}}*/
+/*FUNCTION Penta::CreatePVectorDiagnosticHoriz{{{1*/
+void  Penta::CreatePVectorDiagnosticHoriz(Vec pg){
+
+	int approximation;
+	inputs->GetParameterValue(&approximation,ApproximationEnum);
+
+	switch(approximation){
+		case MacAyealApproximationEnum:
+			CreatePVectorDiagnosticMacAyeal( pg);
+			break;
+		case PattynApproximationEnum:
+			CreatePVectorDiagnosticPattyn( pg);
+			break;
+		case HutterApproximationEnum:
+			return;
+		case NoneApproximationEnum:
+			return;
+		case StokesApproximationEnum:
+			CreatePVectorDiagnosticStokes( pg);
+			break;
+		case MacAyealPattynApproximationEnum:
+			CreatePVectorDiagnosticMacAyeal( pg);
+			CreatePVectorDiagnosticPattyn( pg);
+			break;
+		case PattynStokesApproximationEnum:
+			CreatePVectorDiagnosticPattyn( pg);
+			CreatePVectorDiagnosticStokes( pg);
+			CreatePVectorCouplingPattynStokes( pg);
+			break;
+		default:
+			ISSMERROR("Approximation %s not supported yet",EnumToString(approximation));
+	}
 }
 /*}}}*/
Index: /issm/trunk/src/c/objects/Elements/Penta.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.h	(revision 5916)
+++ /issm/trunk/src/c/objects/Elements/Penta.h	(revision 5917)
@@ -152,7 +152,9 @@
 		void	  CreatePVectorBalancedthickness( Vec pg);
 		void	  CreatePVectorBalancedvelocities( Vec pg);
+		void	  CreatePVectorAdjointHoriz( Vec pg);
 		void	  CreatePVectorAdjointMacAyeal( Vec pg);
 		void	  CreatePVectorAdjointPattyn( Vec pg);
 		void	  CreatePVectorCouplingPattynStokes( Vec pg);
+		void	  CreatePVectorDiagnosticHoriz( Vec pg);
 		void	  CreatePVectorDiagnosticHutter( Vec pg);
 		void	  CreatePVectorDiagnosticMacAyeal( Vec pg);
Index: /issm/trunk/src/c/objects/Elements/Tria.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 5916)
+++ /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 5917)
@@ -767,4 +767,5 @@
 		case BalancedthicknessAnalysisEnum:
 			CreatePVectorBalancedthickness(pg);
+			break;
 		case AdjointBalancedthicknessAnalysisEnum:
 			CreatePVectorAdjointBalancedthickness(pg);
