diff --git a/ReleaseNotes-2.0.0 b/ReleaseNotes-2.0.0 index 7056332c7e..7c16ea7cba 100644 --- a/ReleaseNotes-2.0.0 +++ b/ReleaseNotes-2.0.0 @@ -9,18 +9,18 @@ * Overview OpenFOAM-2.0.0 is the latest major release of OpenFOAM including many new - developments a number of bug-fixes. This release passes our standard tests - and the tutorials have been broadly checked. Please report any bugs by - following the link: http://www.openfoam.com/bugs. + developments and a number of bug-fixes. This release passes our standard + tests and the tutorials have been broadly checked. Please report any bugs + by following the link: http://www.openfoam.com/bugs. * GNU/Linux version This release of OpenFOAM is distributed primarily in 2 ways: (1) as a Debian pack containing binaries and source; (2) from the SourceForge source code repository (see [[./README.org][README]]). - The Ubuntu/Debian pack is available for 32 and 64 bit versions of the 10.04 - LTS operating system using the system compiler and libraries that will be - installed automatically from standard Debian packs. + The Ubuntu/Debian pack is available for 32 and 64 bit versions of the 10.10 + and 11.04 LTS operating system using the system compiler and libraries that + will be installed automatically from standard Debian packs. To use the source version from the SourceForge repository, we provide a source pack of third-party packages that can be compiled on the user's system. This @@ -47,26 +47,70 @@ mixture { - nMoles 1; - molWeight 28.9; - Cp 1007; - Hf 0; - As 1.4792e-06; - Ts 116; + equationOfState + { + nMoles 1; + molWeight 28.9; + } + thermodynamics + { + Cp 1007; + Hf 0; + } + transport + { + As 1.4792e-06; + Ts 116; + } } #+END_SRC +*** *Updated* particle tracking algorithm + + uses non-blocking parallel transfers + + does 'minimum-tet' decomposition of face to work with warped faces + (snappyHexMesh!) + + reuses tracking state in interpolation - improves consistency and speed *** Lagrangian intermediate library + Extensively updated + *Updated* input format + Extended to include steady cloud tracking + + Semi-implicit treatment for particle sources + *New* collision modelling - + *Coupled* to new surface film modelling library + + Particle forces overhauled + + *New* Paramagnetic force + + *New* Brownian-motion force + *New* sub-models - + NonSphereDrag: drag model to account for non-spherical particles - + ParticleTracks: post-processing model to generate track data, typically - during steady calculations + + nonSphereDrag: drag model to account for non-spherical particles + *Updated* sub-models + + Injection models: injection for injector nozzles + Devolatilisation models: now act on a per-specie basis + + Cloud function objects + + facePostProcessing: Particle/mesh face post-processing + + particleTracks: post-processing model to generate track data, typically + during steady calculations + + *Coupled* to new surface film modelling library +*** *New* Surface film library + + Creation of films by particle addition, or initial film distribution + + Coupled with the lagrangian/intermediate cloud hierarchy library + + Hierarchical design, consisting of + + kinematic film: mass, momentum + + constant thermodynamic properties + + thermodynamic film: mass, momentum and enthalpy + + constant, or temperature dependant thermodynamic properties + + Sub-models: + + detachment/dripping whereby particles (re)enter the originating cloud + + particle sizes set according to PDF + + other properties set to ensure mass, momentum and energy conservation + + forces + + many pressure- and stress-based forces including, e.g. contact + angle force for rivulet flow + + heat transfer to/from walls and film surface + + film evaporation and boiling + + Additional wall functions for primary region momentum and temperature + taking film into account + + Coupling to *New* pyrolysis library + + Parallel aware +*** *New* Pyrolysis library + + ... *** DSMC *** Dynamic Mesh @@ -88,23 +132,6 @@ + temperature dependent properties + temperature and direction (in local coordinate system) dependent properties -*** *New* Surface film library - + Creation of films by particle addition, or initial film distribution - + Coupled with the lagrangian/intermediate cloud hierarchy library - + Hierarchical design, consisting of - + kinematic film: mass, momentum - + constant thermodynamic properties - + thermodynamic film: mass, momentum and enthalpy - + constant, or temperature dependant thermodynamic properties - + Sub-models: - + detachment/dripping whereby particles (re)enter the originating cloud - + particle sizes set according to PDF - + other properties set to ensure mass, momentum and energy conservation - + heat transfer to/from walls and film surface - + film evaporation and boiling - + Additional wall functions for primary region momentum and temperature - taking film into account - + Parallel aware *** *New* ptscotch decomposition method. *** *New* multiLevel decomposition method. Decomposes in levels, e.g. first decompose onto number of nodes and @@ -121,18 +148,12 @@ decomposition on the master. *** *Updated* decomposePar maps polyPatches instead of recreating them so polyPatches holding data can map the data. -*** *Updated* particle tracking algorithm - + uses non-blocking parallel transfers - + does 'minimum-tet' decomposition of face to work with warped faces - (snappyHexMesh!) - + reuses tracking state in interpolation - improves consistency and speed *** *Updated* split cyclics into two separate patches. - See [[./doc/changes/splitCyclic.txt]] - * *New* cyclics (and all coupled patches) have optional - matchTolerance entry to allow looser area matching tolerance. - * *Updated* interpolation (volPointInterpolation) now works without the - globalPointPatch. Moving mesh cases can now be run non-parallel and - continued in parallel and reconstructed without any limitation. + + *New* cyclics (and all coupled patches) have optional + matchTolerance entry to allow looser area matching tolerance. + + *Updated* interpolation (volPointInterpolation) now works without the + globalPointPatch. Moving mesh cases can now be run non-parallel and + continued in parallel and reconstructed without any limitation. *** *New* compact binary I/O for faces and cells. This speeds up reading/writing meshes in binary. Binary mesh reading is backwards (but not forwards) compatible. Use ascii mesh format or diff --git a/applications/utilities/preProcessing/faceAgglomerate/faceAgglomerate.C b/applications/utilities/preProcessing/faceAgglomerate/faceAgglomerate.C index f71df8c6f3..387b791592 100644 --- a/applications/utilities/preProcessing/faceAgglomerate/faceAgglomerate.C +++ b/applications/utilities/preProcessing/faceAgglomerate/faceAgglomerate.C @@ -43,16 +43,26 @@ Description using namespace Foam; -// Main program: +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // int main(int argc, char *argv[]) { - #include "addRegionOption.H" + argList::addOption + ( + "dict", + "word", + "name of dictionary to provide patch agglomeration controls" + ); #include "setRootCase.H" #include "createTime.H" #include "createNamedMesh.H" + word agglomDictName + ( + args.optionLookupOrDefault("dict", "faceAgglomerateDict") + ); + const polyBoundaryMesh& patches = mesh.boundaryMesh(); labelListIOList finalAgglom @@ -70,12 +80,12 @@ int main(int argc, char *argv[]) ); - // Read view factor dictionary - IOdictionary viewFactorDict + // Read control dictionary + IOdictionary agglomDict ( IOobject ( - "viewFactorsDict", + agglomDictName, runTime.constant(), mesh, IOobject::MUST_READ, @@ -83,8 +93,7 @@ int main(int argc, char *argv[]) ) ); - bool writeAgglo = - readBool(viewFactorDict.lookup("writeFacesAgglomeration")); + bool writeAgglom = readBool(agglomDict.lookup("writeFacesAgglomeration")); const polyBoundaryMesh& boundary = mesh.boundaryMesh(); @@ -97,13 +106,13 @@ int main(int argc, char *argv[]) if (pp.size() > 0 && !pp.coupled()) { - if (viewFactorDict.found(pp.name())) + if (agglomDict.found(pp.name())) { - Info << "\nAgglomerating name : " << pp.name() << endl; + Info << "\nAgglomerating patch : " << pp.name() << endl; pairPatchAgglomeration agglomObject ( pp, - viewFactorDict.subDict(pp.name()) + agglomDict.subDict(pp.name()) ); agglomObject.agglomerate(); finalAgglom[patchI] = @@ -111,19 +120,15 @@ int main(int argc, char *argv[]) } else { - FatalErrorIn - ( - "main(int argc, char *argv[])" - ) << pp.name() - << " not found in dictionary : " - << viewFactorDict.name() - << exit(FatalError); + FatalErrorIn(args.executable()) + << "Patch " << pp.name() << " not found in dictionary: " + << agglomDict.name() << exit(FatalError); } } } // Sync agglomeration across coupled patches - labelList nbrAgglom(mesh.nFaces()-mesh.nInternalFaces(), -1); + labelList nbrAgglom(mesh.nFaces() - mesh.nInternalFaces(), -1); forAll(boundary, patchId) { @@ -133,7 +138,7 @@ int main(int argc, char *argv[]) finalAgglom[patchId] = identity(pp.size()); forAll(pp, i) { - nbrAgglom[pp.start()-mesh.nInternalFaces()+i] = + nbrAgglom[pp.start() - mesh.nInternalFaces() + i] = finalAgglom[patchId][i]; } } @@ -148,14 +153,14 @@ int main(int argc, char *argv[]) forAll(pp, i) { finalAgglom[patchId][i] = - nbrAgglom[pp.start()-mesh.nInternalFaces()+i]; + nbrAgglom[pp.start() - mesh.nInternalFaces() + i]; } } } finalAgglom.write(); - if (writeAgglo) + if (writeAgglom) { volScalarField facesAgglomeration ( @@ -183,10 +188,13 @@ int main(int argc, char *argv[]) } } - Info << "\nWriting facesAgglomeration..." << endl; + Info << "\nWriting facesAgglomeration" << endl; facesAgglomeration.write(); } Info<< "End\n" << endl; return 0; } + + +// ************************************************************************* // diff --git a/applications/utilities/preProcessing/viewFactorsGen/searchingEngine.H b/applications/utilities/preProcessing/viewFactorsGen/searchingEngine.H index 17de4fbf6c..fad039b3b2 100644 --- a/applications/utilities/preProcessing/viewFactorsGen/searchingEngine.H +++ b/applications/utilities/preProcessing/viewFactorsGen/searchingEngine.H @@ -24,7 +24,7 @@ dict.add dict.add("mergeDistance", SMALL); labelHashSet includePatches; -forAll(patches, patchI) // +forAll(patches, patchI) { if (!isA(patches[patchI])) { diff --git a/applications/utilities/preProcessing/viewFactorsGen/viewFactorsGen.C b/applications/utilities/preProcessing/viewFactorsGen/viewFactorsGen.C index cd852f59c3..1cbaf9ca43 100644 --- a/applications/utilities/preProcessing/viewFactorsGen/viewFactorsGen.C +++ b/applications/utilities/preProcessing/viewFactorsGen/viewFactorsGen.C @@ -125,7 +125,6 @@ scalar calculateViewFactorFij (cosThetaI*cosThetaJ*dAjMag*dAiMag) /(sqr(rMag)*constant::mathematical::pi) ); - } @@ -152,7 +151,7 @@ void insertMatrixElements } -// Main program: +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // int main(int argc, char *argv[]) { @@ -161,7 +160,7 @@ int main(int argc, char *argv[]) #include "createTime.H" #include "createNamedMesh.H" - // Read view factor dictionary + // Read view factor dictionary IOdictionary viewFactorDict ( IOobject @@ -180,8 +179,6 @@ int main(int argc, char *argv[]) const bool dumpRays = viewFactorDict.lookupOrDefault("dumpRays", false); - // Debug - // ~~~~~ const label debug = viewFactorDict.lookupOrDefault