Boundary conditions


1) Generalities

Boundary conditions are defined in system/boundariesDict and divided into three groups as shown below

pdGeneralBoundaries
(
    [...]
);

pdPatchBoundaries
(
    [...]
);

pdCyclicBoundaries
(
    [...]
);



2) Inflow & Outflow boundary conditions

Inflow & Outflow boundary conditions are set in the pdGeneralBoundaries() list.

2.1 Supersonic inflow

The supersonic inflow model is named pdFreeStreamInflowPatch and can be setup as follows

pdGeneralBoundaries
(
    boundary
    {
        boundaryModel   pdFreeStreamInflowPatch;
        
        generalBoundaryProperties
        {
            patchName   inlet;
        }

        pdFreeStreamInflowPatchProperties
        {
            typeIds                        (O+ O);
            velocity                   (7768 0 0);
            translationalTemperature         2000;
            rotationalTemperature               0;
            vibrationalTemperature              0;
            numberDensities
            {
                O+      2.318e12;
                O              0;
            };
        }
    }
);

In pdFreeStreamInflowPatchProperties, the same species defined in A.1 Species thermophysical properties) should be recalled in the typeIds() list. As is customary, the inflow velocity, modal temperatures and number densities must be prescribed as well.

2.2 Vacuum outlet

The vacuum outlet boundary condition implementation is shown below. The boundary model is called pdDeletionPatch and any particle hitting this patch (whether it is an inflow or an outflow in this example) is deleted.

pdPatchBoundaries
(
    boundary
    {
        boundaryModel   pdDeletionPatch;
        
        patchBoundaryProperties
        {
            patchName   inlet;
        }

        pdDeletionPatchProperties
        {
            allSpecies  yes;
        }
    }

    boundary
    {
        boundaryModel   pdDeletionPatch;
        
        patchBoundaryProperties
        {
            patchName   outlet;
        }

        pdDeletionPatchProperties
        {
            allSpecies  yes;
        }
    }
);



3) Wall boundary conditions

Wall boundary conditions are set in the pdPatchBoundaries() list.

3.1 Specular wall

The boundary model for specular walls is pdSpecularWallPatch. There are no other parameters to tune.

pdPatchBoundaries
(
    boundary
    {
        boundaryModel   pdSpecularWallPatch;
        
        patchBoundaryProperties
        {
            patchName   plate;
        }
    }
);

 

3.2 Diffuse wall

The boundary model for diffuse walls is pdDiffuseWallPatch. The wall velocity and temperature are given in pdDiffuseWallPatchProperties.

pdPatchBoundaries
(
    boundary
    {
        boundaryModel   pdDiffuseWallPatch;
        
        patchBoundaryProperties
        {
            patchName   cylinder;
        }

        pdDiffuseWallPatchProperties
        {
            velocity      (0 0 0);
            temperature      1000;
        }
    }
);

 

3.3 Diffuse-Neutralising wall

pdPatchBoundaries
(
    boundary
    {
        boundaryModel   pdDiffuseNeutralisingWallPatch;

        pdDiffuseNeutralisingWallPatchProperties
        {
            typeElec                      0;
            
            velocity                (0 0 0);
            temperature                 350;

            ionsToNeutralise           (O+);
            productsOfNeutralisation  ((O));
        }
    }
);



4) Cyclic boundary conditions

Cyclic boundary conditions are set in the pdCyclicBoundaries() list.

They are defined using the pdReflectiveParticleMembranePatch boundary model, and that for both patches. An example is given hereafter where all Argon parcels hitting the membrane are mapped onto the corresponding cyclic patch. The species-dependent reflection probabilities can be controlled using reflectionProbabilities in the boundary model’s properties dictionary, and a value of 1 would correspond to a specular wall.

pdCyclicBoundaries
(
    boundary
    {
        boundaryModel   pdReflectiveParticleMembranePatch;
        
        cyclicBoundaryProperties
        {
            patchName   leftPatch;
        }

        pdReflectiveParticleMembranePatchProperties
        {
            typeIds (Ar);

            reflectionProbabilities
            {
                Ar   0;
            }
        }
     }

    boundary
    {
        boundaryModel   pdReflectiveParticleMembranePatch;
        
        cyclicBoundaryProperties
        {
            patchName   rightPatch;
        }

        pdReflectiveParticleMembranePatchProperties
        {
            typeIds (Ar);

            reflectionProbabilities
            {
                Ar   0;
            }
        }
    }
);