Supporting Information A General Kinetic-Optical Model for Solid-State Reactions Involving the Nano Kirkall Effect. The Case of Copper Nanoparticle Oxidation Mariano D. Susman, Alexander Vaskevich, * Israel Rubinstein * Department of Materials and Interfaces, Weizmann Institute of Science, Rehovot 7, Israel * Corresponding author. Email: alexander.vaskevich@weizmann.ac.il israel.rubinstein@weizmann.ac.il
t =, δ = t, <δ < ) Air t =, δ = Air Cu a Oxide a a Figure S. Schematic description of Cu O NP formation according to the Valensi-Carter (VC) model, showing (top) the NP geometric conformation, (middle) the concentration profiles, and (bottom) the species flow, as a function of the time or conversion fraction (progressing from left to right). Full lines indicate the behavior of the species, assumed by the model.
t =, δ = t, <δ < ) Air t =, δ = Air Cu a v a a a Figure S. Schematic description of Cu O NP formation according to the nano Kirkenall effect (NKE) model, showing (top) the NP geometric conformation, (medium) the concentration profiles, and (bottom) the species flow, as a function of the time or conversion fraction (progressing from left to right). Full lines indicate the behavior of the species, assumed by the model. Note that the outgoing flow of Cu is compensated by inward flow of vacancies, as O - is assumed to negligibly diffuse through the oxide layer. A B Figure S. Schematic description of Cu O NP formation observed from (A) a static frame-of-reference centered at, and (B) a moving oxide lattice frame-of-reference, free to advance with any Kirkall shift (given by ), which deps on the combination of and values. The inward and outward growths, actually taking place at the oxide boundaries, are assumed to occur at the Kirkall surface. For =, scheme B reduces to scheme A. Note that the oxidation front may be considered to coincide with the Kirkall surface ( = ).
Inward vacancy diffusion Outward vacancy diffusion VC Outward oxide formation Inward oxide formation NKE Z- Z/ Figure S. The various oxidation regimes, for different combinations of and values. Note that the general model accounts for all situations. Restricted cases where no Kirkall shift occurs ( =) are indicated by the blue line. Red circles indicate the location of the oxidation front (or Kirkall surface). Dotted circles indicate the location of the initial particle surface (at ). A) a = nm 8.....7.8.9 8 8.....7.8.9 8 8 8 8 8 8 8 8 8
B) a = 9 nm. x......7.8..9 8 x. x.. 8 x. x.. 8 x 8 7 x 8 8 7 x 8 8 7 x 8 C) a = nm x.......7.8..9 8 x... x 8 x... x 8 x 8 8 x 8 8 x 8 8 x 8 8 8 Figure S., scattering and extinction cross-sections for Cu NPs of (A), (B) 9 and (C) nm initial diameter, as a function of the conversion fraction (from to, indicated), and for different values.
A. x... 8........7.8.9.9 B x 8........7.8.9.9 Figure S. cross-sections for Cu NPs of 9 nm initial diameter undergoing oxidation ( = ), as a function of the conversion fraction (from to, indicated). Results obtained with (A) the Matlab script (quasi-static approximation), and with (B) MieLab.. software, using the same medium dielectric constant (., corresponding to air/glass supported NPs) and geometric parameters, are presented and can be compared.. x........7.8.9 x... x 8 8 8 Figure S7. cross-sections for Cu NPs of 9 nm initial diameter undergoing oxidation to CuO, as a function of the conversion fraction (from to, indicated), and for different values.
8.......7.8.9 7 Figure S8. cross-sections for nm (initial diameter) Ag NPs undergoing oxidation to Ag O ( =), as a function of the conversion fraction (from to, indicated). 7
Matlab script % -------------------- METAL NANOPARTICLE OXIDATION ----------------------- % -------- Mie solutions for core-shell spherical nanoparticles ----------- % ---------------- under the quasi-static approximation ------------------- % -- General kinetic model considering the NKE, without Kirkall shift -- % ------------------ Calculations as a function of time --------------------- % % In this script, spherical metal NPs with a given normal size distribution % react according to a general kinetic model, where the NKE is considered. % The standard deviation of the distribution can % be set for the particular size distribution in the system under study. % Bulk properties of the materials have to be defined (density and formula % weight), as well as the stoichiometric coefficients of the reaction. % The parameters phi and k, have to be set in the script for defining the % extent of core contraction and the reaction rate. % A Mie scattering model (in the quasi-static approximation) of spherical % core-shell particles was used to model the overall optical behavior of % the evolving core-shell NP system. % An Effective Medium Approximation (EMA) (Maxwell-Garnett approximation) % was used to model the optical properties of the core under vacancy % accumulation. % A Kreibig's correction is applied for the size depent metal dielectric % constant (relevant at the low size limit). Plasma frequency, % Fermi velocity, and bulk damping constant have to be set. % % The files containing the bulk dielectric constants of metal () and oxide % () have to be in the format: st column:, nd column: n, % rd column: k, separated by tabulations. % % Calculations are performed as a function of the reaction time, according to % the integral reaction model. % clc clear all close all lambda=(:.:).'; % in nm %% PROPERTIES OF THE MATERIALS %% Dielectric constant of the core % For Cu: Jonhnson and Christy's bulk data (Cu-JC.txt) filename='cu-jc.txt'; % Select the appropriate core material file. fid=fopen(filename); fgetl(fid); tmp=fscanf(fid,'%g %g %g',[,inf]); fclose(fid); n=interp(tmp(,:),tmp(,:),lambda,'spline'); % n - metal (interpolated) k=interp(tmp(,:),tmp(,:),lambda,'spline'); % k - metal (interpolated) reps=n.^-k.^; ieps=*n.*k; eps=reps+i*ieps; % Real part epsilon - metal % Imaginary part of epsilon - metal % Complex dielectric constant of metal clear n; clear k; %% Dielectric constant of the shell % For CuO: Malerba et al. data (CuO-Malerba.txt) filename='cuo-malerba.txt'; % Select the appropriate shell material file. 8
fid=fopen(filename); fgetl(fid); tmp=fscanf(fid,'%g %g %g',[,inf]); fclose(fid); n=interp(tmp(,:),tmp(,:),lambda,'spline'); % n - oxide (interpolated) k=interp(tmp(,:),tmp(,:),lambda,'spline'); % k - oxide (interpolated) reps=n.^-k.^; ieps=*n.*k; % Real part of epsilon - oxide % Imaginary part of epsilon - oxide eps=reps+i*ieps; % Complex dielectric constant of oxide clear n; clear k; %% Dielectric constant of medium % The refractive index of the medium of the supported NPs is roughly % estimated by computing the weighted average of the refractive indices of % glass (~%) and air (~7 %), where the weights are taken to % approximate the proportion of the NP surfaces area in contact with each % medium. % Refractive index of borosilicate glass coverslips is., according to % http://www.labochema.ee/documents/tarvikud/menzel/menzel_coverslips_uk.pdf n_m=.*.+.7*; epsm=n_m^; % Average RI of the medium. % Dielectric constant of the medium clear reps; clear reps; clear ieps; clear ieps; clear fid; clear tmp; clear tline; clear filename; %% Bulk densities and formula weights % Bulk densities dens = 8.9; % For Cu (g cm-) dens =.; % For CuO (g cm-) % Formula weights FW =.; % For Cu (g mol-) FW =.9; % For CuO (g mol-) eta=; % Stoichiometric coefficient Z=(dens*FW)/(dens*FW*eta); % Pilling Bethword factor % Volume of product formed per unit of volume of core % material reacted. Has to be Z> (volume expansion). %% Geometric parameters a_ = ; % Initial metal NP radius (in nm) (integers only). a sigma = ; % Std. deviation of the radius (in nm)(integers only). if a sigma == a_x = a_; a_y = ; else a_x = ::a_+*a sigma; a_y = normpdf(a_x,a_,a sigma)/sum(normpdf(a_x,a_,a sigma)); % Distribution of NP radii, +/- standard deviations wide %% General kinetic model 9
phi=.; % Proportion of the process which leads to core-contraction. %(=<phi=<). conv=:.:; % Conversion fractions for evaluating the general model. if phi>; ad_valcar=(z-(phi.*(-(phi-z).*conv).^(/))-(z-phi).*(-phi*conv).^(/))..../(*(z-phi)*phi); % This equation is only defined for <phi<=. elseif phi==; ad_valcar=((/)*z.*conv-(+z.*conv).^(/)+)./(*z); % For phi=, the function needs to be defined at this point. valcar(:,)=conv'; valcar(:,)=ad_valcar'; clear ad_valcar; %% Application of the kinetic model k_reac=7; % Oxidation rate constant time=[.,,,::,::]; % (in min) % Choose times as desired left_term_vc=zeros(length(time),length(a_x)); delta_vc=zeros(length(time),length(a_x)); % Conversion fraction for each NP for i=:length(time) left_term_vc(i,:)=time(i)*k_reac./(a_x.^); % Left VC term for each particle reacting, deping on time. % It is directly related to the conversion fraction. for j=:length(a_x); if left_term_vc(i,j)>=(z-z^(/))/(*(z-)) left_term_vc(i,j)=(z-z^(/))/(*(z-)); delta_vc(i,j)=interp(valcar(:,),valcar(:,),left_term_vc(i,j),'spline'); if isnan(delta_vc(i,j))== delta_vc(i,j)=; delta_vc=delta_vc'; delta_vc_ens=zeros(length(time),); % Conversion fraction of the ensemble for i=:length(time) for j=:length(a_x) delta_vc_ens(i,)=sum(a_x(,j).^.*delta_vc(j,i).*a_y(,j))./sum(a_x(,j).^.*a_y(,j)); [height_r,width_r]=size(delta_vc); a=zeros(height_r,width_r); a=zeros(height_r,width_r); for j=:length(a_x) % Distributions of a = radii (metal-shell) and a = radius (shell-air) % for the distribution of NPs reacting. a(j,:)= a_x(j)'*(-phi*delta_vc(j,:)).^(/); %. a(j,:)= a_x(j)'*(-phi*delta_vc(j,:)+z.*delta_vc(j,:)).^(/); f=(a./a).^; % Volume fraction
%% Corrections of the dielectric constants %% Kreibig's correction % "Modelling the optical response of gold nanoparticles" % Chem. Soc. Rev., 8, 7, 79 8 % For Cu wp = 8.8; % Plasma frequency (ev) gamma =.9*^-; % Bulk damping constant (ev) vf =.; % Fermi velocity % vf =(.7*^ m/s)* h *^9 nm/m [ev.nm] % with h=.7*^- ev.s % The size effect is considered by modelling the damping constant (gamma) % as % gamma=gamma(bulk)+a*vf/r % where vf is the Fermi velocity % r is the radius of the particle % A is a dimensionless geometrical parameter assumed to be. % as vf/r has Hz units, this is converted to ev units by multiplying the % Fermi velocity (in m/s) by the Planck constant (in ev.s units). freq=9.8./lambda; % Light frequency % (in ev units) [E=hbar*w=h*w/(pi)] % since(nm) = 9.8/E(eV) freq_a=zeros(length(lambda),height_r,width_r); eps_a=zeros(length(lambda),height_r,width_r); eps_a=zeros(length(lambda),height_r,width_r); epsm_a=zeros(length(lambda),height_r,width_r); for i=:height_r; for j=:width_r freq_a(:,i,j)=freq; eps_a(:,i,j)=eps; eps_a(:,i,j)=eps; epsm_a(:length(lambda),i,j)=epsm; factor=zeros(length(lambda),height_r,width_r); for l=:length(lambda) factor(l,:,:)=gamma+vf./a; eps_a=eps_a... +(wp^./(freq_a.^+i*freq_a.*gamma))... -(wp^./(freq_a.^+i*freq_a.*factor)); %% Effective Medium Approximation (EMA) % To describe the formation of inclusions in the core due to Kirkall % effect. delta_prime_vc=zeros(length(lambda),height_r,width_r); for i=:length(lambda); for j=:height_r delta_prime_vc(i,j,:)=(-phi).*delta_vc(j,:)./(-phi.*delta_vc(j,:)); % corrected by the fraction that goes to the core-contraction, % and therefore leads not to inclusions. for h=:width_r if isnan(delta_prime_vc(i,j,h))== delta_prime_vc(i,j,h)=; % Maxwell-Garnett model % ---------------------
eps_a=eps_a.*(((*(-delta_prime_vc).*eps_a+(+*delta_prime_vc).*epsm_a))./... ((+delta_prime_vc).*eps_a+(-delta_prime_vc).*epsm_a)); %% Mie scattering model (quasi-static approximation) %% Dipole polarizability (alpha) for core-shells in the quasi-static limit f_a=zeros(length(lambda),height_r,width_r); for ii=:length(lambda); f_a(ii,:height_r,:width_r)=f; coef=*pi*a.^; beta=(((eps_a-epsm_a).*(eps_a+*eps_a))+(eps_a- eps_a).*(epsm_a+*eps_a).*f_a)./... ((eps_a+*epsm_a).*(eps_a+*eps_a)+(*(eps_a-epsm_a).*(eps_a-eps_a)).*f_a); alpha=zeros(length(lambda),height_r,width_r); for i=:width_r for j=:height_r alpha(:,j,i)=coef(j,i)*beta(:,j,i); clear i; clear j; %% Calculation of scattering, absorption and extinction coefficients k=*pi*n_m./lambda; % Wavenumber factor=k.^/(*pi); factor=abs(alpha).^; Cscatt=zeros(length(lambda),height_r,width_r); Cabs=zeros(length(lambda),height_r,width_r); Cext=zeros(length(lambda),height_r,width_r); for i=:width_r for j=:height_r Cscatt(:,j,i)=factor.*factor(:,j,i); Cabs(:,j,i)=(k.*abs(imag(alpha(:,j,i)))); Cext(:,j,i)=Cabs(:,j,i)+Cscatt(:,j,i); % For considering the normal distribution of sizes: Cscatt_dist=zeros(length(lambda),width_r); Cabs_dist=zeros(length(lambda),width_r); Cext_dist=zeros(length(lambda),width_r); for h=:height_r for w=:width_r if a sigma == Cscatt_dist(:,w) = Cscatt(:,h,w); Cabs_dist(:,w) = Cabs(:,h,w); Cext_dist(:,w) = Cext(:,h,w); else Cscatt_dist(:,w) = Cscatt(:,h,w) *a_y(,h)'; Cabs_dist(:,w) = Cabs(:,h,w) *a_y(,h)'; Cext_dist(:,w) = Cext(:,h,w) *a_y(,h)';
%% Data analysis and plots %% Maxima locations as a function of time ext_max_cext=zeros(length(time),); lambda_max_cext=zeros(length(time),); % min_lambda = ; % Define the minimal wavelength from where to start % % analyzing spectra. This excludes assigning maxima to absorption % % bands not corresponding to plasmon extinctions but to oxide % % absorptions, likely occurring at lower wavelengths. for j=:length(time); % This excludes the first and last r values defined. try [ext_max_cext(j),lambda_max_cext(j)]=findpeaks(cext_dist(:,j), 'SORTSTR', 'desc', 'NPEAKS',); lambda_max_cext(j)=lambda(lambda_max_cext(j)); catch exception ext_max_cext(j)=nan; lambda_max_cext(j)=nan; %% Plots scrsz = get(,'screensize'); figure('position',[ scrsz()*/ scrsz()/]); subplot(,,[,,,]); plot(lambda,cext_dist,'linewidth',); set(gcf,'color','w'); set(gca,'color','w','fontsize',); xlabel('','fontsize',,'fontangle','italic','fontweight','bold'); ylabel('','fontsize',,'fontangle','italic','fontweight','bold'); xlim([ ]); g=leg(cellstr(numstr(time')),'location','northeastoutside','fontsize',); set(g,'box','off'); subplot(,,); plot(time,lambda_max_cext(:length(time)),'--o','linewidth',,'markersize',8); set(gca,'color','w','fontsize',,'xscale','log','xtick',[.,,,,,]); xlabel('time (min)','fontsize',,'fontangle','italic','fontweight','bold'); ylabel('wavelength@max (nm)','fontsize',,'fontangle','italic','fontweight','bold'); xlim([.,max(time)]); ylim([,9]); subplot(,,); plot(time,ext_max_cext(:length(time)),'--o','linewidth',,'markersize',8); set(gca,'color','w','fontsize',,'xscale','log','xtick',[.,,,,,]); xlabel('time (min)','fontsize',,'fontangle','italic','fontweight','bold'); ylabel('@max','fontsize',,'fontangle','italic','fontweight','bold'); xlim([.,max(time)]);