Index: /issm/trunk-jpl/src/jl/solve/analyses/stressbalanceanalysis.jl
===================================================================
--- /issm/trunk-jpl/src/jl/solve/analyses/stressbalanceanalysis.jl	(revision 26703)
+++ /issm/trunk-jpl/src/jl/solve/analyses/stressbalanceanalysis.jl	(revision 26704)
@@ -45,4 +45,6 @@
 	FetchDataToInput(md,inputs,elements,md.initialization.vy./md.constants.yts,VyEnum)
 
+	FetchDataToInput(md,inputs,elements,md.friction.coefficient,FrictionCoefficientEnum)
+
 end#}}}
 function UpdateParameters(analysis::StressbalanceAnalysis,parameters::Parameters,md::model) #{{{
@@ -100,4 +102,26 @@
 		end
 	end
+
+	#Add basal friction
+	basis = Vector{Float64}(undef,numnodes)
+	friction = Friction(element)
+
+	#Start integrating
+	gauss = GaussTria(2)
+	for ig in 1:gauss.numgauss
+
+		Jdet = JacobianDeterminant(xyz_list, gauss)
+		NodalFunctions(element, basis, gauss, ig, P1Enum)
+
+		alpha2 = Alpha2(friction, gauss, ig)
+
+		for i in 1:numnodes
+			for j in 1:numnodes
+				Ke.values[2*i-1,2*j-1] += gauss.weights[ig]*Jdet*alpha2*basis[i]*basis[j]
+				Ke.values[2*i  ,2*j  ] += gauss.weights[ig]*Jdet*alpha2*basis[i]*basis[j]
+			end
+		end
+	end
+	
 
 	return Ke
Index: /issm/trunk-jpl/src/jl/solve/friction.jl
===================================================================
--- /issm/trunk-jpl/src/jl/solve/friction.jl	(revision 26704)
+++ /issm/trunk-jpl/src/jl/solve/friction.jl	(revision 26704)
@@ -0,0 +1,35 @@
+#Friction class definition
+struct Friction#{{{
+	H_input::ElementInput
+	b_input::ElementInput
+	c_input::ElementInput
+	rho_ice::Float64
+	rho_water::Float64
+	g::Float64
+end# }}}
+function Friction(element::Tria) #{{{
+
+	H_input  = GetInput(element, ThicknessEnum)
+	b_input  = GetInput(element, BaseEnum)
+	c_input  = GetInput(element, FrictionCoefficientEnum)
+
+	rho_ice   = FindParam(element, MaterialsRhoIceEnum)
+	rho_water = FindParam(element, MaterialsRhoSeawaterEnum)
+	g         = FindParam(element, ConstantsGEnum)
+
+	return Friction(H_input, b_input, c_input, rho_ice, rho_water, g)
+end#}}}
+
+#vertices functions
+function Alpha2(friction::Friction, gauss::GaussTria, i::Int64) #{{{
+
+	#Get effective pressure
+	H = GetInputValue(friction.H_input, gauss, i)
+	b = GetInputValue(friction.b_input, gauss, i)
+	c = GetInputValue(friction.c_input, gauss, i)
+	N = friction.rho_ice*friction.g*H + friction.rho_water*friction.g*b
+
+	if(N<0) N=0 end
+
+	return c^2*N
+end #}}}
Index: /issm/trunk-jpl/src/jl/solve/solve.jl
===================================================================
--- /issm/trunk-jpl/src/jl/solve/solve.jl	(revision 26703)
+++ /issm/trunk-jpl/src/jl/solve/solve.jl	(revision 26704)
@@ -11,4 +11,5 @@
 include("./results.jl")
 include("./matice.jl")
+include("./friction.jl")
 include("./femmodel.jl")
 include("./analyses/analysis.jl")
