Merge branch 'nextRelease' of ssh://git.code.sf.net/p/openfoam-extend/foam-extend-3.1 into nextRelease

This commit is contained in:
Hrvoje Jasak 2014-06-14 21:20:22 +01:00
commit 0020d0603c
6 changed files with 92 additions and 362 deletions

View file

@ -1,282 +0,0 @@
# -*- mode: org; -*-
#
#+TITLE: *Release notes for foam-extend-3.0*
#+AUTHOR: Hrvoje Jasak.
#+DATE: 18 December 2013
#+LINK: http://foam-extend.org
#+OPTIONS: author:nil
################################################################################
Contents:
* Overview
* Installation
* Compatibility
* New features in foam-extend-3.0
* Reporting bugs
* How to contribute
* List of Contributors
################################################################################
* Overview
The foam-extend project is a fork of the OpenFOAM® open source library for
Computational Fluid Dynamics (CFD). It is an open project welcoming and
integrating contributions from all users and developers. Previously known as
OpenFOAM®-dev and OpenFOAM®-extend, it contains bug fixes and performance
improvements, as well as extensions and additional features provided
by community contributors (see list below), such as dynamic mesh and
topological change support, turbomachinery extensions including general grid
interpolation (GGI), cyclic GGI and mixing place, block-coupled matrix
support, finite area method, comprehensive mesh motion capability and GPU
support. For a full list, see below.
Version 3.0, nicknamed "Jeju", is the current version of foam-extend. The
release now continues the tradition and spirit of the original FOAM code
developed by prof. Jasak and Mr. Weller during their time at
Imperial College and released as the general purpose CFD/CCM package by
Nabla Ltd. in 2000. In this spirit, we shall revert to original numbering
scheme (foam-2.3.2, 13 December 2004) as release number 3.0.
Visit http://foam-extend.org for more information.
OPENFOAM® is a registered trademark of ESI Group. OpenFOAM-extend and
foam-extend are a community effort not endorsed by ESI Group.
* Installation
foam-extend-3.0 can be compiled and runs on any linux system and
Apple Mac OS X.
** From source
Please refer to doc/buildInstructions/ for details. Further
installation instruction are available on the unofficial OpenFOAM Wiki:
http://openfoamwiki.net/index.php/Installation/Linux/foam-extend-3.0
If you have improvements or build instructions for a new system, please
share them with the community (see section "How to contribute", below).
** Binary packages
Binary packages are available for download at
http://sourceforge.net/projects/openfoam-extend/
for the following systems: Ubuntu 12.04, Ubuntu 13.10 and Fedora 19 .
* Compatibility
Upstream features from the OpenFOAM® code base are merged into foam-extend
on regular basis. The interface format of foam-extend-3.0 is largely
compatible to OpenFOAM-1.6-ext and OpenFOAM-1.7.x. In some cases,
the differences are caused by bug fixes and algorithmic improvements,
considered more important than inter-operability.
* Main diferentiators
A large number of features has been lost within the release cycle of OpenFOAM
code; since version 1.3, the code base has shrunk by more than 40%. While
we understand the lack of technical ability of supporting advanced
CFD features, we feel that existing features and specifically large-scale
contributions should remain active and developed further. Below is a list
of main features of foam-extend-3.0 which are lost, deactivated or unusable
in ESI releases:
** Turbomachinery features, including General Grid Interface (GGI),
partial overlap GGI, cyclic GGI, with improvements in parallel scaling.
First full and validated release of a mixing plane stage interface
** Dynamic mesh with topological changes
sliding interfaces, mesh layering, attach-detach boundaries etc.
in foam-extend-3.0 full parallel support for topological changes
is released for the first time
** Finite Element Method with support for polyhedral meshes
This is mainly used in mesh deformation and over the last 15 years
it has proven vastly superior to all other dynamic mesh methods.
** Advanced mesh deformation technology
including tet FEM mesh deformation, Radial Basis Function (RBF) mesh
deformation, tetrahedral remeshing dynamic mesh support and solid body
motion functions. All of the above include parallelisation support
** Library of dynamic meshes with topological changes with full
second order FVM discretisation support on moving meshes with
topological changes
** Internal combustion engine-specific dynamic mesh classes such as
two-stroke engine and various forms of 4-stroke and multi-valve
dynamic mesh classes
** Finite Area Method providing support for FVM-like discretisation on
a curved surface in 3-D, with examples of liquid film modelling
** Block-coupled matrix support, allowing fully implicit multi-equation
solution of NxN equation sets, with full parallelisation support.
First release of a block-AMG linear equation solver
** Fully implicit conjugate-coupled solution framework, allowing implicit
solution fo multiple equations over multiple meshes, with parallelism
** Proper Orthogonal Decomposition data analysis tools, with applications
to FOAM field classes
** Equation reader classes and tutorials
** Multi-solver solution framework, allowing mutiple field models to be
solved in a coupled manner
** A major contribution is solid mechanics modelling, including linear
and non-linear materials, contact, self-contact and friction, with
updated Lagrangian or absolute Lagrangian formulation. Solution o
damage models and crack propagation in complex materials via
topological changes
** CUDA solver release, provided in full source and as an example of
coupling external linear equation solvers with FOAM
** Library-level support for Immersed Boundary Method and Overset Mesh
** Major improvements in accuracy and stability of FVM discretisation
with options on convection and diffusion discretisation, deferred
correction or explicit schemes
** Algebraic multigrid solver framerowk
** 190 tutorials with automated run scripts
** Automatic test harness
* New features in foam-extend-3.0
The list of features is a result of the work of numerous contributors. The
maintainers of foam-extend would formally like to thank them all.
** Core library
cudaSolvers
dynamicMesh
dynamicTopoFvMesh:
dynamicTopoFvMeshCoupled
convexSetAlgorithm
fieldMapping
meshOpsTemplates
msqAdditionalSrc
tetDecompositionMotionSolver
tetMotionSolver
multiTopoBodyFvMesh
engine
accordionValve
accordionEngineMesh
attachDetachFunctions
deformingEngineMesh
regionSide
twoStrokeEngine
equationReader
finiteArea:
faMeshMapper
faMeshUpdate.C
interpolation:
mapping
finitVolume:
mixingPlane
regionCouple
adjConvectionSchemes
backwardD2dt2Scheme
skewCorrectedSnGrad
singleCellFvMesh
harmonic
harmonicTemplates
magLongDelta.[HC]
multiSolver
OpenFOAM:
PriorityList
IOReferencer
postfixedSubRegistry
symmTensor4thOrder
VectorN
diagTensor
oscillatingFixedValue
profiling
MixingPlaneInterpolation
splineInterpolateXY
BlockAmg solver
blockVectorN solver
BlockLduInterface
mixingPlane (also with GAMG)
regionCouple (also with GAMG)
BlockCoeffNorm
postProcessing:
foamCalcFunctions:
scalarMult
componentsTurbo
domainIntegrate
functionObjects:
mixingPlaneCheck
maxFieldCell
solidModels
tetDecompositionFiniteElement
thermophysicalModels:
radiation:
viewFactor
turbulenceModels:
RWallFunctions
VectorN
** Solver applications
conjugateHeatSimpleFoam
equationReaderDemo
MRFSimpleFoam
simpleSRFFoam
MRFInterFoam
multiSolver
solidMechanics:
elasticAcpSolidFoam
elasticIncrAcpSolidFoam
elasticIncrSolidFoam
elasticNonLinIncrTLSolidFoam
elasticNonLinTLSolidFoam
elasticNonLinULSolidFoam
elasticOrthoAcpSolidFoam
elasticOrthoNonLinULSolidFoam
elasticOrthoSolidFoam
elasticPlasticSolidFoam
elasticPlasticNonLinTLSolidFoam
elasticPlasticNonLinULSolidFoam
elasticSolidFoam
elasticThermalSolidFoam
icoFsiElasticNonLinULSolidFoam
viscoElasticSolidFoam
** Utilities
foamMeshToAbaqus
multiSolver (postProcessing)
solidMechanics:
calculateCourantNumber
forceDisp
patchStressIntegrate
smoothMesh
surfaceTractions
** ThirdParty software
gcc compatibility up to 4.8.1
Updated to:
Paraview 4.1
openmpi 1.6.5
cmake 2.8.12
metis 5.1.0
parmetis 4.0.3
scotch 6.0.0
zoltan 3.6
* Reporting bugs
To report bugs, please use the MantisBT bugtracker at
http://sourceforge.net/apps/mantisbt/openfoam-extend/my_view_page.php .
* How to contribute
All your contributions are highly welcome: New solvers, utilities and
models; bug fixes; documentation. The many ways of contributing and the
contribution process are described in detail in the file "HowToContribute".
* List of Contributors: See file ListOfContributors

