37 void Foam::functionObjects::blendingFactor::calcBlendingFactor
39 const GeometricField<Type, fvPatchField, volMesh>&
field,
40 const typename fv::convectionScheme<Type>& cs
43 if (!
isA<fv::gaussConvectionScheme<Type>>(cs))
46 <<
"Scheme for field " <<
field.name() <<
" is not a "
47 << fv::gaussConvectionScheme<Type>::typeName
53 const fv::gaussConvectionScheme<Type>& gcs =
54 refCast<const fv::gaussConvectionScheme<Type>>(cs);
57 const surfaceInterpolationScheme<Type>& interpScheme = gcs.interpScheme();
59 if (!
isA<blendedSchemeBase<Type>>(interpScheme))
62 << interpScheme.type() <<
" is not a blended scheme"
69 const blendedSchemeBase<Type>& blendedScheme =
70 refCast<const blendedSchemeBase<Type>>(interpScheme);
81 indicator.correctBoundaryConditions();
86 bool Foam::functionObjects::blendingFactor::calcScheme()
88 typedef GeometricField<Type, fvPatchField, volMesh> FieldType;
90 if (!foundObject<FieldType>(fieldName_,
false))
95 const FieldType&
field = lookupObject<FieldType>(fieldName_);
97 const word divScheme(
"div(" + phiName_ +
',' + fieldName_ +
')');
98 ITstream& its = mesh_.divScheme(divScheme);
102 tmp<fv::convectionScheme<Type>> tcs =
105 if (
isA<fv::boundedConvectionScheme<Type>>(tcs()))
107 const fv::boundedConvectionScheme<Type>& bcs =
108 refCast<const fv::boundedConvectionScheme<Type>>(tcs());
110 calcBlendingFactor(
field, bcs.scheme());
114 const fv::gaussConvectionScheme<Type>& gcs =
115 refCast<const fv::gaussConvectionScheme<Type>>(tcs());
117 calcBlendingFactor(
field, gcs);