Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 27959)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 27960)
@@ -1251,4 +1251,50 @@
 	/*Return: */
 	return this->FloatingArea(scaled);
+}
+/*}}}*/
+void       Element::FrictionAlpha2CreateInput(void){/*{{{*/
+
+	/*Return if element is inactive*/
+	if(this->IsAllFloating() || !this->IsIceInElement()) return;
+
+	/*Intermediaries*/
+	int      domaintype, dim;
+	Element* basalelement = NULL;
+
+	/*Get basal element*/
+	this->FindParam(&domaintype,DomainTypeEnum);
+	switch(domaintype){
+		case Domain2DhorizontalEnum:
+			basalelement = this;
+			dim = 2;
+			break;
+		case Domain3DEnum: case Domain2DverticalEnum:
+			if(!this->IsOnBase()) return;
+			basalelement = this->SpawnBasalElement(true);
+			dim = 2;
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	int numvertices = basalelement->GetNumberOfVertices();
+
+	/*build friction object, used later on: */
+	Friction* friction=new Friction(basalelement,dim);
+	IssmDouble alpha2_list[MAXVERTICES];
+	IssmDouble alpha2;
+
+	Gauss* gauss=this->NewGauss();
+	for(int i=0;i<numvertices;i++){
+		gauss->GaussVertex(i);
+
+		friction->GetAlpha2(&alpha2,gauss);
+		alpha2_list[i] = alpha2;
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	delete friction;
+	if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
+	this->AddBasalInput(FrictionAlpha2Enum,&alpha2_list[0],P1Enum);
 }
 /*}}}*/
@@ -4077,7 +4123,4 @@
 }
 /*}}}*/
-
-
-
 void       Element::ResultInterpolation(int* pinterpolation,int* pnodesperelement,int* parray_size, int output_enum){/*{{{*/
 
@@ -4085,4 +4128,5 @@
 	switch(output_enum){
 		case ViscousHeatingEnum: this->ViscousHeatingCreateInput(); break;
+		case FrictionAlpha2Enum: this->FrictionAlpha2CreateInput(); break;
 		case StressMaxPrincipalEnum: this->StressMaxPrincipalCreateInput(); break;
 		case StressTensorxxEnum:
Index: /issm/trunk-jpl/src/c/classes/Elements/Element.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 27959)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 27960)
@@ -225,4 +225,5 @@
 		void               TransformStiffnessMatrixCoord(ElementMatrix* Ke,Node** nodes,int numnodes,int* cs_array);
 		void               TransformStiffnessMatrixCoord(ElementMatrix* Ke,int numnodes,int* transformenum_list){_error_("not implemented yet");};/*Tiling only*/
+		void               FrictionAlpha2CreateInput(void);
 		void               ViscousHeatingCreateInput(void);
 		void               ThermalToEnthalpy(IssmDouble * penthalpy,IssmDouble temperature,IssmDouble waterfraction,IssmDouble pressure);
Index: /issm/trunk-jpl/src/c/shared/Enum/Enum.vim
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 27959)
+++ /issm/trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 27960)
@@ -846,4 +846,5 @@
 syn keyword cConstant EtaDiffEnum
 syn keyword cConstant FlowequationBorderFSEnum
+syn keyword cConstant FrictionAlpha2Enum
 syn keyword cConstant FrictionAsEnum
 syn keyword cConstant FrictionCEnum
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 27959)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 27960)
@@ -842,4 +842,5 @@
 	EtaDiffEnum,
 	FlowequationBorderFSEnum,
+	FrictionAlpha2Enum,
 	FrictionAsEnum,
 	FrictionCEnum,
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 27959)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 27960)
@@ -848,4 +848,5 @@
 		case EtaDiffEnum : return "EtaDiff";
 		case FlowequationBorderFSEnum : return "FlowequationBorderFS";
+		case FrictionAlpha2Enum : return "FrictionAlpha2";
 		case FrictionAsEnum : return "FrictionAs";
 		case FrictionCEnum : return "FrictionC";
