diff options
6 files changed, 1154 insertions, 0 deletions
diff --git a/sci-libs/openfoam-kernel/ChangeLog b/sci-libs/openfoam-kernel/ChangeLog new file mode 100644 index 000000000..6be6eec99 --- /dev/null +++ b/sci-libs/openfoam-kernel/ChangeLog @@ -0,0 +1,10 @@ +# ChangeLog for sci-libs/openfoam-kernel +# Copyright 1999-2008 Gentoo Foundation; Distributed under the GPL v2 +# $Header: $ + + 29 Jan 2008; Oliver Borm (boroli) <oli.borm@web.de> + +files/openfoam-kernel-1.4.1_p20080118.patch, + +files/openfoam-kernel-compile-1.4.1_p20080118.patch, +metadata.xml, + +openfoam-kernel-1.4.1_p20080118.ebuild: + This new Ebuild contains the kernel of OpenFOAM + diff --git a/sci-libs/openfoam-kernel/Manifest b/sci-libs/openfoam-kernel/Manifest new file mode 100644 index 000000000..dd493d6be --- /dev/null +++ b/sci-libs/openfoam-kernel/Manifest @@ -0,0 +1,6 @@ +AUX openfoam-kernel-1.4.1_p20080118.patch 25846 RMD160 39bf0338915def0c0b4dd62df5c5c6502e384e24 SHA1 2832ed700eb45e72979dcb7d5982e734f683c95d SHA256 65005fd20a6a24cf1970aac03d160bf129e8cf8a5060b7e92b07c1e34c982fbd +AUX openfoam-kernel-compile-1.4.1_p20080118.patch 6143 RMD160 ab03b9d55ee2d6eb3515fe2430e42f2204177bb9 SHA1 8301b591701f2bf6cb182f1cd415d0348e46d98b SHA256 999098d347d417ff88724ea30c6a18b7cc3a8bbecfcb23b5cfdcbe17afdb58c4 +DIST OpenFOAM-1.4.1.General.gtgz 148526808 RMD160 e25d8bdfa63f15eeeb7b9f1cef09cc26fb7bef74 SHA1 56bbbf5b33c49d08cda35088a65b24d7dc59014f SHA256 c765b36639b42c737bc9ba1ac13c0f66efe20ee4a9f71a6ef987e86ebd50da28 +EBUILD openfoam-kernel-1.4.1_p20080118.ebuild 2031 RMD160 0d76094a1f94e40ba86311d964d1821263de0cda SHA1 5454250f73407c132350a9f16146b96937a4eca8 SHA256 c60fc45c3a54fd1dad694e6fd327492d522dfd0fc4cee9e76e7e1fdbc5ff16aa +MISC ChangeLog 392 RMD160 fa22673c9108c38bb5460be6b8751df9d9000c49 SHA1 d5eddce2cba70a199ceb260c28fef3e06cb12a55 SHA256 2323a8516cbc243039c90e6c5d1d780682c2e6659311429606709980473d00e2 +MISC metadata.xml 170 RMD160 645927a396fdc21cdeb089fe42c5397332420ea6 SHA1 ac7f48a14fec325926f9ce1be8fbf1f311b4f2e4 SHA256 d797a2ec6f9dc516c9f9c1a758ee87ad3e8c43101b5dc76c2f872d5bd4639b42 diff --git a/sci-libs/openfoam-kernel/files/openfoam-kernel-1.4.1_p20080118.patch b/sci-libs/openfoam-kernel/files/openfoam-kernel-1.4.1_p20080118.patch new file mode 100644 index 000000000..007f845b2 --- /dev/null +++ b/sci-libs/openfoam-kernel/files/openfoam-kernel-1.4.1_p20080118.patch @@ -0,0 +1,829 @@ +Index: src/LESmodels/compressible/SpalartAllmaras/SpalartAllmaras.C +=================================================================== +--- src/LESmodels/compressible/SpalartAllmaras/SpalartAllmaras.C (Revision 30) ++++ src/LESmodels/compressible/SpalartAllmaras/SpalartAllmaras.C (Revision 408) +@@ -44,29 +44,38 @@ + + + // * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // + + tmp<volScalarField> SpalartAllmaras::fv1() const + { + volScalarField chi3 = pow(nuTilda_/(mu()/rho()), 3); +- + return chi3/(chi3 + pow(Cv1_, 3)); + } + + + tmp<volScalarField> SpalartAllmaras::fv2() const + { + volScalarField chi = nuTilda_/(mu()/rho()); + return scalar(1) - chi/(scalar(1) + chi*fv1()); + } + + + tmp<volScalarField> SpalartAllmaras::fw(const volScalarField& Stilda) const + { +- volScalarField r = nuTilda_/(Stilda*sqr(kappa_*dTilda_)); ++ volScalarField r = min ++ ( ++ nuTilda_ ++ /( ++ max(Stilda, dimensionedScalar("SMALL", Stilda.dimensions(), SMALL)) ++ *sqr(kappa_*dTilda_) ++ ), ++ scalar(10.0) ++ ); ++ r.boundaryField() == 0.0; ++ + volScalarField g = r + Cw2_*(pow(r, 6) - r); + + return g*pow((1.0 + pow(Cw3_, 6))/(pow(g, 6) + pow(Cw3_, 6)), 1.0/6.0); + } + + + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Index: src/dynamicMesh/meshCut/meshModifiers/multiDirRefinement/multiDirRefinement.C +=================================================================== +--- src/dynamicMesh/meshCut/meshModifiers/multiDirRefinement/multiDirRefinement.C (Revision 30) ++++ src/dynamicMesh/meshCut/meshModifiers/multiDirRefinement/multiDirRefinement.C (Revision 408) +@@ -343,16 +343,16 @@ + } + } + } + + + hexRefiner.setRefinement(consistentCells, meshMod); + +- // Use inflation +- autoPtr<mapPolyMesh> morphMapPtr = meshMod.changeMesh(mesh, true, true); ++ // Change mesh, no inflation ++ autoPtr<mapPolyMesh> morphMapPtr = meshMod.changeMesh(mesh, false, true); + const mapPolyMesh& morphMap = morphMapPtr(); + + if (morphMap.hasMotionPoints()) + { + mesh.movePoints(morphMap.preMotionPoints()); + } + +@@ -365,47 +365,31 @@ + { + Pout<< "multiDirRefinement : updated mesh at time " + << mesh.time().timeName() << endl; + } + + hexRefiner.updateMesh(morphMap); + +- // Take over split pattern from hex refiner. (should be empty at this +- // point) +- +- // From old cell label to index +- Map<label> consistentSet(2*consistentCells.size()); +- +- forAll(consistentCells, i) +- { +- consistentSet.insert(consistentCells[i], i); +- } +- + // Collect all cells originating from same old cell (original + 7 extra) + +- addedCells_.setSize(consistentCells.size()); +- forAll(addedCells_, i) ++ forAll(consistentCells, i) + { +- addedCells_[i].setSize(8); ++ addedCells_[consistentCells[i]].setSize(8); + } +- labelList nAddedCells(consistentCells.size(), 0); ++ labelList nAddedCells(addedCells_.size(), 0); + + const labelList& cellMap = morphMap.cellMap(); + + forAll(cellMap, cellI) + { + label oldCellI = cellMap[cellI]; + +- Map<label>::const_iterator iter = consistentSet.find(oldCellI); +- +- if (iter != consistentSet.end()) ++ if (addedCells_[oldCellI].size() > 0) + { +- label index = iter(); +- +- addedCells_[nAddedCells[index]++] = cellI; ++ addedCells_[oldCellI][nAddedCells[oldCellI]++] = cellI; + } + } + } + + + void Foam::multiDirRefinement::refineAllDirs + ( + +Index: src/OpenFOAM/db/error/error.H +=================================================================== +--- src/OpenFOAM/db/error/error.H (Revision 30) ++++ src/OpenFOAM/db/error/error.H (Revision 408) +@@ -80,14 +80,17 @@ + + //- Construct from title string + error(const string& title); + + //- Construct from dictionary + error(const dictionary& errDict); + ++ //- Construct as copy ++ error(const error& err); ++ + + // Destructor + + ~error(); + + + // Member functions +Index: src/OpenFOAM/db/error/error.C +=================================================================== +--- src/OpenFOAM/db/error/error.C (Revision 30) ++++ src/OpenFOAM/db/error/error.C (Revision 408) +@@ -76,14 +76,28 @@ + "cannot open error stream" + << endl; + ::exit(1); + } + } + + ++error::error(const error& err) ++: ++ messageStream(err), ++ functionName_(err.functionName_), ++ sourceFileName_(err.sourceFileName_), ++ sourceFileLineNumber_(err.sourceFileLineNumber_), ++ abort_(err.abort_), ++ throwExceptions_(err.throwExceptions_), ++ messageStreamPtr_(new OStringStream(*err.messageStreamPtr_)) ++{ ++ //*messageStreamPtr_ << err.message(); ++} ++ ++ + error::~error() + { + delete messageStreamPtr_; + } + + + OSstream& error::operator() +@@ -251,14 +265,15 @@ + return os; + } + + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + // Global error definitions + +-error FatalError ("--> FOAM FATAL ERROR : "); ++error FatalError("--> FOAM FATAL ERROR : "); + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + } // End namespace Foam + + // ************************************************************************* // ++ +Index: src/OpenFOAM/db/dictionary/dictionary.C +=================================================================== +--- src/OpenFOAM/db/dictionary/dictionary.C (Revision 30) ++++ src/OpenFOAM/db/dictionary/dictionary.C (Revision 408) +@@ -119,14 +119,20 @@ + } + else + { + return -1; + } + } + ++// Clear the Dictionary ++void Foam::dictionary::clear() ++{ ++ IDLList<entry>::clear(); ++ hashedEntries_.clear(); ++} + + // Find and return entry + bool Foam::dictionary::found(const word& keyword) const + { + return hashedEntries_.found(keyword); + } + +Index: src/OpenFOAM/db/dictionary/dictionary.H +=================================================================== +--- src/OpenFOAM/db/dictionary/dictionary.H (Revision 30) ++++ src/OpenFOAM/db/dictionary/dictionary.H (Revision 408) +@@ -126,14 +126,16 @@ + + //- Return line number of first token in dictionary + label startLineNumber() const; + + //- Return line number of last token in dictionary + label endLineNumber() const; + ++ //- Clear the dictionary ++ void clear(); + + // Search and lookup + + //- Search dictionary for given keyword + bool found(const word& keyword) const; + + //- Find and return an entry data stream +Index: src/OpenFOAM/db/IOstreams/StringStreams/OStringStream.H +=================================================================== +--- src/OpenFOAM/db/IOstreams/StringStreams/OStringStream.H (Revision 30) ++++ src/OpenFOAM/db/IOstreams/StringStreams/OStringStream.H (Revision 408) +@@ -63,21 +63,41 @@ + ( + streamFormat format=ASCII, + versionNumber version=currentVersion + ) + : + OSstream + ( +- *(new std::ostringstream()), ++ *(new std::ostringstream()), + "OStringStream.sinkFile", + format, + version + ) + {} + ++ //- Construct as copy ++ OStringStream(const OStringStream& oss) ++ : ++ OSstream ++ ( ++ *( ++ new std::ostringstream ++ ( ++ dynamic_cast<const std::ostringstream&> ++ ( ++ oss.stream() ++ ).str() ++ ) ++ ), ++ oss.name(), ++ oss.format(), ++ oss.version() ++ ) ++ {} ++ + + // Destructor + + ~OStringStream() + { + delete &dynamic_cast<std::ostringstream&>(stream()); + } +Index: src/OpenFOAM/fields/pointPatchFields/pointPatchField/pointPatchFieldFunctions.H +=================================================================== +--- src/OpenFOAM/fields/pointPatchFields/pointPatchField/pointPatchFieldFunctions.H (Revision 30) ++++ src/OpenFOAM/fields/pointPatchFields/pointPatchField/pointPatchFieldFunctions.H (Revision 408) +@@ -214,32 +214,28 @@ + #undef BINARY_TYPE_OPERATOR_FT + + + #define PRODUCT_OPERATOR(product, op, opFunc) \ + \ + template \ + < \ +- template<class> class PatchField, \ +- class pointPatch, \ + class Type1, \ + class Type2 \ + > \ + inline void opFunc \ + ( \ + pointPatchField \ + <typename product<Type1, Type2>::type>& f, \ + const pointPatchField<Type1>& f1, \ + const pointPatchField<Type2>& f2 \ + ) \ + {} \ + \ + template \ + < \ +- template<class> class PatchField, \ +- class pointPatch, \ + class Type, \ + class Form, \ + class Cmpt, \ + int nCmpt \ + > \ + inline void opFunc \ + ( \ +@@ -248,16 +244,14 @@ + const pointPatchField<Type>& f1, \ + const VectorSpace<Form,Cmpt,nCmpt>& vs \ + ) \ + {} \ + \ + template \ + < \ +- template<class> class PatchField, \ +- class pointPatch, \ + class Form, \ + class Cmpt, \ + int nCmpt, \ + class Type \ + > \ + inline void opFunc \ + ( \ +@@ -272,112 +266,99 @@ + PRODUCT_OPERATOR(crossProduct, ^, cross) + PRODUCT_OPERATOR(innerProduct, &, dot) + PRODUCT_OPERATOR(scalarProduct, &&, dotdot) + + #undef PRODUCT_OPERATOR + + +-template<template<class> class PatchField, class pointPatch> +-void hdual ++inline void hdual + ( + pointPatchField<vector>&, + const pointPatchField<tensor>& + ) + {} + +-template<template<class> class PatchField, class pointPatch> +-void hdual ++inline void hdual + ( + pointPatchField<tensor>&, + const pointPatchField<vector>& + ) + {} + +-template<template<class> class PatchField, class pointPatch> +-void diag ++inline void diag + ( + pointPatchField<vector>&, + const pointPatchField<tensor>& + ) + {} + +-template<template<class> class PatchField, class pointPatch> +-void tr ++inline void tr + ( + pointPatchField<scalar>&, + const pointPatchField<tensor>& + ) + {} + +-template<template<class> class PatchField, class pointPatch> +-void dev ++inline void dev + ( + pointPatchField<tensor>&, + const pointPatchField<tensor>& + ) + {} + +-template<template<class> class PatchField, class pointPatch> +-void dev2 ++inline void dev2 + ( + pointPatchField<tensor>&, + const pointPatchField<tensor>& + ) + {} + +-template<template<class> class PatchField, class pointPatch> +-void det ++inline void det + ( + pointPatchField<scalar>&, + const pointPatchField<tensor>& + ) + {} + +-template<template<class> class PatchField, class pointPatch> +-void inv ++inline void inv + ( + pointPatchField<tensor>&, + const pointPatchField<tensor>& + ) + {} + +-template<template<class> class PatchField, class pointPatch> +-void symm ++inline void symm + ( + pointPatchField<tensor>&, + const pointPatchField<tensor>& + ) + {} + +-template<template<class> class PatchField, class pointPatch> +-void twoSymm ++inline void twoSymm + ( + pointPatchField<tensor>&, + const pointPatchField<tensor>& + ) + {} + +-template<template<class> class PatchField, class pointPatch> +-void skew ++inline void skew + ( + pointPatchField<tensor>&, + const pointPatchField<tensor>& + ) + {} + +-template<template<class> class PatchField, class pointPatch> +-void eigenValues ++inline void eigenValues + ( + pointPatchField<vector>&, + const pointPatchField<tensor>& + ) + {} + +-template<template<class> class PatchField, class pointPatch> +-void eigenVectors ++inline void eigenVectors + ( + pointPatchField<tensor>&, + const pointPatchField<tensor>& + ) + {} + + +Index: src/OpenFOAM/fields/Fields/symmTensorField/symmTensorField.C +=================================================================== +--- src/OpenFOAM/fields/Fields/symmTensorField/symmTensorField.C (Revision 30) ++++ src/OpenFOAM/fields/Fields/symmTensorField/symmTensorField.C (Revision 408) +@@ -131,16 +131,15 @@ + + template<> + tmp<Field<symmTensor> > transformFieldMask<symmTensor> + ( + const tmp<tensorField>& ttf + ) + { +- tmp<Field<symmTensor> > ret = +- transformFieldMask<symmTensor>(ttf()); ++ tmp<Field<symmTensor> > ret = transformFieldMask<symmTensor>(ttf()); + ttf.clear(); + return ret; + } + + + template<> + tmp<Field<symmTensor> > transformFieldMask<symmTensor> +@@ -153,18 +152,15 @@ + + template<> + tmp<Field<symmTensor> > transformFieldMask<symmTensor> + ( + const tmp<symmTensorField>& tstf + ) + { +- tmp<Field<symmTensor> > ret = +- transformFieldMask<symmTensor>(tstf()); +- tstf.clear(); +- return ret; ++ return tstf; + } + + + // * * * * * * * * * * * * * * * global operators * * * * * * * * * * * * * // + + UNARY_OPERATOR(vector, symmTensor, *, hdual) + +Index: src/OpenFOAM/primitives/Tensor/TensorI.H +=================================================================== +--- src/OpenFOAM/primitives/Tensor/TensorI.H (Revision 30) ++++ src/OpenFOAM/primitives/Tensor/TensorI.H (Revision 408) +@@ -358,14 +358,23 @@ + v1.x()*v2.x(), v1.x()*v2.y(), v1.x()*v2.z(), + v1.y()*v2.x(), v1.y()*v2.y(), v1.y()*v2.z(), + v1.z()*v2.x(), v1.z()*v2.y(), v1.z()*v2.z() + ); + } + + ++//- Division of a vector by a tensor, i.e. dot-product with the tensor inverse ++template <class Cmpt> ++inline typename innerProduct<Vector<Cmpt>, Tensor<Cmpt> >::type ++operator/(const Vector<Cmpt>& v, const Tensor<Cmpt>& t) ++{ ++ return inv(t) & v; ++} ++ ++ + // * * * * * * * * * * * * * * * Global Functions * * * * * * * * * * * * * // + + //- Return the trace of a tensor + template <class Cmpt> + inline Cmpt tr(const Tensor<Cmpt>& t) + { + return t.xx() + t.yy() + t.zz(); +@@ -790,46 +799,30 @@ + //- Double-dot-product between a spherical tensor and a tensor + template <class Cmpt> + inline Cmpt + operator&&(const SymmTensor<Cmpt>& st1, const Tensor<Cmpt>& t2) + { + return + ( +- st1.xx()*t2.xx() + st1.xy()*t2.yx() + st1.xz()*t2.zx() + +- st1.xx()*t2.xy() + st1.xy()*t2.yy() + st1.xz()*t2.zy() + +- st1.xx()*t2.xz() + st1.xy()*t2.yz() + st1.xz()*t2.zz() + +- +- st1.xy()*t2.xx() + st1.yy()*t2.yx() + st1.yz()*t2.zx() + +- st1.xy()*t2.xy() + st1.yy()*t2.yy() + st1.yz()*t2.zy() + +- st1.xy()*t2.xz() + st1.yy()*t2.yz() + st1.yz()*t2.zz() + +- +- st1.xz()*t2.xx() + st1.yz()*t2.yx() + st1.zz()*t2.zx() + +- st1.xz()*t2.xy() + st1.yz()*t2.yy() + st1.zz()*t2.zy() + +- st1.xz()*t2.xz() + st1.yz()*t2.yz() + st1.zz()*t2.zz() ++ st1.xx()*t2.xx() + st1.xy()*t2.xy() + st1.xz()*t2.xz() + ++ st1.xy()*t2.yx() + st1.yy()*t2.yy() + st1.yz()*t2.yz() + ++ st1.xz()*t2.zx() + st1.yz()*t2.zy() + st1.zz()*t2.zz() + ); + } + + + //- Double-dot-product between a tensor and a spherical tensor + template <class Cmpt> + inline Cmpt + operator&&(const Tensor<Cmpt>& t1, const SymmTensor<Cmpt>& st2) + { + return + ( + t1.xx()*st2.xx() + t1.xy()*st2.xy() + t1.xz()*st2.xz() + +- t1.xx()*st2.xy() + t1.xy()*st2.yy() + t1.xz()*st2.yz() + +- t1.xx()*st2.xz() + t1.xy()*st2.yz() + t1.xz()*st2.zz() + +- +- t1.yx()*st2.xx() + t1.yy()*st2.xy() + t1.yz()*st2.xz() + + t1.yx()*st2.xy() + t1.yy()*st2.yy() + t1.yz()*st2.yz() + +- t1.yx()*st2.xz() + t1.yy()*st2.yz() + t1.yz()*st2.zz() + +- +- t1.zx()*st2.xx() + t1.zy()*st2.xy() + t1.zz()*st2.xz() + +- t1.zx()*st2.xy() + t1.zy()*st2.yy() + t1.zz()*st2.yz() + + t1.zx()*st2.xz() + t1.zy()*st2.yz() + t1.zz()*st2.zz() + ); + } + + + template<class Cmpt> + class typeOfSum<SymmTensor<Cmpt>, Tensor<Cmpt> > + +Index: src/finiteVolume/fvMatrices/fvMatrix/fvMatrixSolve.C +=================================================================== +--- src/finiteVolume/fvMatrices/fvMatrix/fvMatrixSolve.C (Revision 30) ++++ src/finiteVolume/fvMatrices/fvMatrix/fvMatrixSolve.C (Revision 408) +@@ -20,23 +20,18 @@ + + You should have received a copy of the GNU General Public License + along with OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + \*---------------------------------------------------------------------------*/ + +-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +- +-namespace Foam +-{ +- + // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + + template<class Type> +-void fvMatrix<Type>::setComponentReference ++void Foam::fvMatrix<Type>::setComponentReference + ( + const label patchi, + const label facei, + const direction cmpt, + const scalar value + ) + { +@@ -52,15 +47,18 @@ + *value; + } + } + } + + + template<class Type> +-lduMatrix::solverPerformance fvMatrix<Type>::solve(Istream& solverControls) ++Foam::lduMatrix::solverPerformance Foam::fvMatrix<Type>::solve ++( ++ Istream& solverControls ++) + { + if (debug) + { + Info<< "fvMatrix<Type>::solve(Istream& solverControls) : " + "solving fvMatrix<Type>" + << endl; + } +@@ -70,15 +68,19 @@ + "fvMatrix<Type>::solve", + psi_.name() + ); + + scalarField saveDiag = diag(); + + Field<Type> source = source_; +- addBoundarySource(source, false); ++ ++ // At this point include the boundary source from the coupled boundaries. ++ // This is corrected for the implict part by updateMatrixInterfaces within ++ // the component loop. ++ addBoundarySource(source); + + typename Type::labelType validComponents + ( + pow + ( + psi_.mesh().directions(), + pTraits<typename powProduct<Vector<label>, Type::rank>::type>::zero +@@ -105,14 +107,35 @@ + ( + internalCoeffs_.component(cmpt) + ); + + lduInterfaceFieldPtrsList interfaces = + psi_.boundaryField().interfaces(); + ++ // Use the initMatrixInterfaces and updateMatrixInterfaces to correct ++ // bouCoeffsCmpt for the explicit part of the coupled boundary ++ // conditions ++ initMatrixInterfaces ++ ( ++ bouCoeffsCmpt, ++ interfaces, ++ psiCmpt, ++ sourceCmpt, ++ cmpt ++ ); ++ ++ updateMatrixInterfaces ++ ( ++ bouCoeffsCmpt, ++ interfaces, ++ psiCmpt, ++ sourceCmpt, ++ cmpt ++ ); ++ + lduMatrix::solverPerformance solverPerf; + + // Solver call + solverPerf = lduMatrix::solver::New + ( + psi_.name() + pTraits<Type>::componentNames[cmpt], + *this, +@@ -140,35 +163,36 @@ + psi_.correctBoundaryConditions(); + + return solverPerfVec; + } + + + template<class Type> +-autoPtr<typename fvMatrix<Type>::fvSolver> fvMatrix<Type>::solver() ++Foam::autoPtr<typename Foam::fvMatrix<Type>::fvSolver> ++Foam::fvMatrix<Type>::solver() + { + return solver(psi_.mesh().solver(psi_.name())); + } + + template<class Type> +-lduMatrix::solverPerformance fvMatrix<Type>::fvSolver::solve() ++Foam::lduMatrix::solverPerformance Foam::fvMatrix<Type>::fvSolver::solve() + { + return solve(psi_.mesh().solver(psi_.name())); + } + + + template<class Type> +-lduMatrix::solverPerformance fvMatrix<Type>::solve() ++Foam::lduMatrix::solverPerformance Foam::fvMatrix<Type>::solve() + { + return solve(psi_.mesh().solver(psi_.name())); + } + + + template<class Type> +-tmp<Field<Type> > fvMatrix<Type>::residual() const ++Foam::tmp<Foam::Field<Type> > Foam::fvMatrix<Type>::residual() const + { + tmp<Field<Type> > tres(source_); + Field<Type>& res = tres(); + + addBoundarySource(res); + + // Loop over field components +@@ -198,12 +222,8 @@ + ); + } + + return tres; + } + + +-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +- +-} // End namespace Foam +- + // ************************************************************************* // +Index: src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchField.C +=================================================================== +--- src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchField.C (Revision 30) ++++ src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchField.C (Revision 408) +@@ -181,14 +181,15 @@ + ) + : + fixedValueFvPatchField<Type>(ptf, iF), + setAverage_(ptf.setAverage_), + referenceCS_(ptf.referenceCS_), + nearestVertex_(ptf.nearestVertex_), + nearestVertexWeight_(ptf.nearestVertexWeight_), ++ fieldName_(ptf.fieldName_), + sampleTimes_(ptf.sampleTimes_), + startSampleTime_(ptf.startSampleTime_), + startSampledValues_(ptf.startSampledValues_), + startAverage_(ptf.startAverage_), + endSampleTime_(ptf.endSampleTime_), + endSampledValues_(ptf.endSampledValues_), + endAverage_(ptf.endAverage_) +Index: src/finiteVolume/finiteVolume/gradSchemes/leastSquaresGrad/leastSquaresVectors.C +=================================================================== +--- src/finiteVolume/finiteVolume/gradSchemes/leastSquaresGrad/leastSquaresVectors.C (Revision 30) ++++ src/finiteVolume/finiteVolume/gradSchemes/leastSquaresGrad/leastSquaresVectors.C (Revision 408) +@@ -150,15 +150,15 @@ + if (p.coupled()) + { + forAll(pd, patchFacei) + { + const vector& d = pd[patchFacei]; + + dd[faceCells[patchFacei]] += +- (pw[patchFacei]*pMagSf[patchFacei]/magSqr(d))*sqr(d); ++ ((1 - pw[patchFacei])*pMagSf[patchFacei]/magSqr(d))*sqr(d); + } + } + else + { + forAll(pd, patchFacei) + { + const vector& d = pd[patchFacei]; + +Index: src/turbulenceModels/compressible/kOmegaSST/kOmegaSST.C +=================================================================== +--- src/turbulenceModels/compressible/kOmegaSST/kOmegaSST.C (Revision 30) ++++ src/turbulenceModels/compressible/kOmegaSST/kOmegaSST.C (Revision 408) +@@ -237,15 +237,15 @@ + { + y_.correct(); + divU += fvc::div(mesh_.phi()); + } + + tmp<volTensorField> tgradU = fvc::grad(U_); + volScalarField S2 = magSqr(symm(tgradU())); +- volScalarField GbyMu = 2*mut_*(tgradU() && dev(symm(tgradU()))); ++ volScalarField GbyMu = 2*(tgradU() && dev(symm(tgradU()))); + volScalarField G = mut_*GbyMu; + tgradU.clear(); + + # include "kOmegaWallFunctionsI.H" + + volScalarField CDkOmega = + (2*alphaOmega2)*(fvc::grad(k_) & fvc::grad(omega_))/omega_; +@@ -280,15 +280,15 @@ + // Turbulent kinetic energy equation + tmp<fvScalarMatrix> kEqn + ( + fvm::ddt(rho_, k_) + + fvm::div(phi_, k_) + - fvm::laplacian(DkEff(F1), k_) + == +- min(G, c1*betaStar*k_*omega_) ++ min(G, (c1*betaStar)*rho_*k_*omega_) + - fvm::SuSp(2.0/3.0*rho_*divU, k_) + - fvm::Sp(rho_*betaStar*omega_, k_) + ); + + kEqn().relax(); + solve(kEqn); + bound(k_, k0_); diff --git a/sci-libs/openfoam-kernel/files/openfoam-kernel-compile-1.4.1_p20080118.patch b/sci-libs/openfoam-kernel/files/openfoam-kernel-compile-1.4.1_p20080118.patch new file mode 100644 index 000000000..708c0deca --- /dev/null +++ b/sci-libs/openfoam-kernel/files/openfoam-kernel-compile-1.4.1_p20080118.patch @@ -0,0 +1,231 @@ +diff -ur OpenFOAM-1.4.1-src/src/Allwmake OpenFOAM-1.4.1/src/Allwmake +--- OpenFOAM-1.4.1-src/src/Allwmake 2007-07-27 17:54:28.000000000 +0200 ++++ OpenFOAM-1.4.1/src/Allwmake 2007-10-18 21:04:12.000000000 +0200 +@@ -3,103 +3,103 @@ + + (cd $FOAM_SRC/OpenFOAM ; wmakeLnInclude . ) + +-wmake libso zlib-1.2.1 +- +-if [ "$WM_MPLIB" = "OPENMPI" -a ! -r $OPENMPI_ARCH_PATH/lib/libmpi.a -a ! -r $OPENMPI_ARCH_PATH/lib/libmpi.so ] +-then +- +- cd $OPENMPI_HOME +- +- gmake distclean +- rm -rf $OPENMPI_ARCH_PATH +- +- ./configure \ +- --prefix=$OPENMPI_ARCH_PATH \ +- --disable-mpirun-prefix-by-default \ +- --disable-orterun-prefix-by-default \ +- --enable-shared --disable-static \ +- --disable-mpi-f77 --disable-mpi-f90 --disable-mpi-cxx \ +- --disable-mpi-profile +- +- gmake +- gmake install +- gmake distclean +- +- cd $FOAM_SRC +-fi +- +-if [ "$WM_MPLIB" = "LAM" -a ! -r $LAM_ARCH_PATH/lib/libmpi.a -a ! -r $LAM_ARCH_PATH/lib/libmpi.so ] +-then +- +- cd $LAMHOME +- +- gmake distclean +- rm -rf $LAM_ARCH_PATH +- +- ./configure \ +- --prefix=$LAM_ARCH_PATH \ +- --enable-shared \ +- --disable-static \ +- --without-romio \ +- --without-mpi2cpp \ +- --without-profiling \ +- --without-fc +- +- gmake +- gmake install +- gmake distclean +- +- cd $FOAM_SRC +-fi +- +-if [ "$WM_MPLIB" = "MPICH" -a ! -r $MPICH_ARCH_PATH/lib/libmpich.a -a ! -r $MPICH_ARCH_PATH/lib/libmpich.so ] +-then +- +- cd $MPICH_PATH +- +- make distclean +- rm -rf $MPICH_ARCH_PATH +- rm util/machines/machines.* +- +- ./configure \ +- --without-mpe \ +- --disable-f77 \ +- --disable-f90 \ +- --disable-f90modules \ +- --disable-c++ \ +- --disable-mpedbg \ +- --disable-devdebug \ +- --disable-debug \ +- --enable-sharedlib=$MPICH_ARCH_PATH/lib \ +- --with-device=ch_p4 \ +- -prefix=$MPICH_ARCH_PATH +- make +- make install +- make distclean +- +- if [ -r $MPICH_ARCH_PATH ] +- then +- cd $MPICH_ARCH_PATH/bin +- for file in * +- do +- sed s%$MPICH_ARCH_PATH%'$MPICH_ARCH_PATH'%g $file > temp.$$ +- mv temp.$$ $file +- chmod ugo+rx $file +- done +- +- cd $MPICH_ARCH_PATH/lib +- +- if [ -r libmpich.so.1.0 ] +- then +- rm *.so +- ln -s libmpich.so.1.0 libmpich.so +- fi +- +- cd $MPICH_ARCH_PATH +- fi +- +- cd $FOAM_SRC +-fi ++# wmake libso zlib-1.2.1 ++# ++# if [ "$WM_MPLIB" = "OPENMPI" -a ! -r $OPENMPI_ARCH_PATH/lib/libmpi.a -a ! -r $OPENMPI_ARCH_PATH/lib/libmpi.so ] ++# then ++# ++# cd $OPENMPI_HOME ++# ++# gmake distclean ++# rm -rf $OPENMPI_ARCH_PATH ++# ++# ./configure \ ++# --prefix=$OPENMPI_ARCH_PATH \ ++# --disable-mpirun-prefix-by-default \ ++# --disable-orterun-prefix-by-default \ ++# --enable-shared --disable-static \ ++# --disable-mpi-f77 --disable-mpi-f90 --disable-mpi-cxx \ ++# --disable-mpi-profile ++# ++# gmake ++# gmake install ++# gmake distclean ++# ++# cd $FOAM_SRC ++# fi ++# ++# if [ "$WM_MPLIB" = "LAM" -a ! -r $LAM_ARCH_PATH/lib/libmpi.a -a ! -r $LAM_ARCH_PATH/lib/libmpi.so ] ++# then ++# ++# cd $LAMHOME ++# ++# gmake distclean ++# rm -rf $LAM_ARCH_PATH ++# ++# ./configure \ ++# --prefix=$LAM_ARCH_PATH \ ++# --enable-shared \ ++# --disable-static \ ++# --without-romio \ ++# --without-mpi2cpp \ ++# --without-profiling \ ++# --without-fc ++# ++# gmake ++# gmake install ++# gmake distclean ++# ++# cd $FOAM_SRC ++# fi ++# ++# if [ "$WM_MPLIB" = "MPICH" -a ! -r $MPICH_ARCH_PATH/lib/libmpich.a -a ! -r $MPICH_ARCH_PATH/lib/libmpich.so ] ++# then ++# ++# cd $MPICH_PATH ++# ++# make distclean ++# rm -rf $MPICH_ARCH_PATH ++# rm util/machines/machines.* ++# ++# ./configure \ ++# --without-mpe \ ++# --disable-f77 \ ++# --disable-f90 \ ++# --disable-f90modules \ ++# --disable-c++ \ ++# --disable-mpedbg \ ++# --disable-devdebug \ ++# --disable-debug \ ++# --enable-sharedlib=$MPICH_ARCH_PATH/lib \ ++# --with-device=ch_p4 \ ++# -prefix=$MPICH_ARCH_PATH ++# make ++# make install ++# make distclean ++# ++# if [ -r $MPICH_ARCH_PATH ] ++# then ++# cd $MPICH_ARCH_PATH/bin ++# for file in * ++# do ++# sed s%$MPICH_ARCH_PATH%'$MPICH_ARCH_PATH'%g $file > temp.$$ ++# mv temp.$$ $file ++# chmod ugo+rx $file ++# done ++# ++# cd $MPICH_ARCH_PATH/lib ++# ++# if [ -r libmpich.so.1.0 ] ++# then ++# rm *.so ++# ln -s libmpich.so.1.0 libmpich.so ++# fi ++# ++# cd $MPICH_ARCH_PATH ++# fi ++# ++# cd $FOAM_SRC ++# fi + + (cd Pstream ; ./Allwmake) + wmake libso OpenFOAM +diff -ur OpenFOAM-1.4.1-src/src/Allwmake OpenFOAM-1.4.1/src/Allwmake +--- OpenFOAM-1.4.1-src/src/Allwmake 2007-07-27 17:54:28.000000000 +0200 ++++ OpenFOAM-1.4.1/src/Allwmake 2007-10-18 21:04:12.000000000 +0200 +@@ -141,13 +141,13 @@ + + (cd malloc ; ./Allwmake) + +-if [ ! -r $MICO_ARCH_PATH/lib/libmico${MICO_VERSION}.a ] +-then +- cd $MICO_PATH +- gmake distclean +- ./configure --prefix=$MICO_ARCH_PATH --disable-shared --without-x +- gmake +- gmake install +- gmake distclean +- cd .. +-fi ++# if [ ! -r $MICO_ARCH_PATH/lib/libmico${MICO_VERSION}.a ] ++# then ++# cd $MICO_PATH ++# gmake distclean ++# ./configure --prefix=$MICO_ARCH_PATH --disable-shared --without-x ++# gmake ++# gmake install ++# gmake distclean ++# cd .. ++# fi diff --git a/sci-libs/openfoam-kernel/metadata.xml b/sci-libs/openfoam-kernel/metadata.xml new file mode 100644 index 000000000..7e3286984 --- /dev/null +++ b/sci-libs/openfoam-kernel/metadata.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> +<herd>maintainer-wanted</herd> +</pkgmetadata> diff --git a/sci-libs/openfoam-kernel/openfoam-kernel-1.4.1_p20080118.ebuild b/sci-libs/openfoam-kernel/openfoam-kernel-1.4.1_p20080118.ebuild new file mode 100644 index 000000000..390872e83 --- /dev/null +++ b/sci-libs/openfoam-kernel/openfoam-kernel-1.4.1_p20080118.ebuild @@ -0,0 +1,73 @@ +# Copyright 1999-2008 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +inherit eutils java-pkg-2 versionator multilib toolchain-funcs + +MY_PN="OpenFOAM" +MY_PV=$(get_version_component_range 1-3 ${PV}) +MY_P="${MY_PN}-${MY_PV}" + +DESCRIPTION="OpenFOAM - Kernel package" +HOMEPAGE="http://www.opencfd.co.uk/openfoam/" +SRC_URI="mirror://sourceforge/foam/${MY_P}.General.gtgz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="" + +RDEPEND="!sci-libs/openfoam + !sci-libs/openfoam-bin + <virtual/jdk-1.5 + >=sci-libs/openfoam-wmake-${MY_PV}" +DEPEND="${RDEPEND}" + +S=${WORKDIR}/${MY_P} +INSDIR=/usr/$(get_libdir)/${MY_PN}/${MY_P} + +pkg_setup() { + if ! version_is_at_least 4.1 $(gcc-version) ; then + die "${PN} requires >=sys-devel/gcc-4.1 to compile." + fi + + java-pkg-2_pkg_setup +} + +src_unpack() { + ln -s "${DISTDIR}"/${MY_P}.General.gtgz ${MY_P}.General.tgz + unpack ./${MY_P}.General.tgz + + cd "${S}" + epatch "${FILESDIR}"/${P}.patch + epatch "${FILESDIR}"/${PN}-compile-${PV}.patch +} + +src_compile() { + cp -a ${INSDIR}/.bashrc "${S}"/.bashrc || "cannot copy .bashrc" + cp -a ${INSDIR}/.${MY_P}/bashrc "${S}"/.${MY_P}/bashrc.bak || "cannot copy bashrc" + + use amd64 && export WM_64="on" + + sed -i -e "s|WM_PROJECT_INST_DIR=/usr/$(get_libdir)/\$WM_PROJECT|WM_PROJECT_INST_DIR="${WORKDIR}"|" \ + -e "s|WM_PROJECT_DIR=\$WM_PROJECT_INST_DIR/\$WM_PROJECT-\$WM_PROJECT_VERSION|WM_PROJECT_DIR="${S}"|" \ + "${S}"/.${MY_P}/bashrc.bak \ + || die "could not replace source options" + + sed -i -e "s|\$WM_PROJECT_DIR/wmake|"${INSDIR}"/wmake|" \ + -e "s|\$WM_PROJECT_INST_DIR/\$WM_ARCH/bin|"${INSDIR}"/bin|" \ + -e "s|FOAM_LIBBIN=\$FOAM_LIB|FOAM_LIBBIN=\$FOAM_LIB/\$WM_OPTIONS|" \ + -e "s|applications/bin|applications/bin/\$WM_OPTIONS|" \ + "${S}"/.bashrc || die "could not replace paths" + + source "${S}"/.${MY_P}/bashrc.bak + + cd "${S}"/src + ./Allwmake || die "could not build OpenFOAM kernel" +} + +src_install() { + insopts -m0755 + insinto /usr/$(get_libdir)/${MY_PN}/${MY_P}/lib + doins -r lib/${WM_OPTIONS}/* +} |