Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 15299)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 15300)
@@ -887,10 +887,10 @@
 
 	/*Add Stress tensor components into inputs*/
-	this->inputs->AddInput(new TriaInput(StressTensorxxEnum,&sigma_xx[0]));
-	this->inputs->AddInput(new TriaInput(StressTensorxyEnum,&sigma_xy[0]));
-	this->inputs->AddInput(new TriaInput(StressTensorxzEnum,&sigma_xz[0]));
-	this->inputs->AddInput(new TriaInput(StressTensoryyEnum,&sigma_yy[0]));
-	this->inputs->AddInput(new TriaInput(StressTensoryzEnum,&sigma_yz[0]));
-	this->inputs->AddInput(new TriaInput(StressTensorzzEnum,&sigma_zz[0]));
+	this->inputs->AddInput(new TriaInput(StressTensorxxEnum,&sigma_xx[0],P1Enum));
+	this->inputs->AddInput(new TriaInput(StressTensorxyEnum,&sigma_xy[0],P1Enum));
+	this->inputs->AddInput(new TriaInput(StressTensorxzEnum,&sigma_xz[0],P1Enum));
+	this->inputs->AddInput(new TriaInput(StressTensoryyEnum,&sigma_yy[0],P1Enum));
+	this->inputs->AddInput(new TriaInput(StressTensoryzEnum,&sigma_yz[0],P1Enum));
+	this->inputs->AddInput(new TriaInput(StressTensorzzEnum,&sigma_zz[0],P1Enum));
 
 	/*Clean up and return*/
@@ -1028,9 +1028,9 @@
 	for (int imonth=0;imonth<12;imonth++) {
 		for(i=0;i<NUMVERTICES;i++) tmp[i]=monthlytemperatures[i][imonth];
-		TriaInput* newmonthinput1 = new TriaInput(SurfaceforcingsMonthlytemperaturesEnum,&tmp[0]);
+		TriaInput* newmonthinput1 = new TriaInput(SurfaceforcingsMonthlytemperaturesEnum,&tmp[0],P1Enum);
 		NewTemperatureInput->AddTimeInput(newmonthinput1,time+imonth/12.*yts);
 
 		for(i=0;i<NUMVERTICES;i++) tmp[i]=monthlyprec[i][imonth];
-		TriaInput* newmonthinput2 = new TriaInput(SurfaceforcingsPrecipitationEnum,&tmp[0]);
+		TriaInput* newmonthinput2 = new TriaInput(SurfaceforcingsPrecipitationEnum,&tmp[0],P1Enum);
 		NewPrecipitationInput->AddTimeInput(newmonthinput2,time+imonth/12.*yts);
 	}
@@ -1780,5 +1780,5 @@
 		for(i=0;i<num_cm_responses;i++){
 			for(j=0;j<3;j++)nodeinputs[j]=iomodel->Data(InversionCostFunctionsCoefficientsEnum)[(tria_vertex_ids[j]-1)*num_cm_responses+i];
-			datasetinput->inputs->AddObject(new TriaInput(InversionCostFunctionsCoefficientsEnum,nodeinputs));
+			datasetinput->inputs->AddObject(new TriaInput(InversionCostFunctionsCoefficientsEnum,nodeinputs,P1Enum));
 		}
 
@@ -1866,5 +1866,5 @@
 
 	/*Add input to the element: */
-	this->inputs->AddInput(new TriaInput(enum_type,values));
+	this->inputs->AddInput(new TriaInput(enum_type,values,P1Enum));
 
 	/*Free ressources:*/
@@ -1931,7 +1931,7 @@
 
 	/*Add input to the element: */
-	this->inputs->AddInput(new TriaInput(ThicknessEnum,newthickness));
-	this->inputs->AddInput(new TriaInput(SurfaceEnum,newsurface));
-	this->inputs->AddInput(new TriaInput(BedEnum,newbed));
+	this->inputs->AddInput(new TriaInput(ThicknessEnum,newthickness,P1Enum));
+	this->inputs->AddInput(new TriaInput(SurfaceEnum,newsurface,P1Enum));
+	this->inputs->AddInput(new TriaInput(BedEnum,newbed,P1Enum));
 
 	/*Free ressources:*/
