lagrangian: InjectionModel: New uniformParcelSize control

Lagrangian injections now have a 'uniformParcelSize' control, which
specifies what size of the parcels is kept uniform during a given time
step. This control can be set to 'nParticles', 'surfaceArea' or
'volume'. The particle sizes, by contrast, are specified by the size
distribution.

For example, if 'uniformParcelSize nParticles;' is specified then all
parcels introduced at a given time will have the same number of
particles. Every particle in a parcel has the same properties, including
diameter. So, in this configuration, the larger diameter parcels contain
a much larger fraction of the total particulate volume than the smaller
diameter ones. This may be undesirable as the effect of a parcel on the
simulation might be more in proportion with its volume than with the
number of particles it represents. It might be preferable to create a
greater proportion of large diameter parcels so that their more
significant effect is represented by a finer Lagrangian discretisation.
This can be achieved by setting 'uniformParcelSize volume;'. A setting
of 'uniformParcelSize surfaceArea;' might be appropriate if the limiting
effect of a Lagrangian element scales with its surface area; interfacial
evaporation, for example.

Previously, this control was provided by 'parcelBasisType'. However,
this control also effectively specified the size exponent of the
supplied distribution. This interdependence was not documented and was
problematic in that it coupled physical and numerical controls.
'parcelBasisType' has been removed, and the size exponent of the
distribution is now specified independently of the new
'uniformParcelSize' control along with the rest of the distribution
coefficients or data. See the previous commit for details.

It is still possible to specify a fixed number of particles per parcel
using the 'nParticle' control. The presence of this control is used to
determine whether or not the number of particles per parcel is fixed, so
a 'fixed' basis type is no longer needed.

A number of bugs have been fixed with regards to lack of
interoperability between the various settings in the injection models.
'uniformParcelSize' can be changed freely and the number of parcels and
amount of mass that an injector introduces will not change (this was not
true of 'parcelBasisType'). Redundant settings are no longer read by the
injection models; e.g., mass is not read if the number of particles per
parcel is fixed, duration is not specified for steady tracking, etc...

The 'inflationInjection' model has been removed as there are no examples
of its usage, its purpose was not clearly documented, and it was not
obvious how it should be updated as a result of these changes.
This commit is contained in:
Will Bainbridge
2023-05-11 14:28:33 +01:00
parent cae41959dd
commit 0d2fd78864
129 changed files with 1179 additions and 4279 deletions

View File

@ -74,19 +74,14 @@ subModels
model1
{
type manualInjection;
massTotal 0;
parcelBasisType fixed;
nParticle 1;
SOI 0;
positionsFile "cloudPositions";
U0 (0 0 0);
sizeDistribution
{
type fixedValue;
fixedValueDistribution
{
value 0.0025;
}
type fixedValue;
value 0.0025;
}
}
}

View File

@ -69,19 +69,14 @@ subModels
model1
{
type manualInjection;
massTotal 0;
parcelBasisType fixed;
nParticle 1;
SOI 0;
positionsFile "cloudPositions";
U0 (0 0 0);
sizeDistribution
{
type fixedValue;
fixedValueDistribution
{
value 0.0025;
}
type fixedValue;
value 0.0025;
}
}
}

View File

@ -67,19 +67,14 @@ subModels
model1
{
type manualInjection;
massTotal 0;
parcelBasisType fixed;
nParticle 750;
SOI 0;
positionsFile "cloudPositions";
U0 (0 0 0);
sizeDistribution
{
type fixedValue;
fixedValueDistribution
{
value 0.0003;
}
type fixedValue;
value 0.0003;
}
}
}

View File

@ -71,7 +71,7 @@ subModels
type patchInjection;
massTotal 40;
SOI 1;
parcelBasisType mass;
uniformParcelSize volume;
patchName inlet;
duration 4;
parcelsPerSecond 100644;
@ -79,14 +79,12 @@ subModels
flowRateProfile constant 1;
sizeDistribution
{
type normal;
normalDistribution
{
expectation 100e-6;
variance 25e-6;
minValue 20e-6;
maxValue 180e-6;
}
type normal;
Q 3;
min 20e-6;
max 180e-6;
mu 100e-6;
sigma 25e-6;
}
}
}

