diff --git a/@Ternary_model/Ternary_model.m b/@Ternary_model/Ternary_model.m
index 42ac2687dee914c0cf11a45cddbc01369d0cce49..0c1928fd30500a4ea4e105ce56aed351fc390af7 100644
--- a/@Ternary_model/Ternary_model.m
+++ b/@Ternary_model/Ternary_model.m
@@ -21,7 +21,7 @@ classdef Ternary_model < handle
         b = 0.025;
         u0 = 0.05;
         e = 0.4;
-        e_g0 = 0.16;
+        e_g0 = 0.16; % mobility spread. Also used in square mobility ansatz.
         ic_c = 0; % initial concentration inside droplet
         u_g0 = 0.2;
         system_size = 300;
diff --git a/@Ternary_model/create_mesh.m b/@Ternary_model/create_mesh.m
index fc3686cebf283a4b8ea484db18394e0a3da65d8c..35884d83ce52d336a2efc9d8ed0bed5cfed22c08 100644
--- a/@Ternary_model/create_mesh.m
+++ b/@Ternary_model/create_mesh.m
@@ -2,7 +2,7 @@ function create_mesh(T)
 %CREATE_MESH creates mesh for solving Ternary_model.
 %   Mesh density larger for steeper gradients.
 
-if strcmp(T.mode, 'Constituent') | T.v == 0
+if strcmp(T.mode, 'Constituent') || strcmp(T.mode, 'Const_mob') || T.v == 0
 % Start with left side of mesh, at r=0/x=0, with a given step size
     x = linspace(0, -0.75*T.a, 40);
     x = [x, x(end)+0.001/T.precision];
diff --git a/flory_hugg_pde.m b/flory_hugg_pde.m
index 981342d5b0103ffc060535b5ab61394ad33ef77b..1afe3b9148f29c4257f5b7c25526d4d7d8295c7f 100644
--- a/flory_hugg_pde.m
+++ b/flory_hugg_pde.m
@@ -11,6 +11,10 @@ c = 1;
 if strcmp(mode, 'Constituent')
     g0 = Ternary_model.gamma0(x, a+t*v, b, e_g0, u_g0, v*t);
     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
+    % certain ratio of D_in/D_out.
+    f = (1-pt+e_g0*pt^2)./pt.*(pt.*dudx-u.*gra_a);
 elseif strcmp(mode, 'Client')
     g0 = 0.5;
     chi_phi = -4.530864768482371;