CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Programming & Development (https://www.cfd-online.com/Forums/openfoam-programming-development/)
-   -   gradientInternalCoeffs cannot be called for a calculatedFvPatchField (https://www.cfd-online.com/Forums/openfoam-programming-development/107479-gradientinternalcoeffs-cannot-called-calculatedfvpatchfield.html)

adambarfi September 28, 2012 05:27

gradientInternalCoeffs cannot be called for a calculatedFvPatchField
 
hi everybody,

I defined a new solver that solve natural convection in a viscoelastic Fluid. it made successfully, but when I want to run my model the following error was appeared:

Code:

--> FOAM FATAL ERROR:

    gradientInternalCoeffs cannot be called for a calculatedFvPatchField
    on patch floor of field p in file "/home/mostafa/OpenFOAM/mostafa-2.1.0/run/tutorials/viscoelastic/viscoelasticFluidFoam/Hasan_Giesekus/0/p"
    You are probably trying to solve for a field with a default boundary condition.
    From function calculatedFvPatchField<Type>::gradientInternalCoeffs() const
    in file fields/fvPatchFields/basic/calculated/calculatedFvPatchField.C at line 186.

  FOAM exiting

do anybody know where is the problem?

Thanks

nimasam September 28, 2012 15:01

DEAR mostafa
could you post your p file here?

adambarfi September 28, 2012 16:08

1 Attachment(s)
the attachment contains the p, fvSolution and fvSchemes files.
I changed the floor boundary condition and even delete the p file but this problem didn't had been solve. I think the problem is somewhere in the fvSolution or fvSchemes.

nimasam September 28, 2012 17:37

this solver reads p or p-rgh ?
it seems it reads p, if it reads p! then you should define BC for p, you can not use calculated BC, you should use (fixedValue or fixedGradient) for it :D

adambarfi September 28, 2012 23:36

Quote:

Originally Posted by nimasam (Post 384130)
this solver reads p or p-rgh ?
it seems it reads p, if it reads p! then you should define BC for p, you can not use calculated BC, you should use (fixedValue or fixedGradient) for it :D

It reads p and calculate the p-rgh, such as bouyantbuossinesqsimplefoam. I change the bc to fixedValue and fixedGradient but this this error didn't had been omit.

nimasam September 29, 2012 02:57

Dear mostafa let me ask another questions, which version of openfoam do you use?
could you run this test case before heat transfer implementation?
put the test case and solver here, then may other can help you

ata September 29, 2012 05:42

Hi
Did you set p equal to another field in your solver during calculations? i.g.
p=....?

adambarfi September 29, 2012 06:09

this is where I use the p in createFields.H:
Code:

    Info<< "Calculating field g.h\n" << endl;
    volScalarField gh("gh", g & mesh.C());
    surfaceScalarField ghf("ghf", g & mesh.Cf());

    volScalarField p
    (
        IOobject
        (
            "p",
            runTime.timeName(),
            mesh,
            IOobject::NO_READ,
            IOobject::AUTO_WRITE
        ),
        p_rgh + rhok*gh
    );

    label pRefCell = 0;
    scalar pRefValue = 0.0;
    setRefCell(p,p_rgh, mesh.solutionDict().subDict("PISO"), pRefCell, pRefValue);


    if (p_rgh.needReference())
    {
        p += dimensionedScalar
        (
            "p",
            p.dimensions(),
            pRefValue - getRefCellValue(p, pRefCell)
        );
    }

and in pEqn:

Code:

    p = p_rgh + rhok*gh;

    if (p_rgh.needReference())
    {
        p += dimensionedScalar
        (
            "p",
            p.dimensions(),
            pRefValue - getRefCellValue(p, pRefCell)
        );
        p_rgh = p - rhok*gh;
    }

what is wrong in my code?

ata September 29, 2012 06:33

Hi
I think you have two options two solve the problem. Selection is your choice:
1:
volScalarField p ( IOobject ( "p", runTime.timeName(), mesh, IOobject::MUST_READ, IOobject::AUTO_WRITE ), mesh );
or
2:
p == p_rgh + rhok*gh;

adambarfi September 29, 2012 07:21

Dear Ata
I applied what you offered me and what Nima said, that error was solved. but after some iterations (50) the following error appeared:
Code:

#0  Foam::error::printStack(Foam::Ostream&) in "/home/mostafa/OpenFOAM/OpenFOAM-2.1.0/platforms/linuxGccDPOpt/lib/libOpenFOAM.so"
#1  Foam::sigFpe::sigHandler(int) in "/home/mostafa/OpenFOAM/OpenFOAM-2.1.0/platforms/linuxGccDPOpt/lib/libOpenFOAM.so"
#2  Uninterpreted:
#3  Foam::PBiCG::solve(Foam::Field<double>&, Foam::Field<double> const&, unsigned char) const in "/home/mostafa/OpenFOAM/OpenFOAM-2.1.0/platforms/linuxGccDPOpt/lib/libOpenFOAM.so"
#4  Foam::fvMatrix<Foam::SymmTensor<double> >::solve(Foam::dictionary const&) in "/home/mostafa/OpenFOAM/OpenFOAM-2.1.0/platforms/linuxGccDPOpt/lib/libviscoelasticTransportModels.so"
#5  Foam::fvMatrix<Foam::SymmTensor<double> >::solve() in "/home/mostafa/OpenFOAM/OpenFOAM-2.1.0/platforms/linuxGccDPOpt/lib/libviscoelasticTransportModels.so"
#6  Foam::Giesekus::correct() in "/home/mostafa/OpenFOAM/OpenFOAM-2.1.0/platforms/linuxGccDPOpt/lib/libviscoelasticTransportModels.so"
#7  Foam::multiMode::correct() in "/home/mostafa/OpenFOAM/OpenFOAM-2.1.0/platforms/linuxGccDPOpt/lib/libviscoelasticTransportModels.so"
#8  Foam::viscoelasticModel::correct() in "/home/mostafa/OpenFOAM/OpenFOAM-2.1.0/platforms/linuxGccDPOpt/lib/libviscoelasticTransportModels.so"
#9 
 in "/home/mostafa/OpenFOAM/OpenFOAM-2.1.0/platforms/linuxGccDPOpt/bin/BuoyantBoussinesqViscoelasticFluidFoam"
#10  __libc_start_main in "/lib/i386-linux-gnu/libc.so.6"
#11 
 in "/home/mostafa/OpenFOAM/OpenFOAM-2.1.0/platforms/linuxGccDPOpt/bin/BuoyantBoussinesqViscoelasticFluidFoam"
Floating point exception

what is your opinion about this error?

again thank you so much

nimasam September 29, 2012 15:21

it seems somewhere in your code something divide on zero or going to result indefinite value

Tushar@cfd February 23, 2013 01:34

Dear adambarfi,
 
Are you able to resolve your error?

adambarfi February 23, 2013 01:44

Quote:

Originally Posted by Tushar@cfd (Post 409630)
Are you able to resolve your error?

Dear Tushar,
yes, after some day hard working, finally I could solve it.

Sasy November 11, 2013 02:06

2 Attachment(s)
Quote:

Originally Posted by adambarfi (Post 409631)
Dear Tushar,
yes, after some day hard working, finally I could solve it.

Dear Mostafa
how do you solved this problem?? I have some problem like this,but my problem dont solve by ata or nima offers...
I use interPhasechangeFoam solver and modified this solver for my simulation...
you can see my creatFields and Peqn

adambarfi November 12, 2013 00:46

hi Sasan,

I get your attached files and I couldn't find any thing that made error!

so, attach your log file + the errors expression

Sasy November 12, 2013 03:18

1 Attachment(s)
Quote:

Originally Posted by adambarfi (Post 461624)
hi Sasan,

I get your attached files and I couldn't find any thing that made error!

so, attach your log file + the errors expression

Hi Mostafa
Thank you for reply..
my error:
FOAM FATAL ERROR:

gradientInternalCoeffs cannot be called for a calculatedFvPatchField
on patch left of field p in file "/home/Sasan/Desktop/HardtMix/stephanProblem/0/p"
You are probably trying to solve for a field with a default boundary condition.
and attach the log file

adambarfi November 12, 2013 07:10

You have to specify correct boundary conditions for p otherwise you cannot solve the pEqn!

The error message gave you already a hint what you have to do:
Code:

on patch left of field p in file "/home/Sasan/Desktop/HardtMix/stephanProblem/0/p"
    You are probably trying to solve for a field with a default boundary condition.

so, you are using a wrong BC for pEqn. I guess you used calculated type!
try other boundary conditions that are compatible with your solution.

Sasy November 13, 2013 02:03

Quote:

Originally Posted by adambarfi (Post 461665)
You have to specify correct boundary conditions for p otherwise you cannot solve the pEqn!

The error message gave you already a hint what you have to do:
Code:

on patch left of field p in file "/home/Sasan/Desktop/HardtMix/stephanProblem/0/p"
    You are probably trying to solve for a field with a default boundary condition.

so, you are using a wrong BC for pEqn. I guess you used calculated type!
try other boundary conditions that are compatible with your solution.

Hi Mostafa
I used this test case with another solver and dont have problem,But for new solver,I have this problem.
my BC is not calculated....!!
you can see:

Sasy November 13, 2013 02:04

1 Attachment(s)
Quote:

Originally Posted by Sasy (Post 461759)
Hi Mostafa
I used this test case with another solver and dont have problem,But for new solver,I have this problem.
my BC is not calculated....!!
you can see:

sorry.I forgot attach my file...:p

adambarfi November 13, 2013 03:07

mhmm, I think there are problems with p BCs.
the userGuide says:

Quote:

At all wall boundaries, the buoyantPressure boundary condition is applied to the pressure
field, which calculates the normal gradient from the local density gradient.

buoyantPressure: Sets fixedGradient pressure based on the atmospheric pressure gradient

I think such same BCs for p and p_rgh is wrong, let the solver calculate the pressure based upon potential function. try "calculated" type for p BCs.

Also, I can't understand these conditions you used for p_rgh:
Code:

        type            buoyantPressure;
        gradient        uniform 0;
        value          uniform 0;

try this one:
Code:

        type            buoyantPressure;
        rho            rhok;
        value          uniform 0;

see the buoyantBoussinesqPimpleFoam and buoyantBoussinesqSimpleFoam solvers. they have tips that may help you.


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