@@ -1956,8 +1956,8 @@
 		/*update input*/
 		if (name==MaterialsRheologyBbarEnum || name==MaterialsRheologyBEnum || name==MaterialsRheologyZEnum || name==MaterialsRheologyZbarEnum){
-			material->inputs->AddInput(new TriaInput(name,values));
+			material->inputs->AddInput(new TriaInput(name,values,P1Enum));
 		}
 		else{
-			this->inputs->AddInput(new TriaInput(name,values));
+			this->inputs->AddInput(new TriaInput(name,values,P1Enum));
 		}
 		return; 
@@ -1969,8 +1969,8 @@
 		/*update input*/
 		if (name==MaterialsRheologyBbarEnum || name==MaterialsRheologyBEnum || name==MaterialsRheologyZEnum || name==MaterialsRheologyZbarEnum){
-			material->inputs->AddInput(new TriaInput(name,values));
+			material->inputs->AddInput(new TriaInput(name,values,P1Enum));
 		}
 		else{
-			this->inputs->AddInput(new TriaInput(name,values));
+			this->inputs->AddInput(new TriaInput(name,values,P1Enum));
 		}
 		return; 
@@ -1986,5 +1986,5 @@
 		}
 		/*Add input to the element: */
-		this->inputs->AddInput(new TriaInput(name,values));
+		this->inputs->AddInput(new TriaInput(name,values,P1Enum));
 
 		/*Free ressources:*/
@@ -1998,5 +1998,5 @@
 		}
 		/*Add input to the element: */
-		this->inputs->AddInput(new TriaInput(name,values));
+		this->inputs->AddInput(new TriaInput(name,values,P1Enum));
 
 		/*Free ressources:*/
@@ -2074,5 +2074,5 @@
 
 			/*create static input: */
-			this->inputs->AddInput(new TriaInput(vector_enum,nodeinputs));
+			this->inputs->AddInput(new TriaInput(vector_enum,nodeinputs,P1Enum));
 		}
 		else if(M==numberofvertices+1){
@@ -2090,5 +2090,5 @@
 
 				if(t==0) transientinput=new TransientInput(vector_enum);
-				transientinput->AddTimeInput(new TriaInput(vector_enum,nodeinputs),time);
+				transientinput->AddTimeInput(new TriaInput(vector_enum,nodeinputs,P1Enum),time);
 			}
 			this->inputs->AddInput(transientinput);
@@ -2357,16 +2357,16 @@
 	if(!this->IsFloating() && floatingelement==true){
 		for(i=0;i<NUMVERTICES;i++)melting[i]=gl_melting_rate/yts;
-		this->inputs->AddInput(new TriaInput(BasalforcingsMeltingRateEnum,&melting[0]));
+		this->inputs->AddInput(new TriaInput(BasalforcingsMeltingRateEnum,&melting[0],P1Enum));
 	} 
 
 	/*Update inputs*/
    this->inputs->AddInput(new BoolInput(MaskElementonfloatingiceEnum,floatingelement));
-	this->inputs->AddInput(new TriaInput(SurfaceEnum,&s[0]));
-	this->inputs->AddInput(new TriaInput(BedEnum,&b[0]));
+	this->inputs->AddInput(new TriaInput(SurfaceEnum,&s[0],P1Enum));
+	this->inputs->AddInput(new TriaInput(BedEnum,&b[0],P1Enum));
 
 	/*Recalculate phi*/
 	if(migration_style==SubelementMigrationEnum || migration_style==SubelementMigration2Enum){
 		for(i=0;i<NUMVERTICES;i++) phi[i]=h[i]+ba[i]/density;
-		this->inputs->AddInput(new TriaInput(GLlevelsetEnum,&phi[0]));
+		this->inputs->AddInput(new TriaInput(GLlevelsetEnum,&phi[0],P1Enum));
 	}
 }
