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
66f473b1
Commit
66f473b1
authored
Dec 22, 2017
by
Andrew Heather
Browse files
ENH: Updated extractEulerianParticles and deps after change to barycentric tracking
parent
e60a7744
Changes
14
Hide whitespace changes
Inline
Side-by-side
src/functionObjects/field/extractEulerianParticles/extractEulerianParticles/extractEulerianParticles.C
View file @
66f473b1
...
...
@@ -314,7 +314,8 @@ void Foam::functionObjects::extractEulerianParticles::collectParticles
tag
,
time
,
d
,
U
U
,
false
// not looking to set cell owner etc.
);
cloud_
.
addParticle
(
ip
);
...
...
src/lagrangian/basic/Cloud/Cloud.C
View file @
66f473b1
...
...
@@ -76,10 +76,10 @@ Foam::Cloud<ParticleType>::Cloud
:
cloud
(
pMesh
,
cloudName
),
IDLList
<
ParticleType
>
(),
geometryType_
(
IOPosition
<
Cloud
<
ParticleType
>>::
geometryType
::
COORDINATES
),
polyMesh_
(
pMesh
),
labels_
(),
globalPositionsPtr_
()
globalPositionsPtr_
(),
geometryType_
(
IOPosition
<
Cloud
<
ParticleType
>>::
geometryType
::
COORDINATES
)
{
checkPatches
();
...
...
src/lagrangian/basic/Cloud/Cloud.H
View file @
66f473b1
...
...
@@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
\\/ M anipulation |
Copyright (C) 2017 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
...
...
@@ -75,9 +75,6 @@ class Cloud
{
// Private data
//- Geometry type
typename
IOPosition
<
Cloud
<
ParticleType
>>::
geometryType
geometryType_
;
//- Reference to the mesh database
const
polyMesh
&
polyMesh_
;
...
...
@@ -109,6 +106,12 @@ class Cloud
void
writeCloudUniformProperties
()
const
;
protected:
//- Geometry type
typename
IOPosition
<
Cloud
<
ParticleType
>>::
geometryType
geometryType_
;
public:
friend
class
particle
;
...
...
src/lagrangian/basic/Cloud/CloudIO.C
View file @
66f473b1
...
...
@@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
\\/ M anipulation |
Copyright (C) 2017 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
...
...
@@ -167,10 +167,10 @@ Foam::Cloud<ParticleType>::Cloud
)
:
cloud
(
pMesh
,
cloudName
),
geometryType_
(
IOPosition
<
Cloud
<
ParticleType
>>::
geometryType
::
COORDINATES
),
polyMesh_
(
pMesh
),
labels_
(),
cellWallFacesPtr_
()
cellWallFacesPtr_
(),
geometryType_
(
IOPosition
<
Cloud
<
ParticleType
>>::
geometryType
::
COORDINATES
)
{
checkPatches
();
...
...
src/lagrangian/basic/injectedParticle/injectedParticle.C
View file @
66f473b1
...
...
@@ -38,6 +38,7 @@ namespace Foam
Foam
::
injectedParticle
::
injectedParticle
(
const
injectedParticle
&
p
)
:
particle
(
p
),
position_
(
p
.
position_
),
tag_
(
p
.
tag_
),
soi_
(
p
.
soi_
),
d_
(
p
.
d_
),
...
...
@@ -52,6 +53,7 @@ Foam::injectedParticle::injectedParticle
)
:
particle
(
p
,
mesh
),
position_
(
p
.
position_
),
tag_
(
p
.
tag_
),
soi_
(
p
.
soi_
),
d_
(
p
.
d_
),
...
...
src/lagrangian/basic/injectedParticle/injectedParticle.H
View file @
66f473b1
...
...
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2016 OpenCFD Ltd.
\\ / A nd | Copyright (C) 2016
-2017
OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
...
...
@@ -25,11 +25,18 @@ Class
Foam::injectedParticle
Description
Primarly stores particle properties so that it can be injected at a later
time. Note that this stores its own local position as opposed to the
base particle class barycentric coordinates since the particle is not
(usually) attached to a mesh, and instead used for post-processing.
SourceFiles
injectedParticle.C
injectedParticleIO.C
SeeAlso
Foam::functionObjects::extractEulerianParticles
\*---------------------------------------------------------------------------*/
#ifndef injectedParticle_H
...
...
@@ -74,6 +81,9 @@ protected:
// Particle properties
//- Position
point
position_
;
//- Tag
label
tag_
;
...
...
@@ -125,7 +135,8 @@ public:
const
label
tag
,
const
scalar
soi
,
const
scalar
d
,
const
vector
&
U
const
vector
&
U
,
const
bool
doLocate
=
true
);
//- Construct from Istream
...
...
@@ -225,6 +236,11 @@ public:
objectRegistry
&
obr
);
//- Write the particle position and cell
// Note: This uses the local particle position, and bypasses the
// barycentric description
virtual
void
writePosition
(
Ostream
&
)
const
;
// Ostream Operator
...
...
src/lagrangian/basic/injectedParticle/injectedParticleCloud.C
View file @
66f473b1
...
...
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2016 OpenCFD Ltd.
\\ / A nd | Copyright (C) 2016
-2017
OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
...
...
@@ -41,6 +41,9 @@ Foam::injectedParticleCloud::injectedParticleCloud
:
Cloud
<
injectedParticle
>
(
mesh
,
cloudName
,
false
)
{
geometryType_
=
IOPosition
<
Cloud
<
injectedParticle
>>::
geometryType
::
POSITIONS
;
if
(
readFields
)
{
injectedParticle
::
readFields
(
*
this
);
...
...
src/lagrangian/basic/injectedParticle/injectedParticleI.H
View file @
66f473b1
...
...
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2016 OpenCFD Ltd.
\\ / A nd | Copyright (C) 2016
-2017
OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
...
...
@@ -33,10 +33,12 @@ inline Foam::injectedParticle::injectedParticle
const
label
tag
,
const
scalar
soi
,
const
scalar
d
,
const
vector
&
U
const
vector
&
U
,
const
bool
doLocate
)
:
particle
(
mesh
,
position
,
-
1
),
particle
(
mesh
,
position
,
-
1
,
-
1
,
-
1
,
doLocate
),
position_
(
position
),
tag_
(
tag
),
soi_
(
soi
),
d_
(
d
),
...
...
src/lagrangian/basic/injectedParticle/injectedParticleIO.C
View file @
66f473b1
...
...
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2016 OpenCFD Ltd.
\\ / A nd | Copyright (C) 2016
-2017
OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
...
...
@@ -38,6 +38,7 @@ Foam::string Foam::injectedParticle::propertyTypes_ =
const
std
::
size_t
Foam
::
injectedParticle
::
sizeofFields
(
// Note: does not include position_
sizeof
(
label
)
+
sizeof
(
scalar
)
+
sizeof
(
scalar
)
+
sizeof
(
vector
)
);
...
...
@@ -52,7 +53,8 @@ Foam::injectedParticle::injectedParticle
bool
newFormat
)
:
particle
(
mesh
,
is
,
readFields
,
newFormat
),
particle
(
mesh
,
is
,
readFields
,
false
),
// force to read old positions file
position_
(
Zero
),
tag_
(
-
1
),
soi_
(
0
.
0
),
d_
(
0
.
0
),
...
...
@@ -60,6 +62,11 @@ Foam::injectedParticle::injectedParticle
{
if
(
readFields
)
{
// After the base particle class has read the fields from file and
// constructed the necessary barcentric co-ordinates we can update the
// particle position on this mesh
position_
=
particle
::
position
();
if
(
is
.
format
()
==
IOstream
::
ASCII
)
{
tag_
=
readLabel
(
is
);
...
...
@@ -84,6 +91,8 @@ void Foam::injectedParticle::readFields(Cloud<injectedParticle>& c)
return
;
}
// Note: not reading local position_ - defer to base particle class
particle
::
readFields
(
c
);
IOField
<
label
>
tag
(
c
.
fieldIOobject
(
"tag"
,
IOobject
::
MUST_READ
));
...
...
@@ -100,7 +109,7 @@ void Foam::injectedParticle::readFields(Cloud<injectedParticle>& c)
label
i
=
0
;
forAllIter
(
Cloud
<
injectedParticle
>
,
c
,
iter
)
forAllIter
s
(
c
,
iter
)
{
injectedParticle
&
p
=
iter
();
...
...
@@ -116,8 +125,14 @@ void Foam::injectedParticle::readFields(Cloud<injectedParticle>& c)
void
Foam
::
injectedParticle
::
writeFields
(
const
Cloud
<
injectedParticle
>&
c
)
{
// Force writing positions instead of coordinates
particle
::
writeLagrangianCoordinates
=
false
;
particle
::
writeLagrangianPositions
=
true
;
particle
::
writeFields
(
c
);
// Note: not writing local position_ - defer to base particle class
label
np
=
c
.
size
();
IOField
<
label
>
tag
(
c
.
fieldIOobject
(
"tag"
,
IOobject
::
NO_READ
),
np
);
...
...
@@ -127,7 +142,7 @@ void Foam::injectedParticle::writeFields(const Cloud<injectedParticle>& c)
label
i
=
0
;
forAllConstIter
(
Cloud
<
injectedParticle
>
,
c
,
iter
)
forAllConstIter
s
(
c
,
iter
)
{
const
injectedParticle
&
p
=
iter
();
...
...
@@ -152,6 +167,10 @@ void Foam::injectedParticle::writeObjects
objectRegistry
&
obr
)
{
// Force writing positions instead of coordinates
particle
::
writeLagrangianCoordinates
=
false
;
particle
::
writeLagrangianPositions
=
true
;
particle
::
writeObjects
(
c
,
obr
);
label
np
=
c
.
size
();
...
...
@@ -163,7 +182,7 @@ void Foam::injectedParticle::writeObjects
label
i
=
0
;
forAllConstIter
(
Cloud
<
injectedParticle
>
,
c
,
iter
)
forAllConstIter
s
(
c
,
iter
)
{
const
injectedParticle
&
p
=
iter
();
...
...
@@ -177,6 +196,40 @@ void Foam::injectedParticle::writeObjects
}
void
Foam
::
injectedParticle
::
writePosition
(
Ostream
&
os
)
const
{
if
(
os
.
format
()
==
IOstream
::
ASCII
)
{
os
<<
position_
<<
token
::
SPACE
<<
cell
();
}
else
{
struct
oldParticle
{
vector
position
;
label
celli
;
label
facei
;
scalar
stepFraction
;
label
tetFacei
;
label
tetPti
;
label
origProc
;
label
origId
;
}
p
;
const
size_t
s
=
offsetof
(
oldParticle
,
facei
)
-
offsetof
(
oldParticle
,
position
);
p
.
position
=
position_
;
p
.
celli
=
cell
();
os
.
write
(
reinterpret_cast
<
const
char
*>
(
&
p
.
position
),
s
);
}
// Check state of Ostream
os
.
check
(
FUNCTION_NAME
);
}
// * * * * * * * * * * * * * * * IOstream Operators * * * * * * * * * * * * //
Foam
::
Ostream
&
Foam
::
operator
<<
...
...
@@ -185,6 +238,8 @@ Foam::Ostream& Foam::operator<<
const
injectedParticle
&
p
)
{
// Note: not writing local position_ - defer to base particle class
if
(
os
.
format
()
==
IOstream
::
ASCII
)
{
os
<<
static_cast
<
const
particle
&>
(
p
)
...
...
src/lagrangian/basic/particle/particle.C
View file @
66f473b1
...
...
@@ -37,6 +37,10 @@ Foam::label Foam::particle::particleCount_ = 0;
namespace
Foam
{
defineTypeNameAndDebug
(
particle
,
0
);
bool
particle
::
writeLagrangianCoordinates
(
debug
::
infoSwitch
(
"writeLagrangianCoordinates"
,
1
)
);
bool
particle
::
writeLagrangianPositions
(
debug
::
infoSwitch
(
"writeLagrangianPositions"
,
0
)
...
...
src/lagrangian/basic/particle/particle.H
View file @
66f473b1
...
...
@@ -87,9 +87,6 @@ class particle
{
// Private member data
//- Write particle positions file (v1706 format and earlier)
static
bool
writeLagrangianPositions
;
//- Size in bytes of the position data
static
const
std
::
size_t
sizeofPosition
;
...
...
@@ -348,6 +345,14 @@ public:
//- Cumulative particle counter - used to provide unique ID
static
label
particleCount_
;
//- Write particle coordinates file (v1712 and later)
//- Default is true
static
bool
writeLagrangianCoordinates
;
//- Write particle positions file (v1706 format and earlier)
//- Default is false
static
bool
writeLagrangianPositions
;
// Constructors
...
...
@@ -685,7 +690,7 @@ public:
void
writeCoordinates
(
Ostream
&
)
const
;
//- Write the particle position and cell
void
writePosition
(
Ostream
&
)
const
;
virtual
void
writePosition
(
Ostream
&
)
const
;
// Friend Operators
...
...
src/lagrangian/basic/particle/particleTemplates.C
View file @
66f473b1
...
...
@@ -72,6 +72,7 @@ void Foam::particle::writeFields(const TrackCloudType& c)
{
label
np
=
c
.
size
();
if
(
writeLagrangianCoordinates
)
{
IOPosition
<
TrackCloudType
>
ioP
(
c
);
ioP
.
write
(
np
>
0
);
...
...
tutorials/multiphase/interFoam/laminar/vofToLagrangian/lagrangianDistributionInjection/Allrun
View file @
66f473b1
...
...
@@ -27,14 +27,16 @@ copyLagrangianData()
exit
1
fi
dir
=
$dir
/
${
latestTime
}
/lagrangian
udir
=
$dir
/
${
latestTime
}
/uniform/lagrangian
ldir
=
$dir
/
${
latestTime
}
/lagrangian
if
[
-d
$dir
]
then
echo
"Copying lagrangian data from
$dir
to 0 directory"
\c
p
-r
$dir
0
echo
"Copying lagrangian data from
$ldir
to 0 directory"
\c
p
-r
$ldir
0
mkdir
0/uniform
&&
\c
p
-r
$udir
0/uniform
else
echo
"Error: unable to find Lagrangian data in case
$dir
"
echo
"Error: unable to find Lagrangian data in case
$
l
dir
"
exit
1
fi
}
...
...
@@ -46,10 +48,12 @@ copyLagrangianData ${eulerianCase}
runApplication blockMesh
runApplication decomposePar
#runApplication decomposePar
#runParallel $(getApplication)
run
Parallel
$(
getApplication
)
#
run
Application reconstructPar
runApplication
reconstructPar
runApplication
$(
getApplication
)
#------------------------------------------------------------------------------
tutorials/multiphase/interFoam/laminar/vofToLagrangian/lagrangianParticleInjection/Allrun
View file @
66f473b1
...
...
@@ -27,14 +27,16 @@ copyLagrangianData()
exit
1
fi
dir
=
$dir
/
${
latestTime
}
/lagrangian
udir
=
$dir
/
${
latestTime
}
/uniform/lagrangian
ldir
=
$dir
/
${
latestTime
}
/lagrangian
if
[
-d
$dir
]
then
echo
"Copying lagrangian data from
$dir
to 0 directory"
\c
p
-r
$dir
0
echo
"Copying lagrangian data from
$ldir
to 0 directory"
\c
p
-r
$ldir
0
mkdir
0/uniform
&&
\c
p
-r
$udir
0/uniform
else
echo
"Error: unable to find Lagrangian data in case
$dir
"
echo
"Error: unable to find Lagrangian data in case
$
l
dir
"
exit
1
fi
}
...
...
@@ -46,10 +48,13 @@ copyLagrangianData ${eulerianCase}
runApplication blockMesh
runApplication decomposePar
#runApplication decomposePar
#runParallel $(getApplication)
#runApplication reconstructPar
run
Parallel
$(
getApplication
)
run
Application
$(
getApplication
)
runApplication reconstructPar
#------------------------------------------------------------------------------
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