ENH: Updated combineFields for fieldValues to avoid assignment to self

This commit is contained in:
andy
2011-02-08 17:51:54 +00:00
parent 0942748819
commit afe1c4ff40
4 changed files with 24 additions and 40 deletions

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2009-2010 OpenCFD Ltd.
\\ / A nd | Copyright (C) 2009-2011 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -119,14 +119,14 @@ bool Foam::fieldValues::cellSource::writeValues(const word& fieldName)
if (ok)
{
Field<Type> values(combineFields(setFieldValues<Type>(fieldName)));
Field<Type> values(setFieldValues<Type>(fieldName));
combineFields(values);
scalarField V(combineFields(filterField(mesh().V())));
scalarField V(filterField(mesh().V()));
combineFields(V);
scalarField weightField
(
combineFields(setFieldValues<scalar>(weightFieldName_))
);
scalarField weightField(setFieldValues<scalar>(weightFieldName_));
combineFields(weightField);
if (Pstream::master())
{

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2009-2010 OpenCFD Ltd.
\\ / A nd | Copyright (C) 2009-2011 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -150,13 +150,13 @@ bool Foam::fieldValues::faceSource::writeValues(const word& fieldName)
else
{
// Get unoriented magSf
magSf = combineFields(filterField(mesh().magSf(), false));
magSf = filterField(mesh().magSf(), false);
}
// Combine onto master
values = combineFields(values);
magSf = combineFields(magSf);
weightField = combineFields(weightField);
combineFields(values);
combineFields(magSf);
combineFields(weightField);
if (Pstream::master())

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2009-2010 OpenCFD Ltd.
\\ / A nd | Copyright (C) 2009-2011 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -166,12 +166,11 @@ public:
//- Combine fields from all processor domains into single field
template<class Type>
tmp<Field<Type> > combineFields(const Field<Type>& field) const;
void combineFields(Field<Type>& field);
//- Combine fields from all processor domains into single field
template<class Type>
tmp<Field<Type> > combineFields(const tmp<Field<Type> >&) const;
void combineFields(tmp<Field<Type> >&);
};

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2009-2010 OpenCFD Ltd.
\\ / A nd | Copyright (C) 2009-2011 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -30,10 +30,7 @@ License
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
template<class Type>
Foam::tmp<Foam::Field<Type> > Foam::fieldValue::combineFields
(
const Field<Type>& field
) const
void Foam::fieldValue::combineFields(Field<Type>& field)
{
List<Field<Type> > allValues(Pstream::nProcs());
@ -43,32 +40,20 @@ Foam::tmp<Foam::Field<Type> > Foam::fieldValue::combineFields
if (Pstream::master())
{
return tmp<Field<Type> >
(
new Field<Type>
field =
ListListOps::combine<Field<Type> >
(
ListListOps::combine<Field<Type> >
(
allValues,
accessOp<Field<Type> >()
)
)
);
}
else
{
return field;
allValues,
accessOp<Field<Type> >()
);
}
}
template<class Type>
Foam::tmp<Foam::Field<Type> > Foam::fieldValue::combineFields
(
const tmp<Field<Type> >& field
) const
void Foam::fieldValue::combineFields(tmp<Field<Type> >& field)
{
return combineFields(field());
combineFields(field());
}