- 投稿日:2020-09-07T23:33:24+09:00
有限要素法のデータモデル EXODUS導入の覚書
はじめに
EXODUSは有限要素解析のデータ格納用のデータファイルです。
他のコードで計算結果を流用する際の中間生成のファイルとしても、計算結果を格納する形式としても利用できるフォーマットになります。これまで自作のFEMについては計算結果をvtk形式で出力していましたが、EXODUSの方が再利用性が高そうだったのでこちらに移行中です。
導入
下記リポジトリよりコードを持ってきます。
https://github.com/gsjaardema/seacas#exodus
導入についてもこちらに則れば基本的に問題ないかと思います。ここでは~/localでチェックアウト・ビルドすることを想定します。
cd ~ mkdir local cd local git clone https://github.com/gsjaardema/seacas.git cd seacas && export ACCESS=`pwd`Third-Party Library (TPL)としてNetCDFとHDF5を用意する必要がありますので、それぞれ下記からダウンロードします。
https://www.unidata.ucar.edu/downloads/netcdf/
https://portal.hdfgroup.org/display/support/HDF5%201.12.0cd TPL/hdf5 wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.12/hdf5-1.12.0/src/hdf5-1.12.0.tar.gz tar -zxvf ./hdf5-1.12.0.tar.gz cd hdf5-1.12.0 ../runconfigure.sh cd ../../netcdf wget https://www.unidata.ucar.edu/downloads/netcdf/ftp/netcdf-c-4.7.4.tar.gz tar -zxvf ./netcdf-c-4.7.4.tar.gz cd netcdf-c-4.7.4/ mkdir build cd build sh ../../runcmake.sh make && make install cd ../../../../ mkdir build ../cmake-exodus make && make install使い方
基本的には下記マニュアルを見ればOK
https://gsjaardema.github.io/seacas/exodusII-new.pdf動作確認も含めて、またの機会にまとめられればと思います。
以上です。
- 投稿日:2020-09-07T23:33:24+09:00
有限要素法(FEM)のデータモデル EXODUS導入の覚書
はじめに
EXODUSは有限要素解析のデータ格納用のデータファイルです。
他のコードで計算結果を流用する際の中間生成のファイルとしても、計算結果を格納する形式としても利用できるフォーマットになります。これまで自作のFEMについては計算結果をvtk形式で出力していましたが、EXODUSの方が再利用性が高そうだったのでこちらに移行中です。
導入
下記リポジトリよりコードを持ってきます。
https://github.com/gsjaardema/seacas#exodus
導入についてもこちらに則れば基本的に問題ないかと思います。ここでは~/localでチェックアウト・ビルドすることを想定します。
cd ~ mkdir local cd local git clone https://github.com/gsjaardema/seacas.git cd seacas && export ACCESS=`pwd`Third-Party Library (TPL)としてNetCDFとHDF5を用意する必要がありますので、それぞれ下記からダウンロードします。
https://www.unidata.ucar.edu/downloads/netcdf/
https://portal.hdfgroup.org/display/support/HDF5%201.12.0cd TPL/hdf5 wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.12/hdf5-1.12.0/src/hdf5-1.12.0.tar.gz tar -zxvf ./hdf5-1.12.0.tar.gz cd hdf5-1.12.0 ../runconfigure.sh cd ../../netcdf wget https://www.unidata.ucar.edu/downloads/netcdf/ftp/netcdf-c-4.7.4.tar.gz tar -zxvf ./netcdf-c-4.7.4.tar.gz cd netcdf-c-4.7.4/ mkdir build cd build sh ../../runcmake.sh make && make install cd ../../../../ mkdir build ../cmake-exodus make && make install使い方
基本的には下記マニュアルを見ればOK
https://gsjaardema.github.io/seacas/exodusII-new.pdfサンプルとして、寸法が1 x 1 x 10の片持ち梁を10個の8節点6面体要素で分割したメッシュをEXODUS形式で出力する場合のコードを書きに示します。
#include <exodusII.h> #include <iostream> #include <vector> int main(){ int N; N = 10; // the length of cantilever int CPU_word_size, IO_word_size, exoid; CPU_word_size = sizeof(double); IO_word_size = 8; exoid = ex_create("test.exo", //file Name EX_CLOBBER, //create mode &CPU_word_size, //CPU float word size in bytes &IO_word_size); //I/O float word size in bytes int dim = 3; // dimension int NoN = 4 + 4 * N; // num of nodes int NoE = N; // num of elements int NoEB = 1; // num of element blocks int NoNS = 0; // num of node sets int NoSS = 0; // num of side sets ex_put_init(exoid, "Test", dim, NoN, NoE, NoEB, NoNS, NoSS); std::vector<double> x(NoN), y(NoN), z(NoN), i2nn(NoN); char* coord_names[3]; coord_names[0] = "xcoor"; coord_names[1] = "ycoor"; coord_names[2] = "zcoor"; for(int i=0;i<=N;i++){ x[i*4] = 0; y[i*4] = 0; z[i*4]=i; i2nn[i*4] = i*4 + 1; x[i*4+1] = 1; y[i*4+1] = 0; z[i*4+1]=i; i2nn[i*4+1] = i*4 + 2; x[i*4+2] = 1; y[i*4+2] = 1; z[i*4+2]=i; i2nn[i*4+2] = i*4 + 3; x[i*4+3] = 0; y[i*4+3] = 1; z[i*4+3]=i; i2nn[i*4+3] = i*4 + 4; } ex_put_coord(exoid, x.data(), y.data(), z.data()); ex_put_coord_names(exoid, coord_names); ex_put_node_num_map(exoid, i2nn.data()); //for(int i=0;i<NoE;i++)i2nn[i] = i+1; int NoN_for_EB = NoE; // number of nodes for element block int NoN_per_Elem = 8; // number of nodes of each element int ebid = 1; // element block id ex_put_elem_block(exoid, ebid, "hex", NoN_for_EB, NoN_per_Elem, 0); std::vector<int> connectivity(NoE * NoN_per_Elem); std::vector<int> i2en(NoE); // index to element number for(int i=0; i<NoE; i++){ for(int j=0;j<8;j++){ connectivity[i*8 + j] = i*4 + j +1; } i2en[i] = i+1; } ex_put_elem_conn(exoid, ebid, connectivity.data()); ex_put_elem_num_map(exoid, i2en.data()); ex_close(exoid); return 0; }例えば下記のようにコンパイルできます。
g++ main.cpp -I ~/local/seacas/include -L ~/local/seacas/lib -lexodus出力したtest.exoをParaviewで見ると下記のようになります。
今回は節点量や要素量を出力していませんので、コンターは要素IDになります。
終わりに
今回は有限要素法の結果を格納可能なEXODUS形式について、その導入と動作確認を示しました。
もっと優れたファイルタイプがありましたら教えていただけると幸いです。以上です。
- 投稿日:2020-09-07T21:47:54+09:00
PHP_UMLの--helpをgoogle翻訳で翻訳
オブジェクト指向の勉強をしたくなりました。PHPを普段使っているのですが、ツールがあまり見つからずPHPSTORMなら自動生成してくれるみたいだけど、お家の環境にはないのでググったところPHP_UMLというツールを発見。
しかし使い方がわからない&英語わからないので翻訳することにしました。↓もっと便利なツールを見つけて記事にしました。
クラス図を作成するもっと便利なツールみつけて記事にしました。
https://qiita.com/tdera/items/1a0dc91d37a89c22d4ba
コチラのほうが参考になるかもです。。
これを使って既存フレームワークの解析をしていきたいです。
PHP_UML
結構古いツールみたいです。。でもちゃんと動いてくれればOK。
https://pear.php.net/package/PHP_UML-o directory
出力ディレクトリパス、またはファイル名(提供されない場合、XMIコードは画面に印刷)
-f format, --format=format
出力フォーマット: "xmi"(デフォルト)、「html」、「htmlnew」、「php」
html / htmlnew / phpの場合、必要に応じて独自のXMIファイルを提供し、次のように渡しますargument to phpuml-x XMI version
生成するXMIバージョン(1または2)
-n name
生成されたUMLモデルの名前
-e encoding
出力文字エンコーディング
--no-deployment-view
配置ビューの生成を無効にする
--no-component-view
コンポーネントビューの生成を無効にする
--no-dollar
変数のドル記号を削除します
--no-docblocks
docblockの解析を無効にする(
@package
、@param
...)--show-internal
@internal
でマークされた要素を含める--only-api
@api
でマークされた要素のみを含める-i pattern, --ignore=pattern
無視するパターン/パス名(example: .svn)
-m pattern, --match=pattern
一致するパターン (default is: *.php)
-l errorLevel, --error-level=errorLevel
エラー報告レベルを設定します(0サイレントモード、PHPエラーの場合は1、例外、すべてのエラーの場合は2、警告)
--pure-object
PHP_UMLが必要な場合は、このスイッチを使用します非オブジェクト指向のすべてを無視するコード
-h, --help
このヘルプメッセージを表示して終了
-v, --version
プログラムのバージョンを表示して終了する
引数
input
解析するPHPファイルまたはディレクトリ(例:D:/ htdocs /)スペースを使用して、さまざまなエントリを区切ります。デフォルトでは、PHP_UMLは現在のディレクトリを解析します。
例1 phpuml D:/htdocs/
PHP_UMLは、D:/ htdocs /を再帰的に解析し、XMIコードを表示します。
例2 phpuml /var/www/test -o /tmp -x 1 -n Foo -m *.php6 -i .svn
PHP_UMLは/ var / www / testを再帰的に解析し、php6のみを保持します
ファイル、およびsvnフォルダーを除外します。 UMLモデルの名前は「Foo」、およびバージョン1で生成されたXMIファイルは、次の場所に保存されます「/tmp/Foo.xmi」...なんかちょっと変だな。
なんか画像にしてだしてくれるツール別に見つけたのでそっち使ってみます。
https://github.com/jakobwesthoff/phuml
- 投稿日:2020-09-07T21:23:04+09:00
Katacoda上で手軽に検証シリーズ "Cockpitをインストールして使ってみる編"
本記事では、LinuxをGUIで管理するためのソフトウェアである"Cockpit"を”Katacoda"という学習サービス上で手軽に試すための方法について解説します。
本記事の対象者
手元にLinux環境が直ぐには用意できないが、Cockpitを試しに使ってみたい人
Cockpitとは
Web ブラウザを通してLinuxの単一及び複数システムのモニターが出来るUIツールです。
Linuxの監視に使われる機能は、種類も多く、詳細を見るのには概ねCLIで有ることも多いです。https://cockpit-project.org/running.html
なお、今回はあくまでもKatacoda上で同機能の実装を手軽に行うための手順にフォーカスしていますので、Cockpitで何が出来る、それ自身の使い方については別途お調べ頂くようお願い致します。
Katacodaとは
現在ではオライリー社が提供する無償でのオープンソース系ソフトウェアの学習デモ環境です。
メジャーLinuxディストリビューションや、最近流行りのDockerやKubernetes、Ansibleなどもブラウザ上からアクセスして学習が出来ます。
Katacoda上でのCockpitにアクセスするまでの流れ
- KatacodaでLinuxを利用するためのアカウント作成及びログイン(無料)
- CentOS環境をレンタルして、rootパスワードを任意のパスワードに変更する
- パッケージ"Cockpit"をインストールする
- ”Cockpit”をCentOS内で起動する
- ブラウザを使い、CentOSにアクセスしてログインする
1. KatacodaでLinuxを利用するためのアカウント作成及びログイン(無料)
Katacodaにアクセスして、アカウントを作成します。(図内右上)
2. CentOS環境をレンタルして、rootパスワードを任意のパスワードに変更する
Katacodaのトップページには利用可能なラボ環境のメニューがアイコンで表示されています。
今回はCentOSを利用しますので、”Linux & Operating Systems"を選択します。
次のページでは”Start”をクリック頂くと、下図のようにCLI画面が登場します。
まずここで、root管理者のパスワードを設定します。passwd
警告的なものが出ているのは、セキュリティ上弱い文字列を使っているためです。今回は学習目的なので、自分にとって分かりやすいテンポラリーなものを設定で構いません。3. パッケージ"cockpit"をインストールする
続いて、yumコマンドで"cockpit"をインストールします。
yum install cockpit (インストールに対してYesの応答をユーザーが手動で承認する) または yum -y install cokpit (インストールに対してYesの応答を自動で行ってくれる)4. ”cockpit”をCentOS内で起動する
# cockpitのサービスを起動(システムの起動時に自動起動化も実施) systemctl start --now cockpit # cockpitのサービスの起動状態を確認 systemctl status cockpit緑の文字で、activeが確認出来ました。これでCockpitが動き出しました。
ここで本来ならば、ファイアウォールポートの開放も必要です。Cockpitの場合はTCP 9090をOpenにする必要があります。
しかし、Katacoda環境ではfirewalldが動作しておりませんので、その設定を入れなくてもCockpitを利用する事は可能です。
ファイアウォールポートの開放手順を確認したい場合は、Cokpitのページ上に各ディストリビューションのファイアポート開放コマンドの記載がありますので、そちらを参照ください。5. ブラウザを使い、CentOSにアクセスしてログインする
Katacoda内のCLI画面上部に"+"のアイコンがあります。
こちらをクリックすることで、当該Linuxに対してアクセスが出来るメニューが表示されます。
上から3つ目の"Select port to view on Host 1"を選択します。
下記のポート指定欄にてCockpitが利用するデフォルトポート番号の9090を入力後、”Display Port"をクリックします。
ブラウザ上でCockpitの起動が出来ました。
ログインには次の情報を入力しましょう。(ユーザー名 root / パスワード 先程設定した値)
ログイン後は以下のように当該Linux OSについての情報をグラフィカルに確認することが出来ます。
パフォーマンスチャートグラフもリアルタイムに動くので面白いです。
おまけ katacoda上でログ採取も可能
# Sosreportのインストール(Katacoda環境上のCentOSには未インストールのため必ず実施) yum install sos上記作業実施後、ログ採取のタブからログの取得が可能です。
Katacoda内のCentOSからtar.xz形式でのファイルが取得出来ました。もちろん解凍も可能です。
- 投稿日:2020-09-07T15:13:01+09:00