Commit Graph

3 Commits

Author SHA1 Message Date
9cdd2a3e7a fvConstraints, fvModels: zeroDimensionalFixedPressure
A constraint and a model have been added, both called
zeroDimensionalFixedPressure, that together act to maintain a pressure
constraint in a zero-dimensional case. These must be used
simultaneously. The desired pressure can be specified as a time-varying
Function1.

These replace the pressureConstraintSource, which has been removed.

The new classes operate by obtaining the residual of the complete
pressure equation, and using that to calculate the mass or volume
sources that need adding to the fluid in order to maintain the
constraint. This process is far more convergent than the previous
approach, it does not require the fluid to have a certain thermodynamic
model, and it is generalisable to multiphase.

This functionality requires only minimal specification. The constraint
contains all the settings and should be specified in
system/fvConstraints as follows:

    zeroDimensionalFixedPressure1
    {
        type            zeroDimensionalFixedPressure;

        // Name of the pressure field, default = p
        //p               p;

        // Name of the density field, default = rho
        //rho             rho;

        // Constant pressure value
        pressure        1e5;

        //// Time-varying pressure value
        //pressure
        //{
        //    type            table;
        //    values
        //    (
        //        (0 1e5)
        //        (1 1e5)
        //        (1.1 1.4e5)
        //        (10 1.4e5)
        //    );
        //}
    }

The model is then added to constant/fvModels, and requires no settings:

    zeroDimensionalFixedPressure1
    {
        type            zeroDimensionalFixedPressure;
    }
2023-04-20 10:26:47 +01:00
dc85d509b0 #includeFunc, #includeModel, #includeConstraint: Changed entry renaming option to "name"
This is a more intuitive keyword than "funcName" or "entryName". A
function object's name and corresponding output directory can now be
renamed as follows:

    #includeFunc patchAverage
    (
        name=cylinderT, // <-- was funcName=... or entryName=...
        region=fluid,
        patch=fluid_to_solid,
        field=T
    )

Some packaged functions previously relied on a "name" argument that
related to an aspect of the function; e.g., the name of the faceZone
used by the faceZoneFlowRate function. These have been disambiguated.
This has also made them consistent with the preferred input syntax of
the underlying function objects.

Examples of the changed #includeFunc entries are shown below:

    #includeFunc faceZoneAverage
    (
        faceZone=f0, // <-- was name=f0
        U
    )

    #includeFunc faceZoneFlowRate
    (
        faceZone=f0 // <-- was name=f0
    )

    #includeFunc populationBalanceSizeDistribution
    (
        populationBalance=bubbles,
        regionType=cellZone,
        cellZone=injection, // <-- was name=injection
        functionType=volumeDensity,
        coordinateType=diameter,
        normalise=yes
    )

    #includeFunc triSurfaceAverage
    (
        triSurface=mid.obj, // <-- was name=mid.obj
        p
    )

    #includeFunc triSurfaceVolumetricFlowRate
    (
        triSurface=mid.obj // <-- was name=mid.obj
    )

    #includeFunc uniform
    (
        fieldType=volScalarField,
        fieldName=alpha, // <-- was name=alpha
        dimensions=[0 0 0 0 0 0 0],
        value=0.2
    )
2023-02-01 12:40:40 +00:00
644a5945da fvModels: Constraints for zero-dimensional cases
Two fvModels have been added, densityConstraintSource and
pressureConstraintSource, for constraining the density or pressure of
zero-dimensional cases. The constrained property's variation in time is
specified by means of a Function1.

The constraints are maintained by adding or removing an appropriate
amount of mass. Properties are added or removed with this mass at their
current values. Both constraints therefore represent uniform expansion
or contraction in an infinite space. In the case of the pressure
constraint, the compressibility is used to determine this amount of
mass, and in the case of non-linear equations of state iteration may be
necessary to enforce the constraint accurately.

These models can be used to extend the concept of a zero-dimensional
simulation to one that uniformly expands or contracts, or features a
mass source or sink.

Example specification of a time-varying density constraint, in
constant/fvModels:

    densityConstraintSource1
    {
        type            densityConstraintSource;
        rho
        {
            type            scale;
            values
            (
                (0 1.16)
                (1 1.16)
                (1.1 2.02)
                (10 2.02)
            );
        }
    }

Example specification of a constant pressure constraint:

    pressureConstraintSource1
    {
        type            pressureConstraintSource;
        p               1e5;
    }

An example in which the pressure is constrained is provided. This
example shows the reaction of nc7h16, and duplicates the behaviour of
the corresponding chemFoam case.
2023-01-31 16:14:07 +00:00