|
[Sponsors] |
December 24, 2013, 09:45 |
Different define of psi uesd in pEqn.H
|
#1 | |
Member
赵庆良
Join Date: Aug 2013
Posts: 56
Rep Power: 13 |
Hi foamers,
I found a strange problem with the two difference define of psi in createField.H. one is Code:
const volScalarField& psi=thermo.psi(); Code:
const volScalarField psi ( IOobject ( "psi", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::NO_WRITE ), thermo.psi() ); Quote:
So ,I define psi using the latter way: Code:
const volScalarField psi ( IOobject ( "psi", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::NO_WRITE ), thermo.psi() ); For the error,I found it appears when my case run at the location where I use red words in the following pEqn.H.(I use OF2.2.2 ) Code:
{ rho = thermo.rho(); //psi = thermo.psi(); // Thermodynamic density needs to be updated by psi*d(p) after the // pressure solution - done in 2 parts. Part 1: thermo.rho() = thermo.rho()-psi*p_rgh; volScalarField rAU(1.0/UEqn.A()); surfaceScalarField rhorAUf("Dp", fvc::interpolate(rho*rAU)); volVectorField HbyA("HbyA", U); HbyA = rAU*UEqn.H(); surfaceScalarField phig(-rhorAUf*ghf*fvc::snGrad(rho)*mesh.magSf()); surfaceScalarField phiHbyA ( "phiHbyA", fvc::interpolate(rho) *( (fvc::interpolate(U) & mesh.Sf()) + fvc::ddtPhiCorr(rAU, rho, U, phi) ) + phig ); fvOptions.relativeFlux(fvc::interpolate(rho), phiHbyA); fvScalarMatrix p_rghDDtEqn ( fvc::ddt(rho) + psi*correction(fvm::ddt(p_rgh)) + fvc::div(phiHbyA) == fvOptions(psi, p_rgh, rho.name()) ); while (pimple.correctNonOrthogonal()) { fvScalarMatrix p_rghEqn ( p_rghDDtEqn - fvm::laplacian(rhorAUf, p_rgh) ); fvOptions.constrain(p_rghEqn); p_rghEqn.solve(mesh.solver(p_rgh.select(pimple.finalInnerIter()))); if (pimple.finalNonOrthogonalIter()) { // Calculate the conservative fluxes phi = phiHbyA + p_rghEqn.flux(); // Explicitly relax pressure for momentum corrector p_rgh.relax(); // Correct the momentum source with the pressure gradient flux // calculated from the relaxed pressure U = HbyA + rAU*fvc::reconstruct((phig + p_rghEqn.flux())/rhorAUf); U.correctBoundaryConditions(); fvOptions.correct(U); K = 0.5*magSqr(U); } } p = p_rgh + rho*gh; // Second part of thermodynamic density update thermo.rho() = thermo.rho()+psi*p_rgh; if (thermo.dpdt()) { dpdt = fvc::ddt(p); } #include "rhoEqn.H" #include "compressibleContinuityErrs.H" } Does some one can help to explain the problem?And how can I use the first way to define psi?Because OF use the first way to define psi,I also want to do like that. Thanks in advance! |
||
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
HELP----Surface Reaction UDF | Ashi | Fluent UDF and Scheme Programming | 1 | May 19, 2020 22:13 |
Installing OF 1.6 on Mac OS X | gschaider | OpenFOAM Installation | 129 | June 19, 2010 10:23 |
Missing math.h header | Travis | FLUENT | 4 | January 15, 2009 12:48 |
Free surface boudary conditions with SOLA-VOF | Fan | Main CFD Forum | 10 | September 9, 2006 13:24 |
UDF FOR UNSTEADY TIME STEP | mayur | FLUENT | 3 | August 9, 2006 11:19 |