Index: /issm/trunk-jpl/src/c/classes/Elements/Tetra.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tetra.cpp	(revision 17490)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tetra.cpp	(revision 17491)
@@ -580,40 +580,31 @@
 void Tetra::ReduceMatrices(ElementMatrix* Ke,ElementVector* pe){
 
-	int analysis_type;
-	parameters->FindParam(&analysis_type,AnalysisTypeEnum);
-
 	if(pe){
-		if(analysis_type==StressbalanceAnalysisEnum){
-			if(this->element_type==MINIcondensedEnum){
-				int approximation;
-				inputs->GetInputValue(&approximation,ApproximationEnum);
-				if(approximation==HOFSApproximationEnum || approximation==SSAFSApproximationEnum){
-					//Do nothing, condensation already done in PVectorCoupling
-				}
-				else{
-					_error_("Not implemented");
-				}
-			}
-			else if(this->element_type==P1bubblecondensedEnum){
-				_error_("Not implemented");
-			}
+		if(this->element_type==MINIcondensedEnum){
+			_error_("Not implemented");
+		}
+		else if(this->element_type==P1bubblecondensedEnum){
+			int size   = nodes[4]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+			int offset = 0;
+			for(int i=0;i<4;i++) offset+=nodes[i]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+			int* indices=xNew<int>(size);
+			for(int i=0;i<size;i++) indices[i] = offset+i;
+			pe->StaticCondensation(Ke,size,indices);
+			xDelete<int>(indices);
 		}
 	}
 
 	if(Ke){
-		if(analysis_type==StressbalanceAnalysisEnum){
-			int approximation;
-			inputs->GetInputValue(&approximation,ApproximationEnum);
-			if(approximation==HOFSApproximationEnum || approximation==SSAFSApproximationEnum){
-				//Do nothing condensatino already done for Stokes part
-			}
-			else{
-				if(this->element_type==MINIcondensedEnum){
-					_error_("Not implemented");
-				}
-				else if(this->element_type==P1bubblecondensedEnum){
-					_error_("Not implemented");
-				}
-			}
+		if(this->element_type==MINIcondensedEnum){
+			_error_("Not implemented");
+		}
+		else if(this->element_type==P1bubblecondensedEnum){
+			int size   = nodes[4]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+			int offset = 0;
+			for(int i=0;i<4;i++) offset+=nodes[i]->GetNumberOfDofs(NoneApproximationEnum,GsetEnum);
+			int* indices=xNew<int>(size);
+			for(int i=0;i<size;i++) indices[i] = offset+i;
+			Ke->StaticCondensation(size,indices);
+			xDelete<int>(indices);
 		}
 	}
