From 19e95405b4d2af0366bd218ffc797494440c7716 Mon Sep 17 00:00:00 2001
From: Lars Hubatsch <hubatsch@pks.mpg.de>
Date: Tue, 26 Nov 2019 11:28:24 +0100
Subject: [PATCH] Boundary conditions, initial conditions, phi_tot are now all
 parameterised.

---
 ternary_frap.m | 42 ++++++++++++++++++++++++------------------
 1 file changed, 24 insertions(+), 18 deletions(-)

diff --git a/ternary_frap.m b/ternary_frap.m
index 1119502..f36facb 100644
--- a/ternary_frap.m
+++ b/ternary_frap.m
@@ -2,16 +2,22 @@
 % unbleached species. Model is assumed to be equilibrated
 % (bleached+unbleached=const.=pt). Then bleached species initial
 % conditions are introduced. Integration of model via pdepe.
-
+a = -50;
+b = 0.05;
+c = 1/1000000000;
+u0 = 0.1;
 %% Solve pde
-x = linspace(49, 80, 700);
-t = linspace(0, 100, 1000);
-sol = pdepe(0, @flory_hugg_a, @flory_ic, @flory_bc, x, t);
+x = [linspace(49, 55, 600), linspace(55.01, 200, 300)];
+t = linspace(0, 100, 100);
+fh_ic = @(x) flory_ic(x, u0);
+fh_bc = @(xl, ul, xr, ur, t) flory_bc(xl, ul, xr, ur, t, u0);
+fh_pde = @(x, t, u, dudx) flory_hugg_pde(x, t, u, dudx, a, b, c, u0);
+sol = pdepe(0, fh_pde, fh_ic, fh_bc, x, t);
 %% Plotting
 figure(1); hold on;
-for i = 1:500 
+for i = 1:100 
     cla; xlim([49, 53]); ylim([0, 1.5]);
-    plot(x, phi_tot(x, -50, 0.25)); plot(x, sol(i, :)); pause(0.01);
+    plot(x, phi_tot(x, a, b, u0)); plot(x, sol(i, :)); pause(0.01);
 end
 
 %% Plot and check derivatives of pt
@@ -21,41 +27,41 @@ plot(x, phi_tot(x, -50, 0.25));
 plot(x, gradient_analytical(x, -50, 0.25));
 
 %% Function definitions for pde solver
-function [c, f ,s] = flory_hugg_a(x, t, u, dudx)  
+function [c, f ,s] = flory_hugg_pde(x, t, u, dudx, a, b, c_p, u0)  
 % Solve with full ternary model. Analytical derivatives.
 % pt ... phi_tot
 % gra_a ... analytical gradient of phi_tot
 
-pt = phi_tot(x, -50, 0.25);
-gra_a = gradient_analytical(x, -50, 0.25);
-c = 1/100;
-f = (1.3-pt)/pt*(pt*dudx-u*gra_a);
+pt = phi_tot(x, a, b, u0);
+gra_a = gradient_analytical(x, a, b);
+c = c_p;
+f = ((u0+1)-pt)/pt*(pt*dudx-u*gra_a);
 s = 0;
 end
 
-function u0 = flory_ic(x)
+function u = flory_ic(x, u0)
     if x<50
-        u0 = 0.0;
+        u = 0.0;
     else
-        u0 = 0.3;
+        u = u0;
     end
 %     u0 = 0.3;
 %  u0 = phi_tot(x, -50, 1);
 end
 
-function [pl,ql,pr,qr] = flory_bc(xl,ul,xr,ur,t)
+function [pl,ql,pr,qr] = flory_bc(xl, ul, xr, ur, t, u0)
     pl = 0;
     ql = 1;
 %     % No flux
 %     pr = 0;%ur - 0.01;
 %     qr = 1;
     % Dirichlet BC
-    pr = ur- 0.3;
+    pr = ur - u0;
     qr = 0;
 end
 
-function p = phi_tot(x, a, b)
-    p = (tanh(-(x+a)/b)+1)/2+0.3;
+function p = phi_tot(x, a, b, u0)
+    p = (tanh(-(x+a)/b)+1)/2+u0;
 end
 
 function grad = gradient_analytical(x, a, b)
-- 
GitLab