void Foam::porosityZone::addResistance ( const fvVectorMatrix& UEqn, volTensorField& AU, bool correctAUprocBC ) const { if (cellZoneID_ == -1) { return; } bool compressible = false; if (UEqn.dimensions() == dimensionSet(1, 1, -2, 0, 0)) { compressible = true; } const labelList& cells = mesh_.cellZones()[cellZoneID_]; const vectorField& U = UEqn.psi(); const tensor& D = D_.value(); const tensor& F = F_.value(); if (magSqr(D) > VSMALL || magSqr(F) > VSMALL) { if (compressible) { addViscousInertialResistance ( AU, cells, mesh_.lookupObject<volScalarField>("rho"), mesh_.lookupObject<volScalarField>("mu"), U ); } else { addViscousInertialResistance ( AU, cells, geometricOneField(), mesh_.lookupObject<volScalarField>("nu"), U ); } } if (correctAUprocBC) { // Correct the boundary conditions of the tensorial diagonal to ensure // processor boundaries are correctly handled when AU^-1 is interpolated // for the pressure equation. AU.correctBoundaryConditions(); } }
void Foam::porosityZone::addResistance(fvVectorMatrix& UEqn) const { if (cellZoneID_ == -1) { return; } bool compressible = false; if (UEqn.dimensions() == dimensionSet(1, 1, -2, 0, 0)) { compressible = true; } const labelList& cells = mesh_.cellZones()[cellZoneID_]; const scalarField& V = mesh_.V(); scalarField& Udiag = UEqn.diag(); vectorField& Usource = UEqn.source(); const vectorField& U = UEqn.psi(); const tensor& D = D_.value(); const tensor& F = F_.value(); if (magSqr(D) > VSMALL || magSqr(F) > VSMALL) { if (compressible) { addViscousInertialResistance ( Udiag, Usource, cells, V, mesh_.lookupObject<volScalarField>("rho"), mesh_.lookupObject<volScalarField>("mu"), U ); } else { addViscousInertialResistance ( Udiag, Usource, cells, V, geometricOneField(), mesh_.lookupObject<volScalarField>("nu"), U ); } } }
void Foam::porosityModels::powerLaw::correct ( const fvVectorMatrix& UEqn, volTensorField& AU ) const { const vectorField& U = UEqn.psi(); if (UEqn.dimensions() == dimForce) { const volScalarField& rho = mesh_.lookupObject<volScalarField>(rhoName_); apply(AU, rho, U); } else { apply(AU, geometricOneField(), U); } }
void Foam::porosityModels::powerLaw::correct ( fvVectorMatrix& UEqn ) const { const vectorField& U = UEqn.psi(); const scalarField& V = mesh_.V(); scalarField& Udiag = UEqn.diag(); if (UEqn.dimensions() == dimForce) { const volScalarField& rho = mesh_.lookupObject<volScalarField>(rhoName_); apply(Udiag, V, rho, U); } else { apply(Udiag, V, geometricOneField(), U); } }