Merge branch 'HrvojeJasak'
This commit is contained in:
commit
4d500e1873
23 changed files with 299 additions and 239 deletions
|
@ -22,7 +22,14 @@ is to formalize this spirit.
|
||||||
|
|
||||||
In the absence of a legal resolution, we shall refer to the project as the
|
In the absence of a legal resolution, we shall refer to the project as the
|
||||||
-Extend project and software as "OpenFOAM", as per agreement between
|
-Extend project and software as "OpenFOAM", as per agreement between
|
||||||
Prof. Hrvoje Jasak and Mr. Henry G. Weller of 30 September 2004
|
Prof. Hrvoje Jasak and Mr. Henry G. Weller of 30 September 2004.
|
||||||
|
|
||||||
|
The excerpts below are from the correspondences of Dr.Jasak and are to
|
||||||
|
his knowledge all the relevant writings about this topic. Although
|
||||||
|
this topic has been discussed before in public forums there exists no
|
||||||
|
'official' answer by OpenCFD on this issue. In the interest of
|
||||||
|
fairness a reference (link) to such an answer will be added to this
|
||||||
|
document as soon as we come aware of it.
|
||||||
|
|
||||||
09/30/2004 01:45 PM
|
09/30/2004 01:45 PM
|
||||||
|
|
||||||
|
@ -93,7 +100,7 @@ is to formalize this spirit.
|
||||||
developers of OpenFOAM from its inception to today.
|
developers of OpenFOAM from its inception to today.
|
||||||
|
|
||||||
As this issue still remains unresolved, and the list of contributors
|
As this issue still remains unresolved, and the list of contributors
|
||||||
has been illegally removed from the source code by Mr. Weller in 2006,
|
has been removed from the OpenFOAM source code by Mr. Weller in 2006,
|
||||||
we shall re-base OpenFOAM as an Open Source community-based project
|
we shall re-base OpenFOAM as an Open Source community-based project
|
||||||
and associate the authorship and Copyright in each case with the
|
and associate the authorship and Copyright in each case with the
|
||||||
original author.
|
original author.
|
||||||
|
|
51
README
51
README
|
@ -169,23 +169,64 @@
|
||||||
Hrvoje Jasak
|
Hrvoje Jasak
|
||||||
Mattijs Janssens
|
Mattijs Janssens
|
||||||
Zeljko Tukovic
|
Zeljko Tukovic
|
||||||
|
Bernhard Gschaider
|
||||||
Tommaso Lucchini
|
Tommaso Lucchini
|
||||||
|
Martin Beaudoin
|
||||||
Sandeep Menon
|
Sandeep Menon
|
||||||
Niklas Nordin
|
Niklas Nordin
|
||||||
Martin Beaudoin
|
|
||||||
Eugene De Villiers
|
Eugene De Villiers
|
||||||
Henrik Rusche
|
Henrik Rusche
|
||||||
Bernhard Gschaider
|
|
||||||
Ivor Clifford
|
Ivor Clifford
|
||||||
Oliver Borm
|
|
||||||
Philiposse Rajan
|
Philiposse Rajan
|
||||||
Chris Greenshields
|
|
||||||
Mark Olesen
|
|
||||||
Gavin Tabor
|
Gavin Tabor
|
||||||
Jovani Favero
|
Jovani Favero
|
||||||
Frank Bos
|
Frank Bos
|
||||||
David Hill
|
David Hill
|
||||||
Niklas Wikstrom
|
Niklas Wikstrom
|
||||||
Dubravko Matijasevic
|
Dubravko Matijasevic
|
||||||
|
Darrin Stephens
|
||||||
|
Christian Beck
|
||||||
|
Oliver Borm
|
||||||
|
James Criner
|
||||||
|
Hua Shan
|
||||||
|
David Boner
|
||||||
|
Pierre-Olivier Dallaire
|
||||||
|
Norman Del Puppo
|
||||||
|
Dennis Kingsley
|
||||||
|
Frank Albina
|
||||||
|
Flavio Galeazzo
|
||||||
|
Hannes Kroger
|
||||||
|
Olivier Petit
|
||||||
|
David Schmidt
|
||||||
|
Andreas Feymark
|
||||||
|
Luca Mangani
|
||||||
|
Daniel Schmode
|
||||||
|
Christoph Goniva
|
||||||
|
Takuya Oshima
|
||||||
|
Juho Peltola
|
||||||
|
Eric Paterson
|
||||||
|
Fabian Peng Karrholm
|
||||||
|
Aleksandar Karac
|
||||||
|
Maria Garcia Camprubi
|
||||||
|
Chris Greenshields
|
||||||
|
Mark Olesen
|
||||||
Hilary Spencer
|
Hilary Spencer
|
||||||
Andy Heather
|
Andy Heather
|
||||||
|
# -*- mode: org; -*-
|
||||||
|
#
|
||||||
|
#+TITLE: *OpenFOAM README for version 1.6-ext*
|
||||||
|
#+AUTHOR: Hrvoje Jasak.
|
||||||
|
#+DATE: 12 November 2010
|
||||||
|
#+LINK: http://www.extend-project.de
|
||||||
|
#+OPTIONS: author:nil
|
||||||
|
|
||||||
|
* Copyright
|
||||||
|
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 2 of the License, or (at your option) any later
|
||||||
|
version. See the file COPYING in this directory, for a description of
|
||||||
|
the GNU General Public License terms under which you can copy the files.
|
||||||
|
|
||||||
|
* System requirements
|
||||||
|
OpenFOAM is developed and tested on Linux and Mac OS X.
|
||||||
|
E
|
|
@ -279,7 +279,7 @@ SunOS)
|
||||||
cat <<USAGE
|
cat <<USAGE
|
||||||
|
|
||||||
Your "$WM_ARCH" operating system is not supported by this release
|
Your "$WM_ARCH" operating system is not supported by this release
|
||||||
of OpenFOAM. For further assistance, please contact www.openfoam.org
|
of OpenFOAM. For further assistance, please contact www.extend-project.de
|
||||||
|
|
||||||
USAGE
|
USAGE
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -384,14 +384,14 @@ public:
|
||||||
//- Initialise evaluation of the patch field (do nothing)
|
//- Initialise evaluation of the patch field (do nothing)
|
||||||
virtual void initEvaluate
|
virtual void initEvaluate
|
||||||
(
|
(
|
||||||
const Pstream::commsTypes commsType=Pstream::blocking
|
const Pstream::commsTypes commsType = Pstream::blocking
|
||||||
)
|
)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
//- Evaluate the patch field
|
//- Evaluate the patch field
|
||||||
virtual void evaluate
|
virtual void evaluate
|
||||||
(
|
(
|
||||||
const Pstream::commsTypes commsType=Pstream::blocking
|
const Pstream::commsTypes commsType = Pstream::blocking
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Update boundary value
|
//- Update boundary value
|
||||||
|
|
|
@ -147,7 +147,7 @@ public:
|
||||||
//- Evaluate the patch field
|
//- Evaluate the patch field
|
||||||
virtual void evaluate
|
virtual void evaluate
|
||||||
(
|
(
|
||||||
const Pstream::commsTypes commsType=Pstream::blocking
|
const Pstream::commsTypes commsType = Pstream::blocking
|
||||||
) = 0;
|
) = 0;
|
||||||
|
|
||||||
//- Add field to internal field
|
//- Add field to internal field
|
||||||
|
|
|
@ -208,7 +208,7 @@ FixedValuePointPatchField<PatchField, Mesh, PointPatch, MatrixType, Type>
|
||||||
{
|
{
|
||||||
Field<Type>::operator=(ptf);
|
Field<Type>::operator=(ptf);
|
||||||
|
|
||||||
// insert the result into the internal field
|
// Insert the result into the internal field
|
||||||
initEvaluate();
|
initEvaluate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -243,7 +243,8 @@ template
|
||||||
template<class> class MatrixType,
|
template<class> class MatrixType,
|
||||||
class Type
|
class Type
|
||||||
>
|
>
|
||||||
void FixedValuePointPatchField<PatchField, Mesh, PointPatch, MatrixType, Type>::
|
void
|
||||||
|
FixedValuePointPatchField<PatchField, Mesh, PointPatch, MatrixType, Type>::
|
||||||
operator==
|
operator==
|
||||||
(
|
(
|
||||||
const Type& t
|
const Type& t
|
||||||
|
|
|
@ -138,7 +138,7 @@ public:
|
||||||
// there's nothing to do
|
// there's nothing to do
|
||||||
virtual void initEvaluate
|
virtual void initEvaluate
|
||||||
(
|
(
|
||||||
const Pstream::commsTypes commsType=Pstream::blocking
|
const Pstream::commsTypes commsType = Pstream::blocking
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
ValuePointPatchField
|
ValuePointPatchField
|
||||||
|
@ -148,7 +148,7 @@ public:
|
||||||
|
|
||||||
virtual void evaluate
|
virtual void evaluate
|
||||||
(
|
(
|
||||||
const Pstream::commsTypes commsType=Pstream::blocking
|
const Pstream::commsTypes commsType = Pstream::blocking
|
||||||
)
|
)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
|
@ -178,7 +178,7 @@ public:
|
||||||
//- Evaluate the patch field
|
//- Evaluate the patch field
|
||||||
virtual void evaluate
|
virtual void evaluate
|
||||||
(
|
(
|
||||||
const Pstream::commsTypes commsType=Pstream::blocking
|
const Pstream::commsTypes commsType = Pstream::blocking
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Update boundary value
|
//- Update boundary value
|
||||||
|
|
|
@ -186,7 +186,7 @@ public:
|
||||||
//- Evaluate the patch field
|
//- Evaluate the patch field
|
||||||
virtual void evaluate
|
virtual void evaluate
|
||||||
(
|
(
|
||||||
const Pstream::commsTypes commsType=Pstream::blocking
|
const Pstream::commsTypes commsType = Pstream::blocking
|
||||||
)
|
)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
|
@ -269,13 +269,13 @@ public:
|
||||||
//- Initialise evaluation of the patch field
|
//- Initialise evaluation of the patch field
|
||||||
virtual void initEvaluate
|
virtual void initEvaluate
|
||||||
(
|
(
|
||||||
const Pstream::commsTypes commsType=Pstream::blocking
|
const Pstream::commsTypes commsType = Pstream::blocking
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Evaluate the patch field
|
//- Evaluate the patch field
|
||||||
virtual void evaluate
|
virtual void evaluate
|
||||||
(
|
(
|
||||||
const Pstream::commsTypes commsType=Pstream::blocking
|
const Pstream::commsTypes commsType = Pstream::blocking
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Init add field to internal field
|
//- Init add field to internal field
|
||||||
|
|
|
@ -152,7 +152,7 @@ public:
|
||||||
//- Update the patch field
|
//- Update the patch field
|
||||||
virtual void evaluate
|
virtual void evaluate
|
||||||
(
|
(
|
||||||
const Pstream::commsTypes commsType=Pstream::blocking
|
const Pstream::commsTypes commsType = Pstream::blocking
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ Class
|
||||||
fixedValue/zeroGradient mix may be different for each direction.
|
fixedValue/zeroGradient mix may be different for each direction.
|
||||||
|
|
||||||
I am still not sure how to do the fixedValue-fixedGradient
|
I am still not sure how to do the fixedValue-fixedGradient
|
||||||
combination.
|
combination. HJ, date deleted
|
||||||
|
|
||||||
Description
|
Description
|
||||||
|
|
||||||
|
|
|
@ -508,29 +508,33 @@ void GlobalPointPatchField
|
||||||
// Create the global list and insert local values
|
// Create the global list and insert local values
|
||||||
if (globalPointPatch_.globalPointSize() > 0)
|
if (globalPointPatch_.globalPointSize() > 0)
|
||||||
{
|
{
|
||||||
Field<Type> gpf
|
// Bug fix: use map-based communication. HJ, 18/Nov/2010
|
||||||
(
|
|
||||||
globalPointPatch_.globalPointSize(),
|
|
||||||
pTraits<Type>::zero
|
|
||||||
);
|
|
||||||
|
|
||||||
|
// Get addressing
|
||||||
const labelList& sharedPointAddr =
|
const labelList& sharedPointAddr =
|
||||||
globalPointPatch_.sharedPointAddr();
|
globalPointPatch_.sharedPointAddr();
|
||||||
|
|
||||||
|
// Get internal field data
|
||||||
Field<Type> pField = this->patchInternalField();
|
Field<Type> pField = this->patchInternalField();
|
||||||
|
|
||||||
|
// Pack data into a map
|
||||||
|
Map<Type> dataMap;
|
||||||
|
|
||||||
forAll (sharedPointAddr, i)
|
forAll (sharedPointAddr, i)
|
||||||
{
|
{
|
||||||
gpf[sharedPointAddr[i]] = pField[i];
|
dataMap.insert(sharedPointAddr[i], pField[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
combineReduce(gpf, eqOp<Field<Type> >());
|
// Communicate map
|
||||||
|
Pstream::mapCombineGather(dataMap, eqOp<Type>());
|
||||||
|
Pstream::mapCombineScatter(dataMap);
|
||||||
|
|
||||||
// Extract local data
|
// Extract local data
|
||||||
Field<Type> lpf(sharedPointAddr.size());
|
Field<Type> lpf(sharedPointAddr.size());
|
||||||
|
|
||||||
forAll (sharedPointAddr, i)
|
forAll (sharedPointAddr, i)
|
||||||
{
|
{
|
||||||
lpf[i] = gpf[sharedPointAddr[i]];
|
lpf[i] = dataMap[sharedPointAddr[i]];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get addressing and enforce values on all processors
|
// Get addressing and enforce values on all processors
|
||||||
|
|
|
@ -185,7 +185,7 @@ public:
|
||||||
//- Evaluate the patch field
|
//- Evaluate the patch field
|
||||||
virtual void evaluate
|
virtual void evaluate
|
||||||
(
|
(
|
||||||
const Pstream::commsTypes commsType=Pstream::blocking
|
const Pstream::commsTypes commsType = Pstream::blocking
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Add field to internal field
|
//- Add field to internal field
|
||||||
|
|
|
@ -216,7 +216,7 @@ public:
|
||||||
// there's nothing to do
|
// there's nothing to do
|
||||||
virtual void initEvaluate
|
virtual void initEvaluate
|
||||||
(
|
(
|
||||||
const Pstream::commsTypes commsType=Pstream::blocking
|
const Pstream::commsTypes commsType = Pstream::blocking
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Write
|
//- Write
|
||||||
|
|
|
@ -660,7 +660,7 @@ Foam::pointField Foam::globalMeshData::geometricSharedPoints() const
|
||||||
combineReduce(sharedPoints, plusEqOp<pointField>());
|
combineReduce(sharedPoints, plusEqOp<pointField>());
|
||||||
|
|
||||||
// Merge tolerance
|
// Merge tolerance
|
||||||
scalar tolDim = matchTol_ * bb_.mag();
|
scalar tolDim = matchTol_*bb_.mag();
|
||||||
|
|
||||||
// And see how many are unique
|
// And see how many are unique
|
||||||
labelList pMap;
|
labelList pMap;
|
||||||
|
|
|
@ -22,7 +22,7 @@ License
|
||||||
along with OpenFOAM; if not, write to the Free Software Foundation,
|
along with OpenFOAM; if not, write to the Free Software Foundation,
|
||||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
\*----------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#include "syncTools.H"
|
#include "syncTools.H"
|
||||||
#include "polyMesh.H"
|
#include "polyMesh.H"
|
||||||
|
@ -306,9 +306,9 @@ void Foam::syncTools::syncPointMap
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//- Note: hasTransformation is only used for warning messages so
|
// Note: hasTransformation is only used for warning messages so
|
||||||
// reduction not strictly nessecary.
|
// reduction not strictly nessecary.
|
||||||
//reduce(hasTransformation, orOp<bool>());
|
// reduce(hasTransformation, orOp<bool>());
|
||||||
|
|
||||||
// Synchronize multiple shared points.
|
// Synchronize multiple shared points.
|
||||||
const globalMeshData& pd = mesh.globalData();
|
const globalMeshData& pd = mesh.globalData();
|
||||||
|
|
|
@ -120,7 +120,7 @@ void Foam::laplaceTetDecompositionMotionSolver::solve()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if(needTotDisplacement())
|
if (needTotDisplacement())
|
||||||
{
|
{
|
||||||
totDisplacement() += motionU()*tetMesh().time().deltaT();
|
totDisplacement() += motionU()*tetMesh().time().deltaT();
|
||||||
}
|
}
|
||||||
|
|
|
@ -97,7 +97,7 @@ void Foam::tetPolyMeshFaceDecomp::addParallelPointPatch()
|
||||||
// The processor point patch will be added if processor boundaries
|
// The processor point patch will be added if processor boundaries
|
||||||
// exist in the case. If the mesh with processor boundaries is
|
// exist in the case. If the mesh with processor boundaries is
|
||||||
// not created during a parallel run (e.g. decomposePar), the
|
// not created during a parallel run (e.g. decomposePar), the
|
||||||
// addressing will be dummy.
|
// addressing will be dummy. HJ, date deleted
|
||||||
|
|
||||||
if (mesh_.globalData().parallel())
|
if (mesh_.globalData().parallel())
|
||||||
{
|
{
|
||||||
|
@ -360,7 +360,12 @@ void Foam::tetPolyMeshFaceDecomp::addParallelPointPatch()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send the list to the first slave
|
// Send the list to the first slave
|
||||||
OPstream toFirstSlave(Pstream::blocking, Pstream::firstSlave());
|
OPstream toFirstSlave
|
||||||
|
(
|
||||||
|
Pstream::blocking,
|
||||||
|
Pstream::firstSlave()
|
||||||
|
);
|
||||||
|
|
||||||
toFirstSlave << globalCutEdges;
|
toFirstSlave << globalCutEdges;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -440,7 +445,6 @@ void Foam::tetPolyMeshFaceDecomp::addParallelPointPatch()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Add the processor point patch
|
// Add the processor point patch
|
||||||
boundary_.setSize(boundary_.size() + 1);
|
boundary_.setSize(boundary_.size() + 1);
|
||||||
|
|
||||||
|
|
|
@ -91,7 +91,10 @@ tetPolyBoundaryMeshFaceDecomp::globalPatch() const
|
||||||
{
|
{
|
||||||
if (isA<globalTetPolyPatchFaceDecomp>(patches[patchI]))
|
if (isA<globalTetPolyPatchFaceDecomp>(patches[patchI]))
|
||||||
{
|
{
|
||||||
return refCast<const globalTetPolyPatchFaceDecomp>(patches[patchI]);
|
return refCast<const globalTetPolyPatchFaceDecomp>
|
||||||
|
(
|
||||||
|
patches[patchI]
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -208,7 +208,7 @@ public:
|
||||||
virtual const word& name() const
|
virtual const word& name() const
|
||||||
{
|
{
|
||||||
// There can only be a single patch of this type - therefore
|
// There can only be a single patch of this type - therefore
|
||||||
// its name is hard-coded.
|
// its name is hard-coded. HJ, date deleted
|
||||||
return type();
|
return type();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Reference in a new issue