@@ -2527,5 +2527,5 @@
 
    /*Update inputs*/    
-   this->inputs->AddInput(new TriaInput(SurfaceforcingsMassBalanceEnum,&agd[0]));
+   this->inputs->AddInput(new TriaInput(SurfaceforcingsMassBalanceEnum,&agd[0],P1Enum));
    // this->inputs->AddInput(new TriaVertexInput(ThermalSpcTemperatureEnum,&Tsurf[0]));
 
@@ -2617,5 +2617,5 @@
 		}  //end of the loop over the vertices
 	  /*Update inputs*/
-	  this->inputs->AddInput(new TriaInput(SurfaceforcingsMassBalanceEnum,&smb[0]));
+	  this->inputs->AddInput(new TriaInput(SurfaceforcingsMassBalanceEnum,&smb[0],P1Enum));
 }
 /*}}}*/
@@ -2801,22 +2801,22 @@
 			if(!iomodel->Data(VxEnum)){
 				for(i=0;i<3;i++)nodeinputs[i]=0;
-				this->inputs->AddInput(new TriaInput(VxEnum,nodeinputs));
-				if(dakota_analysis) this->inputs->AddInput(new TriaInput(QmuVxEnum,nodeinputs));
+				this->inputs->AddInput(new TriaInput(VxEnum,nodeinputs,P1Enum));
+				if(dakota_analysis) this->inputs->AddInput(new TriaInput(QmuVxEnum,nodeinputs,P1Enum));
 			}
 			if(!iomodel->Data(VyEnum)){
 				for(i=0;i<3;i++)nodeinputs[i]=0;
-				this->inputs->AddInput(new TriaInput(VyEnum,nodeinputs));
-				if(dakota_analysis) this->inputs->AddInput(new TriaInput(QmuVyEnum,nodeinputs));
+				this->inputs->AddInput(new TriaInput(VyEnum,nodeinputs,P1Enum));
+				if(dakota_analysis) this->inputs->AddInput(new TriaInput(QmuVyEnum,nodeinputs,P1Enum));
 			}
 			if(!iomodel->Data(VzEnum)){
 				for(i=0;i<3;i++)nodeinputs[i]=0;
-				this->inputs->AddInput(new TriaInput(VzEnum,nodeinputs));
-				if(dakota_analysis) this->inputs->AddInput(new TriaInput(QmuVzEnum,nodeinputs));
+				this->inputs->AddInput(new TriaInput(VzEnum,nodeinputs,P1Enum));
+				if(dakota_analysis) this->inputs->AddInput(new TriaInput(QmuVzEnum,nodeinputs,P1Enum));
 			}
 			if(!iomodel->Data(PressureEnum)){
 				for(i=0;i<3;i++)nodeinputs[i]=0;
 				if(dakota_analysis){
-					this->inputs->AddInput(new TriaInput(PressureEnum,nodeinputs));
-					this->inputs->AddInput(new TriaInput(QmuPressureEnum,nodeinputs));
+					this->inputs->AddInput(new TriaInput(PressureEnum,nodeinputs,P1Enum));
+					this->inputs->AddInput(new TriaInput(QmuPressureEnum,nodeinputs,P1Enum));
 				}
 			}
@@ -3756,8 +3756,8 @@
 
 	/*Add vx and vy as inputs to the tria element: */
-	this->inputs->AddInput(new TriaInput(VxEnum,vx));
-	this->inputs->AddInput(new TriaInput(VyEnum,vy));
-	this->inputs->AddInput(new TriaInput(VelEnum,vel));
-	this->inputs->AddInput(new TriaInput(PressureEnum,pressure));
+	this->inputs->AddInput(new TriaInput(VxEnum,vx,P1Enum));
+	this->inputs->AddInput(new TriaInput(VyEnum,vy,P1Enum));
+	this->inputs->AddInput(new TriaInput(VelEnum,vel,P1Enum));
+	this->inputs->AddInput(new TriaInput(PressureEnum,pressure,P1Enum));
 
 	/*Free ressources:*/
