From 42bf60f2cd0858a2dfbb24d053de633424e69459 Mon Sep 17 00:00:00 2001 From: Lars Hubatsch <hubatsch@pks.mpg.de> Date: Tue, 19 Nov 2019 14:36:06 +0100 Subject: [PATCH] Analytical derivates work, parameter regime doesn't look completely off. --- ternary_frap.m | 46 +++++++++++++++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 15 deletions(-) diff --git a/ternary_frap.m b/ternary_frap.m index 3e7b8ac..70df44d 100644 --- a/ternary_frap.m +++ b/ternary_frap.m @@ -4,8 +4,8 @@ % conditions are introduced. Integration of model via pdepe. %% Solve pde -x = linspace(0, 40, 500); -t = linspace(0, 5000, 50); +x = linspace(0,500, 6000); +t = linspace(0, 500, 50); % opt = odeset('RelTol',1e-14, 'AbsTol', 1e-16,'MaxStep',1e-2); % sol = pdepe(0,@flory_pde, @flory_ic, @flory_bc,x,t, opt); sol = pdepe(0,@flory_hugg_pde, @flory_ic, @flory_bc,x,t); @@ -13,28 +13,36 @@ sol = pdepe(0,@flory_hugg_pde, @flory_ic, @flory_bc,x,t); %% Plotting figure(1); hold on; for i = 1:50 - cla; plot(x, pt(x)); plot(x, sol(i, :)); pause(0.01); + cla; plot(x, pt(x)); plot(x, sol(i, :)); pause(0.04); end %% Plot and check derivatives of pt figure; hold on; +x = linspace(140, 170, 500); plot(x, pt(x)); plot(x, gra_pt(x, 0.001)); plot(x, lap_pt(x, 0.001)); plot(x, gralap_pt(x, 0.001)); plot(x, laplap_pt(x, 0.001)); - +plot(x, gra_a(x, -155, 0.5)); +plot(x, lap_a(x, -155, 0.5)); +% pt(0) +% gra_pt(0, 0.00001) +% lap_pt(0, 0.00001) +% lap_a(0, -155, 0.5) +% gralap_pt(0, 0.00001) +% laplap_pt(0, 0.00001) %% Function definitions for pde solver function [c, f ,s] = flory_hugg_pde(x, t, u, dudx) % Solve with full ternary model. -X = 2.2; -K = 1; +X = 3.2; +K = 1.5; c = 1/(pt(x)+1); f = dudx; -s = u*(lap_pt(x, 0.001)-2*X*(lap_pt(x, 0.001)-... - gra_pt(x, 0.001)^2-pt(x)*lap_pt(x, 0.001))+... - K*(-laplap_pt(x, 0.001)+... - gra_pt(x, 0.001)*gralap_pt(x, 0.001)+... - pt(x)*laplap_pt(x, 0.001)))/(pt(x)+1)+... - dudx*(-2*X*(gra_pt(x, 0.001)-pt(x)*gra_pt(x, 0.001))-... - K*gralap_pt(x, 0.001)+K*pt(x)*gralap_pt(x, 0.001))/... +s = u*(lap_pt(x, 0.0001)-2*X*(lap_pt(x, 0.0001)-... + gra_pt(x, 0.0001)^2-pt(x)*lap_pt(x, 0.0001))+... + K*(-laplap_pt(x, 0.0001)+... + gra_pt(x, 0.0001)*gralap_pt(x, 0.0001)+... + pt(x)*laplap_pt(x, 0.0001)))/(pt(x)+1)+... + dudx*(-2*X*(gra_pt(x, 0.0001)-pt(x)*gra_pt(x, 0.0001))-... + K*gralap_pt(x, 0.0001)+K*pt(x)*gralap_pt(x, 0.0001))/... (pt(x)+1); end @@ -42,7 +50,7 @@ function u0 = flory_ic(x) if x<5 u0 = 0.0; else - u0 = 0.1; + u0 = 0.5; end % u0 = pt(x)*0.5; end @@ -64,7 +72,7 @@ s = -u*lap_pt(x)/pt(x); end function p = pt(x) - p = (tanh(-(x-5)*2)+1)/2+0.1; + p = (tanh(-(x-155)*2)+1)/2+0.3; end function gpt = gra_pt(x, delta) @@ -84,4 +92,12 @@ end function llpt = laplap_pt(x, delta) llpt = (gralap_pt(x+delta, delta)-... gralap_pt(x-delta, delta))/(2*delta); +end + +function grad = gra_a(x, a, b) + grad = -(1-tanh(-(x+a)/b).^2)*1/b*0.5; +end + +function lap = lap_a(x, a, b) + lap = -2*tanh(-(x+a)/b).*(1-tanh(-(x+a)/b).^2)*1/b^2*0.5; end \ No newline at end of file -- GitLab