View File

@ -63,66 +63,47 @@ subModels
injectionModels
{
/*
% matlab/octave calculation of flow rate
alpha=0.1
U=20
A=0.01^2
Q=U*A
d=650e-6
v=(4/3)*pi*(d/2)^3
n=1
rate=alpha*Q/(v*n)
*/
model1
{
type patchInjection;
parcelBasisType fixed;
patchName lowerInlet;
U0 (18.7939 6.8404 0);
nParticle 1;
parcelsPerSecond 1390885;
sizeDistribution
{
type normal;
normalDistribution
{
expectation 650e-6;
variance 25e-6;
minValue 500e-6;
maxValue 800e-6;
}
type normal;
Q 0;
min 500e-6;
max 800e-6;
mu 650e-6;
sigma 25e-6;
}
flowRateProfile constant 1;
massTotal 0;
SOI 0;
duration 60;
SOI 0;
duration 60;
}
model2
{
type patchInjection;
parcelBasisType fixed;
patchName upperInlet;
U0 (18.7939 -6.8404 0);
nParticle 1;
parcelsPerSecond 1390885;
sizeDistribution
{
type normal;
normalDistribution
{
expectation 650e-6;
variance 25e-6;
minValue 500e-6;
maxValue 800e-6;
}
type normal;
Q 0;
min 500e-6;
max 800e-6;
mu 650e-6;
sigma 25e-6;
}
flowRateProfile constant 1;
massTotal 0;
SOI 0;
duration 60;
SOI 0;
duration 60;
}
}

View File

@ -53,10 +53,8 @@ subModels
model1
{
type patchInjection;
massTotal 0;
SOI 0;
duration 5;
parcelBasisType fixed;
nParticle 1;
parcelsPerSecond 1000;
patchName inlet;
@ -64,11 +62,8 @@ subModels
flowRateProfile constant 1;
sizeDistribution
{
type fixedValue;
fixedValueDistribution
{
value 1e-4;
}
type fixedValue;
value 1e-4;
}
}
}

View File

@ -56,19 +56,14 @@ subModels
model1
{
type manualInjection;
massTotal 0;
parcelBasisType fixed;
nParticle 1;
SOI 0;
positionsFile "cloudPositions";
U0 (0 0 0);
sizeDistribution
{
type fixedValue;
fixedValueDistribution
{
value 0.006;
}
type fixedValue;
value 0.006;
}
}
}

View File

@ -72,19 +72,14 @@ subModels
model1
{
type manualInjection;
massTotal 0;
parcelBasisType fixed;
nParticle 1;
SOI 0;
positionsFile "cloudPositions";
U0 (0 0 0);
sizeDistribution
{
type fixedValue;
fixedValueDistribution
{
value 0.0025;
}
type fixedValue;
value 0.0025;
}
}
}

View File

