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/)
-   -   AMI interDyMFoam for mixer (https://www.cfd-online.com/Forums/openfoam-solving/118846-ami-interdymfoam-mixer.html)

danny123 June 5, 2013 11:19

AMI interDyMFoam for mixer
 
Hello,

I am trying to set up a case using interphase coupled with AMI (kind of a mixer). There is a tutorial for a mixervessel for pimpleDymFoam, which works having a single phase. I used this case (but different mesh) and generated a alpha1 file that shall represent a fill level. Insteads of the setFields utility, I generated that file myself since it seems pretty simple. There are some others changes as the additional file g and p_rgh instead of p, but nothing complicated. However, I am not sure about the cyclic patch implimentation. I copied the cyclic patch AMI1 and AMI2 definition from the mixervessel tutorial into alpha1 file, but this does not seem to work. I get the following error while decomposing the case:confused::

dw@PC83U:~$ cd $HOME/OpenFOAM/dw-2.1.x/run/MooneyMeter_AMI_interDymFoam
dw@PC83U:~/OpenFOAM/dw-2.1.x/run/MooneyMeter_AMI_interDymFoam$ decomposePar
/*---------------------------------------------------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.1.x |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
Build : 2.1.x-92812fe8fd9e
Exec : decomposePar
Date : Jun 05 2013
Time : 15:22:03
Host : "PC83U"
PID : 3206
Case : /home/dw/OpenFOAM/dw-2.1.x/run/MooneyMeter_AMI_interDymFoam
nProcs : 1
sigFpe : Enabling floating point exception trapping (FOAM_SIGFPE).
fileModificationChecking : Monitoring run-time modified files using timeStampMaster
allowSystemOperations : Disallowing user-supplied system call operations

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Create time

Create mesh

Calculating distribution of cells
Selecting decompositionMethod scotch

Finished decomposition in 0.1 s

Calculating original mesh data

Distributing cells to processors

Distributing faces to processors

Distributing points to processors

Constructing processor meshes

Processor 0
Number of cells = 3690
Number of faces shared with processor 1 = 64
Number of faces shared with processor 2 = 94
Number of faces shared with processor 3 = 92
Number of faces shared with processor 4 = 46
Number of faces shared with processor 5 = 88
Number of processor patches = 5
Number of processor faces = 384
Number of boundary faces = 2878

Processor 1
Number of cells = 3718
Number of faces shared with processor 0 = 64
Number of faces shared with processor 2 = 193
Number of processor patches = 2
Number of processor faces = 257
Number of boundary faces = 2779

Processor 2
Number of cells = 3700
Number of faces shared with processor 0 = 94
Number of faces shared with processor 1 = 193
Number of processor patches = 2
Number of processor faces = 287
Number of boundary faces = 2707

Processor 3
Number of cells = 3736
Number of faces shared with processor 0 = 92
Number of faces shared with processor 4 = 130
Number of faces shared with processor 5 = 50
Number of processor patches = 3
Number of processor faces = 272
Number of boundary faces = 2820

Processor 4
Number of cells = 3742
Number of faces shared with processor 0 = 46
Number of faces shared with processor 3 = 130
Number of faces shared with processor 5 = 136
Number of processor patches = 3
Number of processor faces = 312
Number of boundary faces = 3142

Processor 5
Number of cells = 3734
Number of faces shared with processor 0 = 88
Number of faces shared with processor 3 = 50
Number of faces shared with processor 4 = 136
Number of processor patches = 3
Number of processor faces = 274
Number of boundary faces = 2846

Number of processor faces = 893
Max number of cells = 3742 (0.591398% above average 3720)
Max number of processor patches = 5 (66.6667% above average 3)
Max number of faces between processors = 384 (29.0034% above average 297.667)

Time = 0


--> FOAM FATAL IO ERROR:
compound has already been transfered from token
on line 20 the empty compound of type List<scalar>

file: /home/dw/OpenFOAM/dw-2.1.x/run/MooneyMeter_AMI_interDymFoam/0/alpha1::boundaryField::AMI1::value at line 20.

From function token::transferCompoundToken(const Istream& is)
in file lnInclude/token.C at line 99.

FOAM aborting

#0 Foam::error::printStack(Foam::Ostream&) in "/home/dw/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64GccDPOpt/lib/libOpenFOAM.so"
#1 Foam::IOerror::abort() in "/home/dw/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64GccDPOpt/lib/libOpenFOAM.so"
#2 Foam::token::transferCompoundToken(Foam::Istream const&) in "/home/dw/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64GccDPOpt/lib/libOpenFOAM.so"
#3 Foam::Istream& Foam::operator>><double>(Foam::Istream&, Foam::List<double>&) in "/home/dw/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64GccDPOpt/bin/decomposePar"
#4 Foam::Field<double>::Field(Foam::word const&, Foam::dictionary const&, int) in "/home/dw/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64GccDPOpt/bin/decomposePar"
#5 Foam::fvPatchField<double>::fvPatchField(Foam::fvP atch const&, Foam::DimensionedField<double, Foam::volMesh> const&, Foam::dictionary const&, bool) in "/home/dw/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64GccDPOpt/lib/libfiniteVolume.so"
#6 Foam::cyclicAMIFvPatchField<double>::cyclicAMIFvPa tchField(Foam::fvPatch const&, Foam::DimensionedField<double, Foam::volMesh> const&, Foam::dictionary const&) in "/home/dw/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64GccDPOpt/lib/libfiniteVolume.so"
#7 Foam::fvPatchField<double>::adddictionaryConstruct orToTable<Foam::cyclicAMIFvPatchField<double> >::New(Foam::fvPatch const&, Foam::DimensionedField<double, Foam::volMesh> const&, Foam::dictionary const&) in "/home/dw/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64GccDPOpt/lib/libfiniteVolume.so"
#8 Foam::fvPatchField<double>::New(Foam::fvPatch const&, Foam::DimensionedField<double, Foam::volMesh> const&, Foam::dictionary const&) in "/home/dw/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64GccDPOpt/bin/decomposePar"
#9 Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh>::GeometricBoundaryField::GeometricB oundaryField(Foam::fvBoundaryMesh const&, Foam::DimensionedField<double, Foam::volMesh> const&, Foam::dictionary const&) in "/home/dw/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64GccDPOpt/bin/decomposePar"
#10 Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh>::readField(Foam::dictionary const&) in "/home/dw/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64GccDPOpt/bin/decomposePar"
#11 Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh>::readField(Foam::Istream&) in "/home/dw/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64GccDPOpt/bin/decomposePar"
#12 Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh>::GeometricField(Foam::IOobject const&, Foam::fvMesh const&) in "/home/dw/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64GccDPOpt/bin/decomposePar"
#13
in "/home/dw/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64GccDPOpt/bin/decomposePar"
#14
in "/home/dw/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64GccDPOpt/bin/decomposePar"
#15 __libc_start_main in "/lib/x86_64-linux-gnu/libc.so.6"
#16
in "/home/dw/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64GccDPOpt/bin/decomposePar"
Abgebrochen (Speicherabzug geschrieben)
dw@PC83U:~/OpenFOAM/dw-2.1.x/run/MooneyMeter_AMI_interDymFoam$ ^C
dw@PC83U:~/OpenFOAM/dw-2.1.x/run/MooneyMeter_AMI_interDymFoam$

The line 20 in my alpha1 file is the following:

internalField nonuniform List<scalar>

The boundary definition in the same file is the following:

boundaryField
{
rotor
{
type zeroGradient;
}
stator
{
type zeroGradient;
}
AMI1
{
type cyclicAMI;
value $internalField;
}

AMI2
{
type cyclicAMI;
value $internalField;
}

}

Is there anybody who can help?

Thanks,

Daniel

otm June 10, 2013 06:25

Hi!

I suspect that the error you get can have something to do with the way you set your initial field for alpha1. Try using the setFields utility instead.

I'm working om something quite similar and I can confirm that parallel execution of interDyMFoam with rotation and cyclicAMI works. However, I have a problem with mass conservation in my setup which is believe i connected to the AMI bcs.

Good luck!
//Olle

danny123 June 10, 2013 08:02

Hi otm,

Thanks for the input. I may try. However this is not obvious since all examples decribed in OpenFoam tuorials are very simple cuboids full of alpha1. A mixer has a round structure and therefore it is not obvious filling it up with a cuboid.

There is an utility called "funkysetFields", which supposely can do, what I want, but I am not sure if it works for OpenFoam 2.1 (or 2.2).

I used a simple technique so far just using the blocks (of blockMeshDic) and assigning each of them an alpha. This is quite simple. Setfields seems to do the same thing. I can distribute alpha1 evenly over my grid, which would be very cumbersome using setfields.

Regards,

Daniel

otm June 10, 2013 09:21

Hi Danny!

There are ways to define also cylindrical initial fields see below for an annular example. At http://openfoamwiki.net/index.php/TopoSet you can see all avaliable "shapes" that can be used. There is no requirements that the region should "fit" your domain. The inital alpha field will be the intersection of the toposet shape and your mesh domain.

Code:

FoamFile
{
    version    2.0;
    format      ascii;
    class      dictionary;
    location    "system";
    object      setFieldsDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
defaultFieldValues
(
    volScalarFieldValue alpha1 0
);
regions
(
    cylinderAnnulusToCell
    {
        p1 (0 0 -100);
        p2 (0 0 0.045);
        outerRadius 100.0;
        innerRadius 0.028;
        fieldValues
        (
            volScalarFieldValue alpha1 1
        );
    }
);

BR
//Olle

danny123 June 19, 2013 04:49

Hi OTM,

Your suggestion worked, at least the error reported above is gone. Setfields created a alpha1 file, which looks identical to the one I created manually except the boudary part at the bottom of the file. I had created an alpha1 file, which looked the following:

/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.7.1 |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object alpha1;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

dimensions [0 0 0 0 0 0 0];

internalField uniform 0;

boundaryField
{
rotor
{
type zeroGradient;
}

stator
{
type zeroGradient;
}
AMI1
{
type cyclicAMI;
value $internalField;
}

AMI2
{
type cyclicAMI;
value $internalField;
}

}

// ************************************************** *********************** //

This file was overwritten, as it should. Only the condition

stator
{
type zeroGradient;
}

remained the other conditions (rotor, AMI1 and 2) were deleted. decomposePar then worked ok (no error message).

I do not understand the logic behind this though.

Regards,

Daniel


All times are GMT -4. The time now is 06:15.