Foam::tmp<Foam::volScalarField> Foam::kineticTheoryModels::frictionalStressModels::Schaeffer::nu ( const volScalarField& alpha1, const dimensionedScalar& alphaMax, const volScalarField& pf, const volSymmTensorField& D ) const { const scalar I2Dsmall = 1.0e-15; // Creating nu assuming it should be 0 on the boundary which may not be // true tmp<volScalarField> tnu ( new volScalarField ( IOobject ( "Schaeffer:nu", alpha1.mesh().time().timeName(), alpha1.mesh(), IOobject::NO_READ, IOobject::NO_WRITE, false ), alpha1.mesh(), dimensionedScalar("nu", dimensionSet(0, 2, -1, 0, 0), 0.0) ) ); volScalarField& nuf = tnu(); forAll (D, celli) { if (alpha1[celli] > alphaMax.value() - 5e-2) { nuf[celli] = 0.5*pf[celli]*sin(phi_.value()) /( sqrt(1.0/6.0*(sqr(D[celli].xx() - D[celli].yy()) + sqr(D[celli].yy() - D[celli].zz()) + sqr(D[celli].zz() - D[celli].xx())) + sqr(D[celli].xy()) + sqr(D[celli].xz()) + sqr(D[celli].yz())) + I2Dsmall ); } } // Correct coupled BCs nuf.correctBoundaryConditions(); return tnu; }
Foam::tmp<Foam::volScalarField> Foam::laminarModels::generalizedNewtonianViscosityModels::strainRateFunction:: nu ( const volScalarField& nu0, const volScalarField& strainRate ) const { tmp<volScalarField> tnu ( volScalarField::New ( IOobject::groupName(type() + ":nu", nu0.group()), nu0.mesh(), dimensionedScalar(dimViscosity, 0) ) ); tnu.ref().primitiveFieldRef() = strainRateFunction_->value(strainRate); volScalarField::Boundary& nuBf = tnu.ref().boundaryFieldRef(); const volScalarField::Boundary& sigmaBf = strainRate.boundaryField(); forAll(nuBf, patchi) { nuBf[patchi] = strainRateFunction_->value(sigmaBf[patchi]); }