mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
BUG: access of non-const tmp value in surface writers
- was inadvertently introduced with the previous commit. Affected non-parallel use of the surface writers.
This commit is contained in:
@ -118,9 +118,7 @@ Foam::fileName Foam::surfaceWriters::abaqusWriter::writeTemplate
|
||||
|
||||
|
||||
// Implicit geometry merge()
|
||||
tmp<Field<Type>> tfield = mergeField(localValues);
|
||||
|
||||
adjustOutputField(fieldName, tfield.ref());
|
||||
tmp<Field<Type>> tfield = adjustField(fieldName, mergeField(localValues));
|
||||
|
||||
if (verbose_)
|
||||
{
|
||||
|
||||
@ -219,9 +219,7 @@ Foam::fileName Foam::surfaceWriters::boundaryDataWriter::writeTemplate
|
||||
const fileName outputFile(surfaceDir/timeName()/fieldName);
|
||||
|
||||
// Implicit geometry merge()
|
||||
tmp<Field<Type>> tfield = mergeField(localValues);
|
||||
|
||||
adjustOutputField(fieldName, tfield.ref());
|
||||
tmp<Field<Type>> tfield = adjustField(fieldName, mergeField(localValues));
|
||||
|
||||
if (verbose_)
|
||||
{
|
||||
|
||||
@ -506,10 +506,10 @@ Foam::tmp<Foam::Field<Type>> Foam::surfaceWriter::mergeFieldTemplate
|
||||
|
||||
|
||||
template<class Type>
|
||||
void Foam::surfaceWriter::adjustOutputFieldTemplate
|
||||
Foam::tmp<Foam::Field<Type>> Foam::surfaceWriter::adjustFieldTemplate
|
||||
(
|
||||
const word& fieldName,
|
||||
Field<Type>& fld
|
||||
const tmp<Field<Type>>& tfield
|
||||
) const
|
||||
{
|
||||
if (verbose_)
|
||||
@ -517,6 +517,8 @@ void Foam::surfaceWriter::adjustOutputFieldTemplate
|
||||
Info<< "Writing field " << fieldName;
|
||||
}
|
||||
|
||||
tmp<Field<Type>> tadjusted;
|
||||
|
||||
// Output scaling for the variable, but not for integer types
|
||||
// which are typically ids etc.
|
||||
if (!std::is_integral<Type>::value)
|
||||
@ -544,7 +546,14 @@ void Foam::surfaceWriter::adjustOutputFieldTemplate
|
||||
Info<< " [level " << refLevel << ']';
|
||||
}
|
||||
|
||||
fld -= refLevel;
|
||||
if (!tadjusted)
|
||||
{
|
||||
// Steal or clone
|
||||
tadjusted.reset(tfield.ptr());
|
||||
}
|
||||
|
||||
// Remove offset level
|
||||
tadjusted.ref() -= refLevel;
|
||||
}
|
||||
|
||||
// Apply scaling
|
||||
@ -558,9 +567,19 @@ void Foam::surfaceWriter::adjustOutputFieldTemplate
|
||||
{
|
||||
Info<< " [scaling " << value << ']';
|
||||
}
|
||||
fld *= value;
|
||||
|
||||
if (!tadjusted)
|
||||
{
|
||||
// Steal or clone
|
||||
tadjusted.reset(tfield.ptr());
|
||||
}
|
||||
|
||||
// Apply scaling
|
||||
tadjusted.ref() *= value;
|
||||
}
|
||||
}
|
||||
|
||||
return (tadjusted ? tadjusted : tfield);
|
||||
}
|
||||
|
||||
|
||||
@ -571,13 +590,14 @@ void Foam::surfaceWriter::adjustOutputFieldTemplate
|
||||
return mergeFieldTemplate(fld); \
|
||||
} \
|
||||
\
|
||||
void ThisClass::adjustOutputField \
|
||||
Foam::tmp<Foam::Field<Type>> \
|
||||
ThisClass::adjustField \
|
||||
( \
|
||||
const word& fieldName, \
|
||||
Field<Type>& fld \
|
||||
const tmp<Field<Type>>& tfield \
|
||||
) const \
|
||||
{ \
|
||||
adjustOutputFieldTemplate(fieldName, fld); \
|
||||
return adjustFieldTemplate(fieldName, tfield); \
|
||||
}
|
||||
|
||||
defineSurfaceFieldMethods(Foam::surfaceWriter, Foam::label);
|
||||
|
||||
@ -195,17 +195,22 @@ protected:
|
||||
|
||||
//- Apply refLevel and fieldScaling
|
||||
template<class Type>
|
||||
void adjustOutputFieldTemplate
|
||||
tmp<Field<Type>> adjustFieldTemplate
|
||||
(
|
||||
const word& fieldName,
|
||||
Field<Type>& fld
|
||||
const tmp<Field<Type>>& tfield
|
||||
) const;
|
||||
|
||||
#undef declareSurfaceFieldMethod
|
||||
#define declareSurfaceFieldMethods(Type) \
|
||||
\
|
||||
tmp<Field<Type>> mergeField(const Field<Type>& fld) const; \
|
||||
void adjustOutputField(const word& fieldName, Field<Type>& fld) const;
|
||||
\
|
||||
tmp<Field<Type>> adjustField \
|
||||
( \
|
||||
const word& fieldName, \
|
||||
const tmp<Field<Type>>& tfield \
|
||||
) const;
|
||||
|
||||
declareSurfaceFieldMethods(label);
|
||||
declareSurfaceFieldMethods(scalar);
|
||||
|
||||
@ -87,9 +87,7 @@ Foam::fileName Foam::surfaceWriters::ensightWriter::writeCollated
|
||||
}
|
||||
|
||||
// Implicit geometry merge()
|
||||
tmp<Field<Type>> tfield = mergeField(localValues);
|
||||
|
||||
adjustOutputField(fieldName, tfield.ref());
|
||||
tmp<Field<Type>> tfield = adjustField(fieldName, mergeField(localValues));
|
||||
|
||||
if (verbose_)
|
||||
{
|
||||
|
||||
@ -152,9 +152,7 @@ Foam::fileName Foam::surfaceWriters::ensightWriter::writeUncollated
|
||||
}
|
||||
|
||||
// Implicit geometry merge()
|
||||
tmp<Field<Type>> tfield = mergeField(localValues);
|
||||
|
||||
adjustOutputField(fieldName, tfield.ref());
|
||||
tmp<Field<Type>> tfield = adjustField(fieldName, mergeField(localValues));
|
||||
|
||||
if (verbose_)
|
||||
{
|
||||
|
||||
@ -194,9 +194,7 @@ Foam::fileName Foam::surfaceWriters::foamWriter::writeTemplate
|
||||
|
||||
|
||||
// Implicit geometry merge()
|
||||
tmp<Field<Type>> tfield = mergeField(localValues);
|
||||
|
||||
adjustOutputField(fieldName, tfield.ref());
|
||||
tmp<Field<Type>> tfield = adjustField(fieldName, mergeField(localValues));
|
||||
|
||||
if (verbose_)
|
||||
{
|
||||
|
||||
@ -224,9 +224,7 @@ Foam::fileName Foam::surfaceWriters::nastranWriter::writeTemplate
|
||||
outputFile.ext("bdf");
|
||||
|
||||
// Implicit geometry merge()
|
||||
tmp<Field<Type>> tfield = mergeField(localValues);
|
||||
|
||||
adjustOutputField(fieldName, tfield.ref());
|
||||
tmp<Field<Type>> tfield = adjustField(fieldName, mergeField(localValues));
|
||||
|
||||
if (verbose_)
|
||||
{
|
||||
|
||||
@ -107,9 +107,7 @@ Foam::fileName Foam::surfaceWriters::rawWriter::writeTemplate
|
||||
|
||||
|
||||
// Implicit geometry merge()
|
||||
tmp<Field<Type>> tfield = mergeField(localValues);
|
||||
|
||||
adjustOutputField(fieldName, tfield.ref());
|
||||
tmp<Field<Type>> tfield = adjustField(fieldName, mergeField(localValues));
|
||||
|
||||
if (verbose_)
|
||||
{
|
||||
|
||||
@ -207,9 +207,7 @@ Foam::fileName Foam::surfaceWriters::starcdWriter::writeTemplate
|
||||
outputFile.ext("usr");
|
||||
|
||||
// Implicit geometry merge()
|
||||
tmp<Field<Type>> tfield = mergeField(localValues);
|
||||
|
||||
adjustOutputField(fieldName, tfield.ref());
|
||||
tmp<Field<Type>> tfield = adjustField(fieldName, mergeField(localValues));
|
||||
|
||||
if (verbose_)
|
||||
{
|
||||
|
||||
@ -286,9 +286,7 @@ Foam::fileName Foam::surfaceWriters::vtkWriter::writeTemplate
|
||||
fileName outputFile = this->write();
|
||||
|
||||
// Implicit geometry merge()
|
||||
tmp<Field<Type>> tfield = mergeField(localValues);
|
||||
|
||||
adjustOutputField(fieldName, tfield.ref());
|
||||
tmp<Field<Type>> tfield = adjustField(fieldName, mergeField(localValues));
|
||||
|
||||
if (verbose_)
|
||||
{
|
||||
|
||||
@ -270,9 +270,7 @@ Foam::fileName Foam::surfaceWriters::x3dWriter::writeTemplate
|
||||
outputFile.ext("x3d");
|
||||
|
||||
// Implicit geometry merge()
|
||||
tmp<Field<Type>> tfield = mergeField(localValues);
|
||||
|
||||
adjustOutputField(fieldName, tfield.ref());
|
||||
tmp<Field<Type>> tfield = adjustField(fieldName, mergeField(localValues));
|
||||
|
||||
if (verbose_)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user