PartMC 2.1.0
Functions/Subroutines
pmc_coag_kernel_additive Module Reference

Additive coagulation kernel. More...

Functions/Subroutines

subroutine kernel_additive (aero_particle_1, aero_particle_2, aero_data, env_state, k)
 Additive coagulation kernel.
subroutine kernel_additive_max (v1, v2, aero_data, env_state, k_max)
 Maximum value of the additive kernel.
subroutine soln_additive_exp (bin_grid, aero_data, time, num_conc, radius_at_mean_vol, env_state, aero_binned)
 Exact solution with the additive coagulation kernel and exponential initial condition.
subroutine bessi1 (x, r)
 Modified Bessel function of the first kind $ I_1(x) $.

Detailed Description

Additive coagulation kernel.


Function/Subroutine Documentation

subroutine pmc_coag_kernel_additive::bessi1 ( real(kind=dp),intent(in)  x,
real(kind=dp),intent(out)  r 
)

Modified Bessel function of the first kind $ I_1(x) $.

This looks like it was taken from Numerical Recipes.

FIXME: Where did this code come from? What license does it have?

Parameters:
xFunction argument.
rFunction value.
subroutine pmc_coag_kernel_additive::kernel_additive ( type(aero_particle_t),intent(in)  aero_particle_1,
type(aero_particle_t),intent(in)  aero_particle_2,
type(aero_data_t),intent(in)  aero_data,
type(env_state_t),intent(in)  env_state,
real(kind=dp),intent(out)  k 
)

Additive coagulation kernel.

Parameters:
aero_particle_1First particle.
aero_particle_2Second particle.
aero_dataAerosol data.
env_stateEnvironment state.
kCoagulation kernel.
subroutine pmc_coag_kernel_additive::kernel_additive_max ( real(kind=dp),intent(in)  v1,
real(kind=dp),intent(in)  v2,
type(aero_data_t),intent(in)  aero_data,
type(env_state_t),intent(in)  env_state,
real(kind=dp),intent(out)  k_max 
)

Maximum value of the additive kernel.

Parameters:
v1Volume of first particle.
v2Volume of second particle.
aero_dataAerosol data.
env_stateEnvironment state.
k_maxCoagulation kernel maximum value.
subroutine pmc_coag_kernel_additive::soln_additive_exp ( type(bin_grid_t),intent(in)  bin_grid,
type(aero_data_t),intent(in)  aero_data,
real(kind=dp),intent(in)  time,
real(kind=dp),intent(in)  num_conc,
real(kind=dp),intent(in)  radius_at_mean_vol,
type(env_state_t),intent(in)  env_state,
type(aero_binned_t),intent(inout)  aero_binned 
)

Exact solution with the additive coagulation kernel and exponential initial condition.

Given input paramaters $R$ and $N_0$ we let the mean volume be $v_\mu = \frac{4\pi}{3} R^3$ and define the rescaled times $\tau = N_0 v_\mu \beta_1 t$ and $T = 1 - e^{-\tau}$, where $\beta_1$ is the fixed kernel scaling parameter. Then the solution is

\[ n(D,t) \ {\rm d}\ln D = \frac{\pi}{2} D^3 \frac{N_0}{v} \frac{1 - T}{\sqrt{T}} \exp\left(-(1 + T) \frac{v}{v_\mu}\right) I_1\left(2 \frac{v}{v_\mu} \sqrt{T}\right) {\rm d}\ln D \]

where $I_1(x)$ is the modified Bessel function of the first kind and $v = \frac{\pi}{6} D^3$.

For small $x$ we have $I_1(x) \approx \frac{x}{2}$, so this solution has initial condition

\[ n(D,t) \ {\rm d}\ln D = \frac{\pi}{2} D^3 \frac{N_0}{v_\mu} \exp\left(-\frac{v}{v_\mu}\right) {\rm d}\ln D \]

Parameters:
bin_gridBin grid.
aero_dataAerosol data.
timeCurrent time.
num_concParticle number concentration (#/m^3).
radius_at_mean_volMean init radius (m).
env_stateEnvironment state.
aero_binnedOutput state.