214 lines
5.1 KiB
Matlab
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');
|
|
|
|
%%
|