void Foam::totalPressureFvPatchScalarField::updateCoeffs() { updateCoeffs ( p0(), patch().lookupPatchField<volVectorField, vector>(UName()) ); }
void rotatingTotalPressureFvPatchScalarField::updateCoeffs() { if (updated()) { return; } if (!this->db().objectRegistry::found(UName())) { // U not available, do not update totalPressureFvPatchScalarField::updateCoeffs(); return; } vector axisHat = omega_/mag(omega_); vectorField rotationVelocity = omega_ ^ (patch().Cf() - axisHat*(axisHat & patch().Cf())); vectorField Up = lookupPatchField<volVectorField, vector>(UName()) + rotationVelocity; totalPressureFvPatchScalarField::updateCoeffs(Up); }
void Foam::fanPressureFvPatchScalarField::updateCoeffs() { if (updated()) { return; } // Retrieve flux field const surfaceScalarField& phi = db().lookupObject<surfaceScalarField>(phiName()); const fvsPatchField<scalar>& phip = patch().patchField<surfaceScalarField, scalar>(phi); int dir = 2*direction_ - 1; // Average volumetric flow rate scalar volFlowRate = 0; if (phi.dimensions() == dimVelocity*dimArea) { volFlowRate = dir*gSum(phip); } else if (phi.dimensions() == dimVelocity*dimArea*dimDensity) { const scalarField& rhop = patch().lookupPatchField<volScalarField, scalar>(rhoName()); volFlowRate = dir*gSum(phip/rhop); } else { FatalErrorInFunction << "dimensions of phi are not correct" << "\n on patch " << patch().name() << " of field " << internalField().name() << " in file " << internalField().objectPath() << nl << exit(FatalError); } // Pressure drop for this flow rate const scalar pdFan = fanCurve_(max(volFlowRate, 0.0)); totalPressureFvPatchScalarField::updateCoeffs ( p0() - dir*pdFan, patch().lookupPatchField<volVectorField, vector>(UName()) ); }
void Foam::rotatingTotalPressureFvPatchScalarField::updateCoeffs() { if (updated()) { return; } vector axisHat = omega_/mag(omega_); tmp<vectorField> rotationVelocity = omega_ ^ (patch().Cf() - axisHat*(axisHat & patch().Cf())); const vectorField Up ( patch().lookupPatchField<volVectorField, vector>(UName()) + rotationVelocity ); totalPressureFvPatchScalarField::updateCoeffs(p0(), Up); }
void Foam::rotatingTotalPressureFvPatchScalarField::updateCoeffs() { if (updated()) { return; } const scalar t = this->db().time().timeOutputValue(); const vector om = omega_->value(t); vector axisHat = om/mag(om); tmp<vectorField> rotationVelocity = om ^ (patch().Cf() - axisHat*(axisHat & patch().Cf())); const vectorField Up ( patch().lookupPatchField<volVectorField, vector>(UName()) + rotationVelocity ); totalPressureFvPatchScalarField::updateCoeffs(p0(), Up); }
void Foam::fanPressureFvPatchScalarField::updateCoeffs() { if (updated()) { return; } // Retrieve flux field const surfaceScalarField& phi = db().lookupObject<surfaceScalarField>(phiName()); const fvsPatchField<scalar>& phip = patch().patchField<surfaceScalarField, scalar>(phi); int dir = 2*direction_ - 1; // Average volumetric flow rate scalar volFlowRate = 0; if (phi.dimensions() == dimVelocity*dimArea) { volFlowRate = dir*gSum(phip); } else if (phi.dimensions() == dimVelocity*dimArea*dimDensity) { const scalarField& rhop = patch().lookupPatchField<volScalarField, scalar>(rhoName()); volFlowRate = dir*gSum(phip/rhop); } else { FatalErrorInFunction << "dimensions of phi are not correct" << "\n on patch " << patch().name() << " of field " << internalField().name() << " in file " << internalField().objectPath() << nl << exit(FatalError); } if (nonDimensional_) { // Create an non-dimensional flow rate volFlowRate = 120.0*volFlowRate/pow3(constant::mathematical::pi)/pow3(dm_)/rpm_; } // Pressure drop for this flow rate scalar pdFan = fanCurve_(max(volFlowRate, 0.0)); if (nonDimensional_) { // Convert the non-dimensional deltap from curve into deltaP pdFan = pdFan*pow4(constant::mathematical::pi)*sqr(dm_*rpm_)/1800; } totalPressureFvPatchScalarField::updateCoeffs ( p0() - dir*pdFan, patch().lookupPatchField<volVectorField, vector>(UName()) ); }