@@ -3827,8 +3827,8 @@
 
 	/*Add vx and vy as inputs to the tria element: */
-	this->inputs->AddInput(new TriaInput(VxEnum,vx));
-	this->inputs->AddInput(new TriaInput(VyEnum,vy));
-	this->inputs->AddInput(new TriaInput(VelEnum,vel));
-	this->inputs->AddInput(new TriaInput(PressureEnum,pressure));
+	this->inputs->AddInput(new TriaInput(VxEnum,vx,P1Enum));
+	this->inputs->AddInput(new TriaInput(VyEnum,vy,P1Enum));
+	this->inputs->AddInput(new TriaInput(VelEnum,vel,P1Enum));
+	this->inputs->AddInput(new TriaInput(PressureEnum,pressure,P1Enum));
 
 	/*Free ressources:*/
@@ -3993,5 +3993,5 @@
 	GradientIndexing(&vertexpidlist[0],control_index);
 	for(int i=0;i<NUMVERTICES;i++) grad_list[i]=gradient[vertexpidlist[i]];
-	grad_input=new TriaInput(GradientEnum,grad_list);
+	grad_input=new TriaInput(GradientEnum,grad_list,P1Enum);
 
 	((ControlInput*)input)->SetGradient(grad_input);
@@ -5760,6 +5760,6 @@
 
 	/*Add vx and vy as inputs to the tria element: */
-	this->inputs->AddInput(new TriaInput(AdjointxEnum,lambdax));
-	this->inputs->AddInput(new TriaInput(AdjointyEnum,lambday));
+	this->inputs->AddInput(new TriaInput(AdjointxEnum,lambdax,P1Enum));
+	this->inputs->AddInput(new TriaInput(AdjointyEnum,lambday,P1Enum));
 
 	/*Free ressources:*/
@@ -5790,5 +5790,5 @@
 
 	/*Add vx and vy as inputs to the tria element: */
-	this->inputs->AddInput(new TriaInput(AdjointEnum,lambda));
+	this->inputs->AddInput(new TriaInput(AdjointEnum,lambda,P1Enum));
 
 	/*Free ressources:*/
@@ -5842,5 +5842,5 @@
 		values[i]=vector[vertexpidlist[i]];
 	}
-	new_input = new TriaInput(control_enum,values);
+	new_input = new TriaInput(control_enum,values,P1Enum);
 
 	if(control_enum==MaterialsRheologyBbarEnum || control_enum==MaterialsRheologyZbarEnum){
@@ -5936,6 +5936,6 @@
 
 	/*Add to inputs*/
-	this->inputs->AddInput(new TriaInput(HydrologyWaterVxEnum,vx));
-	this->inputs->AddInput(new TriaInput(HydrologyWaterVyEnum,vy));
+	this->inputs->AddInput(new TriaInput(HydrologyWaterVxEnum,vx,P1Enum));
+	this->inputs->AddInput(new TriaInput(HydrologyWaterVyEnum,vy,P1Enum));
 }
 /*}}}*/
@@ -6470,5 +6470,5 @@
 
 	/*Add input to the element: */
-	this->inputs->AddInput(new TriaInput(WatercolumnEnum,values));
+	this->inputs->AddInput(new TriaInput(WatercolumnEnum,values,P1Enum));
 
 	/*Free ressources:*/
@@ -6524,6 +6524,6 @@
 
 	/*Add input to the element: */
-	this->inputs->AddInput(new TriaInput(SedimentHeadEnum,values));
-	this->inputs->AddInput(new TriaInput(SedimentHeadResidualEnum,residual));
+	this->inputs->AddInput(new TriaInput(SedimentHeadEnum,values,P1Enum));
+	this->inputs->AddInput(new TriaInput(SedimentHeadResidualEnum,residual,P1Enum));
 
 	/*Free ressources:*/
