Kratos のコンパイル

2019年11月23日

はじめに

Kratos のコンパイルについて。

環境

Ubuntu 16.04 LTS

前準備

g++、gfortran、BLAS (libblas-dev)、LAPACK (liblapack-dev)、Python3 (python3-dev) をインストールしておく。

$ sudo apt-get install liblapack-dev python3-dev

Boost は別途コンパイルしておく。

参考: preCICE のセットアップ

コンパイル

ソースを取得。

$ git clone https://github.com/KratosMultiphysics/Kratos Kratos

コンパイルの設定。

$ cd Kratos/cmake_build
$ cp example_configure.sh.do_not_touch configure.sh

configure.sh を開いて、BOOST_ROOT と PYTHON_EXECUTABLE の設定を行う。

-DBOOST_ROOT="${HOME}/opt/boost_1_69_0"                                             \
-DPYTHON_EXECUTABLE="/usr/bin/python3"                                              \

コンパイル。

$ sh configure.sh

設定

ソースディレクトリ自体がインストールディレクトリである。好きなところに移動する。

$ mv Kratos ~/opt

~/.bashrc などにパスを設定する。

export PYTHONPATH=$PYTHONPATH:~/opt/Kratos
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/opt/Kratos/libs
export PATH=$PATH:~/opt/Kratos

設定ファイルを読み込み直すか、端末を再起動する。runkratos を実行してみて何か出ればたぶん OK。

$ runkratos
MISSING SCRIPT NAME! Usage: runkratos filename_in.py

Python モジュールも確認。

$ python3
Python 3.5.2 (default, Oct  8 2019, 13:06:37)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from KratosMultiphysics import *
 |  /           |
 ' /   __| _` | __|  _ \   __|
 . \  |   (   | |   (   |\__ \
_|\_\_|  \__,_|\__|\___/ ____/
           Multi-Physics 7.0.0-52c02c1-Release
Compiled with OpenMP support.
Maximum OpenMP threads: 12.

例題

例題の取得。

$ git clone https://github.com/KratosMultiphysics/Examples

円筒回りの流れ

$ cp -r Examples/fluid_dynamics/validation/body_fitted_cylinder_100Re .
$ cd body_fitted_cylinder_100Re/source
$ runkratos MainKratos.py

vtk_output ディレクトリに結果が出力されている。

リッド (蓋) 駆動キャビティ FSI

Examples/fluid_structure_interaction/fsi_lid_driven_cavity

VTK データを出力させるため、ProjectParameters.json の "gid_output" の最後に以下を挿入する。

        }],
        "vtk_output" : [{
            "python_module" : "vtk_output_process",
            "kratos_module" : "KratosMultiphysics",
            "process_name"  : "VtkOutputProcess",
            "help"          : "This process writes postprocessing files for Paraview",
            "Parameters"    : {
                "model_part_name"                    : "Parts_Structure",
                "output_control_type"                : "step",
                "output_frequency"                   : 1,
                "file_format"                        : "ascii",
                "output_precision"                   : 7,
                "output_sub_model_parts"             : true,
                "folder_name"                        : "vtk_output",
                "save_output_files_in_folder"        : true,
                "nodal_solution_step_data_variables" : ["DISPLACEMENT","REACTION","ACCELERATION","POINT_LOAD","VAUX_EQ_TRACTION"],
                "nodal_data_value_variables"         : [],
                "element_data_value_variables"       : [],
                "condition_data_value_variables"     : []
            }
        }, {
            "python_module" : "vtk_output_process",
            "kratos_module" : "KratosMultiphysics",
            "process_name"  : "VtkOutputProcess",
            "help"          : "This process writes postprocessing files for Paraview",
            "Parameters"    : {
                "model_part_name"                    : "Parts_Fluid",
                "output_control_type"                : "step",
                "output_frequency"                   : 1,
                "file_format"                        : "ascii",
                "output_precision"                   : 7,
                "output_sub_model_parts"             : true,
                "folder_name"                        : "vtk_output",
                "save_output_files_in_folder"        : true,
                "nodal_solution_step_data_variables" : ["VELOCITY","PRESSURE","MESH_DISPLACEMENT","REACTION","VAUX_EQ_TRACTION"],
                "nodal_data_value_variables"         : [],
                "element_data_value_variables"       : [],
                "condition_data_value_variables"     : []
            }

参考