Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Development
openfoam
Commits
e57e8603
Commit
e57e8603
authored
Sep 09, 2008
by
henry
Browse files
Merge branch 'master' of
ssh://hunt/home/hunt2/OpenFOAM/OpenFOAM-dev
parents
72519e6b
3128561a
Changes
33
Expand all
Hide whitespace changes
Inline
Side-by-side
applications/solvers/Lagrangian/kinematicParcelFoam/Make/files
View file @
e57e8603
kinematicParcelFoam.C
EXE = $(FOAM_
USER_
APPBIN)/kinematicParcelFoam
EXE = $(FOAM_APPBIN)/kinematicParcelFoam
applications/solvers/Lagrangian/kinematicParcelFoam/kinematicParcelFoam.C
View file @
e57e8603
...
...
@@ -26,7 +26,8 @@ Application
kinematicParcelFoam
Description
Transient solver a single kinematicCloud.
Transient solver for a single kinematicCloud. Uses precalculated velocity
field to evolve a cloud.
\*---------------------------------------------------------------------------*/
...
...
applications/utilities/mesh/conversion/fluent3DMeshToFoam/fluent3DMeshToFoam.L
View file @
e57e8603
...
...
@@ -697,7 +697,7 @@ endOfSection {space}")"{space}
/* ------ Ignore remaining space and \n s. ------ */
<*>{some_space}|\n {
<*>{some_space}|\n
|\r
{
}
...
...
applications/utilities/postProcessing/dataConversion/foamToVTK/writeSurfFields.C
View file @
e57e8603
...
...
@@ -28,7 +28,7 @@ License
#include "OFstream.H"
#include "floatScalar.H"
#include "writeFuns.H"
#include "emptyFvPatchFields.H"
#include "emptyFv
s
PatchFields.H"
#include "fvsPatchFields.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
...
...
@@ -100,7 +100,7 @@ void writeSurfFields
const
fvPatch
&
pp
=
mesh
.
boundary
()[
patchI
];
if
(
isA
<
emptyFvPatchVectorField
>
(
pf
))
if
(
isA
<
emptyFv
s
PatchVectorField
>
(
pf
))
{
// Note: loop over polypatch size, not fvpatch size.
forAll
(
pp
.
patch
(),
i
)
...
...
applications/utilities/surface/surfaceSubset/surfaceSubset.C
View file @
e57e8603
...
...
@@ -248,7 +248,7 @@ int main(int argc, char *argv[])
indexedOctree
<
treeDataTriSurface
>
selectTree
(
treeDataTriSurface
(
selectSurf
),
bb
.
extend
(
rndGen
,
1E-
3
),
// slightly randomize bb
bb
.
extend
(
rndGen
,
1E-
4
),
// slightly randomize bb
8
,
// maxLevel
10
,
// leafsize
3
.
0
// duplicity
...
...
etc/apps/paraview3/bashrc
View file @
e57e8603
...
...
@@ -45,9 +45,9 @@ export ParaView_INST_DIR=$WM_THIRD_PARTY_DIR/ParaView$ParaView_VERSION
export
ParaView_DIR
=
$ParaView_INST_DIR
/platforms/
$WM_ARCH$WM_COMPILER
if
[
"
$PYTHONPATH
"
]
;
then
export
PYTHONPATH
=
$PYTHONPATH
:
$ParaView_DIR
/Utilities/VTKPythonWrapping
export
PYTHONPATH
=
$PYTHONPATH
:
$ParaView_DIR
/Utilities/VTKPythonWrapping
:
$ParaView_DIR
/lib/paraview-3.3
else
export
PYTHONPATH
=
$ParaView_DIR
/Utilities/VTKPythonWrapping
export
PYTHONPATH
=
$ParaView_DIR
/Utilities/VTKPythonWrapping
:
$ParaView_DIR
/lib/paraview-3.3
fi
...
...
etc/apps/paraview3/cshrc
View file @
e57e8603
...
...
@@ -45,9 +45,9 @@ setenv ParaView_INST_DIR $WM_THIRD_PARTY_DIR/ParaView$ParaView_VERSION
setenv ParaView_DIR
$ParaView_INST_DIR
/platforms/
$WM_ARCH$WM_COMPILER
if
(
$?
PYTHONPATH
)
then
setenv PYTHONPATH
${
PYTHONPATH
}
:
$ParaView_DIR
/
bin:
$ParaView_DIR
/
Utilities/VTKPythonWrapping
setenv PYTHONPATH
${
PYTHONPATH
}
:
$ParaView_DIR
/Utilities/VTKPythonWrapping
:
$ParaView_DIR
/lib/paraview-3.3
else
setenv PYTHONPATH
$ParaView_DIR
/bin:
$ParaView_DIR
/Utilities/VTKPythonWrapping
setenv PYTHONPATH
$ParaView_DIR
/Utilities/VTKPythonWrapping
:
$ParaView_DIR
/lib/paraview-3.3
endif
if
(
-r
$ParaView_INST_DIR
)
then
...
...
src/OpenFOAM/db/Time/TimeIO.C
View file @
e57e8603
...
...
@@ -86,13 +86,6 @@ void Foam::Time::readDict()
purgeWrite_
=
0
;
}
if
(
writeControl_
!=
wcTimeStep
&&
purgeWrite_
>
0
)
{
FatalIOErrorIn
(
"Time::readDict()"
,
controlDict_
)
<<
"writeControl must be set to timeStep for purgeWrite "
<<
exit
(
FatalIOError
);
}
}
if
(
controlDict_
.
found
(
"timeFormat"
))
...
...
src/OpenFOAM/meshes/boundBox/boundBox.C
View file @
e57e8603
...
...
@@ -87,9 +87,47 @@ boundBox::boundBox(Istream& is)
// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * //
Ostream
&
operator
<<
(
Ostream
&
os
,
const
boundBox
&
b
)
Ostream
&
operator
<<
(
Ostream
&
os
,
const
boundBox
&
b
b
)
{
return
os
<<
b
.
min
()
<<
token
::
SPACE
<<
b
.
max
();
if
(
os
.
format
()
==
IOstream
::
ASCII
)
{
os
<<
bb
.
min_
<<
token
::
SPACE
<<
bb
.
max_
;
}
else
{
os
.
write
(
reinterpret_cast
<
const
char
*>
(
&
bb
.
min_
),
sizeof
(
boundBox
)
);
}
// Check state of Ostream
os
.
check
(
"Ostream& operator<<(Ostream&, const boundBox&)"
);
return
os
;
}
Istream
&
operator
>>
(
Istream
&
is
,
boundBox
&
bb
)
{
if
(
is
.
format
()
==
IOstream
::
ASCII
)
{
return
is
>>
bb
.
min_
>>
bb
.
max_
;
}
else
{
is
.
read
(
reinterpret_cast
<
char
*>
(
&
bb
.
min_
),
sizeof
(
boundBox
)
);
}
// Check state of Istream
is
.
check
(
"Istream& operator>>(Istream&, boundBox&)"
);
return
is
;
}
...
...
src/OpenFOAM/meshes/boundBox/boundBox.H
View file @
e57e8603
...
...
@@ -153,12 +153,31 @@ public:
}
//
Ostream o
perator
//
Friend O
perator
s
friend
Ostream
&
operator
<<
(
Ostream
&
os
,
const
boundBox
&
b
);
friend
bool
operator
==
(
const
boundBox
&
a
,
const
boundBox
&
b
)
{
return
(
a
.
min_
==
b
.
min_
)
&&
(
a
.
max_
==
b
.
max_
);
}
friend
bool
operator
!=
(
const
boundBox
&
a
,
const
boundBox
&
b
)
{
return
!
(
a
==
b
);
}
// IOstream operator
friend
Istream
&
operator
>>
(
Istream
&
is
,
boundBox
&
);
friend
Ostream
&
operator
<<
(
Ostream
&
os
,
const
boundBox
&
);
};
//- Specify data associated with boundBox type is contiguous
template
<
>
inline
bool
contiguous
<
boundBox
>
()
{
return
contiguous
<
point
>
();}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
}
// End namespace Foam
...
...
src/autoMesh/autoHexMesh/shellSurfaces/shellSurfaces.C
View file @
e57e8603
...
...
@@ -30,6 +30,7 @@ License
#include "triSurfaceMesh.H"
#include "refinementSurfaces.H"
#include "searchableSurfaces.H"
#include "orientedSurface.H"
#include "pointIndexHit.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
...
...
@@ -211,7 +212,27 @@ void Foam::shellSurfaces::orient()
refCast
<
const
triSurfaceMesh
>
(
s
)
);
refinementSurfaces
::
orientSurface
(
outsidePt
,
shell
);
// Flip surface so outsidePt is outside.
bool
anyFlipped
=
orientedSurface
::
orient
(
shell
,
outsidePt
,
true
);
if
(
anyFlipped
)
{
// orientedSurface will have done a clearOut of the surface.
// we could do a clearout of the triSurfaceMeshes::trees()
// but these aren't affected by orientation
// (except for cached
// sideness which should not be set at this point.
// !!Should check!)
Info
<<
"shellSurfaces : Flipped orientation of surface "
<<
s
.
name
()
<<
" so point "
<<
outsidePt
<<
" is outside."
<<
endl
;
}
}
}
}
...
...
src/dynamicMesh/polyMeshAdder/faceCoupleInfo.C
View file @
e57e8603
...
...
@@ -29,8 +29,8 @@ License
#include "matchPoints.H"
#include "indirectPrimitivePatch.H"
#include "meshTools.H"
#include "
oc
treeDataFace.H"
#include "
o
ctree.H"
#include "treeDataFace.H"
#include "
indexedO
ctree.H"
#include "OFstream.H"
#include "IndirectList.H"
...
...
@@ -1011,20 +1011,30 @@ void Foam::faceCoupleInfo::findSlavesCoveringMaster
)
{
// Construct octree from all mesh0 boundary faces
octreeDataFace
shapes
(
mesh0
);
labelList
bndFaces
(
mesh0
.
nFaces
()
-
mesh0
.
nInternalFaces
());
forAll
(
bndFaces
,
i
)
{
bndFaces
[
i
]
=
mesh0
.
nInternalFaces
()
+
i
;
}
treeBoundBox
overallBb
(
mesh0
.
points
());
octree
<
octreeDataFace
>
tree
Random
rndGen
(
123456
);
indexedOctree
<
treeDataFace
>
tree
(
overallBb
,
// overall search domain
shapes
,
// all information needed to do checks on cells
1
,
// min levels
20
.
0
,
// maximum ratio of cubes v.s. cells
10
.
0
treeDataFace
// all information needed to search faces
(
false
,
// do not cache bb
mesh0
,
bndFaces
// boundary faces only
),
overallBb
.
extend
(
rndGen
,
1E-4
),
// overall search domain
8
,
// maxLevel
10
,
// leafsize
3
.
0
// duplicity
);
if
(
debug
)
{
Pout
<<
"findSlavesCoveringMaster :"
...
...
@@ -1048,17 +1058,11 @@ void Foam::faceCoupleInfo::findSlavesCoveringMaster
// Generate face centre (prevent cellCentres() reconstruction)
point
fc
(
f1
.
centre
(
mesh1
.
points
()));
// Search in bounding box of face only.
treeBoundBox
tightest
(
static_cast
<
const
pointField
&>
(
f1
.
points
(
mesh1
.
points
())));
scalar
tightestDist
=
GREAT
;
label
index
=
tree
.
findNearest
(
fc
,
tightest
,
tightestDist
);
pointIndexHit
nearInfo
=
tree
.
findNearest
(
fc
,
Foam
::
sqr
(
absTol
));
if
(
index
!=
-
1
)
if
(
nearInfo
.
hit
()
)
{
label
mesh0FaceI
=
shapes
.
meshFaces
()[
index
];
label
mesh0FaceI
=
tree
.
shapes
().
faceLabels
()[
nearInfo
.
index
()
];
// Check if points of f1 actually lie on top of mesh0 face
// This is the bit that might fail since if f0 is severely warped
...
...
src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8.C
View file @
e57e8603
This diff is collapsed.
Click to expand it.
src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8.H
View file @
e57e8603
...
...
@@ -174,9 +174,12 @@ class hexRef8
label
findMaxLevel
(
const
labelList
&
f
)
const
;
//- Count number of vertices <= anchorLevel
label
countAnchors
(
const
labelList
&
,
const
label
)
const
;
//- Debugging: dump cell as .obj file
void
dumpCell
(
const
label
cellI
)
const
;
//- Find index of point with wantedLevel, starting from fp.
label
findLevel
(
const
label
faceI
,
const
face
&
f
,
const
label
startFp
,
const
bool
searchForward
,
...
...
src/dynamicMesh/polyTopoChange/polyTopoChange/removeFaces.C
View file @
e57e8603
...
...
@@ -807,7 +807,7 @@ void Foam::removeFaces::setRefinement
// Edges to remove
labelHashSet
edgesToRemove
(
faceLabels
.
size
());
// Per face the region it is. -1 for removed faces, -2 for regions
// Per face the region it is
in
. -1 for removed faces, -2 for regions
// consisting of single face only.
labelList
faceRegion
(
mesh_
.
nFaces
(),
-
1
);
...
...
@@ -1258,10 +1258,15 @@ void Foam::removeFaces::setRefinement
// are only used by 2 unremoved edges.
{
// Usage of points by non-removed edges.
labelList
nEdgesPerPoint
(
mesh_
.
nPoints
()
,
labelMax
);
labelList
nEdgesPerPoint
(
mesh_
.
nPoints
());
const
labelListList
&
pointEdges
=
mesh_
.
pointEdges
();
forAll
(
pointEdges
,
pointI
)
{
nEdgesPerPoint
[
pointI
]
=
pointEdges
[
pointI
].
size
();
}
forAllConstIter
(
labelHashSet
,
edgesToRemove
,
iter
)
{
// Edge will get removed.
...
...
@@ -1269,16 +1274,7 @@ void Foam::removeFaces::setRefinement
forAll
(
e
,
i
)
{
label
pointI
=
e
[
i
];
if
(
nEdgesPerPoint
[
pointI
]
==
labelMax
)
{
nEdgesPerPoint
[
pointI
]
=
pointEdges
[
pointI
].
size
()
-
1
;
}
else
{
nEdgesPerPoint
[
pointI
]
--
;
}
nEdgesPerPoint
[
e
[
i
]]
--
;
}
}
...
...
src/finiteVolume/fields/fvPatchFields/derived/directMappedFixedValue/directMappedFixedValueFvPatchField.C
View file @
e57e8603
...
...
@@ -159,7 +159,7 @@ void directMappedFixedValueFvPatchField<Type>::updateCoeffs()
// Get the scheduling information
const
List
<
labelPair
>&
schedule
=
mpp
.
schedule
();
const
labelListList
&
send
Cell
Labels
=
mpp
.
send
Cell
Labels
();
const
labelListList
&
sendLabels
=
mpp
.
sendLabels
();
const
labelListList
&
receiveFaceLabels
=
mpp
.
receiveFaceLabels
();
...
...
@@ -177,7 +177,7 @@ void directMappedFixedValueFvPatchField<Type>::updateCoeffs()
toProc
<<
IndirectList
<
Type
>
(
this
->
internalField
(),
send
Cell
Labels
[
recvProc
]
sendLabels
[
recvProc
]
)();
}
else
...
...
@@ -204,7 +204,7 @@ void directMappedFixedValueFvPatchField<Type>::updateCoeffs()
IndirectList
<
Type
>
fromFld
(
this
->
internalField
(),
send
Cell
Labels
[
Pstream
::
myProcNo
()]
sendLabels
[
Pstream
::
myProcNo
()]
);
// Destination faces
...
...
src/lagrangian/basic/Cloud/CloudIO.C
View file @
e57e8603
...
...
@@ -118,7 +118,8 @@ void Foam::Cloud<ParticleType>::checkFieldIOobject
"void Cloud<ParticleType>::checkFieldIOobject"
"(Cloud<ParticleType>, IOField<DataType>)"
)
<<
"Size of "
<<
data
.
name
()
<<
" field does not match the number of particles"
<<
" field "
<<
data
.
size
()
<<
" does not match the number of particles "
<<
c
.
size
()
<<
abort
(
FatalError
);
}
}
...
...
src/meshTools/Make/options
View file @
e57e8603
...
...
@@ -3,5 +3,5 @@ EXE_INC = \
-I$(LIB_SRC)/lagrangian/basic/lnInclude
LIB_LIBS = \
-ltriSurface \
-llagrangian
-ltriSurface \
-llagrangian
src/meshTools/directMapped/directMappedPolyPatch/directMappedPolyPatch.C
View file @
e57e8603
...
...
@@ -40,6 +40,18 @@ namespace Foam
addToRunTimeSelectionTable
(
polyPatch
,
directMappedPolyPatch
,
word
);
addToRunTimeSelectionTable
(
polyPatch
,
directMappedPolyPatch
,
dictionary
);
template
<>
const
char
*
NamedEnum
<
directMappedPolyPatch
::
sampleMode
,
3
>::
names
[]
=
{
"nearestCell"
,
"nearestPatchFace"
,
"nearestFace"
};
const
NamedEnum
<
directMappedPolyPatch
::
sampleMode
,
3
>
directMappedPolyPatch
::
sampleModeNames_
;
}
...
...
@@ -113,107 +125,236 @@ void Foam::directMappedPolyPatch::collectSamples
void
Foam
::
directMappedPolyPatch
::
findSamples
(
const
pointField
&
samples
,
labelList
&
sample
Cell
Procs
,
labelList
&
sample
Cell
s
,
pointField
&
sample
Cc
labelList
&
sampleProcs
,
labelList
&
sample
Indice
s
,
pointField
&
sample
Locations
)
const
{
sampleCellProcs
.
setSize
(
samples
.
size
());
sampleCells
.
setSize
(
samples
.
size
());
sampleCc
.
setSize
(
samples
.
size
());
sampleCc
=
point
(
-
GREAT
,
-
GREAT
,
-
GREAT
);
const
polyMesh
&
mesh
=
boundaryMesh
().
mesh
();
// All the info for nearest. Construct to miss
List
<
nearInfo
>
nearest
(
samples
.
size
());
switch
(
mode_
)
{
// Octree based search engine
meshSearch
meshSearchEngine
(
boundaryMesh
().
mesh
(),
false
);
case
NEARESTCELL
:
{
if
(
samplePatch_
.
size
()
!=
0
&&
samplePatch_
!=
"none"
)
{
FatalErrorIn
(
"directMappedPolyPatch::findSamples(const pointField&,"
" labelList&, labelList&, pointField&) const"
)
<<
"No need to supply a patch name when in "
<<
sampleModeNames_
[
mode_
]
<<
" mode."
<<
exit
(
FatalError
);
}
// Octree based search engine
meshSearch
meshSearchEngine
(
mesh
,
false
);
forAll
(
samples
,
sampleI
)
{
const
point
&
sample
=
samples
[
sampleI
];
label
cellI
=
meshSearchEngine
.
findCell
(
sample
);
if
(
cellI
==
-
1
)
{
nearest
[
sampleI
].
second
().
first
()
=
Foam
::
sqr
(
GREAT
);
nearest
[
sampleI
].
second
().
second
()
=
Pstream
::
myProcNo
();
}
else
{
const
point
&
cc
=
mesh
.
cellCentres
()[
cellI
];
nearest
[
sampleI
].
first
()
=
pointIndexHit
(
true
,
cc
,
cellI
);
nearest
[
sampleI
].
second
().
first
()
=
magSqr
(
cc
-
sample
);
nearest
[
sampleI
].
second
().
second
()
=
Pstream
::
myProcNo
();
}
}
break
;
}
forAll
(
samples
,
sampleI
)
case
NEARESTPATCHFACE
:
{
sampleCells
[
sampleI
]
=
meshSearchEngine
.
findCell
(
samples
[
sampleI
]
);
label
patchI
=
boundaryMesh
().
findPatchID
(
samplePatch_
);
if
(
sampleCells
[
sampleI
]
==
-
1
)
if
(
patchI
==
-
1
)
{
sampleCellProcs
[
sampleI
]
=
-
1
;
FatalErrorIn
(
"directMappedPolyPatch::findSamples(..)"
)
<<
"Cannot find patch "
<<
samplePatch_
<<
endl
<<
"Valid patches are "
<<
boundaryMesh
().
names
()
<<
exit
(
FatalError
);
}
else
Random
rndGen
(
123456
);
const
polyPatch
&
pp
=
boundaryMesh
()[
patchI
];
// patch faces
const
labelList
patchFaces
(
identity
(
pp
.
size
())
+
pp
.
start
());
const
treeBoundBox
patchBb
(
treeBoundBox
(
pp
.
points
(),
pp
.
meshPoints
()).
extend
(
rndGen
,
1E-4
)
);
autoPtr
<
indexedOctree
<
treeDataFace
>
>
boundaryTree
(
new
indexedOctree
<
treeDataFace
>
(
treeDataFace
// all information needed to search faces
(
false
,
// do not cache bb
mesh
,
patchFaces
// boundary faces only
),
patchBb
,
// overall search domain
8
,
// maxLevel
10
,
// leafsize
3
.
0
// duplicity
)
);
forAll
(
samples
,
sampleI
)
{
sampleCellProcs
[
sampleI
]
=
Pstream
::
myProcNo
();
sampleCc
[
sampleI
]
=
boundaryMesh
().
mesh
().
cellCentres
()[
sampleCells
[
sampleI
]];
const
point
&
sample
=
samples
[
sampleI
];
pointIndexHit
&
nearInfo
=
nearest
[
sampleI
].
first
();
nearInfo
=
boundaryTree
().
findNearest
(
sample
,
magSqr
(
patchBb
.
max
()
-
patchBb
.
min
())
);
if
(
!
nearInfo
.
hit
())
{
nearest
[
sampleI
].
second
().
first
()
=
Foam
::
sqr
(
GREAT
);
nearest
[
sampleI
].
second
().
second
()
=
Pstream
::
myProcNo
();
}
else
{
point
fc
(
pp
[
nearInfo
.
index
()].
centre
(
pp
.
points
()));
nearInfo
.
setPoint
(
fc
);
nearest
[
sampleI
].
second
().
first
()
=
magSqr
(
fc
-
sample
);
nearest
[
sampleI
].
second
().
second
()
=
Pstream
::
myProcNo
();
}
}
break
;
}
}
// Use only that processor that contains the sample
Pstream
::
listCombineGather
(
sampleCells
,
maxEqOp
<
label
>
());
Pstream
::
listCombineScatter
(
sampleCells
);
case
NEARESTFACE
:
{
if
(
samplePatch_
.
size
()
!=
0
&&
samplePatch_
!=
"none"
)
{
FatalErrorIn
(
"directMappedPolyPatch::findSamples(const pointField&,"
" labelList&, labelList&, pointField&) const"
)
<<
"No need to supply a patch name when in "
<<
sampleModeNames_
[
mode_
]
<<
" mode."
<<
exit
(
FatalError
);
}
labelList
minSampleCellProcs
(
sampleCellProcs
);
Pstream
::
listCombineGather
(
sampleCellProcs
,
maxEqOp
<
label
>
());
Pstream
::
listCombineScatter
(
sampleCellProcs
);
// Octree based search engine
meshSearch
meshSearchEngine
(
mesh
,
false
);
Pstream
::
listCombineGather
(
sampleCc
,
maxEqOp
<
point
>
());
Pstream
::
listCombineScatter
(
sampleCc
);
forAll
(
samples
,
sampleI
)
{
const
point
&
sample
=
samples
[
sampleI
];
label
faceI
=
meshSearchEngine
.
findNearestFace
(
sample
);
if
(
faceI
==
-
1
)
{