Matlab-Emulsion-polymerizat.../main.m
2026-07-08 18:50:19 +03:00

214 lines
5.1 KiB
Matlab

%% Polymerization Reaction & Colloid Engineering
% George Tancev
clear all; close all; clc;
options = optimset('Display','none','MaxFunEvals',1000);
%% data
V = 10; % L
d_p_0 = 50e-8; % dm
w_s = 0.05;
c_M_0 = 2; % mol/L
n_M_0 = c_M_0*V;
w_I_0 = 0.01;
a_E = 50*(10^(-9))^2; % dm^2
N_A = 6.022*10^23; % 1/mol
M_M = 0.1; % kg/mol
M_I = 0.164; % kg/mol
p_M = 0.94; % kg/L
p_P = 1.1; % kg/L
p_W = 1.0; % kg/L
c_M = p_M/M_M;
phi_M = 0.5;
w_I = 0.01;
f = 0.5;
k_p = 715; % L/(mol*s)
k_des = 1e-1; % 1/s
k_e = 1e-6; % dm/s
k_t = 9.8*10^6; % L/(mol*s)
k_d = 5.55e-6; % 1/s
cmc = 40e-3; % mol/L
K_E = 100; % L/mol
m_M_0 = n_M_0*M_M; % initial mass of monomer (kg)
V_M_0 = m_M_0/p_M; % initial volume of monomer (L)
%% a)
mass_water = @(m_W_0)(V-p_M*m_M_0-p_W*m_W_0-p_P*(w_s*(m_M_0+m_W_0)/(1-w_s)));
m_W_0 = fsolve(mass_water,0.5,options); % mass of water (kg)
V_W_0 = m_W_0/p_W; % initial volume of water (L)
m_tot = m_M_0+m_W_0; % total mass of solution (kg) without seeds
m_s = w_s*(m_tot)/(1-w_s); % mass of seeds (kg)
V_p_0 = (4/3)*pi*(d_p_0/2)^3; % volume of a seed
m_1_s = V_p_0*p_P; % mass of one seed without monomer
n_s = m_s/m_1_s; % number of seeds
V_s_tot = n_s*2*V_p_0; % total volume of swollen seed
d_p_m = (12*V_p_0/pi)^(1/3); % diameter of swollen seed
A_s_tot = n_s*4*pi*(d_p_m/2)^2; % total surface of all particles at t = 0
A_1_s = 4*pi*(d_p_m/2)^2; % surface of one particle at t = 0
V_1_s = 2*V_p_0; % volume of one particle at t = 0
F_E_inf = (A_1_s/V_1_s)/(a_E*6.02*10^23); % maximum amount of emulsifier adsorbed in mol/vol
F_E_min = 0.2*F_E_inf; % min. adsorbed amount per particle
E_w_min = (F_E_min/F_E_inf)/(K_E*(1-F_E_min/F_E_inf));
E_w_max = cmc;
F_E_max = F_E_inf*(K_E*E_w_max)/(1+K_E*E_w_max); % max. adsorbed amount per particle
n_0_min = E_w_min*V_W_0+F_E_min*n_s*V_1_s; % minimum amount in mol
n_0_max = E_w_max*V_W_0+F_E_max*n_s*V_1_s; % maximum amount in mol
m_I = w_I*m_M_0;
c_I = m_I/(M_I*V);
c_R = sqrt(2*f*k_d*c_I/k_t);
%% b)
m0 = [n_M_0 n_s*V_p_0*c_M];
tspan = 0:1:3600;
options2 = odeset('RelTol',1e-6,'AbsTol',1e-10);
[t,m] = ode15s(@(t,n)emulsion1( t,n,n_s,n_M_0,V_p_0 ),tspan,m0,options2);
v_pol = V_p_0+(n_M_0-m(:,1))./n_s*(M_M/p_P);
v_p = v_pol+(m(:,2)./n_s)*(M_M/p_M);
phi = (v_p-v_pol)./v_p; % phi
diam = (6.*v_p./pi).^(1/3); % diameter over time (nm)
V_pol = n_s*v_pol; % total volume of polymer
V_p = n_s*v_p;
conv1 = (n_M_0-m(:,1))/n_M_0;
A_p = 4.*pi.*(diam./2).^2;
rho = A_p.*k_e.*c_R.*N_A; % 1/s
n_bar = (rho./(2.*rho));
c_M_1 = m(:,2)./(n_s.*v_p);
c_R_1 = n_bar./(N_A.*v_p);
tau_p1 = 1./(k_p.*c_M_1);
tau_in1 = 1./rho;
n_N = (tau_in1./tau_p1);
n_W = 2.*n_N;
figure(1);
subplot(6,1,1);
plot(t./3600,conv1);
title('conversion vs. time');
xlabel('time / [h]');
ylabel('conversion');
subplot(6,1,2);
plot(conv1,V_pol,conv1,V_p);
axis([0 1 0 2.5]);
title('total volume of polymer and particles vs. conversion');
xlabel('x_M');
ylabel('V / [L]');
legend('V_{pol}','V_p','Location','best');
subplot(6,1,3);
plot(conv1,phi);
axis([0 1 0 0.55]);
title('\phi vs. conversion');
xlabel('x_M');
ylabel('\phi');
subplot(6,1,4);
plot(conv1,diam.*10^8);
axis([0 1 50 100]);
title('diameter of a particle vs. conversion');
xlabel('x_M');
ylabel('d / [nm]');
subplot(6,1,5);
plot(t/3600,n_bar);
axis([0 1 0 1]);
title('n vs. conversion');
xlabel('x_M');
ylabel('n');
subplot(6,1,6);
plot(conv1,n_N,conv1,n_W);
title('number and weight average vs. conversion');
xlabel('x_M');
ylabel('n_N, n_W');
legend('n_N','n_W','Location','best');
%% c)
m0 = [n_M_0 n_s*V_p_0*c_M];
tspan2 = 0:1:3600;
[t2,m2] = ode15s(@(t,n)emulsion2( t,n,n_s,n_M_0,V_p_0,V ),tspan2,m0,options2);
v_pol2 = V_p_0+(n_M_0-m2(:,1))./n_s*(M_M/p_P);
v_p2 = v_pol2+(m2(:,2)./n_s)*(M_M/p_M);
phi = (v_p2-v_pol2)./v_p2; % phi
diam2 = (6*v_p2./pi).^(1/3); % diameter over time (dm)
V_pol = n_s*v_pol2; % total volume of polymer
V_p = n_s*v_p2;
conv2 = (n_M_0-m2(:,1))/n_M_0;
A_p2 = 4.*pi.*(diam2./2).^2;
rho = A_p2.*k_e.*c_R.*N_A; % 1/s
n_bar = (rho./(2.*rho+k_des));
c_M_2 = m2(:,2)./(n_s.*v_p2);
c_R_2 = n_bar./(N_A.*v_p2);
tau_p = 1./(k_p.*c_M_2);
tau_in = 1./rho;
tau_out = 1./(k_des.*n_bar);
n_N = 1./(tau_p./tau_in+tau_p./tau_out);
n_W = 2.*n_N;
figure(2);
subplot(6,1,1);
plot(t2./3600,conv2);
title('conversion vs. time');
xlabel('time / [h]');
ylabel('conversion');
subplot(6,1,2);
plot(conv2,V_pol,conv2,V_p);
axis([0 1 0 2.5]);
title('total volume of polymer and particles vs. conversion');
xlabel('x_M');
ylabel('V / [L]');
legend('V_{pol}','V_p','Location','best');
subplot(6,1,3);
plot(conv2,phi);
axis([0 1 0 0.55]);
title('\phi vs. conversion');
xlabel('x_M');
ylabel('\phi');
subplot(6,1,4);
plot(conv2,diam2.*10^8);
axis([0 1 50 100]);
title('diameter of a particle vs. conversion');
xlabel('x_M');
ylabel('d / [nm]');
subplot(6,1,5);
plot(t2/3600,n_bar);
axis([0 1 0 0.5]);
title('n vs. conversion');
xlabel('time / [h]');
ylabel('n');
subplot(6,1,6);
plot(conv2,n_N,conv2,n_W);
title('number and weight average vs. conversion');
xlabel('x_M');
ylabel('n_N, n_W');
legend('n_N','n_W','Location','best');
%%