@@ -6789,11 +6789,11 @@
 
 					/*Add new inputs: */
-					this->inputs->AddInput(new TriaInput(ThicknessEnum,thickness));
-					this->inputs->AddInput(new TriaInput(BedEnum,bed));
-					this->inputs->AddInput(new TriaInput(SurfaceEnum,surface));
+					this->inputs->AddInput(new TriaInput(ThicknessEnum,thickness,P1Enum));
+					this->inputs->AddInput(new TriaInput(BedEnum,bed,P1Enum));
+					this->inputs->AddInput(new TriaInput(SurfaceEnum,surface,P1Enum));
 
 					break;
 				default:
-					this->inputs->AddInput(new TriaInput(name,values));
+					this->inputs->AddInput(new TriaInput(name,values,P1Enum));
 			}
 			break;
Index: /issm/trunk-jpl/src/c/classes/Inputs/ControlInput.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Inputs/ControlInput.cpp	(revision 15299)
+++ /issm/trunk-jpl/src/c/classes/Inputs/ControlInput.cpp	(revision 15300)
@@ -31,8 +31,8 @@
 	switch(enum_input){
 		case TriaInputEnum:
-			values     =new TriaInput(enum_type,pvalues);
-			savedvalues=new TriaInput(enum_type,pvalues);
-			minvalues  =new TriaInput(enum_type,pmin);
-			maxvalues  =new TriaInput(enum_type,pmax);
+			values     =new TriaInput(enum_type,pvalues,P1Enum);
+			savedvalues=new TriaInput(enum_type,pvalues,P1Enum);
+			minvalues  =new TriaInput(enum_type,pmin,P1Enum);
+			maxvalues  =new TriaInput(enum_type,pmax,P1Enum);
 			break;
 		case PentaP1InputEnum:
Index: /issm/trunk-jpl/src/c/classes/Inputs/PentaP1Input.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Inputs/PentaP1Input.cpp	(revision 15299)
+++ /issm/trunk-jpl/src/c/classes/Inputs/PentaP1Input.cpp	(revision 15300)
@@ -100,5 +100,5 @@
 
 	/*Create new Tria input*/
-	outinput=new TriaInput(this->enum_type,&newvalues[0]);
+	outinput=new TriaInput(this->enum_type,&newvalues[0],P1Enum);
 
 	/*Assign output*/
Index: /issm/trunk-jpl/src/c/classes/Inputs/TriaInput.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Inputs/TriaInput.h	(revision 15299)
+++ /issm/trunk-jpl/src/c/classes/Inputs/TriaInput.h	(revision 15300)
@@ -22,5 +22,5 @@
 		/*TriaInput constructors, destructors*/
 		TriaInput();
-		TriaInput(int enum_type,IssmDouble* values,int element_type_in=P1Enum);
+		TriaInput(int enum_type,IssmDouble* values,int element_type_in);
 		~TriaInput();
 
Index: /issm/trunk-jpl/src/c/classes/Materials/Matdamageice.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Materials/Matdamageice.cpp	(revision 15299)
+++ /issm/trunk-jpl/src/c/classes/Materials/Matdamageice.cpp	(revision 15300)
@@ -630,5 +630,5 @@
 					IssmDouble values[3];
 					for (int i=0;i<3;i++) values[i]=vector[((Tria*)element)->vertices[i]->Pid()];
-					this->inputs->AddInput(new TriaInput(name,values));
+					this->inputs->AddInput(new TriaInput(name,values,P1Enum));
 					return;
 				}
@@ -672,5 +672,5 @@
 					IssmDouble values[3];
 					for (int i=0;i<3;i++) values[i]=vector[((Tria*)element)->vertices[i]->Sid()]; //use sid list, to index into serial oriented vector 
