Skip to content
Snippets Groups Projects
prob_laplace.m 1.49 KiB
Newer Older
%% Solve Fokker Planck equation for given parameter set
clear all; clc;
b = nu^(1/3)*sqrt(chi/(chi-2));
e = sqrt(3/8*(chi-2));
T = Ternary_model(0, 'Gauss', [-6, b, 0.5, e, 0.16, 0.2, 7],...
                  linspace(0.0, 400, 5000));
%%
csvwrite('x_X73_1.csv', T.x+T.a);
csvwrite('sol_X73_1.csv', T.sol(:, :));
%% Frank's solution to the transfer/rate problem via Laplace transform
D_m = 1*(1-T.u0-T.e); % to make equal to ternary FRAP
D_p = 1*(1-T.u0+T.e);
ga = (T.u0-T.e)/ (T.u0+T.e);
p_out = @(D_p, D_m, ga, x0, x, t) 1./(2*sqrt(D_p*pi*t))*...
            (exp(-(x+x0).^2./(4*D_p*t))*(ga*sqrt(D_p)-sqrt(D_m))./...
            (ga*sqrt(D_p)+sqrt(D_m))+exp(-(x-x0).^2./(4*D_p*t)));
p_in = @(D_p, D_m, ga, x0, x, t) 1./(sqrt(pi*t)*(sqrt(D_m)+ga*sqrt(D_p)))*...
            exp(-(x-x0*sqrt(D_m/D_p)).^2/(4*D_m*t));
x_left = linspace(-4, 0, 1000);
x_right = linspace(0, 4, 1000);
for i = 1:length(T.t)  
    j = i+2;
    plot(x_left, p_in(D_p, D_m, ga, x0, x_left, j/100));
    plot(x_right, p_out(D_p, D_m, ga, x0, x_right, j/100));
    plot(T.x+T.a, 2*T.sol(i, :), 'LineWidth', 2);
    axis([-2, 2, 0, 1.8]);
%% Check integral of solution, should be mass conserving and sum to 1.
[~, ind] = min(abs(T.x-50)); % integrate up to 50, to avoid right boundary
bins = (T.sol(:, 1:ind-1)+T.sol(:, 2:ind))/2;
bin_size = diff(T.x(1:ind));
sum(bins(1, :).*bin_size)