Merge branch 'HrvojeJasak'

This commit is contained in:
Hrvoje Jasak 2010-11-18 19:32:08 +00:00
commit 4d500e1873
23 changed files with 299 additions and 239 deletions

View file

@ -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
View file

@ -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

View file

@ -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
;; ;;

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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
) )
{} {}

View file

@ -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

View file

@ -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
) )
{} {}

View file

@ -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

View file

@ -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
); );
}; };

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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;

View file

@ -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();

View file

@ -120,7 +120,7 @@ void Foam::laplaceTetDecompositionMotionSolver::solve()
} }
if(needTotDisplacement()) if (needTotDisplacement())
{ {
totDisplacement() += motionU()*tetMesh().time().deltaT(); totDisplacement() += motionU()*tetMesh().time().deltaT();
} }

View file

@ -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);

View file

@ -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]
);
} }
} }

View file

@ -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();
} }