View file

@ -441,14 +441,15 @@ then
export LD_PRELOAD
fi
if [[ `uname -s` == "Darwin" ]]
then
if [[ `ulimit -n` == "unlimited" || `ulimit -n` < 8192 ]]
then
# higher limit needed for wmkdeps
ulimit -n 8192
fi
fi
# temporarily disabled. HJ, 13/Jun/2014
# if [[ `uname -s` == "Darwin" ]]
# then
# if [[ `ulimit -n` == "unlimited" || `ulimit -n` < 8192 ]]
# then
# # higher limit needed for wmkdeps
# ulimit -n 8192
# fi
# fi
# cleanup environment:
# ~~~~~~~~~~~~~~~~~~~~

View file

@ -57,66 +57,76 @@ dirichletNeumann::dirichletNeumann
const PrimitivePatch<face, List, pointField>& slaveFaceZonePatch
)
:
normalContactModel
(
name,
patch,
dict,
masterPatchID,
slavePatchID,
masterFaceZoneID,
slaveFaceZoneID,
masterFaceZonePatch,
slaveFaceZonePatch
),
normalContactModelDict_(dict.subDict(name+"NormalModelDict")),
mesh_(patch.boundaryMesh().mesh()),
slaveDisp_(mesh_.boundaryMesh()[slavePatchID].size(), vector::zero),
oldSlaveDispMag_(mesh_.boundaryMesh()[slavePatchID].size(), 0.0),
slavePressure_(mesh_.boundaryMesh()[slavePatchID].size(), vector::zero),
oldSlavePressure_(mesh_.boundaryMesh()[slavePatchID].size(), vector::zero),
touchFraction_(mesh_.boundaryMesh()[slavePatchID].size(), 0.0),
slaveValueFrac_(mesh_.boundaryMesh()[slavePatchID].size(), symmTensor::zero),
oldSlaveValueFrac_
(mesh_.boundaryMesh()[slavePatchID].size(), symmTensor::zero),
limitPenetration_(normalContactModelDict_.lookup("limitPenetration")),
penetrationLimit_
(readScalar(normalContactModelDict_.lookup("penetrationLimit"))),
limitPressure_(normalContactModelDict_.lookup("limitPressure")),
pressureLimit_(readScalar(normalContactModelDict_.lookup("pressureLimit"))),
settleContact_
(
normalContactModelDict_.found("settleContact") ?
normalContactModelDict_.lookup("settleContact") : false
),
settleIterationNumber_
(
settleContact_ ?
readInt(normalContactModelDict_.lookup("settleIterationNumber")) : GREAT
),
correctMissedVertices_
(
normalContactModelDict_.lookup("correctMissedVertices")
),
slavePointPointsPtr_(NULL),
contactGapTol_(readScalar(normalContactModelDict_.lookup("contactGapTol"))),
contactIterNum_(0),
relaxFactor_(readScalar(normalContactModelDict_.lookup("relaxationFactor"))),
distanceMethod_(normalContactModelDict_.lookup("distanceMethod")),
aitkenRelaxation_(normalContactModelDict_.lookup("aitkenRelaxation")),
curTimeIndex_(-1),
iCorr_(0),
aitkenRes0_(1.0),
aitkenTheta_(relaxFactor_),
aitkenDelta_(slaveDisp_.size(), vector::zero),
aitkenDeltaPrevIter_(slaveDisp_.size(), vector::zero),
slaveDispPrevIter_(slaveDisp_.size(), vector::zero),
oscillationCorr_(normalContactModelDict_.lookup("oscillationCorrection")),
smoothingSteps_(readInt(normalContactModelDict_.lookup("smoothingSteps"))),
infoFreq_(readInt(normalContactModelDict_.lookup("infoFrequency"))),
contactFilePtr_(NULL)
normalContactModel
(
name,
patch,
dict,
masterPatchID,
slavePatchID,
masterFaceZoneID,
slaveFaceZoneID,
masterFaceZonePatch,
slaveFaceZonePatch
),
normalContactModelDict_(dict.subDict(name+"NormalModelDict")),
mesh_(patch.boundaryMesh().mesh()),
slaveDisp_(mesh_.boundaryMesh()[slavePatchID].size(), vector::zero),
oldSlaveDispMag_(mesh_.boundaryMesh()[slavePatchID].size(), 0.0),
slavePressure_(mesh_.boundaryMesh()[slavePatchID].size(), vector::zero),
oldSlavePressure_(mesh_.boundaryMesh()[slavePatchID].size(), vector::zero),
touchFraction_(mesh_.boundaryMesh()[slavePatchID].size(), 0.0),
slaveValueFrac_(mesh_.boundaryMesh()[slavePatchID].size(), symmTensor::zero),
oldSlaveValueFrac_
(
mesh_.boundaryMesh()[slavePatchID].size(), symmTensor::zero
),
limitPenetration_(normalContactModelDict_.lookup("limitPenetration")),
penetrationLimit_
(
readScalar(normalContactModelDict_.lookup("penetrationLimit"))
),
limitPressure_(normalContactModelDict_.lookup("limitPressure")),
pressureLimit_(readScalar(normalContactModelDict_.lookup("pressureLimit"))),
settleContact_
(
normalContactModelDict_.lookupOrDefault<Switch>
(
"settleContact",
false
)
),
settleIterationNumber_
(
normalContactModelDict_.lookupOrDefault<label>
(
"settleIterationNumber",
1000
)
),
correctMissedVertices_
(
normalContactModelDict_.lookup("correctMissedVertices")
),
slavePointPointsPtr_(NULL),
contactGapTol_(readScalar(normalContactModelDict_.lookup("contactGapTol"))),
contactIterNum_(0),
relaxFactor_(readScalar(normalContactModelDict_.lookup("relaxationFactor"))),
distanceMethod_(normalContactModelDict_.lookup("distanceMethod")),
aitkenRelaxation_(normalContactModelDict_.lookup("aitkenRelaxation")),
curTimeIndex_(-1),
iCorr_(0),
aitkenRes0_(1.0),
aitkenTheta_(relaxFactor_),
aitkenDelta_(slaveDisp_.size(), vector::zero),
aitkenDeltaPrevIter_(slaveDisp_.size(), vector::zero),
slaveDispPrevIter_(slaveDisp_.size(), vector::zero),
oscillationCorr_(normalContactModelDict_.lookup("oscillationCorrection")),
smoothingSteps_(readInt(normalContactModelDict_.lookup("smoothingSteps"))),
infoFreq_(readInt(normalContactModelDict_.lookup("infoFrequency"))),
contactFilePtr_(NULL)
{
// master proc open contact info file
// master proc open contact info file
if (Pstream::master())
{
word masterName = mesh_.boundary()[masterPatchID].name();

View file

@ -116,7 +116,7 @@ class dirichletNeumann
// so we can turn off contact corrections after the specified
// number of corrections
Switch settleContact_;
int settleIterationNumber_;
label settleIterationNumber_;
// correct pointDistToInter misses
// pointPoints are needed

View file

@ -66,17 +66,17 @@ normalContactModel::normalContactModel
(patch.boundaryMesh().mesh().boundaryMesh()[slavePatchID].nPoints(), 0.0),
masterToSlaveInterpolatorPtr_
(
// new zoneToZoneInterpolation
new PatchToPatchInterpolation<
PrimitivePatch<
face, List, pointField
>, PrimitivePatch<face, List, pointField> >
(
masterFaceZonePatch,
slaveFaceZonePatch,
intersection::algorithmNames_.read(dict.lookup("projectionAlgo")),
intersection::directionNames_.read(dict.lookup("projectionDir"))
)
new PatchToPatchInterpolation
<
PrimitivePatch<face, List, pointField>,
PrimitivePatch<face, List, pointField>
>
(
masterFaceZonePatch,
slaveFaceZonePatch,
intersection::algorithmNames_.read(dict.lookup("projectionAlgo")),
intersection::directionNames_.read(dict.lookup("projectionDir"))
)
)
{}

View file

@ -1,7 +1,8 @@
CPP = cpp -traditional-cpp $(GFLAGS)
LD = ld -m elf64ppc
PROJECT_LIBS = -l$(WM_PROJECT) -liberty -ldl
#PROJECT_LIBS = -l$(WM_PROJECT) -liberty -ldl
PROJECT_LIBS = -l$(WM_PROJECT) -ldl
include $(GENERAL_RULES)/standard