-					this->inputs->AddInput(new TriaInput(name,values));
+					this->inputs->AddInput(new TriaInput(name,values,P1Enum));
 					/*Special case for rheology B in 2D: Pourave land for this solution{{{*/
 					if(name==MaterialsRheologyBEnum){
@@ -685,5 +685,5 @@
 						if(dim==2){
 							/*Dupliacte rheology input: */
-							this->inputs->AddInput(new TriaInput(MaterialsRheologyBbarEnum,values));
+							this->inputs->AddInput(new TriaInput(MaterialsRheologyBbarEnum,values,P1Enum));
 						}
 					}
@@ -759,5 +759,5 @@
 		if (iomodel->Data(MaterialsRheologyBEnum)) {
 			for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(MaterialsRheologyBEnum)[reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+i]-1)];
-			this->inputs->AddInput(new TriaInput(MaterialsRheologyBbarEnum,nodeinputs));
+			this->inputs->AddInput(new TriaInput(MaterialsRheologyBbarEnum,nodeinputs,P1Enum));
 		}
 
@@ -765,5 +765,5 @@
 		if (iomodel->Data(MaterialsRheologyNEnum)) {
 			for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(MaterialsRheologyNEnum)[index];
-			this->inputs->AddInput(new TriaInput(MaterialsRheologyNEnum,nodeinputs));
+			this->inputs->AddInput(new TriaInput(MaterialsRheologyNEnum,nodeinputs,P1Enum));
 		}
 
@@ -771,5 +771,5 @@
 		if (iomodel->Data(MaterialsRheologyZEnum)) {
 			for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(MaterialsRheologyZEnum)[reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+i]-1)];
-			this->inputs->AddInput(new TriaInput(MaterialsRheologyZbarEnum,nodeinputs));
+			this->inputs->AddInput(new TriaInput(MaterialsRheologyZbarEnum,nodeinputs,P1Enum));
 		}
 
Index: /issm/trunk-jpl/src/c/classes/Materials/Matice.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Materials/Matice.cpp	(revision 15299)
+++ /issm/trunk-jpl/src/c/classes/Materials/Matice.cpp	(revision 15300)
@@ -564,5 +564,5 @@
 					IssmDouble values[3];
 					for (int i=0;i<3;i++) values[i]=vector[((Tria*)element)->vertices[i]->Pid()];
-					this->inputs->AddInput(new TriaInput(name,values));
+					this->inputs->AddInput(new TriaInput(name,values,P1Enum));
 					return;
 				}
@@ -606,5 +606,5 @@
 					IssmDouble values[3];
 					for (int i=0;i<3;i++) values[i]=vector[((Tria*)element)->vertices[i]->Sid()]; //index into serial oriented vector 
-					this->inputs->AddInput(new TriaInput(name,values));
+					this->inputs->AddInput(new TriaInput(name,values,P1Enum));
 					/*Special case for rheology B in 2D: Pourave land for this solution{{{*/
 					if(name==MaterialsRheologyBEnum){
@@ -619,5 +619,5 @@
 						if(dim==2){
 							/*Dupliacte rheology input: */
-							this->inputs->AddInput(new TriaInput(MaterialsRheologyBbarEnum,values));
+							this->inputs->AddInput(new TriaInput(MaterialsRheologyBbarEnum,values,P1Enum));
 						}
 					}
@@ -699,5 +699,5 @@
 		if (iomodel->Data(MaterialsRheologyBEnum)) {
 			for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(MaterialsRheologyBEnum)[reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+i]-1)];
-			this->inputs->AddInput(new TriaInput(MaterialsRheologyBbarEnum,nodeinputs));
+			this->inputs->AddInput(new TriaInput(MaterialsRheologyBbarEnum,nodeinputs,P1Enum));
 		}
 
@@ -705,5 +705,5 @@
 		if (iomodel->Data(MaterialsRheologyNEnum)) {
 			for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(MaterialsRheologyNEnum)[index];
-			this->inputs->AddInput(new TriaInput(MaterialsRheologyNEnum,nodeinputs));
+			this->inputs->AddInput(new TriaInput(MaterialsRheologyNEnum,nodeinputs,P1Enum));
 		}
 
