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
6ccdc774
Commit
6ccdc774
authored
Jan 17, 2019
by
mattijs
Browse files
BUG: trackingInverseDistance: fix trackingInverseDistance. Fixes
#736
.
parent
56406493
Changes
15
Hide whitespace changes
Inline
Side-by-side
applications/utilities/mesh/generation/extrude/extrudeMesh/extrudeMesh.C
View file @
6ccdc774
...
...
@@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\/ M anipulation | Copyright (C) 2015-201
7
OpenCFD Ltd.
\\/ M anipulation | Copyright (C) 2015-201
9
OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
...
...
@@ -48,6 +48,7 @@ Description
#include
"MeshedSurfaces.H"
#include
"globalIndex.H"
#include
"cellSet.H"
#include
"fvMeshTools.H"
#include
"extrudedMesh.H"
#include
"extrudeModel.H"
...
...
@@ -78,59 +79,6 @@ static const Enum<ExtrudeMode> ExtrudeModeNames
};
void
createDummyFvMeshFiles
(
const
polyMesh
&
mesh
,
const
word
&
regionName
)
{
// Create dummy system/fv*
{
IOobject
io
(
"fvSchemes"
,
mesh
.
time
().
system
(),
regionName
,
mesh
,
IOobject
::
NO_READ
,
IOobject
::
NO_WRITE
,
false
);
Info
<<
"Testing:"
<<
io
.
objectPath
()
<<
endl
;
if
(
!
io
.
typeHeaderOk
<
IOdictionary
>
(
false
))
{
Info
<<
"Writing dummy "
<<
regionName
/
io
.
name
()
<<
endl
;
dictionary
dummyDict
;
dictionary
divDict
;
dummyDict
.
add
(
"divSchemes"
,
divDict
);
dictionary
gradDict
;
dummyDict
.
add
(
"gradSchemes"
,
gradDict
);
dictionary
laplDict
;
dummyDict
.
add
(
"laplacianSchemes"
,
laplDict
);
IOdictionary
(
io
,
dummyDict
).
regIOobject
::
write
();
}
}
{
IOobject
io
(
"fvSolution"
,
mesh
.
time
().
system
(),
regionName
,
mesh
,
IOobject
::
NO_READ
,
IOobject
::
NO_WRITE
,
false
);
if
(
!
io
.
typeHeaderOk
<
IOdictionary
>
(
false
))
{
Info
<<
"Writing dummy "
<<
regionName
/
io
.
name
()
<<
endl
;
dictionary
dummyDict
;
IOdictionary
(
io
,
dummyDict
).
regIOobject
::
write
();
}
}
}
label
findPatchID
(
const
polyBoundaryMesh
&
patches
,
const
word
&
name
)
{
const
label
patchID
=
patches
.
findPatchID
(
name
);
...
...
@@ -738,7 +686,7 @@ int main(int argc, char *argv[])
// Create dummy fvSchemes, fvSolution
createDummyFvMeshFiles
(
mesh
,
regionDir
);
fvMeshTools
::
createDummyFvMeshFiles
(
mesh
,
regionDir
,
true
);
// Create actual mesh from polyTopoChange container
autoPtr
<
mapPolyMesh
>
map
=
meshMod
().
makeMesh
...
...
applications/utilities/mesh/generation/extrude/extrudeToRegionMesh/extrudeToRegionMesh.C
View file @
6ccdc774
...
...
@@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\/ M anipulation | Copyright (C) 2015-201
6
OpenCFD Ltd.
\\/ M anipulation | Copyright (C) 2015-201
9
OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
...
...
@@ -353,59 +353,6 @@ void deleteEmptyPatches(fvMesh& mesh)
}
void
createDummyFvMeshFiles
(
const
polyMesh
&
mesh
,
const
word
&
regionName
)
{
// Create dummy system/fv*
{
IOobject
io
(
"fvSchemes"
,
mesh
.
time
().
system
(),
regionName
,
mesh
,
IOobject
::
NO_READ
,
IOobject
::
NO_WRITE
,
false
);
Info
<<
"Testing:"
<<
io
.
objectPath
()
<<
endl
;
if
(
!
io
.
typeHeaderOk
<
IOdictionary
>
(
true
))
{
Info
<<
"Writing dummy "
<<
regionName
/
io
.
name
()
<<
endl
;
dictionary
dummyDict
;
dictionary
divDict
;
dummyDict
.
add
(
"divSchemes"
,
divDict
);
dictionary
gradDict
;
dummyDict
.
add
(
"gradSchemes"
,
gradDict
);
dictionary
laplDict
;
dummyDict
.
add
(
"laplacianSchemes"
,
laplDict
);
IOdictionary
(
io
,
dummyDict
).
regIOobject
::
write
();
}
}
{
IOobject
io
(
"fvSolution"
,
mesh
.
time
().
system
(),
regionName
,
mesh
,
IOobject
::
NO_READ
,
IOobject
::
NO_WRITE
,
false
);
if
(
!
io
.
typeHeaderOk
<
IOdictionary
>
(
true
))
{
Info
<<
"Writing dummy "
<<
regionName
/
io
.
name
()
<<
endl
;
dictionary
dummyDict
;
IOdictionary
(
io
,
dummyDict
).
regIOobject
::
write
();
}
}
}
// Check zone either all internal or all external faces
void
checkZoneInside
(
...
...
@@ -1642,7 +1589,7 @@ int main(int argc, char *argv[])
// Create dummy fv* files
createDummyFvMeshFiles
(
mesh
,
shellRegionName
);
fvMeshTools
::
createDummyFvMeshFiles
(
mesh
,
shellRegionName
,
true
);
word
meshInstance
;
...
...
applications/utilities/mesh/manipulation/splitMeshRegions/splitMeshRegions.C
View file @
6ccdc774
...
...
@@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation | Copyright (C) 2015-201
7
OpenCFD Ltd.
\\/ M anipulation | Copyright (C) 2015-201
9
OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
...
...
@@ -584,56 +584,7 @@ autoPtr<mapPolyMesh> createRegionMesh
)
{
// Create dummy system/fv*
{
IOobject
io
(
"fvSchemes"
,
mesh
.
time
().
system
(),
regionName
,
mesh
,
IOobject
::
NO_READ
,
IOobject
::
NO_WRITE
,
false
);
Info
<<
"Testing:"
<<
io
.
objectPath
()
<<
endl
;
if
(
!
io
.
typeHeaderOk
<
IOdictionary
>
(
true
))
// if (!exists(io.objectPath()))
{
Info
<<
"Writing dummy "
<<
regionName
/
io
.
name
()
<<
endl
;
dictionary
dummyDict
;
dictionary
divDict
;
dummyDict
.
add
(
"divSchemes"
,
divDict
);
dictionary
gradDict
;
dummyDict
.
add
(
"gradSchemes"
,
gradDict
);
dictionary
laplDict
;
dummyDict
.
add
(
"laplacianSchemes"
,
laplDict
);
IOdictionary
(
io
,
dummyDict
).
regIOobject
::
write
();
}
}
{
IOobject
io
(
"fvSolution"
,
mesh
.
time
().
system
(),
regionName
,
mesh
,
IOobject
::
NO_READ
,
IOobject
::
NO_WRITE
,
false
);
if
(
!
io
.
typeHeaderOk
<
IOdictionary
>
(
true
))
//if (!exists(io.objectPath()))
{
Info
<<
"Writing dummy "
<<
regionName
/
io
.
name
()
<<
endl
;
dictionary
dummyDict
;
IOdictionary
(
io
,
dummyDict
).
regIOobject
::
write
();
}
}
fvMeshTools
::
createDummyFvMeshFiles
(
mesh
,
regionName
,
true
);
// Neighbour cellRegion.
labelList
coupledRegion
(
mesh
.
nBoundaryFaces
());
...
...
src/Allwmake
View file @
6ccdc774
...
...
@@ -53,7 +53,6 @@ wmake $targetType topoChangerFvMesh
parallel/Allwmake
$targetType
$*
randomProcesses/Allwmake
$targetType
$*
wmake
$targetType
overset
wmake
$targetType
ODE
transportModels/Allwmake
$targetType
$*
...
...
@@ -67,6 +66,7 @@ wmake $targetType fvOptions
wmake
$targetType
fvMotionSolver
mesh/Allwmake
$targetType
$*
wmake
$targetType
overset
renumber/Allwmake
$targetType
$*
fvAgglomerationMethods/Allwmake
$targetType
$*
wmake
$targetType
waveModels
...
...
src/dynamicMesh/fvMeshTools/fvMeshTools.C
View file @
6ccdc774
...
...
@@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation
\\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd.
\\/ M anipulation | Copyright (C) 2015
-2019
OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
...
...
@@ -667,4 +667,66 @@ Foam::autoPtr<Foam::fvMesh> Foam::fvMeshTools::newMesh
}
void
Foam
::
fvMeshTools
::
createDummyFvMeshFiles
(
const
objectRegistry
&
mesh
,
const
word
&
regionName
,
const
bool
verbose
)
{
// Create dummy system/fv*
{
IOobject
io
(
"fvSchemes"
,
mesh
.
time
().
system
(),
regionName
,
mesh
,
IOobject
::
NO_READ
,
IOobject
::
NO_WRITE
,
false
);
if
(
!
io
.
typeHeaderOk
<
IOdictionary
>
(
false
))
{
if
(
verbose
)
{
Info
<<
"Writing dummy "
<<
regionName
/
io
.
name
()
<<
endl
;
}
dictionary
dummyDict
;
dictionary
divDict
;
dummyDict
.
add
(
"divSchemes"
,
divDict
);
dictionary
gradDict
;
dummyDict
.
add
(
"gradSchemes"
,
gradDict
);
dictionary
laplDict
;
dummyDict
.
add
(
"laplacianSchemes"
,
laplDict
);
IOdictionary
(
io
,
dummyDict
).
regIOobject
::
write
();
}
}
{
IOobject
io
(
"fvSolution"
,
mesh
.
time
().
system
(),
regionName
,
mesh
,
IOobject
::
NO_READ
,
IOobject
::
NO_WRITE
,
false
);
if
(
!
io
.
typeHeaderOk
<
IOdictionary
>
(
false
))
{
if
(
verbose
)
{
Info
<<
"Writing dummy "
<<
regionName
/
io
.
name
()
<<
endl
;
}
dictionary
dummyDict
;
IOdictionary
(
io
,
dummyDict
).
regIOobject
::
write
();
}
}
}
// ************************************************************************* //
src/dynamicMesh/fvMeshTools/fvMeshTools.H
View file @
6ccdc774
...
...
@@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation
\\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd.
\\/ M anipulation | Copyright (C) 2015
-2019
OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
...
...
@@ -137,6 +137,14 @@ public:
const
IOobject
&
io
,
const
bool
masterOnlyReading
);
//- Create additional fv* files
static
void
createDummyFvMeshFiles
(
const
objectRegistry
&
parent
,
const
word
&
regionName
,
const
bool
verbose
=
false
);
};
...
...
src/overset/Make/options
View file @
6ccdc774
...
...
@@ -4,6 +4,7 @@
EXE_INC = \
-I$(LIB_SRC)/fileFormats/lnInclude \
-I$(LIB_SRC)/mesh/blockMesh/lnInclude \
-I$(LIB_SRC)/surfMesh/lnInclude \
-I$(LIB_SRC)/sampling/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
...
...
@@ -15,4 +16,5 @@ EXE_INC = \
LIB_LIBS = \
-ldynamicFvMesh \
-lsampling \
-lblockMesh \
-ldecompositionMethods
src/overset/cellCellStencil/cellCellStencil/cellCellStencil.H
View file @
6ccdc774
...
...
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2017-201
8
OpenCFD Ltd.
\\ / A nd | Copyright (C) 2017-201
9
OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
...
...
@@ -97,7 +97,12 @@ protected:
//- Helper: create volScalarField for postprocessing.
template
<
class
Type
>
tmp
<
volScalarField
>
createField
(
const
word
&
name
,
UList
<
Type
>&
)
const
;
static
tmp
<
volScalarField
>
createField
(
const
fvMesh
&
mesh
,
const
word
&
name
,
const
UList
<
Type
>&
);
private:
...
...
src/overset/cellCellStencil/cellCellStencil/cellCellStencilTemplates.C
View file @
6ccdc774
...
...
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2018 OpenCFD Ltd.
\\ / A nd | Copyright (C) 2018
-2019
OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
...
...
@@ -29,7 +29,12 @@ License
template
<
class
Type
>
Foam
::
tmp
<
Foam
::
volScalarField
>
Foam
::
cellCellStencil
::
createField
(
const
word
&
name
,
UList
<
Type
>&
psi
)
const
Foam
::
cellCellStencil
::
createField
(
const
fvMesh
&
mesh
,
const
word
&
name
,
const
UList
<
Type
>&
psi
)
{
tmp
<
volScalarField
>
tfld
(
...
...
@@ -38,13 +43,13 @@ Foam::cellCellStencil::createField(const word& name, UList<Type>& psi) const
IOobject
(
name
,
mesh
_
.
time
().
timeName
(),
mesh
_
,
mesh
.
time
().
timeName
(),
mesh
,
IOobject
::
NO_READ
,
IOobject
::
NO_WRITE
,
false
),
mesh
_
,
mesh
,
dimensionedScalar
(
dimless
,
Zero
),
zeroGradientFvPatchScalarField
::
typeName
)
...
...
src/overset/cellCellStencil/cellVolumeWeight/cellVolumeWeightCellCellStencil.C
View file @
6ccdc774
...
...
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2014-201
8
OpenCFD Ltd.
\\ / A nd | Copyright (C) 2014-201
9
OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
...
...
@@ -155,12 +155,12 @@ void Foam::cellCellStencils::cellVolumeWeight::walkFront
{
allWeight
[
own
]
=
fraction
;
if
(
debug
)
{
Pout
<<
" setting cell "
<<
mesh_
.
cellCentres
()[
own
]
<<
" to "
<<
fraction
<<
endl
;
}
//
if (debug)
//
{
//
Pout<< " setting cell "
//
<< mesh_.cellCentres()[own]
//
<< " to " << fraction << endl;
//
}
allCellTypes
[
own
]
=
INTERPOLATED
;
newIsFront
.
set
(
mesh_
.
cells
()[
own
]);
}
...
...
@@ -174,12 +174,12 @@ void Foam::cellCellStencils::cellVolumeWeight::walkFront
{
allWeight
[
nei
]
=
fraction
;
if
(
debug
)
{
Pout
<<
" setting cell "
<<
mesh_
.
cellCentres
()[
nei
]
<<
" to "
<<
fraction
<<
endl
;
}
//
if (debug)
//
{
//
Pout<< " setting cell "
//
<< mesh_.cellCentres()[nei]
//
<< " to " << fraction << endl;
//
}
allCellTypes
[
nei
]
=
INTERPOLATED
;
newIsFront
.
set
(
mesh_
.
cells
()[
nei
]);
...
...
@@ -928,6 +928,16 @@ bool Foam::cellCellStencils::cellVolumeWeight::update()
}
if
(
debug
)
{
tmp
<
volScalarField
>
tfld
(
createField
(
mesh_
,
"allCellTypes"
,
allCellTypes
)
);
tfld
().
write
();
}
// Use the patch types and weights to decide what to do
forAll
(
allPatchTypes
,
cellI
)
{
...
...
@@ -977,15 +987,44 @@ bool Foam::cellCellStencils::cellVolumeWeight::update()
}
}
if
(
debug
)
{
tmp
<
volScalarField
>
tfld
(
createField
(
mesh_
,
"allCellTypes_patch"
,
allCellTypes
)
);
//tfld.ref().correctBoundaryConditions();
tfld
().
write
();
}
// Mark unreachable bits
findHoles
(
globalCells
,
mesh_
,
zoneID
,
allStencil
,
allCellTypes
);
if
(
debug
)
{
tmp
<
volScalarField
>
tfld
(
createField
(
mesh_
,
"allCellTypes_hole"
,
allCellTypes
)
);
//tfld.ref().correctBoundaryConditions();
tfld
().
write
();
}
// Add buffer interpolation layer around holes
scalarField
allWeight
(
mesh_
.
nCells
(),
Zero
);
walkFront
(
layerRelax
,
allCellTypes
,
allWeight
);
if
(
debug
)
{
tmp
<
volScalarField
>
tfld
(
createField
(
mesh_
,
"allCellTypes_front"
,
allCellTypes
)
);
//tfld.ref().correctBoundaryConditions();
tfld
().
write
();
}
// Check previous iteration cellTypes_ for any hole->calculated changes
{
...
...
@@ -1104,39 +1143,39 @@ bool Foam::cellCellStencils::cellVolumeWeight::update()
}
//
// Check previous iteration cellTypes_ for any hole->calculated changes
//
{
//
label nCalculated = 0;
// // Check previous iteration cellTypes_ for any hole->calculated changes
// {
// label nCalculated = 0;
//
//
forAll(cellTypes_, celli)
//
{
//
if (allCellTypes[celli] == CALCULATED && cellTypes_[celli] == HOLE)
//
{
//
if (allStencil[celli].size() == 0)
//
{
//
FatalErrorInFunction
//
<< "Cell:" << celli
//
<< " at:" << mesh_.cellCentres()[celli]
//
<< " zone:" << zoneID[celli]
//
<< " changed from hole to calculated"
//
<< " but there is no donor"
//
<< exit(FatalError);
//
}
//
else
//
{
//
allCellTypes[celli] = INTERPOLATED;
//
nCalculated++;
//
}
//
}
//
}
// forAll(cellTypes_, celli)
// {
// if (allCellTypes[celli] == CALCULATED && cellTypes_[celli] == HOLE)
// {
// if (allStencil[celli].size() == 0)
// {
// FatalErrorInFunction
// << "Cell:" << celli
// << " at:" << mesh_.cellCentres()[celli]
// << " zone:" << zoneID[celli]
// << " changed from hole to calculated"
// << " but there is no donor"
// << exit(FatalError);
// }
// else
// {
// allCellTypes[celli] = INTERPOLATED;
// nCalculated++;
// }
// }
// }
//
//
if (debug)
//
{
//
Pout<< "Detected " << nCalculated << " cells changing from hole"
//
<< " to calculated. Changed these to interpolated"
//
<< endl;
//
}
//
}
// if (debug)
// {
// Pout<< "Detected " << nCalculated << " cells changing from hole"
// << " to calculated. Changed these to interpolated"
// << endl;
// }
// }
c