31 bool Foam::functionObjects::multiply::initialiseResult(
const word& fieldName)
33 typedef GeometricField<Type, fvPatchField, volMesh> volFieldType;
43 resultFieldPtr->checkOut();
46 Log <<
" Initialising "
57 bool Foam::functionObjects::multiply::multiplyResult
59 const word& fieldName,
63 typedef GeometricField<Type, fvPatchField, volMesh> volFieldType;
65 auto* resultFieldPtr = mesh_.getObjectPtr<volFieldType>(resultName_);
69 multiplyFieldType<Type, scalar>(*resultFieldPtr, fieldName, processed);
70 multiplyFieldType<Type, vector>(*resultFieldPtr, fieldName, processed);
71 multiplyFieldType<Type, sphericalTensor>
77 multiplyFieldType<Type, symmTensor>
83 multiplyFieldType<Type, tensor>(*resultFieldPtr, fieldName, processed);
90 template<
class Type1,
class Type2>
91 typename std::enable_if
93 Foam::functionObjects::multiply::is_valid_op<Type1, Type2>::value,
bool
95 Foam::functionObjects::multiply::multiplyFieldType
97 GeometricField<Type1, fvPatchField, volMesh>& result,
98 const word& fieldName,
102 if (processed)
return processed;
104 typedef GeometricField<Type2, fvPatchField, volMesh> volFieldType;
106 auto* fieldPtr = mesh_.cfindObject<volFieldType>(fieldName);
110 Log <<
" Performing " << result.name() <<
" * " << fieldPtr->name()
113 auto newResult(result*(*fieldPtr));
116 store(resultName_, newResult);
125 template<
class Type1,
class Type2>
126 typename std::enable_if
128 !Foam::functionObjects::multiply::is_valid_op<Type1, Type2>::value,
bool
130 Foam::functionObjects::multiply::multiplyFieldType
132 GeometricField<Type1, fvPatchField, volMesh>& result,
133 const word& fieldName,
137 if (processed)
return processed;
139 typedef GeometricField<Type2, fvPatchField, volMesh> volFieldType;
141 auto* fieldPtr = mesh_.cfindObject<volFieldType>(fieldName);
145 Info<<
" Unsupported operation for "
146 << result.name() <<
'(' << pTraits<Type1>::typeName <<
')'
148 << fieldPtr->name() <<
'(' << pTraits<Type2>::typeName <<
')'