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()
|
// Implicit geometry merge()
|
||||||
tmp<Field<Type>> tfield = mergeField(localValues);
|
tmp<Field<Type>> tfield = adjustField(fieldName, mergeField(localValues));
|
||||||
|
|
||||||
adjustOutputField(fieldName, tfield.ref());
|
|
||||||
|
|
||||||
if (verbose_)
|
if (verbose_)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -219,9 +219,7 @@ Foam::fileName Foam::surfaceWriters::boundaryDataWriter::writeTemplate
|
|||||||
const fileName outputFile(surfaceDir/timeName()/fieldName);
|
const fileName outputFile(surfaceDir/timeName()/fieldName);
|
||||||
|
|
||||||
// Implicit geometry merge()
|
// Implicit geometry merge()
|
||||||
tmp<Field<Type>> tfield = mergeField(localValues);
|
tmp<Field<Type>> tfield = adjustField(fieldName, mergeField(localValues));
|
||||||
|
|
||||||
adjustOutputField(fieldName, tfield.ref());
|
|
||||||
|
|
||||||
if (verbose_)
|
if (verbose_)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -506,10 +506,10 @@ Foam::tmp<Foam::Field<Type>> Foam::surfaceWriter::mergeFieldTemplate
|
|||||||
|
|
||||||
|
|
||||||
template<class Type>
|
template<class Type>
|
||||||
void Foam::surfaceWriter::adjustOutputFieldTemplate
|
Foam::tmp<Foam::Field<Type>> Foam::surfaceWriter::adjustFieldTemplate
|
||||||
(
|
(
|
||||||
const word& fieldName,
|
const word& fieldName,
|
||||||
Field<Type>& fld
|
const tmp<Field<Type>>& tfield
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
if (verbose_)
|
if (verbose_)
|
||||||
@ -517,6 +517,8 @@ void Foam::surfaceWriter::adjustOutputFieldTemplate
|
|||||||
Info<< "Writing field " << fieldName;
|
Info<< "Writing field " << fieldName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tmp<Field<Type>> tadjusted;
|
||||||
|
|
||||||
// Output scaling for the variable, but not for integer types
|
// Output scaling for the variable, but not for integer types
|
||||||
// which are typically ids etc.
|
// which are typically ids etc.
|
||||||
if (!std::is_integral<Type>::value)
|
if (!std::is_integral<Type>::value)
|
||||||
@ -544,7 +546,14 @@ void Foam::surfaceWriter::adjustOutputFieldTemplate
|
|||||||
Info<< " [level " << refLevel << ']';
|
Info<< " [level " << refLevel << ']';
|
||||||
}
|
}
|
||||||
|
|
||||||
fld -= refLevel;
|
if (!tadjusted)
|
||||||
|
{
|
||||||
|
// Steal or clone
|
||||||
|
tadjusted.reset(tfield.ptr());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove offset level
|
||||||
|
tadjusted.ref() -= refLevel;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply scaling
|
// Apply scaling
|
||||||
@ -558,9 +567,19 @@ void Foam::surfaceWriter::adjustOutputFieldTemplate
|
|||||||
{
|
{
|
||||||
Info<< " [scaling " << value << ']';
|
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); \
|
return mergeFieldTemplate(fld); \
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
void ThisClass::adjustOutputField \
|
Foam::tmp<Foam::Field<Type>> \
|
||||||
|
ThisClass::adjustField \
|
||||||
( \
|
( \
|
||||||
const word& fieldName, \
|
const word& fieldName, \
|
||||||
Field<Type>& fld \
|
const tmp<Field<Type>>& tfield \
|
||||||
) const \
|
) const \
|
||||||
{ \
|
{ \
|
||||||
adjustOutputFieldTemplate(fieldName, fld); \
|
return adjustFieldTemplate(fieldName, tfield); \
|
||||||
}
|
}
|
||||||
|
|
||||||
defineSurfaceFieldMethods(Foam::surfaceWriter, Foam::label);
|
defineSurfaceFieldMethods(Foam::surfaceWriter, Foam::label);
|
||||||
|
|||||||
@ -195,17 +195,22 @@ protected:
|
|||||||
|
|
||||||
//- Apply refLevel and fieldScaling
|
//- Apply refLevel and fieldScaling
|
||||||
template<class Type>
|
template<class Type>
|
||||||
void adjustOutputFieldTemplate
|
tmp<Field<Type>> adjustFieldTemplate
|
||||||
(
|
(
|
||||||
const word& fieldName,
|
const word& fieldName,
|
||||||
Field<Type>& fld
|
const tmp<Field<Type>>& tfield
|
||||||
) const;
|
) const;
|
||||||
|
|
||||||
#undef declareSurfaceFieldMethod
|
#undef declareSurfaceFieldMethod
|
||||||
#define declareSurfaceFieldMethods(Type) \
|
#define declareSurfaceFieldMethods(Type) \
|
||||||
\
|
\
|
||||||
tmp<Field<Type>> mergeField(const Field<Type>& fld) const; \
|
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(label);
|
||||||
declareSurfaceFieldMethods(scalar);
|
declareSurfaceFieldMethods(scalar);
|
||||||
|
|||||||
@ -87,9 +87,7 @@ Foam::fileName Foam::surfaceWriters::ensightWriter::writeCollated
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Implicit geometry merge()
|
// Implicit geometry merge()
|
||||||
tmp<Field<Type>> tfield = mergeField(localValues);
|
tmp<Field<Type>> tfield = adjustField(fieldName, mergeField(localValues));
|
||||||
|
|
||||||
adjustOutputField(fieldName, tfield.ref());
|
|
||||||
|
|
||||||
if (verbose_)
|
if (verbose_)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -152,9 +152,7 @@ Foam::fileName Foam::surfaceWriters::ensightWriter::writeUncollated
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Implicit geometry merge()
|
// Implicit geometry merge()
|
||||||
tmp<Field<Type>> tfield = mergeField(localValues);
|
tmp<Field<Type>> tfield = adjustField(fieldName, mergeField(localValues));
|
||||||
|
|
||||||
adjustOutputField(fieldName, tfield.ref());
|
|
||||||
|
|
||||||
if (verbose_)
|
if (verbose_)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -194,9 +194,7 @@ Foam::fileName Foam::surfaceWriters::foamWriter::writeTemplate
|
|||||||
|
|
||||||
|
|
||||||
// Implicit geometry merge()
|
// Implicit geometry merge()
|
||||||
tmp<Field<Type>> tfield = mergeField(localValues);
|
tmp<Field<Type>> tfield = adjustField(fieldName, mergeField(localValues));
|
||||||
|
|
||||||
adjustOutputField(fieldName, tfield.ref());
|
|
||||||
|
|
||||||
if (verbose_)
|
if (verbose_)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -224,9 +224,7 @@ Foam::fileName Foam::surfaceWriters::nastranWriter::writeTemplate
|
|||||||
outputFile.ext("bdf");
|
outputFile.ext("bdf");
|
||||||
|
|
||||||
// Implicit geometry merge()
|
// Implicit geometry merge()
|
||||||
tmp<Field<Type>> tfield = mergeField(localValues);
|
tmp<Field<Type>> tfield = adjustField(fieldName, mergeField(localValues));
|
||||||
|
|
||||||
adjustOutputField(fieldName, tfield.ref());
|
|
||||||
|
|
||||||
if (verbose_)
|
if (verbose_)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -107,9 +107,7 @@ Foam::fileName Foam::surfaceWriters::rawWriter::writeTemplate
|
|||||||
|
|
||||||
|
|
||||||
// Implicit geometry merge()
|
// Implicit geometry merge()
|
||||||
tmp<Field<Type>> tfield = mergeField(localValues);
|
tmp<Field<Type>> tfield = adjustField(fieldName, mergeField(localValues));
|
||||||
|
|
||||||
adjustOutputField(fieldName, tfield.ref());
|
|
||||||
|
|
||||||
if (verbose_)
|
if (verbose_)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -207,9 +207,7 @@ Foam::fileName Foam::surfaceWriters::starcdWriter::writeTemplate
|
|||||||
outputFile.ext("usr");
|
outputFile.ext("usr");
|
||||||
|
|
||||||
// Implicit geometry merge()
|
// Implicit geometry merge()
|
||||||
tmp<Field<Type>> tfield = mergeField(localValues);
|
tmp<Field<Type>> tfield = adjustField(fieldName, mergeField(localValues));
|
||||||
|
|
||||||
adjustOutputField(fieldName, tfield.ref());
|
|
||||||
|
|
||||||
if (verbose_)
|
if (verbose_)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -286,9 +286,7 @@ Foam::fileName Foam::surfaceWriters::vtkWriter::writeTemplate
|
|||||||
fileName outputFile = this->write();
|
fileName outputFile = this->write();
|
||||||
|
|
||||||
// Implicit geometry merge()
|
// Implicit geometry merge()
|
||||||
tmp<Field<Type>> tfield = mergeField(localValues);
|
tmp<Field<Type>> tfield = adjustField(fieldName, mergeField(localValues));
|
||||||
|
|
||||||
adjustOutputField(fieldName, tfield.ref());
|
|
||||||
|
|
||||||
if (verbose_)
|
if (verbose_)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -270,9 +270,7 @@ Foam::fileName Foam::surfaceWriters::x3dWriter::writeTemplate
|
|||||||
outputFile.ext("x3d");
|
outputFile.ext("x3d");
|
||||||
|
|
||||||
// Implicit geometry merge()
|
// Implicit geometry merge()
|
||||||
tmp<Field<Type>> tfield = mergeField(localValues);
|
tmp<Field<Type>> tfield = adjustField(fieldName, mergeField(localValues));
|
||||||
|
|
||||||
adjustOutputField(fieldName, tfield.ref());
|
|
||||||
|
|
||||||
if (verbose_)
|
if (verbose_)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user