diff --git a/BuildIssues.txt b/BuildIssues.txt deleted file mode 100644 index a05b5301c3c3217f6ef357024abaea952f16974f..0000000000000000000000000000000000000000 --- a/BuildIssues.txt +++ /dev/null @@ -1,121 +0,0 @@ -OpenFOAM-1712 -================== -Known Build Issues -================== - ---------------------- -Intel MPI (Gcc/Clang) ---------------------- - - Either I_MPI_ROOT or MPI_ROOT can be used to specify the Intel-MPI - installation directory path. - - The ThirdParty build of ptscotch uses `mpiicc` for Intel-MPI - instead of the usual `mpicc`. - When gcc or clang are used, it is highly likely that the - I_MPI_CC environment variable also needs to be set accordingly. - - See `mpiicc -help` for more information about environment variables. - - --------------- -Intel Compiler --------------- - - Since OpenFOAM uses C++11, a fairly recent version is required. - The Intel compiler - icc (ICC) 17.0.1 20161005 is ok, but the - initial release - icc (ICC) 17.0.0 20160721 - has a bug that - will result in these types of error messages. - - MatrixSpaceI.H(492): error: no instance of overloaded function - "Foam::MatrixSpace<Form, Cmpt, Mrows, Ncols>::Block<SubTensor, - BRowStart, BColStart>::operator=" matches the specified type - - ---- -VTK ---- - -If using the runTimePostProcessing to create on-the-fly images, you -can simply just compile ParaView and these libraries will be used. - -If you elect to use a separate VTK compilation (for example for -off-screen rendering), it is advisable to reuse the VTK libraries that -are provided with ParaView by making an appropriate symlink -prior to using makeVTK. This doesn't just reduce disk-space, but works -much better than using the VTK tar file. - -Using runTimePostProcessing with the 'plain' VTK libraries does -generally work, but does not exit cleanly: - - symbol lookup error: .../linux64Gcc/VTK-7.1.0/lib/libvtkCommonExecutionModel-7.1.so.1: - undefined symbol: _ZN33vtkFilteringInformationKeyManager13ClassFinalizeEv - - symbol lookup error: .../linux64Gcc/VTK-7.1.0/lib/libvtkCommonDataModel-7.1.so.1: - undefined symbol: _ZN49vtkInformationQuadratureSchemeDefinitionVectorKeyD1Ev - -This error appears to be suppressed if VTK is compiled with a Debug build-type. - - -------------------------- -Building on older systems -------------------------- - -If the system gcc is too old for building OpenFOAM, a third-party gcc or -clang/llvm installation can be used. If building clang/llvm, note that -there are also minimum gcc/g++ requirements there: - - Min gcc/g++ - =========== ========== - 4.4 llvm-3.4.2 - 4.7 llvm-3.5.2 - llvm-3.7.0 - - -If your system compiler is too old to build the minimum required gcc or -clang/llvm, it is just simply too old. - - ---------------------------------- -ThirdParty clang without gmp/mpfr ---------------------------------- - -If using ThirdParty clang without gmp/mpfr, the ThirdParty makeCGAL -script will need to be run manually and specify that there is no -gmp/mpfr. Eg, - - cd $WM_THIRD_PARTY_DIR - ./makeCGAL gmp-none mpfr-none - -Subequent compilation with Allwmake will now run largely without any -problems, except that the components linking against CGAL -(foamyMesh and surfaceBooleanFeatures) will also try to link against -a nonexistent mpfr library. As a workaround, the link-dependency can -be removed in wmake/rules/General/CGAL : - - CGAL_LIBS = \ - -L$(BOOST_ARCH_PATH)/lib \ - -L$(BOOST_ARCH_PATH)/lib$(WM_COMPILER_LIB_ARCH) \ - -L$(CGAL_ARCH_PATH)/lib \ - -L$(CGAL_ARCH_PATH)/lib$(WM_COMPILER_LIB_ARCH) \ - -lCGAL - -This is a temporary inconvenience until a more robust solution is found. - - -------------------------- -Building with spack -------------------------- - -If you are building with spack, note that the depends_on for paraview -resolves poorly. The +qt dependency (for building the reader module) -may need to be specified as a preference by including the following in -your `~/.spack/packages.yaml` file: - - packages: - paraview: - variants: +qt - -It appears that spack will otherwise ignore any paraview+qt version -and attempt to install a paraview~qt version instead. - --- diff --git a/META-INFO/api-info b/META-INFO/api-info index bade5ef065ed5e50060495e0850cea3d75eba402..4448e7818b720a2c8860989170025bd0b69b1f38 100644 --- a/META-INFO/api-info +++ b/META-INFO/api-info @@ -1,2 +1,2 @@ -api=1904 +api=1906 patch=0 diff --git a/README.md b/README.md index 163f443c55faacd85798bb258e713f92ab002b79..a98a59729312cd21537002695fc19969bdbc15f7 100644 --- a/README.md +++ b/README.md @@ -33,9 +33,9 @@ Please see the relevant guides: [repo openfoam]: https://develop.openfoam.com/Development/OpenFOAM-plus/ [repo third]: https://develop.openfoam.com/Development/ThirdParty-plus/ -[link openfoam-issues]: https://develop.openfoam.com/Development/OpenFOAM-plus/blob/develop/BuildIssues.txt [link openfoam-readme]: https://develop.openfoam.com/Development/OpenFOAM-plus/blob/develop/README.md -[link openfoam-config]: https://develop.openfoam.com/Development/OpenFOAM-plus/blob/develop/etc/README.md +[link openfoam-issues]: https://develop.openfoam.com/Development/OpenFOAM-plus/blob/develop/doc/BuildIssues.md +[link openfoam-config]: https://develop.openfoam.com/Development/OpenFOAM-plus/blob/develop/doc/Config.md [link openfoam-build]: https://develop.openfoam.com/Development/OpenFOAM-plus/blob/develop/doc/Build.md [link openfoam-require]: https://develop.openfoam.com/Development/OpenFOAM-plus/blob/develop/doc/Requirements.md [link third-readme]: https://develop.openfoam.com/Development/ThirdParty-plus/blob/develop/README.md diff --git a/applications/solvers/finiteArea/surfactantFoam/createVolFields.H b/applications/solvers/finiteArea/surfactantFoam/createVolFields.H index 2f42dae83d971a8ba8794086d3575c80bf7200ac..2d1de76a61e2a3b878cc1790da299fbd8241b623 100644 --- a/applications/solvers/finiteArea/surfactantFoam/createVolFields.H +++ b/applications/solvers/finiteArea/surfactantFoam/createVolFields.H @@ -16,7 +16,7 @@ ); vsm.mapToVolume(Cs, Cvf.boundaryFieldRef()); - Cvf.write(); + //Cvf.write(); volVectorField U ( @@ -33,4 +33,4 @@ ); vsm.mapToVolume(Us, U.boundaryFieldRef()); - U.write(); + //U.write(); diff --git a/applications/test/Matrix/Test-Matrix.C b/applications/test/Matrix/Test-Matrix.C index 3ea5fcaaded9ebe7b7205c21cfb8aa602bd6fc8f..1aa50c363b1bac86e238df166cd105af0cab1ff9 100644 --- a/applications/test/Matrix/Test-Matrix.C +++ b/applications/test/Matrix/Test-Matrix.C @@ -30,6 +30,7 @@ License #include "LLTMatrix.H" #include "Random.H" #include "SortList.H" +#include "Switch.H" #include <algorithm> using namespace Foam; @@ -237,22 +238,14 @@ int main(int argc, char *argv[]) Info<< "# SquareMatrix<scalar> example:" << nl; printMatrix(Info, S) << nl; - const label mRows = S.m(); - const label nCols = S.n(); - const label size = S.size(); - const labelPair sizes = S.sizes(); - const bool isEmpty = S.empty(); - const long constPointer = long(S.cdata()); - long pointer = long(S.data()); - Info - << "Number of rows =" << tab << mRows << nl - << "Number of columns = " << tab << nCols << nl - << "Number of elements = " << tab << size << nl - << "Number of rows/columns = " << tab << sizes << nl - << "Matrix is empty = " << tab << isEmpty << nl - << "Constant pointer = " << tab << constPointer << nl - << "Pointer = " << tab << pointer << nl + << "Number of rows =" << tab << S.m() << nl + << "Number of columns = " << tab << S.n() << nl + << "Number of elements = " << tab << S.size() << nl + << "Number of rows/columns = " << tab << S.sizes() << nl + << "Matrix is empty = " << tab << Switch(S.empty()) << nl + << "Constant pointer = " << tab << uintptr_t(S.cdata()) << nl + << "Pointer = " << tab << uintptr_t(S.data()) << nl << nl; horizontalLine(); diff --git a/doc/Build.md b/doc/Build.md index 97aafcb5f2fe4d86e652217dd3f61330db76b90e..a59c8e6aa9ea362e0160d08bfb2c1673b0163f5c 100644 --- a/doc/Build.md +++ b/doc/Build.md @@ -15,7 +15,8 @@ The [third-party][repo third] directory includes a [build guide][link third-build]. Some known build issues related to specific compiler and VTK library versions -can be found in the [$WM_PROJECT_DIR/BuildIssues.txt][link openfoam-issues] file. +can be found in the [$WM_PROJECT_DIR/doc/BuildIssues.md][link openfoam-issues] +file. If you need to change the default versions for third-party libraries, or use system libraries for some components, please some additional @@ -94,10 +95,10 @@ simpleFoam OpenFOAM ships with ParaView sources for post-processing OpenFOAM field results. However, the paraview version distributed with the operating system or a [binary package][download ParaView] -will be sufficient, and avoids additional compilation complexity. +will often be sufficient, and avoids additional compilation complexity. -If do you wish to compile ParaView from sources, it is recommended -that you do so *after* completing an initial compilation of OpenFOAM. +If you do wish to compile ParaView from source, it is recommended +that you do so ***after*** completing an initial compilation of OpenFOAM. This gets the process started much more quickly. At a later stage, OpenFOAM can be updated to compile with paraview. Only the affected applications will be compiled (eg, the blockMesh reader module) and the @@ -123,8 +124,9 @@ More details in the [ThirdParty build guide][link third-build]. [repo openfoam]: https://develop.openfoam.com/Development/OpenFOAM-plus/ [repo third]: https://develop.openfoam.com/Development/ThirdParty-plus/ -[link openfoam-issues]: https://develop.openfoam.com/Development/OpenFOAM-plus/blob/develop/BuildIssues.txt -[link openfoam-config]: https://develop.openfoam.com/Development/OpenFOAM-plus/blob/develop/etc/README.md +[link openfoam-readme]: https://develop.openfoam.com/Development/OpenFOAM-plus/blob/develop/README.md +[link openfoam-issues]: https://develop.openfoam.com/Development/OpenFOAM-plus/blob/develop/doc/BuildIssues.md +[link openfoam-config]: https://develop.openfoam.com/Development/OpenFOAM-plus/blob/develop/doc/Config.md [link openfoam-build]: https://develop.openfoam.com/Development/OpenFOAM-plus/blob/develop/doc/Build.md [link openfoam-require]: https://develop.openfoam.com/Development/OpenFOAM-plus/blob/develop/doc/Requirements.md [link third-readme]: https://develop.openfoam.com/Development/ThirdParty-plus/blob/develop/README.md diff --git a/doc/BuildIssues.md b/doc/BuildIssues.md new file mode 100644 index 0000000000000000000000000000000000000000..a3a4f5d3754d64ae95207c3d89c543890896f189 --- /dev/null +++ b/doc/BuildIssues.md @@ -0,0 +1,111 @@ +## Known Build Issues (OpenFOAM-v1906) + +### Intel MPI with Gcc/Clang) + +Either `I_MPI_ROOT` (preferred) or `MPI_ROOT` can be used to specify +the Intel-MPI installation directory path. +The ThirdParty build of ptscotch uses `mpiicc` for Intel-MPI instead +of the usual `mpicc`. When gcc or clang are used, it is quite likely +that the `I_MPI_CC` environment variable also needs to be set +accordingly. +See `mpiicc -help` for more information about environment variables. + + +### VTK + +If using the runTimePostProcessing to create on-the-fly images, you +can simply just compile ParaView and these libraries will be used. +If you elect to use a separate VTK compilation (for example for +off-screen rendering), it is advisable to reuse the VTK libraries that +are provided with ParaView by making an appropriate symlink +prior to using makeVTK. This doesn't just reduce disk-space, but works +much better than using the VTK tar file. + +Using runTimePostProcessing with the *plain* VTK libraries does +generally work, but may not exit cleanly: +``` +symbol lookup error: .../linux64Gcc/VTK-7.1.0/lib/libvtkCommonExecutionModel-7.1.so.1: +undefined symbol: _ZN33vtkFilteringInformationKeyManager13ClassFinalizeEv + +symbol lookup error: .../linux64Gcc/VTK-7.1.0/lib/libvtkCommonDataModel-7.1.so.1: +undefined symbol: _ZN49vtkInformationQuadratureSchemeDefinitionVectorKeyD1Ev +``` + +This error appears to be suppressed if VTK is compiled with a `Debug` build-type. + + +### Building on older systems + +If the system gcc is too old for building OpenFOAM, a third-party gcc or +clang/llvm installation can be used. If building clang/llvm, note that +there are also minimum gcc/g++ requirements as listed in the +detailed [build guide][link third-build]. + +If your system compiler is too old to build the minimum required gcc or +clang/llvm, it is just simply too old. + + +### ThirdParty clang without gmp/mpfr + +If using ThirdParty clang without gmp/mpfr, the ThirdParty makeCGAL +script will need to be run manually and specify that there is no +gmp/mpfr. Eg, +``` +cd $WM_THIRD_PARTY_DIR +./makeCGAL gmp-none mpfr-none +``` + +Subequent compilation with Allwmake will now run largely without any +problems, except that the components linking against CGAL +(foamyMesh and surfaceBooleanFeatures) will also try to link against +a nonexistent mpfr library. As a workaround, the link-dependency can +be removed in wmake/rules/General/CGAL : +``` +CGAL_LIBS = \ + -L$(BOOST_ARCH_PATH)/lib \ + -L$(BOOST_ARCH_PATH)/lib$(WM_COMPILER_LIB_ARCH) \ + -L$(CGAL_ARCH_PATH)/lib \ + -L$(CGAL_ARCH_PATH)/lib$(WM_COMPILER_LIB_ARCH) \ + -lCGAL +``` + +A robuster solution is still being sought. + + +### Building with spack + +If you are building with spack, note that the `depends_on` for paraview +resolves poorly. The `+qt` dependency (for building the reader module) +may need to be specified as a preference by including the following in +your `~/.spack/packages.yaml` file: +``` +packages: + paraview: + variants: +qt +``` +It appears that spack will otherwise ignore any `paraview+qt` version +and attempt to install a `paraview~qt` version instead. + +-- +<!-- Links --> + +[page ParaView]: http://www.paraview.org/ +[download ParaView]: https://www.paraview.org/download/ + + +<!-- OpenFOAM --> + +[repo openfoam]: https://develop.openfoam.com/Development/OpenFOAM-plus/ +[repo third]: https://develop.openfoam.com/Development/ThirdParty-plus/ + +[link openfoam-readme]: https://develop.openfoam.com/Development/OpenFOAM-plus/blob/develop/README.md +[link openfoam-issues]: https://develop.openfoam.com/Development/OpenFOAM-plus/blob/develop/doc/BuildIssues.md +[link openfoam-config]: https://develop.openfoam.com/Development/OpenFOAM-plus/blob/develop/doc/Config.md +[link openfoam-build]: https://develop.openfoam.com/Development/OpenFOAM-plus/blob/develop/doc/Build.md +[link openfoam-require]: https://develop.openfoam.com/Development/OpenFOAM-plus/blob/develop/doc/Requirements.md +[link third-readme]: https://develop.openfoam.com/Development/ThirdParty-plus/blob/develop/README.md +[link third-build]: https://develop.openfoam.com/Development/ThirdParty-plus/blob/develop/BUILD.md +[link third-require]: https://develop.openfoam.com/Development/ThirdParty-plus/blob/develop/Requirements.md + +--- +Copyright 2019 OpenCFD Ltd diff --git a/etc/README.md b/doc/Config.md similarity index 100% rename from etc/README.md rename to doc/Config.md diff --git a/doc/Requirements.md b/doc/Requirements.md index 5f9be72dae449c516185dacc9c085a2f4922d48b..a78bbd53ccdcf4115019168fbc49c91a4a1da433 100644 --- a/doc/Requirements.md +++ b/doc/Requirements.md @@ -10,15 +10,21 @@ OpenFOAM requires a functioning C++11 compiler and `make` build toolchain. - fftw: 3.3.7 (recommended - required for FFT-related functionality) - paraview: 5.5.2 (for visualization) +If using the Intel® compiler, `17.0.1 20161005` is the minimum +usable version. + + To check the installed versions | Program | To check the version | |---------------|-----------------------| | gcc | gcc --version | +| icc | icc --version | | cmake | cmake --version | | openmpi | orterun --version | + ### Additional utilities - flex @@ -81,7 +87,6 @@ sudo zypper install cmake boost-devel mpfr-devel gmp-devel openmpi-devel gnuplot This installs - | Program | openSUSE | Program version | |-----------|-----------|-----------------| | gcc | 15.0 | 7.4.3 | @@ -157,7 +162,7 @@ A partial list is given in the [ThirdParty requirements][link third-require]. <!-- OpenFOAM --> [link openfoam-readme]: https://develop.openfoam.com/Development/OpenFOAM-plus/blob/develop/README.md -[link openfoam-config]: https://develop.openfoam.com/Development/OpenFOAM-plus/blob/develop/etc/README.md +[link openfoam-config]: https://develop.openfoam.com/Development/OpenFOAM-plus/blob/develop/doc/Config.md [link openfoam-build]: https://develop.openfoam.com/Development/OpenFOAM-plus/blob/develop/doc/Build.md [link openfoam-require]: https://develop.openfoam.com/Development/OpenFOAM-plus/blob/develop/doc/Requirements.md [link third-readme]: https://develop.openfoam.com/Development/ThirdParty-plus/blob/develop/README.md diff --git a/etc/config.csh/vtk b/etc/config.csh/vtk index dbd5edf90c60a6c958c697bcbd7479d20be3796f..eaabe2703141eb86ad9ce673a91552bdf86f4d68 100644 --- a/etc/config.csh/vtk +++ b/etc/config.csh/vtk @@ -25,7 +25,7 @@ # # It is recommended to use VTK sources from ParaView (5.0.1 or later) # -# See BuildIssues.txt about problems that can be encountered when using +# See doc/BuildIssues.md about problems that can be encountered when using # the 'plain' VTK sources. #------------------------------------------------------------------------------ # USER EDITABLE PART: Changes made here may be lost with the next upgrade diff --git a/etc/config.sh/vtk b/etc/config.sh/vtk index 4815da2435c7d6ee079b75042249661d290424e7..38859432d6430c9bb11e408fafe5bd5a3e118b0f 100644 --- a/etc/config.sh/vtk +++ b/etc/config.sh/vtk @@ -26,7 +26,7 @@ # # It is recommended to use VTK sources from ParaView (5.0.1 or later) # -# See BuildIssues.txt about problems that can be encountered when using +# See doc/BuildIssues.md about problems that can be encountered when using # the 'plain' VTK sources. #------------------------------------------------------------------------------ # USER EDITABLE PART: Changes made here may be lost with the next upgrade diff --git a/etc/controlDict b/etc/controlDict index 223f28e3abd134e726ca73efdab2b8223782c6b3..b30bff5d4f9cb644b0514e39fdc0b1877cb0b8b8 100644 --- a/etc/controlDict +++ b/etc/controlDict @@ -68,7 +68,8 @@ InfoSwitches allowSystemOperations 1; // Allow space character in fileName (use with caution) - allowSpaceInFileName 0; + // Default: 0 for non-Windows, 1 for Windows + //// allowSpaceInFileName 0; } diff --git a/src/OpenFOAM/global/argList/argListHelp.C b/src/OpenFOAM/global/argList/argListHelp.C index 850359654c0f11572341c1a3fdbf2edfa87cb697..bfc8e694ecff2780965a2ae584ecfb60b3fafa2f 100644 --- a/src/OpenFOAM/global/argList/argListHelp.C +++ b/src/OpenFOAM/global/argList/argListHelp.C @@ -33,6 +33,12 @@ License namespace Foam { +// Convert api number (YYMM) -> 20YY. Eg, 1906 -> 2019 +static inline int apiYear() +{ + return 2000 + (foamVersion::api / 100); +} + // manpage Footer static inline void printManFooter() { @@ -40,7 +46,7 @@ static inline void printManFooter() << "Online documentation " << "https://www.openfoam.com/documentation/" << nl << ".SH COPYRIGHT" << nl - << "Copyright \\(co 2018 OpenCFD Ltd." << nl; + << "Copyright \\(co 2018-" << apiYear() << " OpenCFD Ltd." << nl; } diff --git a/src/OpenFOAM/primitives/strings/fileName/fileName.C b/src/OpenFOAM/primitives/strings/fileName/fileName.C index 03daab90e0be40f5f1d8c288cb8932291bfb3037..0027a6367a070faeffc58ce6b24dcfa3e0b0f709 100644 --- a/src/OpenFOAM/primitives/strings/fileName/fileName.C +++ b/src/OpenFOAM/primitives/strings/fileName/fileName.C @@ -36,11 +36,18 @@ License // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // const char* const Foam::fileName::typeName = "fileName"; + int Foam::fileName::debug(Foam::debug::debugSwitch(fileName::typeName, 0)); + int Foam::fileName::allowSpaceInFileName ( + #ifdef _WIN32 + Foam::debug::infoSwitch("allowSpaceInFileName", 1) + #else Foam::debug::infoSwitch("allowSpaceInFileName", 0) + #endif ); + const Foam::fileName Foam::fileName::null; diff --git a/src/functionObjects/field/stabilityBlendingFactor/stabilityBlendingFactor.C b/src/functionObjects/field/stabilityBlendingFactor/stabilityBlendingFactor.C index 8bf214aaf53ec13459cef783b2a0b43c6f5d30ed..526813dff0e9473dbc161171ee73aa4137497e52 100644 --- a/src/functionObjects/field/stabilityBlendingFactor/stabilityBlendingFactor.C +++ b/src/functionObjects/field/stabilityBlendingFactor/stabilityBlendingFactor.C @@ -109,12 +109,13 @@ bool Foam::functionObjects::stabilityBlendingFactor::init(bool first) if (!residualPtr) { WarningInFunction - << "Could not find residual file : " << residualName_ - << ".The residual mode won't be " << nl + << "Could not find residual field : " << residualName_ + << ". The residual mode won't be " << nl << " considered for the blended field in the stability " << "blending factor. " << nl - << " Add the corresponding residual function object. " << nl - << " If the residual function object is already set " + << " Please add the corresponding 'solverInfo'" + << " function object with 'writeResidualFields true'." << nl + << " If the solverInfo function object is already enabled " << "you might need to wait " << nl << " for the first iteration." << nl << endl; diff --git a/src/functionObjects/forces/forceCoeffs/forceCoeffs.C b/src/functionObjects/forces/forceCoeffs/forceCoeffs.C index 97420e80b37297af6f0fd91450b8f1f09d5f8ff8..962a9c233ecf6ba6947ef850c92d23ebfc85f40e 100644 --- a/src/functionObjects/forces/forceCoeffs/forceCoeffs.C +++ b/src/functionObjects/forces/forceCoeffs/forceCoeffs.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010, 2015-2017 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2010, 2015-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -42,7 +42,6 @@ namespace Foam namespace functionObjects { defineTypeNameAndDebug(forceCoeffs, 0); - addToRunTimeSelectionTable(functionObject, forceCoeffs, dictionary); } } @@ -61,12 +60,23 @@ void Foam::functionObjects::forceCoeffs::createFiles() if (nBin_ > 1) { - CmBinFilePtr_ = createFile("CmBin"); - writeBinHeader("Moment coefficient bins", CmBinFilePtr_()); CdBinFilePtr_ = createFile("CdBin"); writeBinHeader("Drag coefficient bins", CdBinFilePtr_()); + + CsBinFilePtr_ = createFile("CsBin"); + writeBinHeader("Side coefficient bins", CsBinFilePtr_()); + ClBinFilePtr_ = createFile("ClBin"); writeBinHeader("Lift coefficient bins", ClBinFilePtr_()); + + CmRollBinFilePtr_ = createFile("CmRollBin"); + writeBinHeader("Roll moment coefficient bins", CmRollBinFilePtr_()); + + CmPitchBinFilePtr_ = createFile("CmPitchBin"); + writeBinHeader("Moment coefficient bins", CmPitchBinFilePtr_()); + + CmYawBinFilePtr_ = createFile("CmYawBin"); + writeBinHeader("Yaw moment coefficient bins", CmYawBinFilePtr_()); } } } @@ -79,18 +89,28 @@ void Foam::functionObjects::forceCoeffs::writeIntegratedHeader ) const { writeHeader(os, "Force coefficients"); - writeHeaderValue(os, "liftDir", liftDir_); - writeHeaderValue(os, "dragDir", dragDir_); - writeHeaderValue(os, "pitchAxis", pitchAxis_); + writeHeaderValue(os, "dragDir", coordSys_.e1()); + writeHeaderValue(os, "sideDir", coordSys_.e2()); + writeHeaderValue(os, "liftDir", coordSys_.e3()); + writeHeaderValue(os, "rollAxis", coordSys_.e1()); + writeHeaderValue(os, "pitchAxis", coordSys_.e2()); + writeHeaderValue(os, "yawAxis", coordSys_.e3()); writeHeaderValue(os, "magUInf", magUInf_); writeHeaderValue(os, "lRef", lRef_); writeHeaderValue(os, "Aref", Aref_); writeHeaderValue(os, "CofR", coordSys_.origin()); writeHeader(os, ""); writeCommented(os, "Time"); - writeTabbed(os, "Cm"); writeTabbed(os, "Cd"); + writeTabbed(os, "Cs"); writeTabbed(os, "Cl"); + writeTabbed(os, "CmRoll"); + writeTabbed(os, "CmPitch"); + writeTabbed(os, "CmYaw"); + writeTabbed(os, "Cd(f)"); + writeTabbed(os, "Cd(r)"); + writeTabbed(os, "Cs(f)"); + writeTabbed(os, "Cs(r)"); writeTabbed(os, "Cl(f)"); writeTabbed(os, "Cl(r)"); os << endl; @@ -114,30 +134,30 @@ void Foam::functionObjects::forceCoeffs::writeBinHeader forAll(binPoints, pointi) { binPoints[pointi] = (binMin_ + (pointi + 1)*binDx_)*binDir_; - os << tab << binPoints[pointi].x(); + os << tab << binPoints[pointi].x(); } - os << nl; + os << nl; writeCommented(os, "y co-ords :"); forAll(binPoints, pointi) { - os << tab << binPoints[pointi].y(); + os << tab << binPoints[pointi].y(); } - os << nl; + os << nl; writeCommented(os, "z co-ords :"); forAll(binPoints, pointi) { - os << tab << binPoints[pointi].z(); + os << tab << binPoints[pointi].z(); } - os << nl; + os << nl; writeHeader(os, ""); writeCommented(os, "Time"); - for (label j = 0; j < nBin_; j++) + for (label j = 0; j < nBin_; ++j) { - word jn(Foam::name(j) + ':'); + const word jn(Foam::name(j) + ':'); writeTabbed(os, jn + "total"); writeTabbed(os, jn + "pressure"); writeTabbed(os, jn + "viscous"); @@ -163,13 +183,13 @@ void Foam::functionObjects::forceCoeffs::writeIntegratedData return; } - scalar pressure = sum(coeff[0]); - scalar viscous = sum(coeff[1]); - scalar porous = sum(coeff[2]); - scalar total = pressure + viscous + porous; + const scalar pressure = sum(coeff[0]); + const scalar viscous = sum(coeff[1]); + const scalar porous = sum(coeff[2]); + const scalar total = pressure + viscous + porous; Info<< " " << title << " : " << total << token::TAB - << "(" + << '(' << "pressure: " << pressure << token::TAB << "viscous: " << viscous; @@ -178,7 +198,7 @@ void Foam::functionObjects::forceCoeffs::writeIntegratedData Info<< token::TAB << "porous: " << porous; } - Info<< ")" << endl; + Info<< ')' << endl; } @@ -190,7 +210,7 @@ void Foam::functionObjects::forceCoeffs::writeBinData { writeTime(os); - for (label bini = 0; bini < nBin_; bini++) + for (label bini = 0; bini < nBin_; ++bini) { scalar total = coeffs[0][bini] + coeffs[1][bini] + coeffs[2][bini]; @@ -216,45 +236,35 @@ Foam::functionObjects::forceCoeffs::forceCoeffs ) : forces(name, runTime, dict), - liftDir_(Zero), - dragDir_(Zero), - pitchAxis_(Zero), - magUInf_(0.0), - lRef_(0.0), - Aref_(0.0), + magUInf_(Zero), + lRef_(Zero), + Aref_(Zero), coeffFilePtr_(), - CmBinFilePtr_(), CdBinFilePtr_(), - ClBinFilePtr_() + CsBinFilePtr_(), + ClBinFilePtr_(), + CmRollBinFilePtr_(), + CmPitchBinFilePtr_(), + CmYawBinFilePtr_() { read(dict); + setCoordinateSystem(dict, "liftDir", "dragDir"); Info<< endl; } -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -Foam::functionObjects::forceCoeffs::~forceCoeffs() -{} - - // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // bool Foam::functionObjects::forceCoeffs::read(const dictionary& dict) { forces::read(dict); - // Directions for lift and drag forces, and pitch moment - dict.readEntry("liftDir", liftDir_); - dict.readEntry("dragDir", dragDir_); - dict.readEntry("pitchAxis", pitchAxis_); - // Free stream velocity magnitude dict.readEntry("magUInf", magUInf_); // If case is compressible we must read rhoInf (store in rhoRef_) to // calculate the reference dynamic pressure - // - note: for incompressible, rhoRef_ is already initialised + // Note: for incompressible, rhoRef_ is already initialised if (rhoName_ != "rhoInf") { dict.readEntry("rhoInf", rhoRef_); @@ -315,55 +325,94 @@ bool Foam::functionObjects::forceCoeffs::execute() createFiles(); - scalar pDyn = 0.5*rhoRef_*magUInf_*magUInf_; - // Storage for pressure, viscous and porous contributions to coeffs - List<Field<scalar>> momentCoeffs(3); List<Field<scalar>> dragCoeffs(3); + List<Field<scalar>> sideCoeffs(3); List<Field<scalar>> liftCoeffs(3); + List<Field<scalar>> rollMomentCoeffs(3); + List<Field<scalar>> pitchMomentCoeffs(3); + List<Field<scalar>> yawMomentCoeffs(3); + forAll(liftCoeffs, i) { - momentCoeffs[i].setSize(nBin_); dragCoeffs[i].setSize(nBin_); + sideCoeffs[i].setSize(nBin_); liftCoeffs[i].setSize(nBin_); + rollMomentCoeffs[i].setSize(nBin_); + pitchMomentCoeffs[i].setSize(nBin_); + yawMomentCoeffs[i].setSize(nBin_); } // Calculate coefficients - scalar CmTot = 0; scalar CdTot = 0; + scalar CsTot = 0; scalar ClTot = 0; + scalar CmRollTot = 0; + scalar CmPitchTot = 0; + scalar CmYawTot = 0; + + const scalar pDyn = 0.5*rhoRef_*sqr(magUInf_); + + // Avoid divide by zero in 2D cases + const scalar momentScaling = 1.0/(Aref_*pDyn*lRef_ + SMALL); + const scalar forceScaling = 1.0/(Aref_*pDyn + SMALL); + forAll(liftCoeffs, i) { - momentCoeffs[i] = (moment_[i] & pitchAxis_)/(Aref_*pDyn*lRef_); - dragCoeffs[i] = (force_[i] & dragDir_)/(Aref_*pDyn); - liftCoeffs[i] = (force_[i] & liftDir_)/(Aref_*pDyn); + const Field<vector> localForce(coordSys_.localVector(force_[i])); + const Field<vector> localMoment(coordSys_.localVector(moment_[i])); + + dragCoeffs[i] = forceScaling*(localForce.component(0)); + sideCoeffs[i] = forceScaling*(localForce.component(1)); + liftCoeffs[i] = forceScaling*(localForce.component(2)); + rollMomentCoeffs[i] = momentScaling*(localMoment.component(0)); + pitchMomentCoeffs[i] = momentScaling*(localMoment.component(1)); + yawMomentCoeffs[i] = momentScaling*(localMoment.component(2)); - CmTot += sum(momentCoeffs[i]); CdTot += sum(dragCoeffs[i]); + CsTot += sum(sideCoeffs[i]); ClTot += sum(liftCoeffs[i]); + CmRollTot += sum(rollMomentCoeffs[i]); + CmPitchTot += sum(pitchMomentCoeffs[i]); + CmYawTot += sum(yawMomentCoeffs[i]); } - scalar ClfTot = ClTot/2.0 + CmTot; - scalar ClrTot = ClTot/2.0 - CmTot; + // Single contributions to the front and rear + const scalar CdfTot = 0.5*CdTot + CmRollTot; + const scalar CdrTot = 0.5*CdTot - CmRollTot; + const scalar CsfTot = 0.5*CsTot + CmYawTot; + const scalar CsrTot = 0.5*CsTot - CmYawTot; + const scalar ClfTot = 0.5*ClTot + CmPitchTot; + const scalar ClrTot = 0.5*ClTot - CmPitchTot; Log << type() << " " << name() << " execute:" << nl << " Coefficients" << nl; - writeIntegratedData("Cm", momentCoeffs); writeIntegratedData("Cd", dragCoeffs); + writeIntegratedData("Cs", sideCoeffs); writeIntegratedData("Cl", liftCoeffs); + writeIntegratedData("CmRoll", rollMomentCoeffs); + writeIntegratedData("CmPitch", pitchMomentCoeffs); + writeIntegratedData("CmYaw", yawMomentCoeffs); + + Log << " Cd(f) : " << CdfTot << nl + << " Cd(r) : " << CdrTot << nl; + + Log << " Cs(f) : " << CsfTot << nl + << " Cs(r) : " << CsrTot << nl; Log << " Cl(f) : " << ClfTot << nl - << " Cl(r) : " << ClrTot << nl - << endl; + << " Cl(r) : " << ClrTot << nl; if (writeToFile()) { writeTime(coeffFilePtr_()); coeffFilePtr_() - << tab << CmTot << tab << CdTot - << tab << ClTot << tab << ClfTot << tab << ClrTot << endl; - + << tab << CdTot << tab << CsTot << tab << ClTot + << tab << CmRollTot << tab << CmPitchTot << tab << CmYawTot + << tab << CdfTot << tab << CdrTot + << tab << CsfTot << tab << CsrTot + << tab << ClfTot << tab << ClrTot << endl; if (nBin_ > 1) { @@ -371,26 +420,41 @@ bool Foam::functionObjects::forceCoeffs::execute() { forAll(liftCoeffs, i) { - for (label bini = 1; bini < nBin_; bini++) + for (label bini = 1; bini < nBin_; ++bini) { - liftCoeffs[i][bini] += liftCoeffs[i][bini-1]; dragCoeffs[i][bini] += dragCoeffs[i][bini-1]; - momentCoeffs[i][bini] += momentCoeffs[i][bini-1]; + sideCoeffs[i][bini] += sideCoeffs[i][bini-1]; + liftCoeffs[i][bini] += liftCoeffs[i][bini-1]; + rollMomentCoeffs[i][bini] += + rollMomentCoeffs[i][bini-1]; + pitchMomentCoeffs[i][bini] += + pitchMomentCoeffs[i][bini-1]; + yawMomentCoeffs[i][bini] += yawMomentCoeffs[i][bini-1]; } } } writeBinData(dragCoeffs, CdBinFilePtr_()); + writeBinData(sideCoeffs, CsBinFilePtr_()); writeBinData(liftCoeffs, ClBinFilePtr_()); - writeBinData(momentCoeffs, CmBinFilePtr_()); + writeBinData(rollMomentCoeffs, CmRollBinFilePtr_()); + writeBinData(pitchMomentCoeffs, CmPitchBinFilePtr_()); + writeBinData(yawMomentCoeffs, CmYawBinFilePtr_()); } } // Write state/results information { - setResult("Cm", CmTot); setResult("Cd", CdTot); + setResult("Cs", CsTot); setResult("Cl", ClTot); + setResult("CmRoll", CmRollTot); + setResult("CmPitch", CmPitchTot); + setResult("CmYaw", CmYawTot); + setResult("Cd(f)", CdfTot); + setResult("Cd(r)", CdrTot); + setResult("Cs(f)", CsfTot); + setResult("Cs(r)", CsrTot); setResult("Cl(f)", ClfTot); setResult("Cl(r)", ClrTot); } diff --git a/src/functionObjects/forces/forceCoeffs/forceCoeffs.H b/src/functionObjects/forces/forceCoeffs/forceCoeffs.H index 83c26f1a7e2650772fa44951bace62dfe9d6cec6..aaa183bf797b1b1c56f9ec8cc1d0819cb55e3444 100644 --- a/src/functionObjects/forces/forceCoeffs/forceCoeffs.H +++ b/src/functionObjects/forces/forceCoeffs/forceCoeffs.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010, 2015 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2010, 2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -30,9 +30,18 @@ Group grpForcesFunctionObjects Description - Extends the forces functionObject by providing lift, drag and moment - coefficients. The data can optionally be output into bins, defined in a - given direction. + Extends the \c forces functionObject by providing coefficients for: + - drag, side and lift forces (Cd, Cs, and Cl) + - roll, pitch and yaw moments (CmRoll, CmPitch, and CmYaw) + - front and rear axle force contributions (C(f) and C(r)) wherein + + \verbatim + Cd(f/r) = 0.5*Cd \pm CmRoll + Cs(f/r) = 0.5*Cs \pm CmYaw + Cl(f/r) = 0.5*Cl \pm CmPitch + \endverbatim + + The data can optionally be output into bins, defined in a given direction. The binned data provides the total and consitituent components per bin: - total coefficient @@ -43,9 +52,12 @@ Description Data is written into multiple files in the postProcessing/\<functionObjectName\> directory: - coefficient.dat : integrated coefficients over all geometries - - CmBin.dat : moment coefficient bins - CdBin.dat : drag coefficient bins + - CsBin.dat : side coefficient bins - ClBin.dat : lift coefficient bins + - CmRollBin.dat : roll moment coefficient bins + - CmPitchBin.dat : pitch moment coefficient bins + - CmYawBin.dat : yaw moment coefficient bins Usage Example of function object specification: @@ -58,12 +70,14 @@ Usage log yes; writeFields yes; patches (walls); - liftDir (0 1 0); - dragDir (-1 0 0); - pitchAxis (0 0 1); + + // input keywords for directions of force/moment coefficients + // refer below for options, and relations + magUInf 100; lRef 3.5; Aref 2.2; + porosity no; binData { @@ -76,26 +90,65 @@ Usage Where the entries comprise: \table - Property | Description | Required | Default value - type | Type name: forceCoeffs | yes | - log | Write force data to standard output | no | no - writeFields | Write the force and moment coefficient fields | no | no + Property | Description | Required | Default + type | Type name: forceCoeffs | yes | + log | Write force data to standard output | no | no + writeFields | Write force,moment coefficient fields | no | no patches | Patches included in the forces calculation | yes | - liftDir | Lift direction | yes | - dragDir | Drag direction | yes | - pitchAxis | Picth axis | yes | - magUInf | Free stream velocity magnitude | yes | + magUInf | Free stream velocity magnitude | yes | lRef | Reference length scale for moment calculations | yes | - Aref | Reference area | yes | - porosity | Flag to include porosity contributions | no | no + Aref | Reference area | yes | + porosity | Include porosity contributions | no | false \endtable Bin data is optional, but if the dictionary is present, the entries must - be defined according o + be defined according to following: \table - nBin | number of data bins | yes | - direction | direction along which bins are defined | yes | - cumulative | bin data accumulated with incresing distance | yes | + nBin | Number of data bins | yes | + direction | Direction along which bins are defined | yes | + cumulative | Bin data accumulated with incresing distance | yes | + \endtable + + Input of force/moment coefficient directions: + - require an origin, and two orthogonal directions; the remaining orthogonal + direction is determined accordingly. + - can be added by the three options below. + + \verbatim + CofR (0 0 0); // Centre of rotation + dragDir (1 0 0); + liftDir (0 0 1); + \endverbatim + + \verbatim + origin (0 0 0); + e1 (1 0 0); + e3 (0 0 1); // combinations: (e1, e2) or (e2, e3) or (e3, e1) + \endverbatim + + \verbatim + coordinateSystem + { + origin (0 0 0); + rotation + { + type axes; + e1 (1 0 0); + e3 (0 0 1); // combinations: (e1, e2) or (e2, e3) or (e3, e1) + } + } + \endverbatim + + The default direction relations are shown below: + + \table + Property | Description | Alias | Direction + dragDir | Drag direction | e1 | (1 0 0) + sideDir | Side force direction | e2 | (0 1 0) + liftDir | Lift direction | e3 | (0 0 1) + rollAxis | Roll axis | e1 | (1 0 0) + pitchAxis | Pitch axis | e2 | (0 1 0) + yawAxis | Yaw axis | e3 | (0 0 1) \endtable See also @@ -130,30 +183,18 @@ class forceCoeffs { // Private data - // Force coefficient geometry - - //- Lift - vector liftDir_; - - //- Drag - vector dragDir_; - - //- Pitch - vector pitchAxis_; - - // Free-stream conditions - //- Velocity magnitude + //- Free-stream velocity magnitude scalar magUInf_; // Reference scales - //- Length + //- Reference length [m] scalar lRef_; - //- Area + //- Reference area [m^2] scalar Aref_; @@ -162,15 +203,24 @@ class forceCoeffs //- Integrated coefficients autoPtr<OFstream> coeffFilePtr_; - //- Moment coefficient - autoPtr<OFstream> CmBinFilePtr_; - //- Drag coefficient autoPtr<OFstream> CdBinFilePtr_; + //- Side coefficient + autoPtr<OFstream> CsBinFilePtr_; + //- Lift coefficient autoPtr<OFstream> ClBinFilePtr_; + //- Roll moment coefficient + autoPtr<OFstream> CmRollBinFilePtr_; + + //- Pitch moment coefficient + autoPtr<OFstream> CmPitchBinFilePtr_; + + //- Yaw moment coefficient + autoPtr<OFstream> CmYawBinFilePtr_; + // Private Member Functions @@ -223,7 +273,7 @@ public: //- Destructor - virtual ~forceCoeffs(); + virtual ~forceCoeffs() = default; // Member Functions @@ -231,7 +281,7 @@ public: //- Read the forces data virtual bool read(const dictionary&); - //- Execute, currently does nothing + //- Execute virtual bool execute(); //- Write the forces @@ -249,3 +299,4 @@ public: #endif // ************************************************************************* // + diff --git a/src/functionObjects/forces/forces/forces.C b/src/functionObjects/forces/forces/forces.C index 416b15fd899c94111cd6a7e72bf8b8678a855744..b43a20b61cd9d4d7f12eaaededf273751c546752 100644 --- a/src/functionObjects/forces/forces/forces.C +++ b/src/functionObjects/forces/forces/forces.C @@ -71,22 +71,6 @@ void Foam::functionObjects::forces::createFiles() momentBinFilePtr_ = createFile("momentBin"); writeBinHeader("Moment", momentBinFilePtr_()); } - - if (localSystem_) - { - localForceFilePtr_ = createFile("localForce"); - writeIntegratedHeader("Force", localForceFilePtr_()); - localMomentFilePtr_ = createFile("localMoment"); - writeIntegratedHeader("Moment", localMomentFilePtr_()); - - if (nBin_ > 1) - { - localForceBinFilePtr_ = createFile("localForceBin"); - writeBinHeader("Force", localForceBinFilePtr_()); - localMomentBinFilePtr_ = createFile("localMomentBin"); - writeBinHeader("Moment", localMomentBinFilePtr_()); - } - } } } @@ -169,6 +153,49 @@ void Foam::functionObjects::forces::writeBinHeader } +void Foam::functionObjects::forces::setCoordinateSystem +( + const dictionary& dict, + const word& e3Name, + const word& e1Name +) +{ + coordSys_.clear(); + + if (dict.readIfPresent<point>("CofR", coordSys_.origin())) + { + const vector e3 = e3Name == word::null ? + vector(0, 0, 1) : dict.get<vector>(e3Name); + const vector e1 = e1Name == word::null ? + vector(1, 0, 0) : dict.get<vector>(e1Name); + + coordSys_ = + coordSystem::cartesian(coordSys_.origin(), e3, e1); + } + else + { + // The 'coordinateSystem' sub-dictionary is optional, + // but enforce use of a cartesian system if not found. + + if (dict.found(coordinateSystem::typeName_())) + { + // New() for access to indirect (global) coordinate system + coordSys_ = + coordinateSystem::New + ( + obr_, + dict, + coordinateSystem::typeName_() + ); + } + else + { + coordSys_ = coordSystem::cartesian(dict); + } + } + +} + void Foam::functionObjects::forces::initialise() { @@ -586,42 +613,21 @@ void Foam::functionObjects::forces::writeForces() writeIntegratedForceMoment ( "forces", - force_[0], - force_[1], - force_[2], + coordSys_.localVector(force_[0]), + coordSys_.localVector(force_[1]), + coordSys_.localVector(force_[2]), forceFilePtr_ ); writeIntegratedForceMoment ( "moments", - moment_[0], - moment_[1], - moment_[2], + coordSys_.localVector(moment_[0]), + coordSys_.localVector(moment_[1]), + coordSys_.localVector(moment_[2]), momentFilePtr_ ); - if (localSystem_) - { - writeIntegratedForceMoment - ( - "local forces", - coordSys_.localVector(force_[0]), - coordSys_.localVector(force_[1]), - coordSys_.localVector(force_[2]), - localForceFilePtr_ - ); - - writeIntegratedForceMoment - ( - "local moments", - coordSys_.localVector(moment_[0]), - coordSys_.localVector(moment_[1]), - coordSys_.localVector(moment_[2]), - localMomentFilePtr_ - ); - } - Log << endl; } @@ -673,23 +679,17 @@ void Foam::functionObjects::forces::writeBinnedForceMoment void Foam::functionObjects::forces::writeBins() { - writeBinnedForceMoment(force_, forceBinFilePtr_); - writeBinnedForceMoment(moment_, momentBinFilePtr_); - - if (localSystem_) - { - List<Field<vector>> lf(3); - List<Field<vector>> lm(3); - lf[0] = coordSys_.localVector(force_[0]); - lf[1] = coordSys_.localVector(force_[1]); - lf[2] = coordSys_.localVector(force_[2]); - lm[0] = coordSys_.localVector(moment_[0]); - lm[1] = coordSys_.localVector(moment_[1]); - lm[2] = coordSys_.localVector(moment_[2]); - - writeBinnedForceMoment(lf, localForceBinFilePtr_); - writeBinnedForceMoment(lm, localMomentBinFilePtr_); - } + List<Field<vector>> lf(3); + List<Field<vector>> lm(3); + lf[0] = coordSys_.localVector(force_[0]); + lf[1] = coordSys_.localVector(force_[1]); + lf[2] = coordSys_.localVector(force_[2]); + lm[0] = coordSys_.localVector(moment_[0]); + lm[1] = coordSys_.localVector(moment_[1]); + lm[2] = coordSys_.localVector(moment_[2]); + + writeBinnedForceMoment(lf, forceBinFilePtr_); + writeBinnedForceMoment(lm, momentBinFilePtr_); } @@ -711,10 +711,6 @@ Foam::functionObjects::forces::forces momentFilePtr_(), forceBinFilePtr_(), momentBinFilePtr_(), - localForceFilePtr_(), - localMomentFilePtr_(), - localForceBinFilePtr_(), - localMomentBinFilePtr_(), patchSet_(), pName_(word::null), UName_(word::null), @@ -724,7 +720,6 @@ Foam::functionObjects::forces::forces rhoRef_(VGREAT), pRef_(0), coordSys_(), - localSystem_(false), porosity_(false), nBin_(1), binDir_(Zero), @@ -738,6 +733,7 @@ Foam::functionObjects::forces::forces if (readFields) { read(dict); + setCoordinateSystem(dict); Log << endl; } } @@ -759,10 +755,6 @@ Foam::functionObjects::forces::forces momentFilePtr_(), forceBinFilePtr_(), momentBinFilePtr_(), - localForceFilePtr_(), - localMomentFilePtr_(), - localForceBinFilePtr_(), - localMomentBinFilePtr_(), patchSet_(), pName_(word::null), UName_(word::null), @@ -772,7 +764,6 @@ Foam::functionObjects::forces::forces rhoRef_(VGREAT), pRef_(0), coordSys_(), - localSystem_(false), porosity_(false), nBin_(1), binDir_(Zero), @@ -786,6 +777,7 @@ Foam::functionObjects::forces::forces if (readFields) { read(dict); + setCoordinateSystem(dict); Log << endl; } @@ -843,32 +835,6 @@ bool Foam::functionObjects::forces::read(const dictionary& dict) Info<< " Reference pressure (pRef) set to " << pRef_ << endl; } - coordSys_.clear(); - localSystem_ = false; - - // Centre of rotation for moment calculations - // specified directly, from coordinate system, or implicitly (0 0 0) - if (!dict.readIfPresent<point>("CofR", coordSys_.origin())) - { - // The 'coordinateSystem' sub-dictionary is optional, - // but enforce use of a cartesian system. - - if (dict.found(coordinateSystem::typeName_())) - { - // New() for access to indirect (global) coordinate system - coordSys_ = - coordinateSystem::New - ( - obr_, dict, coordinateSystem::typeName_() - ); - } - else - { - coordSys_ = coordSystem::cartesian(dict); - } - - localSystem_ = true; - } dict.readIfPresent("porosity", porosity_); if (porosity_) diff --git a/src/functionObjects/forces/forces/forces.H b/src/functionObjects/forces/forces/forces.H index be28a40ada28ac9316fd9eefc3510a211de43704..a75de3e01e45cd692b806b96a58629984b409fd6 100644 --- a/src/functionObjects/forces/forces/forces.H +++ b/src/functionObjects/forces/forces/forces.H @@ -192,18 +192,6 @@ protected: //- Moment bins autoPtr<OFstream> momentBinFilePtr_; - //- Local force - autoPtr<OFstream> localForceFilePtr_; - - //- Local moment - autoPtr<OFstream> localMomentFilePtr_; - - //- Local force bins - autoPtr<OFstream> localForceBinFilePtr_; - - //- Local moment bins - autoPtr<OFstream> localMomentBinFilePtr_; - // Read from dictionary @@ -234,9 +222,6 @@ protected: //- Coordinate system used when evaluting forces/moments coordSystem::cartesian coordSys_; - //- Flag to indicate whether we are using a local coordinates - bool localSystem_; - //- Flag to include porosity effects bool porosity_; @@ -283,6 +268,14 @@ protected: //- Write header for binned data void writeBinHeader(const word& header, Ostream& os) const; + //- Set the co-ordinate system from dictionary and axes names + void setCoordinateSystem + ( + const dictionary& dict, + const word& e3Name = word::null, + const word& e1Name = word::null + ); + //- Initialise the fields void initialise(); diff --git a/src/meshTools/searchableSurfaces/searchableCone/searchableCone.H b/src/meshTools/searchableSurfaces/searchableCone/searchableCone.H index d4151f806a9f1ef7d2aad9f9eba5e8d7e30b0d53..a04539462a25190048d3f33be5b4ad45c625a9a3 100644 --- a/src/meshTools/searchableSurfaces/searchableCone/searchableCone.H +++ b/src/meshTools/searchableSurfaces/searchableCone/searchableCone.H @@ -30,7 +30,7 @@ Description \heading Dictionary parameters \table Property | Description | Required | Default - type | code / searchableCone | selector | + type | cone / searchableCone | selector | point1 | coordinate of endpoint | yes | radius1 | radius at point1 | yes | innerRadius1| inner radius at point1 | no | 0 diff --git a/tutorials/finiteArea/surfactantFoam/planeTransport/0/U b/tutorials/finiteArea/surfactantFoam/planeTransport/0/U deleted file mode 100644 index 7dc2712cffe545037783ccf037ae37c736fb2dd2..0000000000000000000000000000000000000000 --- a/tutorials/finiteArea/surfactantFoam/planeTransport/0/U +++ /dev/null @@ -1,53 +0,0 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: v1812 | -| \\ / A nd | Web: www.OpenFOAM.com | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -FoamFile -{ - version 2.0; - format ascii; - class volVectorField; - location "0"; - object U; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -dimensions [0 1 -1 0 0 0 0]; - - -internalField uniform (0 0 0); - -boundaryField -{ - inlet - { - type calculated; - value uniform (0 0 0); - } - bound - { - type calculated; - value uniform (0 0 0); - } - outlet - { - type calculated; - value uniform (0 0 0); - } - bottom - { - type calculated; - value uniform (0 0 0); - } - top - { - type calculated; - value uniform (0.05 0 0); - } -} - - -// ************************************************************************* // diff --git a/tutorials/finiteArea/surfactantFoam/planeTransport/Allclean b/tutorials/finiteArea/surfactantFoam/planeTransport/Allclean index b1673ba4c14beebd264413db6ade7d30bae841e6..e852bce316ab80215483776eb026b49c88d8ac85 100755 --- a/tutorials/finiteArea/surfactantFoam/planeTransport/Allclean +++ b/tutorials/finiteArea/surfactantFoam/planeTransport/Allclean @@ -2,12 +2,7 @@ cd ${0%/*} || exit 1 # Run from this directory . $WM_PROJECT_DIR/bin/tools/CleanFunctions # Tutorial clean functions -cleanTimeDirectories - -cleanPostProcessing - +cleanCase cleanFaMesh -rm -rf processor* - #------------------------------------------------------------------------------ diff --git a/tutorials/finiteArea/surfactantFoam/planeTransport/constant/polyMesh/blockMeshDict b/tutorials/finiteArea/surfactantFoam/planeTransport/system/blockMeshDict similarity index 100% rename from tutorials/finiteArea/surfactantFoam/planeTransport/constant/polyMesh/blockMeshDict rename to tutorials/finiteArea/surfactantFoam/planeTransport/system/blockMeshDict diff --git a/tutorials/incompressible/pisoFoam/LES/motorBike/motorBike/system/stabilizationSchemes b/tutorials/incompressible/pisoFoam/LES/motorBike/motorBike/system/stabilizationSchemes index 6285f30aecedc1687e6124ed0540e31b9084d582..48854b29446b0664914d75d1c4b6fb993833876b 100644 --- a/tutorials/incompressible/pisoFoam/LES/motorBike/motorBike/system/stabilizationSchemes +++ b/tutorials/incompressible/pisoFoam/LES/motorBike/motorBike/system/stabilizationSchemes @@ -8,11 +8,11 @@ residuals { - type solverInfo; - libs ("libutilityFunctionObjects.so"); - writeFields true; - writeControl outputTime; - fields (p); + type solverInfo; + libs ("libutilityFunctionObjects.so"); + writeResidualFields true; + writeControl outputTime; + fields (p); } blendingFactor diff --git a/tutorials/finiteArea/surfactantFoam/planeTransport/0/Cvf b/tutorials/multiphase/interFoam/laminar/waves/mangroveInteraction/0.orig/MangrovesIndex similarity index 62% rename from tutorials/finiteArea/surfactantFoam/planeTransport/0/Cvf rename to tutorials/multiphase/interFoam/laminar/waves/mangroveInteraction/0.orig/MangrovesIndex index d977dc5f2a15030e9f52d8f44bdfc8b42e70ce76..65cb3332aaf1a9d17bb0ebfc5fe952223def4812 100644 --- a/tutorials/finiteArea/surfactantFoam/planeTransport/0/Cvf +++ b/tutorials/multiphase/interFoam/laminar/waves/mangroveInteraction/0.orig/MangrovesIndex @@ -10,44 +10,20 @@ FoamFile version 2.0; format ascii; class volScalarField; - location "0"; - object Cvf; + object MangrovesIndex; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -dimensions [0 -1 0 0 0 0 0]; - +dimensions [0 0 0 0 0 0 0]; internalField uniform 0; boundaryField { - inlet - { - type calculated; - value uniform 0; - } - bound - { - type calculated; - value uniform 0; - } - outlet + ".*" { - type calculated; - value uniform 0; - } - bottom - { - type calculated; - value uniform 0; - } - top - { - type calculated; - value uniform 0; + type zeroGradient; } } - // ************************************************************************* // diff --git a/tutorials/multiphase/interFoam/laminar/waves/mangroveInteraction/constant/triSurface/seaweed.stl b/tutorials/multiphase/interFoam/laminar/waves/mangroveInteraction/constant/triSurface/seaweed.stl index 4032531aaae30960001ccc4b0aba6eab767700c1..f548b62df2382efab08deff49dfc1697972b3d47 100644 --- a/tutorials/multiphase/interFoam/laminar/waves/mangroveInteraction/constant/triSurface/seaweed.stl +++ b/tutorials/multiphase/interFoam/laminar/waves/mangroveInteraction/constant/triSurface/seaweed.stl @@ -1,85 +1,86 @@ -facet normal 0.0 1.0 0.0 - outer loop - vertex 4.065 0.5475 0.25 - vertex 5.7 0.5475 0.0 - vertex 4.065 0.5475 0.0 - endloop -endfacet -facet normal 0.0 1.0 0.0 - outer loop - vertex 5.7 0.5475 0.0 - vertex 4.065 0.5475 0.25 - vertex 5.7 0.5475 0.25 - endloop -endfacet -facet normal 1.0 0.0 0.0 - outer loop - vertex 5.7 0.5475 0.0 - vertex 5.7 0.0025 0.25 - vertex 5.7 0.0025 0.0 - endloop -endfacet -facet normal 1.0 0.0 0.0 - outer loop - vertex 5.7 0.0025 0.25 - vertex 5.7 0.5475 0.0 - vertex 5.7 0.5475 0.25 - endloop -endfacet -facet normal 1.63851263511957e-017 -1.0 0.0 - outer loop - vertex 5.7 0.0025 0.25 - vertex 4.065 0.00249999999999997 0.0 - vertex 5.7 0.0025 0.0 - endloop -endfacet -facet normal 1.63851263511957e-017 -1.0 0.0 - outer loop - vertex 4.065 0.00249999999999997 0.0 - vertex 5.7 0.0025 0.25 - vertex 4.065 0.00249999999999997 0.25 - endloop -endfacet -facet normal 0.0 0.0 -1.0 - outer loop - vertex 5.7 0.5475 0.0 - vertex 4.065 0.00249999999999997 0.0 - vertex 4.065 0.5475 0.0 - endloop -endfacet -facet normal 0.0 0.0 -1.0 - outer loop - vertex 4.065 0.00249999999999997 0.0 - vertex 5.7 0.5475 0.0 - vertex 5.7 0.0025 0.0 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 5.7 0.0025 0.25 - vertex 4.065 0.5475 0.25 - vertex 4.065 0.00249999999999997 0.25 - endloop -endfacet -facet normal 0.0 0.0 1.0 - outer loop - vertex 4.065 0.5475 0.25 - vertex 5.7 0.0025 0.25 - vertex 5.7 0.5475 0.25 - endloop -endfacet -facet normal -1.0 0.0 0.0 - outer loop - vertex 4.065 0.5475 0.25 - vertex 4.065 0.00249999999999997 0.0 - vertex 4.065 0.00249999999999997 0.25 - endloop -endfacet -facet normal -1.0 0.0 0.0 - outer loop - vertex 4.065 0.00249999999999997 0.0 - vertex 4.065 0.5475 0.25 - vertex 4.065 0.5475 0.0 - endloop -endfacet -endsolid C +solid C +facet normal 0.0 1.0 0.0 + outer loop + vertex 4.065 0.5475 0.25 + vertex 5.7 0.5475 0.0 + vertex 4.065 0.5475 0.0 + endloop +endfacet +facet normal 0.0 1.0 0.0 + outer loop + vertex 5.7 0.5475 0.0 + vertex 4.065 0.5475 0.25 + vertex 5.7 0.5475 0.25 + endloop +endfacet +facet normal 1.0 0.0 0.0 + outer loop + vertex 5.7 0.5475 0.0 + vertex 5.7 0.0025 0.25 + vertex 5.7 0.0025 0.0 + endloop +endfacet +facet normal 1.0 0.0 0.0 + outer loop + vertex 5.7 0.0025 0.25 + vertex 5.7 0.5475 0.0 + vertex 5.7 0.5475 0.25 + endloop +endfacet +facet normal 1.63851263511957e-017 -1.0 0.0 + outer loop + vertex 5.7 0.0025 0.25 + vertex 4.065 0.00249999999999997 0.0 + vertex 5.7 0.0025 0.0 + endloop +endfacet +facet normal 1.63851263511957e-017 -1.0 0.0 + outer loop + vertex 4.065 0.00249999999999997 0.0 + vertex 5.7 0.0025 0.25 + vertex 4.065 0.00249999999999997 0.25 + endloop +endfacet +facet normal 0.0 0.0 -1.0 + outer loop + vertex 5.7 0.5475 0.0 + vertex 4.065 0.00249999999999997 0.0 + vertex 4.065 0.5475 0.0 + endloop +endfacet +facet normal 0.0 0.0 -1.0 + outer loop + vertex 4.065 0.00249999999999997 0.0 + vertex 5.7 0.5475 0.0 + vertex 5.7 0.0025 0.0 + endloop +endfacet +facet normal 0.0 0.0 1.0 + outer loop + vertex 5.7 0.0025 0.25 + vertex 4.065 0.5475 0.25 + vertex 4.065 0.00249999999999997 0.25 + endloop +endfacet +facet normal 0.0 0.0 1.0 + outer loop + vertex 4.065 0.5475 0.25 + vertex 5.7 0.0025 0.25 + vertex 5.7 0.5475 0.25 + endloop +endfacet +facet normal -1.0 0.0 0.0 + outer loop + vertex 4.065 0.5475 0.25 + vertex 4.065 0.00249999999999997 0.0 + vertex 4.065 0.00249999999999997 0.25 + endloop +endfacet +facet normal -1.0 0.0 0.0 + outer loop + vertex 4.065 0.00249999999999997 0.0 + vertex 4.065 0.5475 0.25 + vertex 4.065 0.5475 0.0 + endloop +endfacet +endsolid C diff --git a/wmake/rules/General/general b/wmake/rules/General/general index 4eb70d6c451ab5a751c362deeaaeb695e5358c47..6a6c7e130db88b54b31b802bb98a9804a9e6eb8a 100644 --- a/wmake/rules/General/general +++ b/wmake/rules/General/general @@ -1,5 +1,5 @@ #-------------------------------*- makefile -*--------------------------------- -WM_VERSION = OPENFOAM=1904 +WM_VERSION = OPENFOAM=1906 AR = ar ARFLAGS = cr