@ -78,7 +78,7 @@ subModels
{
type reactingLookupTableInjection;
massTotal 0.5;
parcelBasisType mass;
uniformParcelSize volume;
SOI 0;
inputFile "parcelInjectionProperties";
duration 20.0;

View File

@ -78,7 +78,7 @@ subModels
{
type thermoLookupTableInjection;
massTotal 100;
parcelBasisType mass;
uniformParcelSize volume;
SOI 0;
inputFile "parcelInjectionProperties";
duration 20.0;

View File

@ -78,7 +78,7 @@ subModels
{
type reactingLookupTableInjection;
massTotal 0.1;
parcelBasisType mass;
uniformParcelSize volume;
SOI 0.01;
inputFile "parcelInjectionProperties";
duration 10.0;

View File

@ -81,7 +81,7 @@ subModels
type coneInjection;
SOI 0;
massTotal 6.0e-6;
parcelBasisType mass;
uniformParcelSize volume;
injectionMethod disc;
flowType flowRateAndDischarge;
dInner 0;
@ -134,15 +134,12 @@ subModels
sizeDistribution
{
type RosinRammler;
RosinRammlerDistribution
{
minValue 1e-06;
maxValue 0.00015;
d 0.00015;
n 3;
}
type RosinRammler;
Q 3;
min 1e-06;
max 0.00015;
d 0.00015;
n 3;
}
}
}

View File

@ -78,7 +78,7 @@ subModels
{
type reactingLookupTableInjection;
massTotal 1e-2;
parcelBasisType mass;
uniformParcelSize volume;
SOI 0.5;
inputFile "parcelInjectionProperties";
duration 1.0;

View File

@ -84,7 +84,7 @@ subModels
massTotal 10;
parcelsPerSecond 1000;
parcelBasisType mass;
uniformParcelSize volume;
flowRateProfile constant 0.1;
Umag constant 3.0;
thetaInner constant 0;
@ -92,14 +92,12 @@ subModels
sizeDistribution
{
type RosinRammler;
RosinRammlerDistribution
{
minValue 5e-04;
maxValue 0.0012;
d 7.5e-05;
n 0.5;
}
type RosinRammler;
Q 3;
min 5e-04;
max 0.0012;
d 7.5e-05;
n 0.5;
}
}

View File

@ -43,13 +43,11 @@ forces
distribution
{
type normal;
normalDistribution
{
minValue 50;
maxValue 100;
expectation 75;
variance 100;
}
Q 0;
min 50;
max 100;
mu 75;
sigma 100;
}
zeroForcePatches ();
@ -74,14 +72,12 @@ ejection
parcelDistribution
{
type RosinRammler;
RosinRammlerDistribution
{
minValue 5e-04;
maxValue 0.0012;
d 7.5e-05;
n 0.5;
}
type RosinRammler;
Q 0;
min 5e-04;
max 0.0012;
d 7.5e-05;
n 0.5;
}
}
}

View File

@ -78,18 +78,14 @@ subModels
{
type manualInjection;
massTotal 5.23599e-10; // 1 droplet of density 1000 kg/m3
parcelBasisType mass;
uniformParcelSize volume;
SOI 0;
positionsFile "cloudPositions";
U0 (0 0 0);
sizeDistribution
{
type uniform;
uniformDistribution
{
minValue 100e-06;
maxValue 100e-06;
}
type fixedValue;
value 100e-06;
}
}
}

View File

@ -83,20 +83,18 @@ subModels
{
type manualInjection;
massTotal 0.0001;
parcelBasisType mass;
uniformParcelSize volume;
SOI 0;
positionsFile "coalCloudPositions";
U0 (0 -10 0);
sizeDistribution
{
type RosinRammler;
RosinRammlerDistribution
{
minValue 5e-06;
maxValue 0.0005;
d 5e-05;
n 0.5;
}
type RosinRammler;
Q 3;
min 5e-06;
max 0.0005;
d 5e-05;
n 0.5;
}
}
}

View File

@ -78,20 +78,18 @@ subModels
{
type manualInjection;
massTotal 0.0001;
parcelBasisType mass;
uniformParcelSize volume;
SOI 0;
positionsFile "limestoneCloudPositions";
U0 (0 0 0);
sizeDistribution
{
type RosinRammler;
RosinRammlerDistribution
{
minValue 5e-06;
maxValue 0.000565;
d 4.8e-05;
n 0.5;
}
type RosinRammler;
Q 3;
min 5e-06;
max 0.000565;
d 4.8e-05;
n 0.5;
}
}
}

View File

