Merge branch 'nextRelease' of ssh://git.code.sf.net/p/openfoam-extend/foam-extend-3.1 into nextRelease
This commit is contained in:
commit
0020d0603c
6 changed files with 92 additions and 362 deletions
|
@ -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
|
17
etc/bashrc
17
etc/bashrc
|
@ -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:
|
||||
# ~~~~~~~~~~~~~~~~~~~~
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"))
|
||||
)
|
||||
)
|
||||
{}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Reference in a new issue