OpenFOAM 4.1 を CentOS 6.5 にインストールメモ2020年4月26日 | |
はじめにOpenFOAM 4.1 をソースコードからコンパイルする。 インストール対象マシンCentOS 6.5 (x86_64) パッケージの準備パッケージを こちら からダウンロードする。 $ tar xvzf OpenFOAM-4.x-version-4.1.tar.gz -C ~/OpenFOAM $ tar xvzf ThirdParty-4.x-version-4.1.tar.gz -C ~/OpenFOAM $ cd ~/OpenFOAM $ mv OpenFOAM-4.x-version-4.1 OpenFOAM/OpenFOAM-4.1 $ mv ThirdParty-4.x-version-4.1 OpenFOAM/ThirdParty-4.1 ~/.bashrc に以下を追加。 . ~/OpenFOAM/OpenFOAM-4.1/etc/bashrc 端末を再起動する。"foam" と打って $WM_PROJECT_DIR (OpenFOAM のディレクトリ) に移動できれば OK。 コンパイル必要なパッケージを入れる。 # yum install flex # yum install boost-devel # yum install zlib-devel 設定ファイルを編集して、foamHexMesh がコンパイルされないようにする。 ~/OpenFOAM/OpenFOAM-4.1/etc/bashrc # Build foamyHexMesh #export FOAMY_HEX_MESH=yes 端末を再起動する。 コンパイル。 $ foam $ ./Allwmake エラーが出るので、1 つずつ対処する。 エラー /home/cfd/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/Identity.H:80: error: only declarations of constructors can be eexplicitf /home/cfd/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/Identity.H:86: error: only declarations of constructors can be eexplicitf make: *** [/home/cfd/OpenFOAM/OpenFOAM-4.1/platforms/linux64GccDPInt32Opt/src/OSspecific/POSIX/signals/sigStopAtWriteNow.o] エラー 1 修正: src/OpenFOAM/lnInclude/Identity.H
//inline explicit operator label() const
inline operator label() const
{
return 1;
}
//- Return 1 for scalar
//inline explicit operator scalar() const
inline operator scalar() const
{
return 1;
}
エラー fvMesh/fvMesh.H:381: error: using etypenamef outside of template make: *** [/home/cfd/OpenFOAM/OpenFOAM-4.1/platforms/linux64GccDPInt32Opt/src/finiteVolume/fvMesh/fvMeshGeometry.o] エラー 1 修正: src/finiteVolume/lnInclude/fvMesh.H template<> //typename pTraits<sphericalTensor>::labelType pTraits<sphericalTensor>::labelType fvMesh::validComponents エラー fvMesh/fvMesh.C:883: error: using ‘typename’ outside of template make: *** [/home/cfd/OpenFOAM/OpenFOAM-4.1/platforms/linux64GccDPInt32Opt/src/finiteVolume/fvMesh/fvMesh.o] エラー 1 修正: src/finiteVolume/lnInclude/fvMesh.C
template<>
//typename Foam::pTraits<Foam::sphericalTensor>::labelType
Foam::pTraits<Foam::sphericalTensor>::labelType
Foam::fvMesh::validComponents<Foam::sphericalTensor>() const
{
return Foam::pTraits<Foam::sphericalTensor>::labelType(1);
}
エラー /home/cfd/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/geometricOneFieldI.H:68: error: using ‘typename’ outside of template /home/cfd/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/geometricOneFieldI.H: In member function ‘Foam::oneField::FieldType Foam::geometricOneField::primitiveField() const’: /home/cfd/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/geometricOneFieldI.H:71: error: using ‘typename’ outside of template make: *** [/home/cfd/OpenFOAM/OpenFOAM-4.1/platforms/linux64GccDPInt32Opt/src/finiteVolume/fvMesh/wallDist/patchDistMethods/Poisson/PoissonPatchDistMethod.o] エラー 1 修正: src/OpenFOAM/lnInclude/geometricOneFieldI.H
//inline typename Foam::geometricOneField::Internal::FieldType
inline Foam::geometricOneField::Internal::FieldType
Foam::geometricOneField::primitiveField() const
{
//return typename Internal::FieldType();
return Internal::FieldType();
}
修正: src/OpenFOAM/lnInclude/geometricOneField.H
//inline typename Internal::FieldType primitiveField() const;
inline Internal::FieldType primitiveField() const;
エラー lnInclude/surfaceInterpolationScheme.H:262: error: using ‘typename’ outside of template make: *** [/home/cfd/OpenFOAM/OpenFOAM-4.1/platforms/linux64GccDPInt32Opt/src/finiteVolume/fvMesh/wallDist/patchDistMethods/Poisson/PoissonPatchDistMethod.o] エラー 1 修正: src/finiteVolume/lnInclude/surfaceInterpolationScheme.H
template<>
tmp
<
GeometricField
<
//typename innerProduct<vector, scalar>::type,
innerProduct<vector, scalar>::type,
fvsPatchField,
surfaceMesh
>
>
エラー interpolation/surfaceInterpolation/surfaceInterpolationScheme/surfaceInterpolationSchemes.C:68: error: using ‘typename’ outside of template interpolation/surfaceInterpolation/surfaceInterpolationScheme/surfaceInterpolationSchemes.C: In member function ‘Foam::tmp<Foam::GeometricField<typename Foam::innerProduct<Foam::Vector<double>, Type>::type, Foam::fvsPatchField, Foam::surfaceMesh> > Foam::surfaceInterpolationScheme<Type>::dotInterpolate(const Foam::surfaceVectorField&, const Foam::GeometricField<Type, Foam::fvPatchField, Foam::volMesh>&) const [with Type = double]’: interpolation/surfaceInterpolation/surfaceInterpolationScheme/surfaceInterpolationSchemes.C:86: error: using ‘typename’ outside of template interpolation/surfaceInterpolation/surfaceInterpolationScheme/surfaceInterpolationSchemes.C:94: error: using ‘typename’ outside of template make: *** [/home/cfd/OpenFOAM/OpenFOAM-4.1/platforms/linux64GccDPInt32Opt/src/finiteVolume/interpolation/surfaceInterpolation/surfaceInterpolationScheme/surfaceInterpolationSchemes.o] エラー 1 修正: src/finiteVOlume/lnInclude/surfaceInterpolationSchemes.C
template<>
Foam::tmp
<
Foam::GeometricField
<
//typename Foam::innerProduct<Foam::vector, Foam::scalar>::type,
Foam::innerProduct<Foam::vector, Foam::scalar>::type,
Foam::fvsPatchField,
Foam::surfaceMesh
>
>
Foam::surfaceInterpolationScheme<Foam::scalar>::dotInterpolate
(
const surfaceVectorField& Sf,
const GeometricField<scalar, fvPatchField, volMesh>&
) const
{
NotImplemented;
return
tmp
<
GeometricField
<
//typename innerProduct<vector, scalar>::type,
innerProduct<vector, scalar>::type,
fvsPatchField,
surfaceMesh
>
>
(
GeometricField
<
//typename innerProduct<vector, scalar>::type,
innerProduct<vector, scalar>::type,
fvsPatchField,
surfaceMesh
>::null()
);
}
エラー rigidBodyMotion/rigidBodyMotion.C:53: error: ‘nullptr’ was not declared in this scope make: *** [/home/cfd/OpenFOAM/OpenFOAM-4.1/platforms/linux64GccDPInt32Opt/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.o] エラー 1 修正: src/rigidBodyDynamics/lnInclude/rigidBodyMotion.C
Foam::RBD::rigidBodyMotion::rigidBodyMotion()
:
rigidBodyModel(),
motionState_(*this),
motionState0_(*this),
aRelax_(1.0),
aDamp_(1.0),
report_(false),
//solver_(nullptr)
solver_(NULL)
{}
| |
| PENGUINITIS | |