@ -79,7 +79,7 @@ subModels
type patchInjection;
SOI 0.01;
massTotal 8;
parcelBasisType mass;
uniformParcelSize volume;
patchName inletCentral;
duration 10000;
parcelsPerSecond 1e5;
@ -87,30 +87,28 @@ subModels
flowRateProfile constant 1;
sizeDistribution
{
type general;
generalDistribution
{
distribution
(
(10e-06 0.0025)
(15e-06 0.0528)
(20e-06 0.2795)
(25e-06 1.0918)
(30e-06 2.3988)
(35e-06 4.4227)
(40e-06 6.3888)
(45e-06 8.6721)
(50e-06 10.3153)
(55e-06 11.6259)
(60e-06 12.0030)
(65e-06 10.4175)
(70e-06 10.8427)
(75e-06 8.0016)
(80e-06 6.1333)
(85e-06 3.8827)
(90e-06 3.4688)
);
}
type tabulatedDensity;
Q 3;
distribution
(
(10e-06 0.0025)
(15e-06 0.0528)
(20e-06 0.2795)
(25e-06 1.0918)
(30e-06 2.3988)
(35e-06 4.4227)
(40e-06 6.3888)
(45e-06 8.6721)
(50e-06 10.3153)
(55e-06 11.6259)
(60e-06 12.0030)
(65e-06 10.4175)
(70e-06 10.8427)
(75e-06 8.0016)
(80e-06 6.1333)
(85e-06 3.8827)
(90e-06 3.4688)
);
}
}
}

View File

@ -81,38 +81,35 @@ subModels
{
type patchInjection;
massFlowRate 0.8e-03;
parcelBasisType mass;
uniformParcelSize volume;
patchName inletCentral;
parcelsPerSecond 100;
duration 1; // NOTE: set to 1 for steady state
U0 (0 40 0);
flowRateProfile constant 1;
sizeDistribution
{
type general;
generalDistribution
{
distribution
(
(10e-06 0.0025)
(15e-06 0.0528)
(20e-06 0.2795)
(25e-06 1.0918)
(30e-06 2.3988)
(35e-06 4.4227)
(40e-06 6.3888)
(45e-06 8.6721)
(50e-06 10.3153)
(55e-06 11.6259)
(60e-06 12.0030)
(65e-06 10.4175)
(70e-06 10.8427)
(75e-06 8.0016)
(80e-06 6.1333)
(85e-06 3.8827)
(90e-06 3.4688)
);
}
type tabulatedDensity;
Q 3;
distribution
(
(10e-06 0.0025)
(15e-06 0.0528)
(20e-06 0.2795)
(25e-06 1.0918)
(30e-06 2.3988)
(35e-06 4.4227)
(40e-06 6.3888)
(45e-06 8.6721)
(50e-06 10.3153)
(55e-06 11.6259)
(60e-06 12.0030)
(65e-06 10.4175)
(70e-06 10.8427)
(75e-06 8.0016)
(80e-06 6.1333)
(85e-06 3.8827)
(90e-06 3.4688)
);
}
}
}

View File

@ -81,38 +81,35 @@ subModels
{
type patchInjection;
massFlowRate 0.8e-03;
parcelBasisType mass;
uniformParcelSize volume;
patchName inletCentral;
parcelsPerSecond 100;
duration 1; // NOTE: set to 1 for steady state
U0 (0 40 0);
flowRateProfile constant 1;
sizeDistribution
{
type general;
generalDistribution
{
distribution
(
(10e-06 0.0025)
(15e-06 0.0528)
(20e-06 0.2795)
(25e-06 1.0918)
(30e-06 2.3988)
(35e-06 4.4227)
(40e-06 6.3888)
(45e-06 8.6721)
(50e-06 10.3153)
(55e-06 11.6259)
(60e-06 12.0030)
(65e-06 10.4175)
(70e-06 10.8427)
(75e-06 8.0016)
(80e-06 6.1333)
(85e-06 3.8827)
(90e-06 3.4688)
);
}
type tabulatedDensity;
Q 3;
distribution
(
(10e-06 0.0025)
(15e-06 0.0528)
(20e-06 0.2795)
(25e-06 1.0918)
(30e-06 2.3988)
(35e-06 4.4227)
(40e-06 6.3888)
(45e-06 8.6721)
(50e-06 10.3153)
(55e-06 11.6259)
(60e-06 12.0030)
(65e-06 10.4175)
(70e-06 10.8427)
(75e-06 8.0016)
(80e-06 6.1333)
(85e-06 3.8827)
(90e-06 3.4688)
);
}
}
}