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::porousZone::addResistance ( fvVectorMatrix& UEqn, const volScalarField& rho, const volScalarField& mu ) const { if (cellZoneIds_.empty()) { return; } const scalarField& V = mesh_.V(); scalarField& Udiag = UEqn.diag(); vectorField& Usource = UEqn.source(); const vectorField& U = UEqn.psi(); if (C0_ > VSMALL) { addPowerLawResistance ( Udiag, V, rho, U ); } const tensor& D = D_.value(); const tensor& F = F_.value(); if (magSqr(D) > VSMALL || magSqr(F) > VSMALL) { addViscousInertialResistance ( Udiag, Usource, V, rho, mu, U ); } }