diff --git a/@Ternary_model/Ternary_model.m b/@Ternary_model/Ternary_model.m
index 18f0e53854d06afcc6260fcebcf13575ed47d64c..48c6438698d0d3dbef000c5cb72681965580ed9b 100644
--- a/@Ternary_model/Ternary_model.m
+++ b/@Ternary_model/Ternary_model.m
@@ -50,7 +50,8 @@ classdef Ternary_model < handle
             end
             T.create_mesh();
             T.phi_t = Ternary_model.phi_tot(T.x, T.a, T.b, T.e, T.u0, 0);
-            T.ga0 = Ternary_model.gamma0(T.x, T.a, T.b, T.e_g0, T.u_g0, 0);
+            T.ga0 = Ternary_model.gamma0(T.x, T.a, T.b, T.e_g0, T.u_g0,...
+                                         0, T.e, T.u0);
             T.calc_real_params;
         end
         create_mesh(T)
@@ -62,6 +63,6 @@ classdef Ternary_model < handle
     methods(Static)
         pt = phi_tot(x, a, b, e, u0, vt)
         g = gradient_analytical(x, a, b, e, vt)
-        g0 = gamma0(x, a, b, e_g0, u_g0, vt)
+        g0 = gamma0(x, a, b, e_g0, u_g0, vt, e, u0)
     end
 end
\ No newline at end of file
diff --git a/@Ternary_model/calc_real_params.m b/@Ternary_model/calc_real_params.m
index 16aebb30c1dc1281f85010a7e1edb852b4f97e21..226cf017a3fb3d1e8e65b24e7583017ff7639d00 100644
--- a/@Ternary_model/calc_real_params.m
+++ b/@Ternary_model/calc_real_params.m
@@ -7,9 +7,9 @@ T.real_params.partitioning = T.real_params.phi_in/T.real_params.phi_out;
 
 if strcmp(T.mode, 'Constituent') || strcmp(T.mode, 'Client')
 T.real_params.Gamma_in = Ternary_model.gamma0(-1000, T.a, T.b, T.e_g0,...
-                                               T.u_g0, 0);
+                                               T.u_g0, 0, T.e, T.u0);
 T.real_params.Gamma_out = Ternary_model.gamma0(1000, T.a, T.b, T.e_g0,...
-                                               T.u_g0, 0);
+                                               T.u_g0, 0, T.e, T.u0);
 T.real_params.D_in = (1-T.real_params.phi_in)*T.real_params.Gamma_in;
 T.real_params.D_out = (1-T.real_params.phi_out)*T.real_params.Gamma_out;
 
diff --git a/@Ternary_model/gamma0.m b/@Ternary_model/gamma0.m
index 216035c626c039f7668acca474821ea321cc40cb..6b05c935970efa9f7aa572744120054ea7bddb9c 100644
--- a/@Ternary_model/gamma0.m
+++ b/@Ternary_model/gamma0.m
@@ -1,5 +1,9 @@
-function g0 = gamma0(x, a, b, e_g0, u_g0, vt)
+function g0 = gamma0(x, a, b, e_g0, u_g0, vt, e, u0)
 %GAMMA0 calculate spatially dependent mobility
 %   Based on a tanh profile.
-g0 = e_g0*(tanh((x+a+vt)/b)+1)/2+u_g0;
+if isnumeric(isnumeric(e_g0))
+    g0 = e_g0*(tanh((x+a+vt)/b)+1)/2+u_g0;
+else
+    g0 = u_g0./Ternary_model.phi_tot(x, a, b, e, u0, vt);
+end
 end
\ No newline at end of file
diff --git a/flory_hugg_pde.m b/flory_hugg_pde.m
index ce9120287fe0873b854d68cd56837f23005a71f7..eb37e122d6bbab213c632d534123545469fbe199 100644
--- a/flory_hugg_pde.m
+++ b/flory_hugg_pde.m
@@ -9,7 +9,7 @@ gra_a = Ternary_model.gradient_analytical(x, a, b, e, v*t);
 s = 0;
 c = 1;
 if strcmp(mode, 'Constituent')
-    g0 = Ternary_model.gamma0(x, a+t*v, b, e_g0, u_g0, v*t);
+    g0 = Ternary_model.gamma0(x, a+t*v, b, e_g0, u_g0, v*t, e, u0);
     f = g0.*(1-pt)./pt.*(pt.*dudx-u.*gra_a);
 elseif strcmp(mode, 'Const_mob')
     % Using Stefano's mobility ansatz (1-phi_tot+a*phi_tot^2) to obtain a