semiImplicitSource: Made operable on multiple different types

The scalarSemiImplicitSource, vectorSemiImplicitSource, etc...,
fvOptions have been replaced by a single semiImplicitSource fvOption.
This allows sources to be specified for multiple fields regardless of
type. For example:

    massSource
    {
        type            semiImplicitSource;

        timeStart       1;
        duration        500;

        selectionMode   points;
        points
        (
            (0.075 0.2 0.05)
        );

        volumeMode      absolute;

        sources
        {
            thermo:rho.steam
            {
                explicit    1.0e-3; // kg/s
                implicit    0;
            }

            U.steam
            {
                explicit    (0 1e-1 0); // kg*m/s^2
                implicit    0;
            }

            h.steam
            {
                explicit    3700; // kg*m^2/s^3
                implicit    0;
            }
        }
    }
This commit is contained in:
Jakub Knir
2020-04-07 15:57:52 +01:00
committed by Will Bainbridge
parent ad12d3a8c1
commit b6f91de72c
16 changed files with 774 additions and 612 deletions

View File

@ -15,24 +15,20 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
injector1
{
timeStart 0;
duration 1e6;
selectionMode points;
points
(
(0.075 0.925 0.05)
);
}
options
{
massSource1
massSource
{
type scalarSemiImplicitSource;
type semiImplicitSource;
$injector1;
timeStart 0;
duration 1e6;
selectionMode points;
points
(
(0.075 0.925 0.05)
);
volumeMode absolute;

View File

@ -15,24 +15,20 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
injector1
{
timeStart 0.1;
duration 5;
selectionMode points;
points
(
(0.075 0.2 0.05)
);
}
options
{
massSource1
massSource
{
type scalarSemiImplicitSource;
type semiImplicitSource;
$injector1;
timeStart 0.1;
duration 5;
selectionMode points;
points
(
(0.075 0.2 0.05)
);
volumeMode absolute;
@ -44,6 +40,12 @@ options
implicit 0;
}
U.air
{
explicit (0 -1e-2 0); // kg*m/s^2
implicit 0;
}
e.air
{
explicit 500; // kg*m^2/s^3
@ -51,24 +53,6 @@ options
}
}
}
momentumSource1
{
type vectorSemiImplicitSource;
$injector1;
volumeMode absolute;
sources
{
U.air
{
explicit (0 -1e-2 0); // kg*m/s^2
implicit 0; // kg*m/s^2
}
}
}
}

View File

@ -15,24 +15,20 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
injector1
{
timeStart 1;
duration 500;
selectionMode points;
points
(
(0.075 0.2 0.05)
);
}
options
{
massSource1
massSource
{
type scalarSemiImplicitSource;
type semiImplicitSource;
$injector1;
timeStart 1;
duration 500;
selectionMode points;
points
(
(0.075 0.2 0.05)
);
volumeMode absolute;
@ -44,29 +40,17 @@ options
implicit 0;
}
h.steam
{
explicit 3700; // kg*m^2/s^3
implicit 0;
}
}
}
momentumSource1
{
type vectorSemiImplicitSource;
$injector1;
volumeMode absolute;
sources
{
U.steam
{
explicit (0 1e-1 0); // kg*m/s^2
implicit 0;
}
h.steam
{
explicit 3700; // kg*m^2/s^3
implicit 0;
}
}
}

View File

@ -15,24 +15,20 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
injector1
{
timeStart 0.1;
duration 5;
selectionMode points;
points
(
(0.075 0.2 0.05)
);
}
options
{
massSource1
massSource
{
type scalarSemiImplicitSource;
type semiImplicitSource;
$injector1;
timeStart 0.1;
duration 5;
selectionMode points;
points
(
(0.075 0.2 0.05)
);
volumeMode absolute;
@ -44,6 +40,12 @@ options
implicit 0;
}
U.air
{
explicit (0 -1e-2 0); // kg*m/s^2
implicit 0;
}
e.air
{
explicit 500; // kg*m^2/s^3
@ -51,24 +53,6 @@ options
}
}
}
momentumSource1
{
type vectorSemiImplicitSource;
$injector1;
volumeMode absolute;
sources
{
U.air
{
explicit (0 -1e-2 0); // kg*m/s^2
implicit 0; // kg*m/s^2
}
}
}
}