Index: /issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim	(revision 27959)
+++ /issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim	(revision 27960)
@@ -839,4 +839,5 @@
 syn keyword juliaConstC EtaDiffEnum
 syn keyword juliaConstC FlowequationBorderFSEnum
+syn keyword juliaConstC FrictionAlpha2Enum
 syn keyword juliaConstC FrictionAsEnum
 syn keyword juliaConstC FrictionCEnum
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 27959)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 27960)
@@ -866,4 +866,5 @@
 	      else if (strcmp(name,"EtaDiff")==0) return EtaDiffEnum;
 	      else if (strcmp(name,"FlowequationBorderFS")==0) return FlowequationBorderFSEnum;
+	      else if (strcmp(name,"FrictionAlpha2")==0) return FrictionAlpha2Enum;
 	      else if (strcmp(name,"FrictionAs")==0) return FrictionAsEnum;
 	      else if (strcmp(name,"FrictionC")==0) return FrictionCEnum;
@@ -874,9 +875,9 @@
 	      else if (strcmp(name,"FrictionK")==0) return FrictionKEnum;
 	      else if (strcmp(name,"FrictionM")==0) return FrictionMEnum;
-	      else if (strcmp(name,"FrictionP")==0) return FrictionPEnum;
          else stage=8;
    }
    if(stage==8){
-	      if (strcmp(name,"FrictionPressureAdjustedTemperature")==0) return FrictionPressureAdjustedTemperatureEnum;
+	      if (strcmp(name,"FrictionP")==0) return FrictionPEnum;
+	      else if (strcmp(name,"FrictionPressureAdjustedTemperature")==0) return FrictionPressureAdjustedTemperatureEnum;
 	      else if (strcmp(name,"FrictionQ")==0) return FrictionQEnum;
 	      else if (strcmp(name,"FrictionSedimentCompressibilityCoefficient")==0) return FrictionSedimentCompressibilityCoefficientEnum;
@@ -997,9 +998,9 @@
 	      else if (strcmp(name,"SamplingBeta")==0) return SamplingBetaEnum;
 	      else if (strcmp(name,"SamplingKappa")==0) return SamplingKappaEnum;
-	      else if (strcmp(name,"SamplingPhi")==0) return SamplingPhiEnum;
          else stage=9;
    }
    if(stage==9){
-	      if (strcmp(name,"SamplingTau")==0) return SamplingTauEnum;
+	      if (strcmp(name,"SamplingPhi")==0) return SamplingPhiEnum;
+	      else if (strcmp(name,"SamplingTau")==0) return SamplingTauEnum;
 	      else if (strcmp(name,"Sealevel")==0) return SealevelEnum;
 	      else if (strcmp(name,"SealevelGRD")==0) return SealevelGRDEnum;
@@ -1120,9 +1121,9 @@
 	      else if (strcmp(name,"SmbDzini")==0) return SmbDziniEnum;
 	      else if (strcmp(name,"SmbEAir")==0) return SmbEAirEnum;
-	      else if (strcmp(name,"SmbEC")==0) return SmbECEnum;
          else stage=10;
    }
    if(stage==10){
-	      if (strcmp(name,"SmbECDt")==0) return SmbECDtEnum;
+	      if (strcmp(name,"SmbEC")==0) return SmbECEnum;
+	      else if (strcmp(name,"SmbECDt")==0) return SmbECDtEnum;
 	      else if (strcmp(name,"SmbECini")==0) return SmbECiniEnum;
 	      else if (strcmp(name,"SmbEla")==0) return SmbElaEnum;
@@ -1243,9 +1244,9 @@
 	      else if (strcmp(name,"SealevelArea")==0) return SealevelAreaEnum;
 	      else if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum;
-	      else if (strcmp(name,"SurfaceAverageVelMisfit")==0) return SurfaceAverageVelMisfitEnum;
          else stage=11;
    }
    if(stage==11){
-	      if (strcmp(name,"SurfaceCrevasse")==0) return SurfaceCrevasseEnum;
+	      if (strcmp(name,"SurfaceAverageVelMisfit")==0) return SurfaceAverageVelMisfitEnum;
+	      else if (strcmp(name,"SurfaceCrevasse")==0) return SurfaceCrevasseEnum;
 	      else if (strcmp(name,"Surface")==0) return SurfaceEnum;
 	      else if (strcmp(name,"SurfaceOld")==0) return SurfaceOldEnum;
@@ -1366,9 +1367,9 @@
 	      else if (strcmp(name,"Outputdefinition57")==0) return Outputdefinition57Enum;
 	      else if (strcmp(name,"Outputdefinition58")==0) return Outputdefinition58Enum;
-	      else if (strcmp(name,"Outputdefinition59")==0) return Outputdefinition59Enum;
          else stage=12;
    }
    if(stage==12){
-	      if (strcmp(name,"Outputdefinition5")==0) return Outputdefinition5Enum;
+	      if (strcmp(name,"Outputdefinition59")==0) return Outputdefinition59Enum;
+	      else if (strcmp(name,"Outputdefinition5")==0) return Outputdefinition5Enum;
 	      else if (strcmp(name,"Outputdefinition60")==0) return Outputdefinition60Enum;
 	      else if (strcmp(name,"Outputdefinition61")==0) return Outputdefinition61Enum;
@@ -1489,9 +1490,9 @@
 	      else if (strcmp(name,"DataSet")==0) return DataSetEnum;
 	      else if (strcmp(name,"DataSetParam")==0) return DataSetParamEnum;
-	      else if (strcmp(name,"DatasetInput")==0) return DatasetInputEnum;
          else stage=13;
    }
    if(stage==13){
-	      if (strcmp(name,"DebrisAnalysis")==0) return DebrisAnalysisEnum;
+	      if (strcmp(name,"DatasetInput")==0) return DatasetInputEnum;
+	      else if (strcmp(name,"DebrisAnalysis")==0) return DebrisAnalysisEnum;
 	      else if (strcmp(name,"DebrisSolution")==0) return DebrisSolutionEnum;
 	      else if (strcmp(name,"DefaultAnalysis")==0) return DefaultAnalysisEnum;
@@ -1612,9 +1613,9 @@
 	      else if (strcmp(name,"LliboutryDuval")==0) return LliboutryDuvalEnum;
 	      else if (strcmp(name,"Loads")==0) return LoadsEnum;
-	      else if (strcmp(name,"LoveAnalysis")==0) return LoveAnalysisEnum;
          else stage=14;
    }
    if(stage==14){
-	      if (strcmp(name,"LoveHf")==0) return LoveHfEnum;
+	      if (strcmp(name,"LoveAnalysis")==0) return LoveAnalysisEnum;
+	      else if (strcmp(name,"LoveHf")==0) return LoveHfEnum;
 	      else if (strcmp(name,"LoveHt")==0) return LoveHtEnum;
 	      else if (strcmp(name,"LoveKernelsImag")==0) return LoveKernelsImagEnum;
@@ -1735,9 +1736,9 @@
 	      else if (strcmp(name,"SMBmeltcomponents")==0) return SMBmeltcomponentsEnum;
 	      else if (strcmp(name,"SMBpdd")==0) return SMBpddEnum;
-	      else if (strcmp(name,"SMBpddSicopolis")==0) return SMBpddSicopolisEnum;
          else stage=15;
    }
    if(stage==15){
-	      if (strcmp(name,"SMBsemic")==0) return SMBsemicEnum;
+	      if (strcmp(name,"SMBpddSicopolis")==0) return SMBpddSicopolisEnum;
+	      else if (strcmp(name,"SMBsemic")==0) return SMBsemicEnum;
 	      else if (strcmp(name,"SSAApproximation")==0) return SSAApproximationEnum;
 	      else if (strcmp(name,"SSAFSApproximation")==0) return SSAFSApproximationEnum;
