Index: /issm/trunk-jpl/src/jl/md/classes.jl
===================================================================
--- /issm/trunk-jpl/src/jl/md/classes.jl	(revision 26714)
+++ /issm/trunk-jpl/src/jl/md/classes.jl	(revision 26715)
@@ -135,4 +135,53 @@
 	return model( Mesh2dTriangle(), Geometry(), Mask(), Materials(), Initialization(),Stressbalance(), Constants(), [], BuddFriction())
 end#}}}
+function model(matmd::Dict) #{{{
+
+	#initialize output
+	md = model()
+
+	#Loop over all possible fields
+	for name1 in fieldnames(model)
+		if haskey(matmd, String(name1))
+			mdfield  = getfield(md,name1)
+			matfield = matmd[String(name1)]
+			for name2 in fieldnames(typeof(mdfield))
+				if haskey(matfield, String(name2))
+					println("recovering md.",name1,".",name2)
+					value_matlab = matfield[String(name2)]
+					value_julia  = getfield(mdfield, name2)
+
+					if typeof(value_matlab)==typeof(value_julia)
+						#setfield!(mdfield, name2, convert(typeof(getfield(mdfield, name2)), matfield[String(name2)]))
+						setfield!(mdfield, name2, value_matlab)
+
+					elseif typeof(value_matlab)==Float64 && typeof(value_julia)==Int64
+						setfield!(mdfield, name2, Int64(value_matlab))
+
+					elseif typeof(value_matlab)==Matrix{Float64} && typeof(value_julia)==Vector{Float64}
+						if(size(value_matlab,2)!=1) error("only one column expected") end
+						setfield!(mdfield, name2, value_matlab[:,1])
+
+					elseif typeof(value_matlab)==Matrix{Float64} && typeof(value_julia)==Matrix{Int64}
+						matrix = Matrix{Int64}(undef,size(value_matlab))
+						for i in 1:length(value_matlab) matrix[i] = Int64(value_matlab[i]) end
+						setfield!(mdfield, name2, matrix)
+
+					elseif typeof(value_matlab)==Matrix{Float64} && typeof(value_julia)==Vector{Bool}
+						if(size(value_matlab,2)!=1) error("only one column expected") end
+						vector = Vector{Bool}(undef,size(value_matlab,1))
+						for i in 1:length(vector) vector[i] = Bool(value_matlab[i]) end
+						setfield!(mdfield, name2, vector)
+
+					else
+						error("Don't know how to convert ",typeof(value_matlab)," to ",typeof(value_julia))
+					end
+				end
+			end
+			#setfield!(md, name1, mdfield)
+		end
+	end
+
+	return md
+end#}}}
 function Base.show(io::IO, md::model)# {{{
 
Index: /issm/trunk-jpl/src/jl/md/utils.jl
===================================================================
--- /issm/trunk-jpl/src/jl/md/utils.jl	(revision 26714)
+++ /issm/trunk-jpl/src/jl/md/utils.jl	(revision 26715)
@@ -153,4 +153,54 @@
 	return dataout
 end #}}}
+function InterpFromMeshToMesh2d2(index_data::Array,x_data::Vector,y_data::Vector,data::Vector,xout::Vector,yout::Vector) #{{{
+
+	#prepare input arrays
+	nods = Cint(length(x_data))
+	nels = Cint(size(index_data,1))
+	nods_interp = Cint(length(xout))
+	Cindex=Array{Cint,1}(undef,length(index_data))
+	for i in 1:size(index_data,1)
+		for j in 1:3
+			Cindex[(i-1)*3+j] = Int32(index_data[i,j])
+		end
+	end
+	Cx    = Array{Cdouble,1}(undef,nods)
+	Cy    = Array{Cdouble,1}(undef,nods)
+	Cdata = Array{Cdouble,1}(undef,nods)
+	for i in 1:nods
+		Cx[i]    = x_data[i]
+		Cy[i]    = y_data[i]
+		Cdata[i] = data[i]
+	end
+	Cxout    = Array{Cdouble,1}(undef,nods_interp)
+	Cyout    = Array{Cdouble,1}(undef,nods_interp)
+	Cdataout = Array{Cdouble,1}(undef,nods_interp)
+	for i in 1:nods_interp
+		Cxout[i] = xout[i]
+		Cyout[i] = yout[i]
+	end
+
+	#This is not working....
+	#rc=ccall( (:InterpFromMeshToMesh2dx,"../bamg/libBamg.so"),
+	#			Cint, (Ptr{Cdouble},Ptr{Cint}, Ptr{Cdouble}, Ptr{Cdouble}, Cint, Cint, Ptr{Cdouble}, Cint, Cint, Ptr{Cdouble}, Ptr{Cdouble}, Cint),
+	#			Ref(Cdataout), Ref(Cindex), Ref(Cx), Ref(Cy), nods, nels,
+	#			Ref(Cdata), nods, 1, Ref(Cxout), Ref(Cyout), nods_interp)
+	#rc=ccall( (:InterpFromMeshToMesh2dx,"../bamg/libBamg.so"),
+	#			Cint, (Ptr{Cint}, Ptr{Cdouble}, Ptr{Cdouble}, Cint, Cint),
+	#			Ref(Cindex), Ref(Cx), Ref(Cy), nods, nels)
+	#
+	#
+	dataout = Vector{Float64}(undef,nods_interp)
+	rc=ccall( (:InterpFromMeshToMesh2dx3,"/Users/mmorligh/Desktop/issmuci/trunk-jpl/src/jl/bamg/libBamg.dylib"),
+				Cint, (Ptr{Cdouble}, Cint),
+				dataout, nods_interp)
+
+	#Process output
+	for i in 1:nods_interp
+		dataout[i] = Cdataout[i]
+	end
+
+	return dataout
+end #}}}
 function solve(md::model,solution::String) #{{{
 
