DropletSource(n) = ( V_dot, sizeOfNewDroplets, xPosOfNewDroplet, yPosOfNewDroplet, zPosOfNewDroplet, iChamber,
$Material$,
OPTIONAL %DropletSource_doNotCreateDropletsOutside% , OPTIONAL %ind_v(1)%, xVelocityNewDroplet , OPTIONAL %ind_v(2)%, yVelocityNewDroplet , OPTIONAL %ind_v(3)%, zVelocityNewDroplet , OPTIONAL %ind_h%, initialH_NewDroplet )
| Parameter | Meaning |
|---|
| n | index of the DropletSource sequence (up to 99) |
| V_dot | volume flux to be generated by the droplet sequence in m^3/s |
| sizeOfNewDroplets | volume of next droplet in the sequence in m^3 |
| xPosOfNewDroplet | x-position of next droplet in the sequence |
| yPosOfNewDroplet | y-position of next droplet in the sequence |
| zPosOfNewDroplet | z-position of next droplet in the sequence |
| iChamber | chamber index to which each new droplet of the sequence will have to belong |
| $Material$ | material index to which each new droplet will have to belong |
| %DropletSource_doNotCreateDropletsOutside% | (optional) with this flag creation of droplets outside of EVENT-cuts are prevented, such that V_dot is preserved for the reduced creation area |
| %ind_v(1)%, %ind_v(2)%, %ind_v(3)% | set the x, y, z velocity of the next droplet in the sequence respectively |
| xVelocityNewDroplet, yVelocityNewDroplet, zVelocityNewDroplet | x, y, z velocity of the next droplet in the sequence respectively |
| %ind_h% | set the initial interaction radius (SMOOTH_LENGTH) of the droplet. This can be useful for simulations with 'ADDS', 'ADTV' or when creating new points in DROPLETPHASE or STANDBY pointclouds |
In order to generate a unique sequence of droplets, the functionalities
given in
real() can be used, especially in
TwoArguments the options
REMARK: Application of the optional parameters to initialize the fields
%ind_v(1)%,
%ind_v(2)% and
%ind_v(3)% is developed for
DROPLETPHASE solver. It may be used as an experimental feature for the
LIQUID solver. Usage for the
LIQUID solver with care!
The settings done here for the initialization of the variables
%ind_v(1)%,
%ind_v(2)% and
%ind_v(3)% will overwrite the settings from
INITDATA for the
DropletSource.
REMARK: Radius correction Feature: (
LIQUID only!)
From the volume \( V\) given by the user, we compute the radius \( r\) of the sphere classically by
\begin{align} r = \left( \frac{3V}{4 \pi} \right)^{\frac{1}{3}}\end{align}
However, taking into account that the volume of the discrete particle sphere will be less (linear approximation of a convex, curved manifold), we correct the radius by
\begin{align} \tilde{r} = r \cdot \left( 2 - \sqrt{ 1 - \left( \frac{\alpha}{2} \frac{h}{r} \right)^2 } \right)\end{align}
where \( \alpha\) is the value of radius_hole and \( h\) is the current smoothing length.
Examples
Example 1: Randomly distributed droplets of identical size
DropletSource(1) = ( 5, [
&Hmax&^3], [20*rand(1)], [1.5*rand(-1)], [2], 1,
$Mat1$ )
# the droplet positions to be created are random: 0 < x < 20
# -1.5 < y < 1.5
# z = 2
Example 2: Droplets with random diameter from given distribution
See
drand().
EXPERIMENTAL - Parcel injection
DropletSource has an additional experimental syntax for injecting parcels:
If a ParcelInjectionOption is specified in
DropletSource, e.g.
DropletSource(n) = ( V_dot, sizeOfNewDroplets, xPosOfNewDroplet, yPosOfNewDroplet, zPosOfNewDroplet, iChamber,
$Material$,
%DropletSource_Multiplicity%, Multiplicity )
DropletSource(n) = ( V_dot, sizeOfNewDroplets, xPosOfNewDroplet, yPosOfNewDroplet, zPosOfNewDroplet, iChamber,
$Material$,
%DropletSource_ParcelRate%, ParcelRate )
DropletSource(n) = ( V_dot, sizeOfNewDroplets, xPosOfNewDroplet, yPosOfNewDroplet, zPosOfNewDroplet, iChamber,
$Material$,
%DropletSource_ParcelSize%, sizeOfParcel )
points will be injected with a calculated multiplicity \( n_i\) (stored in
%ind_mult%). The multiplicty is calculated based on an additional ParcelInjectionQuantity provided as an additional argument to
DropletSource directly following ParcelInjectionOption. The meaning of this quantity and the formula for \( n_i\) differ for different values of ParcelInjectionOption, as shown in the following table:
| ParcelInjectionOption | ParcelInjectionQuantity | Equation |
|---|
| %DropletSource_Multiplicity% | Multiplicity \( n_i\) [1] | \( n_i = n_i\) |
| %DropletSource_ParcelRate% | ParcelRate \( \omega_i\) [Parcel/s] | \( n_i = \dot{V}_i/(V_i^{Droplet}\omega_i)\) |
| %DropletSource_ParcelSize% | sizeOfParcel \( V_i^{Parcel}\) [m^3] | \( n_i = V_i^{Parcel}/V_i^{Droplet}\) |
Clearly, the above formulas for \( n_i\) may lead to non-integer multiplicities, in which case the nearest integer value is used. Also, a minimum multiplicity of one is always enforced.
Note: : It is still possible to use
%DropletSource_doNotCreateDropletsOutside% when using parcel injection. In this case,
%DropletSource_doNotCreateDropletsOutside% needs to preceed ParcelInjectionOption, e.g.
Examples - Parcel injection
Example 3: Inject parcels with random diameter from given distribution and with specified multiplicity
First, we store the probabilities (P) together with its associated droplet diameters (D) and multiplicities (Mult) in a
begin_table{ environment:
begin_table{$TAB_ParcelData$}
# P D Mult
0.05 1.5e-4 5
0.20 2.5e-4 10
0.35 3.5e-4 15
0.25 4.5e-4 20
0.15 5.5e-4 25
end_table
Next, we use the
drand() function to sample droplets with a random diameter based on the above probabilites (see Example 2). To define the parcel multiplicity, we use
%DropletSource_Multiplicity% and the same
drand() argument, but with the column index of the multiplicity data:
DropletSource(1) = ( [
&PS_vdot& ], [
&piover6& * drand(
$TAB_ParcelData$,1,2,equn(
$iDroplet$))^3 ], 0, 0, 0, 1,
$MAT_Droplet$, %DropletSource_Multiplicity%, [ drand(
$TAB_ParcelData$,1,3,equn(
$iDroplet$)) ] )
begin_equation{"iDroplet"}
# this equation returns the unique counter of the next droplet
real(
%DropletSource_provideCounter%, 1) + 1
end_equation
Note, that we use the optional argument iReproducible of
drand() together with the droplet counter. This is essential to ensure that the
drand() function returns the same row of the table as long as we are processing the same droplet. Otherwise the association between diameters and multiplicities would be lost.