The Population Balance Equation
Click here to load reader
-
Upload
noelle-figueroa -
Category
Documents
-
view
67 -
download
5
description
Transcript of The Population Balance Equation
The Population Balance EquationA statement of continuity relating particle-size distributions (PSDs) to underlying rate processes, such as the rates of growth and aggregation. PSDs are described by number probability density functions n(l,t), where l is particle size and t is time.
In words: Accumulation =Nucleation + Growth + Aggregation + Breakage + Sink
In symbols:
In DPB:
An Interactive Population Balance Tool: DPBM.J. Hounslow, Particle Products Group, Department of Chemical and Process Engineering
The University of Sheffield, U.K.
What DPB Does
DPB Is a Mathematica
package
Data Read from a spread
sheet file “Re-grid” size points Interconvert number and
weight data
Extraction and fitting Extract nucleation,
growth, aggregation, selection or sink rate constants
Fit models to rate constants
Simulation Uses a discretised
population balance Solves dynamic problems Solves steady-state
problems
Plotting Rate constants Moments Particle size distributions
Find out how AIChEJ, 34, no. 11, 1821, 1988 J. Coll. Interf. Sci., 203, no 1,
155, 1996
In[22]:=PsiNPlot[{data138,sim138},SmoothPlot->{False,True},PlotRange->All]
2. ´ 10 - 6 5. ´ 10 - 60.00001 0.00002 0.00005size HmL0
5́ 1010
1́ 1011
1.5́ 1011
2́ 1011
2.5́ 1011
yn
t=0
2. ´ 10 - 6 5. ´ 10 - 60.00001 0.00002 0.00005size HmL0
2.5́ 1010
5́ 10107.5́ 1010
1́ 10111.25́ 10111.5́ 1011
yn
t=300.
2. ´ 10 - 6 5. ´ 10 - 60.00001 0.00002 0.00005size HmL0
2́ 1010
4́ 1010
6́ 1010
8́ 1010
1́ 1011
1.2́ 1011
yn
t=600.
2. ´ 10 - 6 5. ´ 10 - 60.00001 0.00002 0.00005size HmL0
2́ 1010
4́ 1010
6́ 1010
8́ 1010
1́ 1011
yn
t=900.
2. ´ 10 - 6 5. ´ 10 - 60.00001 0.00002 0.00005size HmL0
2́ 1010
4́ 1010
6́ 1010
8́ 1010
yn
t=1200.
2. ´ 10 - 6 5. ´ 10 - 60.00001 0.00002 0.00005size HmL0
2́ 1010
4́ 1010
6́ 1010
8́ 1010
yn
t=1800.
2. ´ 10 - 6 5. ´ 10 - 60.00001 0.00002 0.00005size HmL0
2́ 1010
4́ 1010
6́ 1010
8́ 1010
yn
t=2400.
2. ´ 10 - 6 5. ´ 10 - 60.00001 0.00002 0.00005size HmL0
2́ 1010
4́ 1010
6́ 1010
8́ 1010
yn
t=3000.
2. ´ 10 - 6 5. ´ 10 - 60.00001 0.00002 0.00005size HmL0
2́ 1010
4́ 1010
6́ 1010
8́ 1010
yn
t=3600.
Out[22]=8… Graphics …, … Graphics …, … Graphics …, … Graphics …, … Graphics …,
… Graphics …, … Graphics …, … Graphics …, … Graphics …<
AggregationRateConstant
AggregationDrivingForce
AggregationSizeDependence
GrowthRateConstant
GrowthDrivingForce
GrowthSizeDependence
SelectionRateConstant
SelectionDrivingForce
SelectionSizeDependenceBreakageSizeDependence
SinkRateConstant
SinkDrivingForce
SinkSizeDependence
In[21]:=MomentPlot[{data138,sim138},SmoothPlot->{False,True}]
500 1000 1500 2000 2500 3000 3500t HsecL
5́ 1010
1́ 1011
1.5́ 1011
2́ 1011
m0
500 1000 1500 2000 2500 3000 3500t HsecL
200000
400000
600000
800000
m1
500 1000 1500 2000 2500 3000 3500t HsecL
1
2
3
4
5
m2
500 1000 1500 2000 2500 3000 3500t HsecL
0.00001
0.00002
0.00003
0.00004
0.00005
m3
500 1000 1500 2000 2500 3000 3500tHsecL
1́ 10-10
2́ 10-10
3́ 10-10
4́ 10-10
5́ 10-10
m4
Out[21]=8… Graphics …, … Graphics …, … Graphics …, … Graphics …, … Graphics …<
ŸPlot the results
Ÿ read in the packageIn[1]:=<<DPB4̀Ÿ read in a package to calculate supersaturations from third moment dataIn[2]:=<<CaOx̀Ÿ these are the standard settingsIn[3]:=Options[CaOxSetUp]
Out[3]=8Ksp®2.24´ 10-9, KCaOx ®0.000364, KNaOx®0.0752, gamma®0.314,
Mr®146.1, rhos®2200, w0®0.01608, TCa0 ®0.000981, TOx0 ®0.000196,
TNa0®0.1578<Ÿ this sets up the supersaturation calculation using the correct initial concentrationsIn[4]:=CaOxSetUp[{TCa0->0.000286,TOx0->0.00143,w0->0.022}]ŸRead the data from a spread sheet file of Coulter Counter data, turning minutes to seconds, microns to
metres and the sample volume to cubic metres.In[7]:=rawdata138=ReadSSFile["d:\13_8N.txt",
TimeScaleFactor->60.,
SizeScaleFactor->10̂ -6,
AmountScaleFactor->1/(100 10̂ -9)];ŸConvert them into a standard dataset conserving the thrid moment
ŸThis is a set of options needed often, so store them in a variable
In[8]:=data138=DeltaNtoN[rawdata138,NormaliseMoment->{3,Conserve}];
ŸThe growth rate is known as a function of supersaturation, so use it, and the number of particles in the first size inteval, and the zeroth moment to calculate aggregation and (apparent) nucleation rates.In[13]:=rates138=ExtractRateConstants[data138,
GrowthRateConstantKnown->True,
GrowthRateConstant->Function[s,1.45 10̂ -9 s 2̂],
caoxoptions,
UseEquations->{-1,0}]
Out[13]=:Nucleation®True, NucleationRateConstantKnown®False,
NucleationSizeDependence®DiracDelta, NucleationDrivingForce®Time,
B0Data®880, 1.53101´ 108<,8300., 3.56839´ 107<,8600., 1.48665´ 107<,8900., 3.85979´ 106<,81200., 2.32911´ 106<,81800., 699021.<,82400., - 406198.<,83000., 23869.2<,83600., - 492004.<<,Growth®True, GrowthRateConstantKnown®True,
GrowthSizeDependence®SizeIndependent, GrowthDrivingForce®SigmaCaOx,
GrowthRateConstant®FunctionBs, 1.45 s2
109F,
Aggregation®True, AggregationRateConstantKnown®False,
AggregationSizeDependence®SizeIndependent,
AggregationDrivingForce®SigmaCaOx,
Beta0Data®881.5702, 1.67973´ 10-14<,81.04785, 1.65338´ 10-14<,80.823875, 1.67153´ 10-14<,80.546143, 1.13117´ 10-14<,80.530671, 6.81055´ 10-15<,80.231345, 3.22629´ 10-15<,80.185455, 1.5403´ 10-15<,80.157354, 1.36033´ 10-15<,80.0616058, 9.00712´ 10-16<<,Breakage®False, Sink®False>
Crystallisation Example.Batch experiments with calcium oxalate yield PSDs at regular time intervals. Aggregation and apparent nucleation rates are extracted and correlated. The PBE is solved to predict moments and the PSD.
In[10]:=caoxoptions={Nucleation->True,
Growth->True,
Aggregation->True,
GrowthDrivingForce->SigmaCaOx,
AggregationDrivingForce->SigmaCaOx,
NucleationDrivingForceVariable->t,
GrowthDrivingForceVariable->s,
AggregationDrivingForceVariable->s};
AIChE Miami 1998
z z z n l t
dtB B l G
lG l n l t
ll
n l t n t
ld n l t l n t d S S b l n t d S S l n l t IN G A
l
A Sl
S
,( ) , ( ) ,
, ,, , , , , ,* * *
/* * *bg b gbg bgbgd i e j e j b g
d i b gbg b gb g bg bgb gb g bgbgbg00
00 0
23 33
3 33
3 3 2 30
0
0
0 0 0
2
I I l n l tbgbgbg* ,
NucleationRateConstant
NucleationDrivingForce
NucleationSizeDependence
ŸSet up to simulate - this extracts initial conditions from the experimental data
ŸFit models to both sets of rate constants.In[16]:=model138=FitRateConstants[rates138,
NucleationRateConstantModel->a Exp[-t/b],
NucleationRateConstantModelParameters->{{a,1.5 10̂ 8},{b,200}},
NucleationDrivingForceVariable->t,
AggregationRateConstantModel->Min[k s 2̂,1.67 10̂ -14],
AggregationRateConstantModelParameters->{{k,{10̂ -14,10̂ -13}}},
Method->FindMinimum,
AggregationDrivingForceVariable->s,
PrintStatistics->False]
Out[16]=:Nucleation®True, NucleationRateConstantKnown®True,
NucleationSizeDependence®DiracDelta, NucleationDrivingForce®Time,
NucleationRateConstant®Function@t, 1.52708´ 108E-0.00458081tD,Growth®True, GrowthRateConstantKnown®True,
GrowthSizeDependence®SizeIndependent, GrowthDrivingForce®SigmaCaOx,
GrowthRateConstant®FunctionBs, 1.45 s2
109F,
Aggregation®True, AggregationRateConstantKnown®True,
AggregationSizeDependence®SizeIndependent,
AggregationDrivingForce®SigmaCaOx,
AggregationRateConstant®Function@s, [email protected]´ 10-14, 3.18205´ 10-14 s2DD,Breakage®False, Sink®False>
ŸCompare the fit and the rate constants
In[18]:=initial138=Simdata[data138,1];
ŸSimulateIn[20]:=sim138=Simulate[initial138,model138];
In[17]:=RateConstantPlot[model138,
RotateLabel->False,
AggregationRateConstantPlotRange->{{0,Automatic},{0,Automatic}},
caoxoptions,
PlotRange->All,
rates138]
0 500 1000 1500 2000 2500 3000 3500t
0
2.5́ 107
5́ 107
7.5́ 107
1́ 108
1.25́ 108
1.5́ 108
B0
0.2 0.4 0.6 0.8 1 1.2 1.4 1.6s
0
2.5́ 10-155́ 10-15
7.5́ 10-151́ 10
-14
1.25́ 10-14
1.5́ 10-14
b0
Out[17]=8… Graphics …, … Graphics …<