Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Development
openfoam
Commits
93a0172f
Commit
93a0172f
authored
Apr 14, 2010
by
mattijs
Browse files
BUG: incorrect statistics in parallel. Also removed sign of magSf.
parent
6c3c14ab
Changes
6
Hide whitespace changes
Inline
Side-by-side
src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSource.C
View file @
93a0172f
...
...
@@ -80,10 +80,11 @@ void Foam::fieldValues::cellSource::setCellZoneCells()
}
cellId_
.
setSize
(
count
);
nCells_
=
returnReduce
(
cellId_
.
size
(),
sumOp
<
label
>
());
if
(
debug
)
{
Info
<<
"Original cell zone size = "
<<
cZone
.
size
()
Pout
<<
"Original cell zone size = "
<<
cZone
.
size
()
<<
", new size = "
<<
count
<<
endl
;
}
}
...
...
@@ -109,8 +110,8 @@ void Foam::fieldValues::cellSource::initialise(const dictionary& dict)
}
Info
<<
type
()
<<
" "
<<
name_
<<
":"
<<
nl
<<
" total cells = "
<<
c
ell
Id_
.
size
()
<<
nl
<<
" total volume = "
<<
s
um
(
filterField
(
mesh
().
V
()))
<<
" total cells = "
<<
nC
ell
s_
<<
nl
<<
" total volume = "
<<
gS
um
(
filterField
(
mesh
().
V
()))
<<
nl
<<
endl
;
if
(
operation_
==
opWeightedAverage
)
...
...
@@ -144,7 +145,7 @@ void Foam::fieldValues::cellSource::writeFileHeader()
{
outputFilePtr_
()
<<
"# Source : "
<<
sourceTypeNames_
[
source_
]
<<
" "
<<
sourceName_
<<
nl
<<
"# Cells : "
<<
c
ell
Id_
.
size
()
<<
nl
<<
sourceName_
<<
nl
<<
"# Cells : "
<<
nC
ell
s_
<<
nl
<<
"# Time"
<<
tab
<<
"sum(V)"
;
forAll
(
fields_
,
i
)
...
...
@@ -172,6 +173,7 @@ Foam::fieldValues::cellSource::cellSource
fieldValue
(
name
,
obr
,
dict
,
loadFromFiles
),
source_
(
sourceTypeNames_
.
read
(
dict
.
lookup
(
"source"
))),
operation_
(
operationTypeNames_
.
read
(
dict
.
lookup
(
"operation"
))),
nCells_
(
0
),
cellId_
()
{
read
(
dict
);
...
...
src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSource.H
View file @
93a0172f
...
...
@@ -133,6 +133,9 @@ protected:
//- Operation to apply to values
operationType
operation_
;
//- Global number of cells
label
nCells_
;
//- Local list of cell IDs
labelList
cellId_
;
...
...
src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.C
View file @
93a0172f
...
...
@@ -78,7 +78,7 @@ void Foam::fieldValues::faceSource::setFaceZoneFaces()
faceId_
.
setSize
(
fZone
.
size
());
facePatchId_
.
setSize
(
fZone
.
size
());
f
lipMap
_
.
setSize
(
fZone
.
size
());
f
aceSign
_
.
setSize
(
fZone
.
size
());
label
count
=
0
;
forAll
(
fZone
,
i
)
...
...
@@ -134,11 +134,11 @@ void Foam::fieldValues::faceSource::setFaceZoneFaces()
{
if
(
fZone
.
flipMap
()[
i
])
{
f
lipMap
_
[
count
]
=
-
1
;
f
aceSign
_
[
count
]
=
-
1
;
}
else
{
f
lipMap
_
[
count
]
=
1
;
f
aceSign
_
[
count
]
=
1
;
}
faceId_
[
count
]
=
faceId
;
facePatchId_
[
count
]
=
facePatchId
;
...
...
@@ -148,11 +148,12 @@ void Foam::fieldValues::faceSource::setFaceZoneFaces()
faceId_
.
setSize
(
count
);
facePatchId_
.
setSize
(
count
);
flipMap_
.
setSize
(
count
);
faceSign_
.
setSize
(
count
);
nFaces_
=
returnReduce
(
faceId_
.
size
(),
sumOp
<
label
>
());
if
(
debug
)
{
Info
<<
"Original face zone size = "
<<
fZone
.
size
()
Pout
<<
"Original face zone size = "
<<
fZone
.
size
()
<<
", new size = "
<<
count
<<
endl
;
}
}
...
...
@@ -187,13 +188,14 @@ void Foam::fieldValues::faceSource::setPatchFaces()
faceId_
.
setSize
(
nFaces
);
facePatchId_
.
setSize
(
nFaces
);
flipMap_
.
setSize
(
nFaces
);
faceSign_
.
setSize
(
nFaces
);
nFaces_
=
returnReduce
(
faceId_
.
size
(),
sumOp
<
label
>
());
forAll
(
faceId_
,
faceI
)
{
faceId_
[
faceI
]
=
faceI
;
facePatchId_
[
faceI
]
=
patchId
;
f
lipMap
_
[
faceI
]
=
1
;
f
aceSign
_
[
faceI
]
=
1
;
}
}
...
...
@@ -216,7 +218,7 @@ void Foam::fieldValues::faceSource::initialise(const dictionary& dict)
}
default:
{
FatalErrorIn
(
"faceSource::initili
a
se()"
)
FatalErrorIn
(
"faceSource::initi
a
lise()"
)
<<
type
()
<<
" "
<<
name_
<<
": "
<<
sourceTypeNames_
[
source_
]
<<
"("
<<
sourceName_
<<
"):"
<<
nl
<<
" Unknown source type. Valid source types are:"
...
...
@@ -225,8 +227,10 @@ void Foam::fieldValues::faceSource::initialise(const dictionary& dict)
}
Info
<<
type
()
<<
" "
<<
name_
<<
":"
<<
nl
<<
" total faces = "
<<
faceId_
.
size
()
<<
nl
<<
" total area = "
<<
sum
(
filterField
(
mesh
().
magSf
()))
<<
nl
;
<<
" total faces = "
<<
nFaces_
<<
nl
<<
" total area = "
<<
gSum
(
filterField
(
mesh
().
magSf
(),
false
))
<<
nl
;
if
(
operation_
==
opWeightedAverage
)
{
...
...
@@ -260,7 +264,7 @@ void Foam::fieldValues::faceSource::writeFileHeader()
{
outputFilePtr_
()
<<
"# Source : "
<<
sourceTypeNames_
[
source_
]
<<
" "
<<
sourceName_
<<
nl
<<
"# Faces : "
<<
f
ace
Id_
.
size
()
<<
nl
<<
sourceName_
<<
nl
<<
"# Faces : "
<<
nF
ace
s_
<<
nl
<<
"# Time"
<<
tab
<<
"sum(magSf)"
;
forAll
(
fields_
,
i
)
...
...
@@ -288,9 +292,10 @@ Foam::fieldValues::faceSource::faceSource
fieldValue
(
name
,
obr
,
dict
,
loadFromFiles
),
source_
(
sourceTypeNames_
.
read
(
dict
.
lookup
(
"source"
))),
operation_
(
operationTypeNames_
.
read
(
dict
.
lookup
(
"operation"
))),
nFaces_
(
0
),
faceId_
(),
facePatchId_
(),
f
lipMap
_
(),
f
aceSign
_
(),
weightFieldName_
(
"undefinedWeightedFieldName"
)
{
read
(
dict
);
...
...
@@ -326,7 +331,7 @@ void Foam::fieldValues::faceSource::write()
{
outputFilePtr_
()
<<
obr_
.
time
().
value
()
<<
tab
<<
sum
(
filterField
(
mesh
().
magSf
()));
<<
sum
(
filterField
(
mesh
().
magSf
()
,
false
));
}
forAll
(
fields_
,
i
)
...
...
src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.H
View file @
93a0172f
...
...
@@ -53,6 +53,15 @@ Description
- areaAverage
- areaIntegrate
- weightedAverage
- min
- max
Notes:
- faces on empty patches get ignored
- if the field is a volField the faceZone can only consist of boundary
faces.
- all fields get oriented according to the faceZone (so you might e.g. see
negative pressure)
SourceFiles
faceSource.C
...
...
@@ -64,7 +73,6 @@ SourceFiles
#include
"NamedEnum.H"
#include
"fieldValue.H"
#include
"labelList.H"
#include
"surfaceFieldsFwd.H"
#include
"volFieldsFwd.H"
...
...
@@ -136,14 +144,17 @@ protected:
//- Operation to apply to values
operationType
operation_
;
//- Global number of faces
label
nFaces_
;
//- Local list of face IDs
labelList
faceId_
;
//- Local list of patch ID per face
labelList
facePatchId_
;
//- List of +1/-1 representing face flip map
labelList
f
lipMap
_
;
//- List of +1/-1 representing face flip map
(1 use as is, -1 negate)
labelList
f
aceSign
_
;
//- Weight field name - only used for opWeightedAverage mode
word
weightFieldName_
;
...
...
@@ -209,7 +220,7 @@ public:
inline
const
labelList
&
facePatch
()
const
;
//- Return the list of +1/-1 representing face flip map
inline
const
labelList
&
f
lipMap
()
const
;
inline
const
labelList
&
f
aceSign
()
const
;
// Function object functions
...
...
@@ -228,14 +239,16 @@ public:
template
<
class
Type
>
tmp
<
Field
<
Type
>
>
filterField
(
const
GeometricField
<
Type
,
fvsPatchField
,
surfaceMesh
>&
field
const
GeometricField
<
Type
,
fvsPatchField
,
surfaceMesh
>&
field
,
const
bool
applyOrientation
)
const
;
//- Filter a volume field according to faceIds
template
<
class
Type
>
tmp
<
Field
<
Type
>
>
filterField
(
const
GeometricField
<
Type
,
fvPatchField
,
volMesh
>&
field
const
GeometricField
<
Type
,
fvPatchField
,
volMesh
>&
field
,
const
bool
applyOrientation
)
const
;
};
...
...
src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSourceI.H
View file @
93a0172f
...
...
@@ -49,9 +49,9 @@ Foam::fieldValues::faceSource::facePatch() const
inline
const
Foam
::
labelList
&
Foam
::
fieldValues
::
faceSource
::
f
lipMap
()
const
Foam
::
fieldValues
::
faceSource
::
f
aceSign
()
const
{
return
f
lipMap
_
;
return
f
aceSign
_
;
}
...
...
src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSourceTemplates.C
View file @
93a0172f
...
...
@@ -60,14 +60,14 @@ Foam::tmp<Foam::Field<Type> > Foam::fieldValues::faceSource::setFieldValues
if
(
obr_
.
foundObject
<
sf
>
(
fieldName
))
{
return
filterField
(
obr_
.
lookupObject
<
sf
>
(
fieldName
));
return
filterField
(
obr_
.
lookupObject
<
sf
>
(
fieldName
)
,
true
);
}
else
if
(
obr_
.
foundObject
<
vf
>
(
fieldName
))
{
return
filterField
(
obr_
.
lookupObject
<
vf
>
(
fieldName
));
return
filterField
(
obr_
.
lookupObject
<
vf
>
(
fieldName
)
,
true
);
}
return
tmp
<
Field
<
Type
>
>
(
new
Field
<
Type
>
(
0
.
0
));
return
tmp
<
Field
<
Type
>
>
(
new
Field
<
Type
>
(
0
));
}
...
...
@@ -131,10 +131,13 @@ bool Foam::fieldValues::faceSource::writeValues(const word& fieldName)
if
(
ok
)
{
// Get (correctly oriented) field
Field
<
Type
>
values
=
combineFields
(
setFieldValues
<
Type
>
(
fieldName
));
scalarField
magSf
=
combineFields
(
filterField
(
mesh
().
magSf
()));
// Get unoriented magSf
scalarField
magSf
=
combineFields
(
filterField
(
mesh
().
magSf
(),
false
));
// Get (correctly oriented) weighting field
scalarField
weightField
=
combineFields
(
setFieldValues
<
scalar
>
(
weightFieldName_
));
...
...
@@ -177,7 +180,8 @@ bool Foam::fieldValues::faceSource::writeValues(const word& fieldName)
template
<
class
Type
>
Foam
::
tmp
<
Foam
::
Field
<
Type
>
>
Foam
::
fieldValues
::
faceSource
::
filterField
(
const
GeometricField
<
Type
,
fvPatchField
,
volMesh
>&
field
const
GeometricField
<
Type
,
fvPatchField
,
volMesh
>&
field
,
const
bool
applyOrientation
)
const
{
tmp
<
Field
<
Type
>
>
tvalues
(
new
Field
<
Type
>
(
faceId_
.
size
()));
...
...
@@ -205,8 +209,14 @@ Foam::tmp<Foam::Field<Type> > Foam::fieldValues::faceSource::filterField
<<
" Unable to process internal faces for volume field "
<<
field
.
name
()
<<
nl
<<
abort
(
FatalError
);
}
}
values
[
i
]
*=
flipMap_
[
i
];
if
(
applyOrientation
)
{
forAll
(
values
,
i
)
{
values
[
i
]
*=
faceSign_
[
i
];
}
}
return
tvalues
;
...
...
@@ -216,7 +226,8 @@ Foam::tmp<Foam::Field<Type> > Foam::fieldValues::faceSource::filterField
template
<
class
Type
>
Foam
::
tmp
<
Foam
::
Field
<
Type
>
>
Foam
::
fieldValues
::
faceSource
::
filterField
(
const
GeometricField
<
Type
,
fvsPatchField
,
surfaceMesh
>&
field
const
GeometricField
<
Type
,
fvsPatchField
,
surfaceMesh
>&
field
,
const
bool
applyOrientation
)
const
{
tmp
<
Field
<
Type
>
>
tvalues
(
new
Field
<
Type
>
(
faceId_
.
size
()));
...
...
@@ -234,8 +245,14 @@ Foam::tmp<Foam::Field<Type> > Foam::fieldValues::faceSource::filterField
{
values
[
i
]
=
field
[
faceI
];
}
}
values
[
i
]
*=
flipMap_
[
i
];
if
(
applyOrientation
)
{
forAll
(
values
,
i
)
{
values
[
i
]
*=
faceSign_
[
i
];
}
}
return
tvalues
;
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment