CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Running, Solving & CFD (https://www.cfd-online.com/Forums/openfoam-solving/)
-   -   Boundary condition for Internal Baffle (https://www.cfd-online.com/Forums/openfoam-solving/221003-boundary-condition-internal-baffle.html)

shanvach September 30, 2019 11:02

Boundary condition for Internal Baffle
 
Hi all,

I have certain doubts regarding the use of internal baffle. So I am using icoUncoupledkinematicParcelFoam. I need to inject particles from somewhere inside the domain. Hence I created an internal baffle using the stl file. However I do not want to assign different boundary conditions for the baffle.I just need the baffle to use patchInjection inside the domain. The rest of the field values (u,p,k,omega,etc) should be as dictated by the internal field.I have specified various boundary conditions but all of them assign the value (0 0 0) to the baffle.hence there is a discontinuity observed in the domain. What boundary condition for the baffle should I use?
Following is my createBafflesDict
Code:

 

internalFacesOnly true;

// Optionally do not read/convert/write any fields.
//noFields true;


// Baffles to create.
baffles
{
    baffleFacesThermoBaffle1D
    {
        //- Use surface to select faces and orientation.
        type        searchableSurface;
        surface    triSurfaceMesh;
        name        patch0.stl;
        //- Optional flip
        //flip        false;


        // Generate patchGroup baffle1 with two patches:
        //  - baffle1_master
        //  - baffle1_slave
        patchPairs
        {
            type            wall;
            //- Optional override of added patchfields. If not specified
            //  any added patchfields are of type calculated.
            patchFields
            {
            patchFields
            {
                U
                {
                    type            calculated;
                                        //value        $internalField;
                                       
                }
                            p
                {
                    type          calculated;
                                        //value        $internalField;
                }
                               
                            phi
                {
                    type          calculated;
                                        //value        $internalField;             
                }       
                                omega
                {
                    type            calculated;
                                        //value        $internalField;                 
                }
                                nut
                {
                    type        calculated;
                                        //value        $internalField;             
                }
                                k
                {
                    type        calculated;
                                        //value        $internalField;             
                }
            }
        }
      }
    }
    }

Furthermore, I also tried using the baffle in simpleFoam.But while solving for the field values I got the following error.

Code:

[n2c1-13:23765] 13 more processes have sent help message help-opal-shmem-mmap.txt / mmap on nfs
[n2c1-13:23765] Set MCA parameter "orte_base_help_aggregate" to 0 to see all help / error messages
[8]
[8]
[8] --> FOAM FATAL ERROR:
[8] cannot be called for a calculatedFvPatchField
    on patch baffleFacesThermoBaffle1D_master of field U in file "/gpfs_common/share02/ck/svachha/October2019/gcc482-v1706/OpenFOAM-v1706/tutorials/incompressible/simpleFoam/nasal_5lpm/processor8/0/U"
    You are probably trying to solve for a field with a default boundary condition.
[8]
[8]    From function Foam::tmp<Foam::Field<Type> > Foam::calculatedFvPatchField<Type>::gradientInternalCoeffs() const [with Type = Foam::Vector<double>]
[8]    in file fields/fvPatchFields/basic/calculated/calculatedFvPatchField.C at line 187.
[8]
FOAM parallel run aborting
[8]
[5]
[5]
[5] --> FOAM FATAL ERROR:
[5] cannot be called for a calculatedFvPatchField
    on patch baffleFacesThermoBaffle1D_master of field U in file "/gpfs_common/share02/ck/svachha/October2019/gcc482-v1706/OpenFOAM-v1706/tutorials/incompressible/simpleFoam/nasal_5lpm/processor5/0/U"
    You are probably trying to solve for a field with a default boundary condition.
[5]
[5]    From function Foam::tmp<Foam::Field<Type> > Foam::calculatedFvPatchField<Type>::gradientInternalCoeffs() const [with Type = Foam::Vector<double>]
[5]    in file fields/fvPatchFields/basic/calculated/calculatedFvPatchField.C at line 187.
[5]
FOAM parallel run aborting
[5]
[9]
[9]
[9] --> FOAM FATAL ERROR:
[9] cannot be called for a calculatedFvPatchField
    on patch baffleFacesThermoBaffle1D_master of field U in file "/gpfs_common/share02/ck/svachha/October2019/gcc482-v1706/OpenFOAM-v1706/tutorials/incompressible/simpleFoam/nasal_5lpm/processor9/0/U"
    You are probably trying to solve for a field with a default boundary condition.
[9]
[9]    From function Foam::tmp<Foam::Field<Type> > Foam::calculatedFvPatchField<Type>::gradientInternalCoeffs() const [with Type = Foam::Vector<double>]
[9]    in file fields/fvPatchFields/basic/calculated/calculatedFvPatchField.C at line 187.

[1]
[1]    From function Foam::tmp<Foam::Field<Type> > Foam::calculatedFvPatchField<Type>::gradientInternalCoeffs() const [with Type = Foam::Vector<double>]
[1]    in file fields/fvPatchFields/basic/calculated/calculatedFvPatchField.C at line 187.
[1]
FOAM parallel run aborting
[1]
[1] #0  Foam::error::printStack(Foam::Ostream&) at ??:?
[0] #1  Foam::error::abort() at ??:?
[1] #1  Foam::error::abort() at ??:?
 at ??:?
 at ??:?
 at ??:?
 at ??:?
[5] #1  at ??:?
 at ??:?
 at ??:?
Foam::error::abort()[8] #1  Foam::error::abort()[6] #1  Foam::error::abort()[2] #1  Foam::error::abort()[4] #1  Foam::error::abort()[3] #1  Foam::error::abort()[9] #1  Foam::error::abort()[7] #1  Foam::error::abort() at ??:?
 at ??:?
 at ??:?
 at ??:?
[2] #2  Foam::calculatedFvPatchField<Foam::Vector<double> >::gradientInternalCoeffs() const[8] #2  Foam::calculatedFvPatchField<Foam::Vector<double> >::gradientInternalCoeffs() const[4] #2  Foam::calculatedFvPatchField<Foam::Vector<double> >::gradientInternalCoeffs() const[6] #2  Foam::calculatedFvPatchField<Foam::Vector<double> >::gradientInternalCoeffs() const at ??:?
 at ??:?
 at ??:?
 at ??:?
[9] #2  Foam::calculatedFvPatchField<Foam::Vector<double> >::gradientInternalCoeffs() const[5] #2  Foam::calculatedFvPatchField<Foam::Vector<double> >::gradientInternalCoeffs() const[7] #2  Foam::calculatedFvPatchField<Foam::Vector<double> >::gradientInternalCoeffs() const[3] #2  Foam::calculatedFvPatchField<Foam::Vector<double> >::gradientInternalCoeffs() const at ??:?
[0] #2  Foam::calculatedFvPatchField<Foam::Vector<double> >::gradientInternalCoeffs() const at ??:?
[1] #2  Foam::calculatedFvPatchField<Foam::Vector<double> >::gradientInternalCoeffs() const at ??:?
 at ??:?
[0] #3  Foam::fv::gaussLaplacianScheme<Foam::Vector<double>, double>::fvmLaplacianUncorrected(Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh> const&)[1] #3  Foam::fv::gaussLaplacianScheme<Foam::Vector<double>, double>::fvmLaplacianUncorrected(Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh> const&) at ??:?
 at ??:?
 at ??:?
 at ??:?
[8] #3  Foam::fv::gaussLaplacianScheme<Foam::Vector<double>, double>::fvmLaplacianUncorrected(Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh> const&)[4] #3  at ??:?
 at ??:?
Foam::fv::gaussLaplacianScheme<Foam::Vector<double>, double>::fvmLaplacianUncorrected(Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh> const&)[2] #3  Foam::fv::gaussLaplacianScheme<Foam::Vector<double>, double>::fvmLaplacianUncorrected(Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh> const&) at ??:?
[5] #3  Foam::fv::gaussLaplacianScheme<Foam::Vector<double>, double>::fvmLaplacianUncorrected(Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh> const&)[3] #3  Foam::fv::gaussLaplacianScheme<Foam::Vector<double>, double>::fvmLaplacianUncorrected(Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh> const&)[7] #3  Foam::fv::gaussLaplacianScheme<Foam::Vector<double>, double>::fvmLaplacianUncorrected(Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh> const&)[9] #3  Foam::fv::gaussLaplacianScheme<Foam::Vector<double>, double>::fvmLaplacianUncorrected(Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh> const&) at ??:?
[6] #3  Foam::fv::gaussLaplacianScheme<Foam::Vector<double>, double>::fvmLaplacianUncorrected(Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh> const&) at ??:?
 at ??:?
 at ??:?
 at ??:?
 at ??:?
 at ??:?
[Foam::IncompressibleTurbulenceModel<Foam::transportModel>::divDevReff(Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh>&) const at ??:?
[1] #5  Foam::fv::laplacianScheme<Foam::Vector<double>, double>::fvmLaplacian(Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&, Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh> const&) at ??:?
[4] #9  at ??:?
[2] #9  at ??:?
[6] #9  at ??:?
[8] #9  at ??:?
[7] #9  at ??:?
[9] #9  at ??:?
[3] #9  at ??:?
[5] #9  at ??:?
[0] #6  Foam::tmp<Foam::fvMatrix<Foam::Vector<double> > > Foam::fvm::laplacian<Foam::Vector<double>, double>(Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&, Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh> const&)???????? at ??:?
[8] #10  __libc_start_main at ??:?
[6] #10  __libc_start_main at ??:?
[4] #10  __libc_start_main at ??:?
[2] #10  __libc_start_main at ??:?
[5] #10  __libc_start_main at ??:?
[9] #10  __libc_start_main at ??:?
[7] #10  __libc_start_main at ??:?
[3] #10  __libc_start_main at ??:?
[0] #7  Foam::linearViscousStress<Foam::RASModel<Foam::IncompressibleTurbulenceModel<Foam::transportModel> > >::divDevRhoReff(Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh>&) const at ??:?
[1] #6  Foam::tmp<Foam::fvMatrix<Foam::Vector<double> > > Foam::fvm::laplacian<Foam::Vector<double>, double>(Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&, Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh> const&) in "/lib64/libc.so.6"
[8] #11  in "/lib64/libc.so.6"
[2] #11  in "/lib64/libc.so.6"
 in "/lib64/libc.so.6"
[6] #11  [4] #11  in "/lib64/libc.so.6"
[5] #11  in "/lib64/libc.so.6"
[9] #11  in "/lib64/libc.so.6"
[7] #11  in "/lib64/libc.so.6"
[3] #11  ???????? at ??:?
[0] #8  Foam::IncompressibleTurbulenceModel<Foam::transportModel>::divDevReff(Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh>&) const at ??:?
 at ??:?
 at ??:?
 at ??:?
 at ??:?
 at ??:?
 at ??:?
 at ??:?
 at ??:?
[1] #7  Foam::linearViscousStress<Foam::RASModel<Foam::IncompressibleTurbulenceModel<Foam::transportModel> > >::divDevRhoReff(Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh>&) const at ??:?
[0] #9  at ??:?
[1] #8  Foam::IncompressibleTurbulenceModel<Foam::transportModel>::divDevReff(Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh>&) const[n2c1-13:23765] 7 more processes have sent help message help-mpi-api.txt / mpi-abort

I just want to create the internal baffle for patchInjection inside the domain. I don't want to affect the internal field. Can anyone guide me into what type of boundary condition should I use?

Your help in this matter is greatly appreciated.

Thanks and regards,
Shantanu Vachhani

farzadmech November 22, 2020 17:52

Dear Shantanu Vachhani

Did you find an answer for your question?



Thanks,
Farzad

alainislas October 4, 2023 11:24

Did anyone find a solution for this?


In my case I want an internal baffle to imitate a wall inside my geometry (only for stopping particles, not flow)

klorfj December 29, 2023 02:32

Quote:

Originally Posted by alainislas (Post 857859)
Did anyone find a solution for this?


In my case I want an internal baffle to imitate a wall inside my geometry (only for stopping particles, not flow)


Hi all,

I had also this problem and I created an infinitely thin baffle with a master side and a slave side patch (using topSet for creating the face zone set baffle_left). The patches are then connected with a cyclic boundary condition to let the flow field pass through unaffected. But the patches can now be used to interact with the particle cloud. For example to set the particles to rebound at the patches. The example code below can be inserted into the OFv2112 tutorial lagrangian/DPMFoam/Goldschmidt to add a plane a bit above the inlet that particles can not go through in the direction of gravity.

topoSetDict:
Code:

actions
(

    {
        name    BLL_cellSet;
        type    cellSet;
        action  new;
        source  boxToCell;
        sourceInfo
        {
                box (-0.0075 -0.075 0) (0.0075 0.075 0.045);
            }
    }
    {
        name    BLL_faceSet;
        type    faceSet;
        action  new;
        source  cellToFace;
        sourceInfo
        {
            set BLL_cellSet;
                        option all;
        }
    }
   
    {
        name    BML_cellSet;
        type    cellSet;
        action  new;
        source  boxToCell;
        sourceInfo
        {
                box (-0.0075 -0.075 0.045) (0.0075  0.075 0.450);
        }
    }
    {
        name    BML_faceSet;
        type    faceSet;
        action  new;
        source  cellToFace;
        sourceInfo
        {
            set BML_cellSet;
        option all;
        }
    }
   
    {
        name    baffle_left;
        type    faceSet;
        action  clear;
    }
    {
        name    baffle_left;
        type    faceSet;
        action  add;
        source  faceToFace;
        sourceInfo
        {
            set BLL_faceSet;
            option all;
        }
    }
    {
        name    baffle_left;
        type    faceSet;
        action  subset;
        source  faceToFace;
        sourceInfo
        {
            set BML_faceSet;
            option all;
        }
    }
    {
        name    baffle_left;
        type    faceZoneSet;
        action  new;
        source  setToFaceZone;
        sourceInfo
        {
            faceSet baffle_left;
            option all;
        }
    }
);

createBafflesDict:
Code:

baffles
{
   
    // transparent baffle to the flow field
    baffle_left
    {
        //- Use predefined faceZone to select faces and orientation.
        type        faceZone;
        zoneName    baffle_left;

        patches
        {
            master
            {
                //- Master side patch
                name            fixedInternalWalls_1m;
                type            cyclic;
                neighbourPatch  fixedInternalWalls_1s;
            }
            slave
            {
                //- Slave side patch
                name            fixedInternalWalls_1s;
                type            cyclic;
                neighbourPatch  fixedInternalWalls_1m;
            }
        }
    }
}

Example for setting rebound at boundaries and at one side of the baffle in kinematicCloudProperties:
Code:

patchInteractionModel localInteraction;

    localInteractionCoeffs
    {
        patches
        (
            "(top|bottom|walls|frontAndBack|fixedInternalWalls_1s)"
            {
                type rebound;
                e    0.97;
                mu  0.09;
            }
        );
    }

I hope this helps someone!

Best Regards
Örjan


All times are GMT -4. The time now is 23:54.