Skip to content
GitLab
Menu
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
c891e706
Commit
c891e706
authored
Jan 26, 2011
by
Mark Olesen
Browse files
Merge remote branch 'OpenCFD/master' into olesenm
parents
0498967c
d404293a
Changes
96
Expand all
Hide whitespace changes
Inline
Side-by-side
ReleaseNotes-dev
View file @
c891e706
...
...
@@ -5,7 +5,7 @@
#+DATE: TBA
#+LINK: http://www.openfoam.com
#+OPTIONS: author:nil ^:{}
# Copyright (c) 201
0
OpenCFD Ltd.
# Copyright (c) 201
1
OpenCFD Ltd.
* Overview
OpenFOAM-dev is the latest major release of OpenFOAM including many new
...
...
@@ -117,7 +117,7 @@
*** *New* compact binary I/O for faces and cells. This speeds up reading/writing meshes in binary.
*** *Updated* runTimeModifiable
+ user selectable model to use for checking run-time modifiable
dictionaries:
dictionaries
(see also doc/changes/inotify.txt)
:
+ timeStamp : use time stamp as before
+ inotify : use inotify instead of time stamp
+ timeStampMaster : only master checks and reads file. Slaves get file
...
...
applications/test/globalMeshData/Test-globalMeshData.C
View file @
c891e706
...
...
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2004-201
0
OpenCFD Ltd.
\\ / A nd | Copyright (C) 2004-201
1
OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
...
...
@@ -50,133 +50,71 @@ int main(int argc, char *argv[])
const
globalMeshData
&
globalData
=
mesh
.
globalData
();
const
indirectPrimitivePatch
&
coupledPatch
=
globalData
.
coupledPatch
();
const
globalIndexAndTransform
&
transforms
=
globalData
.
globalTransforms
();
// Test:print
(collocated)
shared points
// Test:print shared points
{
const
labelListList
&
globalPointSlaves
=
globalData
.
globalPointSlaves
();
const
mapDistribute
&
globalPointSlavesMap
=
globalData
.
globalPointSlavesMap
();
const
labelListList
&
slaves
=
globalData
.
globalPointSlaves
();
const
labelListList
&
transformedSlaves
=
globalData
.
globalPointTransformedSlaves
();
// Create field with my local data
pointField
coords
(
globalPointSlavesMap
.
constructSize
());
SubList
<
point
>
(
coords
,
coupledPatch
.
nPoints
()).
assign
(
coupledPatch
.
localPoints
()
);
// Exchange data
globalPointSlavesMap
.
distribute
(
coords
);
// Exchange data
. Apply positional transforms.
globalPointSlavesMap
.
distribute
(
transforms
,
coords
,
true
);
// Print
forAll
(
globalPointS
laves
,
pointI
)
forAll
(
s
laves
,
pointI
)
{
const
labelList
&
slavePoints
=
globalPointS
laves
[
pointI
];
const
labelList
&
slavePoints
=
s
laves
[
pointI
];
if
(
slavePoints
.
size
()
>
0
)
{
Pout
<<
"Master point:"
<<
pointI
<<
" coord:"
<<
coords
[
pointI
]
<<
" connected to slave points:"
<<
endl
;
<<
" connected to
untransformed
slave points:"
<<
endl
;
forAll
(
slavePoints
,
i
)
{
Pout
<<
" "
<<
coords
[
slavePoints
[
i
]]
<<
endl
;
}
}
}
}
// Test: (collocated) point to faces addressing
{
const
labelListList
&
globalPointBoundaryFaces
=
globalData
.
globalPointBoundaryFaces
();
const
mapDistribute
&
globalPointBoundaryFacesMap
=
globalData
.
globalPointBoundaryFacesMap
();
label
nBnd
=
mesh
.
nFaces
()
-
mesh
.
nInternalFaces
();
pointField
fc
(
globalPointBoundaryFacesMap
.
constructSize
());
SubList
<
point
>
(
fc
,
nBnd
).
assign
(
primitivePatch
(
SubList
<
face
>
(
mesh
.
faces
(),
nBnd
,
mesh
.
nInternalFaces
()
),
mesh
.
points
()
).
faceCentres
()
);
// Exchange data
globalPointBoundaryFacesMap
.
distribute
(
fc
);
const
labelList
&
transformedSlavePoints
=
transformedSlaves
[
pointI
];
// Print
forAll
(
globalPointBoundaryFaces
,
pointI
)
{
const
labelList
&
bFaces
=
globalPointBoundaryFaces
[
pointI
];
Pout
<<
"Point:"
<<
pointI
<<
" at:"
<<
coupledPatch
.
localPoints
()[
pointI
]
<<
" connected to faces:"
<<
endl
;
forAll
(
bFaces
,
i
)
if
(
transformedSlavePoints
.
size
()
>
0
)
{
Pout
<<
" "
<<
fc
[
bFaces
[
i
]]
<<
endl
;
}
}
}
// Test:(collocated) point to cells addressing
{
const
labelList
&
boundaryCells
=
globalData
.
boundaryCells
();
const
labelListList
&
globalPointBoundaryCells
=
globalData
.
globalPointBoundaryCells
();
const
mapDistribute
&
globalPointBoundaryCellsMap
=
globalData
.
globalPointBoundaryCellsMap
();
pointField
cc
(
globalPointBoundaryCellsMap
.
constructSize
());
forAll
(
boundaryCells
,
i
)
{
cc
[
i
]
=
mesh
.
cellCentres
()[
boundaryCells
[
i
]];
}
// Exchange data
globalPointBoundaryCellsMap
.
distribute
(
cc
);
// Print
forAll
(
globalPointBoundaryCells
,
pointI
)
{
const
labelList
&
bCells
=
globalPointBoundaryCells
[
pointI
];
Pout
<<
"Point:"
<<
pointI
<<
" at:"
<<
coupledPatch
.
localPoints
()[
pointI
]
<<
" connected to cells:"
<<
endl
;
Pout
<<
"Master point:"
<<
pointI
<<
" coord:"
<<
coords
[
pointI
]
<<
" connected to transformed slave points:"
<<
endl
;
forAll
(
bCells
,
i
)
{
Pout
<<
" "
<<
cc
[
bCells
[
i
]]
<<
endl
;
forAll
(
transformedSlavePoints
,
i
)
{
Pout
<<
" "
<<
coords
[
transformedSlavePoints
[
i
]]
<<
endl
;
}
}
}
}
// Test:print (collocated) shared edges
// Test:print shared edges
{
const
labelListList
&
globalEdgeSlaves
=
globalData
.
globalEdgeSlaves
();
const
mapDistribute
&
globalEdgeSlavesMap
=
globalData
.
globalEdgeSlavesMap
();
const
labelListList
&
slaves
=
globalData
.
globalEdgeSlaves
();
const
labelListList
&
transformedSlaves
=
globalData
.
globalEdgeTransformedSlaves
();
// Test: distribute edge centres
pointField
ec
(
globalEdgeSlavesMap
.
constructSize
());
...
...
@@ -188,13 +126,13 @@ int main(int argc, char *argv[])
);
}
// Exchange data
globalEdgeSlavesMap
.
distribute
(
e
c
);
// Exchange data
Apply positional transforms.
globalEdgeSlavesMap
.
distribute
(
transforms
,
ec
,
tru
e
);
// Print
forAll
(
globalEdgeS
laves
,
edgeI
)
forAll
(
s
laves
,
edgeI
)
{
const
labelList
&
slaveEdges
=
globalEdgeS
laves
[
edgeI
];
const
labelList
&
slaveEdges
=
s
laves
[
edgeI
];
if
(
slaveEdges
.
size
()
>
0
)
{
...
...
@@ -207,10 +145,102 @@ int main(int argc, char *argv[])
Pout
<<
" "
<<
ec
[
slaveEdges
[
i
]]
<<
endl
;
}
}
const
labelList
&
transformedSlaveEdges
=
transformedSlaves
[
edgeI
];
if
(
transformedSlaveEdges
.
size
()
>
0
)
{
Pout
<<
"Master edge:"
<<
edgeI
<<
" centre:"
<<
ec
[
edgeI
]
<<
" connected to transformed slave edges:"
<<
endl
;
forAll
(
transformedSlaveEdges
,
i
)
{
Pout
<<
" "
<<
ec
[
transformedSlaveEdges
[
i
]]
<<
endl
;
}
}
}
}
//// Test: (collocated) point to faces addressing
//{
// const labelListList& globalPointBoundaryFaces =
// globalData.globalPointBoundaryFaces();
// const mapDistribute& globalPointBoundaryFacesMap =
// globalData.globalPointBoundaryFacesMap();
//
// label nBnd = mesh.nFaces()-mesh.nInternalFaces();
//
// pointField fc(globalPointBoundaryFacesMap.constructSize());
// SubList<point>(fc, nBnd).assign
// (
// primitivePatch
// (
// SubList<face>
// (
// mesh.faces(),
// nBnd,
// mesh.nInternalFaces()
// ),
// mesh.points()
// ).faceCentres()
// );
//
// // Exchange data
// globalPointBoundaryFacesMap.distribute(fc);
//
// // Print
// forAll(globalPointBoundaryFaces, pointI)
// {
// const labelList& bFaces = globalPointBoundaryFaces[pointI];
//
// Pout<< "Point:" << pointI
// << " at:" << coupledPatch.localPoints()[pointI]
// << " connected to faces:" << endl;
//
// forAll(bFaces, i)
// {
// Pout<< " " << fc[bFaces[i]] << endl;
// }
// }
//}
//
//
//// Test:(collocated) point to cells addressing
//{
// const labelList& boundaryCells = globalData.boundaryCells();
// const labelListList& globalPointBoundaryCells =
// globalData.globalPointBoundaryCells();
// const mapDistribute& globalPointBoundaryCellsMap =
// globalData.globalPointBoundaryCellsMap();
//
// pointField cc(globalPointBoundaryCellsMap.constructSize());
// forAll(boundaryCells, i)
// {
// cc[i] = mesh.cellCentres()[boundaryCells[i]];
// }
//
// // Exchange data
// globalPointBoundaryCellsMap.distribute(cc);
//
// // Print
// forAll(globalPointBoundaryCells, pointI)
// {
// const labelList& bCells = globalPointBoundaryCells[pointI];
//
// Pout<< "Point:" << pointI
// << " at:" << coupledPatch.localPoints()[pointI]
// << " connected to cells:" << endl;
//
// forAll(bCells, i)
// {
// Pout<< " " << cc[bCells[i]] << endl;
// }
// }
//}
Info
<<
"End
\n
"
<<
endl
;
return
0
;
...
...
applications/test/lduMatrix/Make/files
deleted
100644 → 0
View file @
0498967c
Test-lduMatrix3.C
EXE = $(FOAM_USER_APPBIN)/Test-lduMatrix
applications/test/lduMatrix/Make/options
deleted
100644 → 0
View file @
0498967c
EXE_INC = \
-I$(LIB_SRC)/finiteVolume/lnInclude
EXE_LIBS = -lfiniteVolume
applications/test/lduMatrix/Test-lduMatrix.C
deleted
100644 → 0
View file @
0498967c
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
\*---------------------------------------------------------------------------*/
#include
"argList.H"
#include
"Time.H"
#include
"fvMesh.H"
#include
"volFields.H"
#include
"LduMatrix.H"
#include
"diagTensorField.H"
#include
"TPCG.H"
#include
"TPBiCG.H"
#include
"NoPreconditioner.H"
using
namespace
Foam
;
typedef
Foam
::
LduMatrix
<
vector
,
diagTensor
,
scalar
>
lduVectorMatrix
;
defineNamedTemplateTypeNameAndDebug
(
lduVectorMatrix
,
0
);
typedef
Foam
::
DiagonalSolver
<
vector
,
diagTensor
,
scalar
>
lduVectorDiagonalSolver
;
defineNamedTemplateTypeNameAndDebug
(
lduVectorDiagonalSolver
,
0
);
template
<>
const
vector
lduVectorMatrix
::
great_
(
1e15
,
1e15
,
1e15
);
template
<>
const
vector
lduVectorMatrix
::
small_
(
1e-15
,
1e-15
,
1e-15
);
namespace
Foam
{
typedef
LduMatrix
<
vector
,
diagTensor
,
scalar
>::
preconditioner
lduVectorPreconditioner
;
defineTemplateRunTimeSelectionTable
(
lduVectorPreconditioner
,
symMatrix
);
defineTemplateRunTimeSelectionTable
(
lduVectorPreconditioner
,
asymMatrix
);
typedef
LduMatrix
<
vector
,
diagTensor
,
scalar
>::
smoother
lduVectorSmoother
;
defineTemplateRunTimeSelectionTable
(
lduVectorSmoother
,
symMatrix
);
defineTemplateRunTimeSelectionTable
(
lduVectorSmoother
,
asymMatrix
);
typedef
LduMatrix
<
vector
,
diagTensor
,
scalar
>::
solver
lduVectorSolver
;
defineTemplateRunTimeSelectionTable
(
lduVectorSolver
,
symMatrix
);
defineTemplateRunTimeSelectionTable
(
lduVectorSolver
,
asymMatrix
);
typedef
TPCG
<
vector
,
diagTensor
,
scalar
>
TPCGVector
;
defineNamedTemplateTypeNameAndDebug
(
TPCGVector
,
0
);
LduMatrix
<
vector
,
diagTensor
,
scalar
>::
solver
::
addsymMatrixConstructorToTable
<
TPCGVector
>
addTPCGSymMatrixConstructorToTable_
;
typedef
TPBiCG
<
vector
,
diagTensor
,
scalar
>
TPBiCGVector
;
defineNamedTemplateTypeNameAndDebug
(
TPBiCGVector
,
0
);
LduMatrix
<
vector
,
diagTensor
,
scalar
>::
solver
::
addasymMatrixConstructorToTable
<
TPBiCGVector
>
addTPBiCGSymMatrixConstructorToTable_
;
typedef
NoPreconditioner
<
vector
,
diagTensor
,
scalar
>
NoPreconditionerVector
;
defineNamedTemplateTypeNameAndDebug
(
NoPreconditionerVector
,
0
);
LduMatrix
<
vector
,
diagTensor
,
scalar
>::
preconditioner
::
addsymMatrixConstructorToTable
<
NoPreconditionerVector
>
addNoPreconditionerSymMatrixConstructorToTable_
;
LduMatrix
<
vector
,
diagTensor
,
scalar
>::
preconditioner
::
addasymMatrixConstructorToTable
<
NoPreconditionerVector
>
addNoPreconditionerAsymMatrixConstructorToTable_
;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// Main program:
int
main
(
int
argc
,
char
*
argv
[])
{
# include "setRootCase.H"
# include "createTime.H"
# include "createMesh.H"
volVectorField
psi
(
IOobject
(
"U"
,
runTime
.
timeName
(),
mesh
,
IOobject
::
MUST_READ
,
IOobject
::
AUTO_WRITE
),
mesh
);
lduVectorMatrix
testMatrix
(
mesh
);
testMatrix
.
diag
()
=
2
*
pTraits
<
diagTensor
>::
one
;
testMatrix
.
source
()
=
pTraits
<
vector
>::
one
;
testMatrix
.
upper
()
=
0
.
1
;
testMatrix
.
lower
()
=
-
0
.
1
;
Info
<<
testMatrix
<<
endl
;
FieldField
<
Field
,
scalar
>
boundaryCoeffs
(
0
);
FieldField
<
Field
,
scalar
>
internalCoeffs
(
0
);
autoPtr
<
lduVectorMatrix
::
solver
>
testMatrixSolver
=
lduVectorMatrix
::
solver
::
New
(
psi
.
name
(),
testMatrix
,
boundaryCoeffs
,
internalCoeffs
,
psi
.
boundaryField
().
interfaces
(),
IStringStream
(
"PBiCG"
"{"
" preconditioner none;"
" tolerance (1e-05 1e-05 1e-05);"
" relTol (0 0 0);"
"}"
)()
);
lduVectorMatrix
::
solverPerformance
solverPerf
=
testMatrixSolver
->
solve
(
psi
);
solverPerf
.
print
();
Info
<<
psi
<<
endl
;
Info
<<
"End
\n
"
<<
endl
;
return
0
;
}
// ************************************************************************* //
applications/test/lduMatrix/Test-lduMatrix2.C
deleted
100644 → 0
View file @
0498967c
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
\*---------------------------------------------------------------------------*/
#include
"argList.H"
#include
"Time.H"
#include
"fvMesh.H"
#include
"volFields.H"
#include
"LduMatrix.H"
#include
"tensorField.H"
#include
"TPCG.H"
#include
"TPBiCG.H"
#include
"NoPreconditioner.H"
using
namespace
Foam
;
typedef
Foam
::
LduMatrix
<
vector
,
tensor
,
scalar
>
lduVectorMatrix
;
defineNamedTemplateTypeNameAndDebug
(
lduVectorMatrix
,
0
);
typedef
Foam
::
DiagonalSolver
<
vector
,
tensor
,
scalar
>
lduVectorDiagonalSolver
;
defineNamedTemplateTypeNameAndDebug
(
lduVectorDiagonalSolver
,
0
);
template
<>
const
vector
lduVectorMatrix
::
great_
(
1e15
,
1e15
,
1e15
);
template
<>
const
vector
lduVectorMatrix
::
small_
(
1e-15
,
1e-15
,
1e-15
);
namespace
Foam
{
typedef
LduMatrix
<
vector
,
tensor
,
scalar
>::
preconditioner
lduVectorPreconditioner
;
defineTemplateRunTimeSelectionTable
(
lduVectorPreconditioner
,
symMatrix
);
defineTemplateRunTimeSelectionTable
(
lduVectorPreconditioner
,
asymMatrix
);
typedef
LduMatrix
<
vector
,
tensor
,
scalar
>::
smoother
lduVectorSmoother
;
defineTemplateRunTimeSelectionTable
(
lduVectorSmoother
,
symMatrix
);
defineTemplateRunTimeSelectionTable
(
lduVectorSmoother
,
asymMatrix
);
typedef
LduMatrix
<
vector
,
tensor
,
scalar
>::
solver
lduVectorSolver
;
defineTemplateRunTimeSelectionTable
(
lduVectorSolver
,
symMatrix
);
defineTemplateRunTimeSelectionTable
(
lduVectorSolver
,
asymMatrix
);
typedef
TPCG
<
vector
,
tensor
,
scalar
>
TPCGVector
;
defineNamedTemplateTypeNameAndDebug
(
TPCGVector
,
0
);
LduMatrix
<
vector
,
tensor
,
scalar
>::
solver
::
addsymMatrixConstructorToTable
<
TPCGVector
>
addTPCGSymMatrixConstructorToTable_
;
typedef
TPBiCG
<
vector
,
tensor
,
scalar
>
TPBiCGVector
;
defineNamedTemplateTypeNameAndDebug
(
TPBiCGVector
,
0
);
LduMatrix
<
vector
,
tensor
,
scalar
>::
solver
::
addasymMatrixConstructorToTable
<
TPBiCGVector
>
addTPBiCGSymMatrixConstructorToTable_
;
typedef
NoPreconditioner
<
vector
,
tensor
,
scalar
>
NoPreconditionerVector
;
defineNamedTemplateTypeNameAndDebug
(
NoPreconditionerVector
,
0
);
LduMatrix
<
vector
,
tensor
,
scalar
>::
preconditioner
::
addsymMatrixConstructorToTable
<
NoPreconditionerVector
>
addNoPreconditionerSymMatrixConstructorToTable_
;
LduMatrix
<
vector
,
tensor
,
scalar
>::
preconditioner
::
addasymMatrixConstructorToTable
<
NoPreconditionerVector
>
addNoPreconditionerAsymMatrixConstructorToTable_
;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// Main program:
int
main
(
int
argc
,
char
*
argv
[])
{
# include "setRootCase.H"
# include "createTime.H"
# include "createMesh.H"
volVectorField
psi
(
IOobject
(
"U"
,
runTime
.
timeName
(),
mesh
,
IOobject
::
MUST_READ
,
IOobject
::
AUTO_WRITE
),
mesh
);
lduVectorMatrix
testMatrix
(
mesh
);
testMatrix
.
diag
()
=
2
*
I
;
testMatrix
.
source
()
=
pTraits
<
vector
>::
one
;
testMatrix
.
upper
()
=
0
.
1
;
testMatrix
.
lower
()
=
-
0
.
1
;
Info
<<
testMatrix
<<
endl
;
FieldField
<
Field
,
scalar
>
boundaryCoeffs
(
0
);