Index: /issm/trunk-jpl/src/jl/core/analyses/stressbalanceanalysis.jl
===================================================================
--- /issm/trunk-jpl/src/jl/core/analyses/stressbalanceanalysis.jl	(revision 26765)
+++ /issm/trunk-jpl/src/jl/core/analyses/stressbalanceanalysis.jl	(revision 26766)
@@ -50,4 +50,7 @@
 	if typeof(md.friction)==BuddFriction
 		FetchDataToInput(md,inputs,elements,md.friction.coefficient,FrictionCoefficientEnum)
+	elseif typeof(md.friction)==WeertmanFriction
+		FetchDataToInput(md,inputs,elements,md.friction.C,FrictionCEnum)
+		FetchDataToInput(md,inputs,elements,md.friction.m,FrictionMEnum)
 	else
 		error("Friction ", typeof(md.friction), " not supported yet")
@@ -64,4 +67,6 @@
 	if typeof(md.friction)==BuddFriction
 		AddParam(parameters, 1, FrictionLawEnum)
+	elseif typeof(md.friction)==WeertmanFriction
+		AddParam(parameters, 2, FrictionLawEnum)
 	else
 		error("Friction ", typeof(md.friction), " not supported yet")
Index: /issm/trunk-jpl/src/jl/core/friction.jl
===================================================================
--- /issm/trunk-jpl/src/jl/core/friction.jl	(revision 26765)
+++ /issm/trunk-jpl/src/jl/core/friction.jl	(revision 26766)
@@ -10,4 +10,11 @@
 	g::Float64
 end# }}}
+struct CoreWeertmanFriction#{{{
+   c_input::ElementInput
+	m_input::ElementInput
+	vx_input::ElementInput
+	vy_input::ElementInput
+end# }}}
+
 function CoreFriction(element::Tria) #{{{
 
@@ -24,4 +31,10 @@
 
 		return CoreBuddFriction(H_input, b_input, c_input, rho_ice, rho_water, g)
+	elseif frictionlaw==2
+		c_input   = GetInput(element, FrictionCEnum)
+		m_input   = GetInput(element, FrictionMEnum)
+		vx_input  = GetInput(element, VxEnum)
+		vy_input  = GetInput(element, VyEnum)
+		return CoreWeertmanFriction(c_input,m_input,vx_input,vy_input)
 	else
 		error("Friction ",typeof(md.friction)," not supported yet")
@@ -42,2 +55,15 @@
 	return c^2*N
 end #}}}
+
+function Alpha2(friction::CoreWeertmanFriction, gauss::GaussTria, i::Int64)#{{{
+	c = GetInputValue(friction.c_input, gauss, i)
+	m = GetInputValue(friction.m_input, gauss, i)
+	vx = GetInputValue(friction.vx_input, gauss, i)
+	vy = GetInputValue(friction.vy_input, gauss, i)
+	
+	if sqrt(vx^2+vy^2)==0 && m<1
+		return 0
+	else
+		return c^2*sqrt(vx^2+vy^2)^(m-1)
+	end
+end#}}}
Index: /issm/trunk-jpl/src/jl/issm.jl
===================================================================
--- /issm/trunk-jpl/src/jl/issm.jl	(revision 26765)
+++ /issm/trunk-jpl/src/jl/issm.jl	(revision 26766)
@@ -7,5 +7,5 @@
 
 include("usr/classes.jl")
-export model
+export model, WeertmanFriction
 include("usr/exp.jl")
 export expread, ContourToNodes
Index: /issm/trunk-jpl/src/jl/usr/classes.jl
===================================================================
--- /issm/trunk-jpl/src/jl/usr/classes.jl	(revision 26765)
+++ /issm/trunk-jpl/src/jl/usr/classes.jl	(revision 26766)
@@ -141,4 +141,10 @@
 	m::Vector{Float64}
 end
+function WeertmanFriction() #{{{
+	return WeertmanFriction(Vector{Float64}(undef,0),Vector{Float64}(undef,0))
+end# }}}
+function Base.show(io::IO, this::WeertmanFriction)# {{{
+   IssmStructDisp(io, this)
+end# }}}
 # }}}
 #Basalforcings {{{
