Index: /issm/trunk-jpl/src/jl/solve/modules.jl
===================================================================
--- /issm/trunk-jpl/src/jl/solve/modules.jl	(revision 26697)
+++ /issm/trunk-jpl/src/jl/solve/modules.jl	(revision 26698)
@@ -161,4 +161,14 @@
 
 end#}}}
+function Mergesolutionfromftogx(ug::IssmVector, uf::IssmVector, ys::IssmVector, nodes::Vector{Node}) #{{{
+
+	#Go through elements and plug in solution
+	for i=1:length(nodes)
+		VecMerge(nodes[i],ug,uf.vector,ys.vector)
+	end
+
+	return ug
+
+end#}}}
 function Reduceloadx!(pf::IssmVector, Kfs::IssmMatrix, ys::IssmVector) #{{{
 
Index: /issm/trunk-jpl/src/jl/solve/nodes.jl
===================================================================
--- /issm/trunk-jpl/src/jl/solve/nodes.jl	(revision 26697)
+++ /issm/trunk-jpl/src/jl/solve/nodes.jl	(revision 26698)
@@ -145,15 +145,64 @@
 
 end# }}}
+function VecMerge(node::Node,ug::IssmVector,uf::Vector{Float64},ys::Vector{Float64}) #{{{
+
+	fsize = FSize(node)
+	ssize = SSize(node)
+
+	if fsize>0
+		indices = Vector{Int64}(undef,fsize)
+		values  = Vector{Float64}(undef,fsize)
+
+		count = 1
+		for i=1:node.gsize
+			if node.fdoflist[i]!=-1
+				indices[count] = node.gdoflist[i]
+				values[count]  = uf[node.fdoflist[i]]
+				count += 1
+			end
+		end
+		SetValues!(ug,fsize,indices,values)
+	end
+
+	if ssize>0
+		indices = Vector{Int64}(undef,ssize)
+		values  = Vector{Float64}(undef,ssize)
+
+		count = 1
+		for i=1:node.gsize
+			if node.sdoflist[i]!=-1
+				indices[count] = node.gdoflist[i]
+				values[count]  = ys[node.sdoflist[i]]
+				count += 1
+			end
+		end
+		SetValues!(ug,ssize,indices,values)
+	end
+
+end# }}}
 function SSize(node::Node) #{{{
 
 	ssize = 0
+
+	for i=1:node.gsize
+		if node.sdoflist[i]!=-1
+			ssize+=1
+		end
+	end
+
+	return ssize
+
+end# }}}
+function FSize(node::Node) #{{{
+
+	fsize = 0
 
 	for i=1:node.gsize
 		if node.fdoflist[i]!=-1
-			ssize+=1
-		end
-	end
-
-	return ssize
+			fsize+=1
+		end
+	end
+
+	return fsize
 
 end# }}}
Index: /issm/trunk-jpl/src/jl/solve/solutionsequences.jl
===================================================================
--- /issm/trunk-jpl/src/jl/solve/solutionsequences.jl	(revision 26697)
+++ /issm/trunk-jpl/src/jl/solve/solutionsequences.jl	(revision 26698)
@@ -26,5 +26,8 @@
 		uf = Solverx(Kff, pf, old_uf)
 
-		print(uf)
+		#Merge uf with ys
+		Mergesolutionfromftogx(ug, uf, ys, femmodel.nodes)
+
+		print(ug)
 		error("compare with ISSM...")
 
Index: /issm/trunk-jpl/src/jl/solve/toolkits.jl
===================================================================
--- /issm/trunk-jpl/src/jl/solve/toolkits.jl	(revision 26697)
+++ /issm/trunk-jpl/src/jl/solve/toolkits.jl	(revision 26698)
@@ -73,5 +73,5 @@
 
 	x = IssmVector(GetSize(xold))
-	x.vector = (b.vector\A.matrix)' #not sure why we need to transpose... that's a mystery!
+	x.vector = (A.matrix\b.vector)
 
 	return x
