UEqnAddPorosity.H
Go to the documentation of this file.
1 // Including porosity effects in UEqn following:
2 // Jensen, B., Jacobsen, N. G., & Christensen, E. D. (2014).
3 // Investigations on the porous media equations and resistance
4 // coefficients for coastal structures. Coastal Engineering, 84, 56-72.
5 
7 {
8  const volScalarField& porosity = tporosity.cref();
9 
10  const word porosityModel("JensenEtAl2014");
11  const dictionary& dict =
12  porosityProperties.subDict(porosityModel + "Coeffs");
13  const dimensionedScalar alpha(dimless/dimArea, dict.get<scalar>("alpha"));
14  const dimensionedScalar beta(dimless/dimLength, dict.get<scalar>("beta"));
15  const dimensionedScalar d50(dimless, dict.get<scalar>("d50"));
16  const dimensionedScalar KC(dimless, dict.get<scalar>("KC"));
17 
18  // Generating Darcy-Forchheimer coefficient: F = rho*U*(a + b*|U|)
19  // Shoud it be mu or muEff in the equation below?
20  {
21  // Darcy term
22  volScalarField DarcyForchheimerCoeff
23  (
24  alpha*sqr(1 - porosity)*mixture.mu()/sqr(porosity)/sqr(d50)
25  );
26 
27  // Adding Forchheimer term
28  DarcyForchheimerCoeff += rho*mag(U)
29  *beta*(1 + pos(KC)*7.5/KC)*(1 - porosity)/sqr(porosity)/d50;
30 
31  // Adding Darcy-Forchheimer term as implicit source term
32  UEqn += fvm::Sp(DarcyForchheimerCoeff, U);
33  }
34 
35  {
36  // Generating added mass force coefficient
37  const dimensionedScalar gamma_p(dimless, dict.get<scalar>("gamma_p"));
38  const volScalarField Cm(gamma_p*(1 - porosity));
39 
40  UEqn += Cm*fvm::ddt(rho, U);
41  UEqn += Cm*MRF.DDt(rho, U);
42  }
43 
44  // Dividing both matrix entries and source term by porosity to compensate
45  // for the fact that the FVM cell volume averages use division by cell
46  // volume V whereas only the cell pore volume, porosity*V, is accessible.
47  UEqn *= scalar(1)/porosity;
48 }
tporosity
tmp< volScalarField > tporosity
Definition: createPorosity.H:19
Foam::dimLength
const dimensionSet dimLength(0, 1, 0, 0, 0, 0, 0)
Definition: dimensionSets.H:52
Foam::constant::atomic::alpha
const dimensionedScalar alpha
Fine-structure constant: default SI units: [].
Definition: readThermalProperties.H:212
Sp
zeroField Sp
Definition: alphaSuSp.H:2
porosityEnabled
const bool porosityEnabled(porosityProperties.getOrDefault< bool >("porosityEnabled", false))
rho
rho
Definition: readInitialConditions.H:88
MRF
IOMRFZoneList & MRF
Definition: setRegionFluidFields.H:22
Foam::dimArea
const dimensionSet dimArea(sqr(dimLength))
Definition: dimensionSets.H:59
beta
dimensionedScalar beta("beta", dimless/dimTemperature, laminarTransport)
Foam::dimensionedScalar
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
Definition: dimensionedScalarFwd.H:42
Foam::volScalarField
GeometricField< scalar, fvPatchField, volMesh > volScalarField
Definition: volFieldsFwd.H:57
dict
dictionary dict
Definition: searchingEngine.H:14
U
U
Definition: pEqn.H:72
Foam::sqr
dimensionedSymmTensor sqr(const dimensionedVector &dv)
Definition: dimensionedSymmTensor.C:51
Foam::mag
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
Foam::fac::ddt
tmp< GeometricField< Type, faPatchField, areaMesh > > ddt(const dimensioned< Type > dt, const faMesh &mesh)
Definition: facDdt.C:47
porosityProperties
IOdictionary porosityProperties(IOobject("porosityProperties", runTime.constant(), runTime, IOobject::READ_IF_PRESENT, IOobject::NO_WRITE))
UEqn
fvVectorMatrix & UEqn
Definition: UEqn.H:13
mixture
Info<< "Creating temperaturePhaseChangeTwoPhaseMixture\n"<< endl;autoPtr< temperaturePhaseChangeTwoPhaseMixture > mixture
Definition: createFields.H:39
Foam::dimless
const dimensionSet dimless
Dimensionless.
Definition: dimensionSets.C:189
Foam::pos
dimensionedScalar pos(const dimensionedScalar &ds)
Definition: dimensionedScalar.C:177