Code Aster 14.4.0をxUbuntu18.04LTS環境にインストール

新しいCode Aster 14.4.0をインストールしてみました。

まずは

現在使っているxUbuntu18.04LTSには、Code aster13.6とParallel版の構築で次のPackageが入っています。

$sudo apt-get install  gfortran g++ python-dev python-numpy liblapack-dev libblas-dev tcl tk zlib1g-dev bison flex checkinstall openmpi-bin libx11-dev cmake grace gettext libboost-all-dev swig

また、Salome meca2019のときに

$sudo apt-get install libQt5* net-tools libnlopt0

を追加しました。
今回、公式サイトの記事に従って

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

を追加しました。

後は、ダウンロードしたソースコードを展開した先に移動して

$python3 setup.py install --prefix=/opt/aster14

とするだけです。build終了後に

$/opt/aster14/bin/as_run --vers=14.4 --test forma01a

としたら、次の画面のとおり。

ここで、すでにParallelisme OpenMP : actifとなっています。標準でparallel版なのでしょうか?

無事にsampleの実行は成功しました。

 

 

 

Salome-meca 2019をxUbuntu18.04LTS環境にインストール

Salome-meca 2019がリリースされたので、xUbuntu18.04LTS環境にインストールしました。その時の作業記録です。

GCCのバージョンを確認しました。gcc-7.4.0が入っています。

Code asterのサイト(https://www.code-aster.org/V2/spip.php?article303)へ行き、Salome-meca2019をダウンロードします。

ダウンロードが完了したら、展開してsalome_meca-2019.0.0-1-LGPL.runとします。

必要なpackageをインストールするため、次を実行します。

$sudo apt-get install libQt5* net-tools libnlopt0

そしてSalome-mecaをインストールします。インストール先は/opt/salome_mecaとしました。

 $./salome_meca-2019.0.0-1-LGPL.run -t /opt/salome_meca

このままでは、起動時にエラーとなるので、libstdc++.so.6へのリンクを変更します。

$cd /opt/salome_meca/V2019_univ/prerequisites/debianForSalome/lib 
$rm libstdc++.so.6$ln -s /usr/local/lib64/libstdc++.so.6

既存のリンクを削除して、新しいリンクを作成します。

salomeがあるfolderへ移動し、LD_LIBRARYのPATHを追加してから実行します。

$cd /opt/salome_meca/V2019_univ$export LD_LIBRARY_PATH=/opt/salome_meca/V2019_univ/prerequisites/Qt-591/lib/lib:$LD_LIBRARY_PATH
$export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
$./salome

(多分)うまくいくと、次の画面が見られます。

なぜか、2018の表示なのですが・・・

KERNEL他のversionは9.3.0となっていました。

code asterのversionも14.4.0になっていました。

以上です。各モジュールの動作はこれから確認していこうと思います。




 

はりの線形座屈解析

SSLL103を参考に線形座屈解析をしてみました。

線形座屈解析は
$$ (K+\lambda K_{g})x = 0 $$
ここで
$$K:剛性マトリックス\\
K_{g}:形状剛性マトリックス\\
\lambda :固有値$$
を解くことです.解析の手順は次の通りですね。

  1. 静解析を行う
  2. 静解析の結果を使って、剛性マトリックスと形状剛性マトリックスを作成
  3. 固有値解析

解析対象のモデルは次のとおり。はりの断面形状は、こちらのものです。

解析結果は

座屈荷重$P_{c}$は、$\lambda x F = 34.05×10=340.5N$でした。
Euler座屈の式から求めた値は
$P_{c}= n\frac{\pi^{2} E I}{L^{2}} $
$ = \frac{1}{4} \frac{\pi^{2} 210000 0.067333}{10^{2}}$
$ = 3.49×10^{2} N$
ですので、ほぼ一致しました。

はりの大変形解析

こちらの解析結果をみると、あることに気がつきます。

はりの変形図の先端部分の変位ですが、荷重方向にだけ変位しています。これは、解析に使用したはり要素が微小変形を扱うものだからです。そこで大変形を扱えるPOU_D_T_GD要素を使って計算してみました。

変更点だけとり上げていきます。まず、解析に使用する要素の設定です。

AFFE_MODELEの設定を次のようにします。

前回のPOU_D_TをPOU_D_T_GDにします。

解析方法にSTAT_NON_LINを使うため、計算ステップについて設定します。まず、DEFI_LIST_REELで計算ステップと値の増分(変化)について設定します。

0から10までの変化を10等分しています。

この設定をSTAT_NON_LINで使用するために、DEFI_LIST_INSTで関数にします。

10ステップで10の値を出力するので、10ステップめに荷重が100となるように設定を変更します。

続いて、計算の進展を制御するタイマー役の関数を設定します。

グラフにすると次のとおり。

解析方法のSTAT_NON_LINを設定します。入力結果は次の様になります。

出力を得るため、後処理について2つ設定します。1つ目は、表出力のためのものです。

もう一つは、部材力などの出力を得るためのものです。

計算を実行したら、Para Viewで見てみます。

先端部を拡大すると、

しっかりはりの長手方向にも変形していることが分かります。

 

 

MACR_CARA_POUTREの結果をAFFE_CARA_ELEMへ

ここの梁の計算ではbeam要素のpropertyを入力していました。

Code AsterではMACR_CARA_POUTRE の結果を取り込む機能が容易されていますので、使ってみます。

梁のmesh名と断面のmesh名が重複すると面倒なので、お互いに違う名前にしておきます。ここでは、断面のmesh名を”Mesh_11″とします。

このmeshをmed形式で書き出します。そして、梁要素のAster Studyの方で、梁要素のmesh読み込みと同様に、med形式の読み込み命令を追加します。

読み込んだmeshには”meshsect”と名前を付けます。次に、MACR_CARA_POUTRE の設定です。

“TABLE_CARA”と右隣のチェックボックスをチェックします。”NOM”は1とします。断面特性の名前は”tsect”としています。

AFFE_CARA_ELEMの設定です。

TABLE_CARA の欄で”tsect”を選択します。そして、NOM_SEC も特性計算のところで設定した1と入力します。

後の設定はこちらと同じです。

タグを選択してHistory Viewへ移動し、メモリや計算時間の設定を確認してから、Runボタンをクリックします。

変位について解析結果を示します。

こちらと同じ結果となりました。

Aster Studyではりの計算

こちらの梁の計算 についてbeam要素を用いてAster Studyを使って計算します。

Salome-Mecaを起動します。

$ LANG='en_EN.utf8' ./salome

GeometryからMeshに移動して、Femモデルを作成します。

Femモデルを作成し終えたら、Aster Studyへ移動します。

節点1は拘束しますから、”fix”と名前を付けておきます。同様に荷重が作用する節点2には”load”とします。

Aster Study に移動し、”Add stage”で新しいcommを作成します。

Mesh > Read meshを選択します。

Mesh Fileは、”Mesh”メニューで作成したMesh_1を選択します。Formatはmedです。Model definition > Assign finite elementで解析の種類、要素の種類を設定します。

梁の曲げなので”Mechanic”、要素にはTimoshenko梁を選びます。

Model definition > AFFE_CARA_ELEMを選び、梁要素の断面特性値を入力します。

設定する特性値の名前を入力し、

対応する数値を入力します。

材料特性を入力します。Material > Define a materialを選択します。

材料名は”steel”として、線形等方性を選んで、縦弾性係数とポアソン比を入力します。そして、Material > Assign a materialから、”steel”を要素に適用します。

境界条件の設定です。BC and Load > Assign mechanical loadから

を選択して、それぞれについて次のように入力します。

次に、AnalysisからStatic mechanical analysisを選択して、material、Model、Loadsを入力します。

計算結果はreslinに格納されます。そして、出力のための処理を設定します。ここでは、Paraview用と、節点変位をtextファイルに出力するための2つの設定を行います。

Post processing > CALC_CHAMP

Post processing > POST_RELEVE_T

次に、出力を指示します。Output > Set output resultsでParaview用のmed形式の出力を指示します。

もう一つ、荷重作用点の変位をtext出力するための指示をだします。

以上で計算のための設定は終わりです。タグを選択してHistory Viewへ移動し、メモリや計算時間の設定を確認してから、Runボタンをクリックします。

あとは、緑印の実行完了を待つだけです。

変位について解析結果を示します。

荷重点の変位のtext出力は次のとおり。

Shell要素を用いた計算結果と同じ値になりました。

今回使用したbeam_1_bend.zipです。

Aster Studyで断面性能の計算

Salome-Mecaに挑戦です。こちらの断面 についてAster Studyを使って計算します。内側の境界線に”inn”と名前を付けます。

Salome-Mecaを起動します。

$ LANG='en_EN.utf8' ./salome

断面を作成して、Meshを作成したらAster Studyへ移動します。

“Add stage”で新しいcommを作成します。

Stage1 →Mesh→” Read a mesh”と選択していきます。

一番上のMesh file locationで先に作成したMesh_1を選んでOKボタンを押します。

次にMesh_1に含まれるMeshにグループ名を付けます。

stage1 Show allで検索ダイアログからMACRO_CARA_POUTREを選択します。

そして、計算時の原点となるNodeを入力します。ここではoriginと名付けたNodeです。

続けて、境界のエッジのグループを入力します。GROUP_MAで要素のグループ”shell”を入力すると、JXの値が?になってしまいます。

最後に結果出力の指定です。Stage1→ Output→ IMPR_TABLEと進みます。

一番上は標準のまま。二番目は結果が入ったファイル名です。FORMAT_Rは出力書式です。指数形式で20マスを使い、そのうち9マスが数値の小数点以下の桁数となります。FORTRANのFORMAT文と同じですね。

以上で準備ができました。それでは実行です。

画面の下のRunボタンをクリックします。

回転する砂時計が現れます。

無事に終了すると緑の円マークとなります。

で完了です。先に出力先に指定したbox_section.resuが作成されています。

code_aster v13.6 parallel version

This page is a note of the work to build parallel version.

0.preparation

Preparation is same as the case of CodeAster 13.6.
Some packages are installed as follows.

$sudo apt-get install  gfortran g++ python-dev python-numpy liblapack-dev libblas-dev tcl tk zlib1g-dev bison flex checkinstall openmpi-bin libx11-dev cmake grace gettext libboost-all-dev swig

 

1.OpenBLAS

To get source code from author’s HP. Then execute following procedure.

$ tar xfvz OpenBLAS-0.2.20.tar.gz
$ cd OpenBLAS-0.2.20
$ make NO_AFFINITY=1 USE_OPENMP=1
$ make PREFIX=/opt/OpenBLAS install
$ echo /opt/OpenBLAS/lib | sudo tee -a /etc/ld.so.conf.d/openblas.conf
$ sudo ldconfig
2.Code_Aster eith OpenBLAS
First, the source code of code_aster is unpacked. Next, “setup.py” is modified according to the reference.
$ cd aster-full-src-13.6.0
$ sed -i "s:PREFER_COMPILER\ =\ 'GNU':PREFER_COMPILER\ =\'GNU_without_MATH'\nMATHLIB=\ '/opt/OpenBLAS/lib/libopenblas.a':g" setup.cfg

And

$ python setup.py install

After the build complete, to make host file for parallel calculation.

$ echo "$HOSTNAME cpu=$(cat /proc/cpuinfo | grep processor | wc -l)" > /opt/aster/etc/codeaster/mpi_hostfile
3.ScaLAPACK
$ tar xfvz scalapack_installer.tgz
$ cd scalapack_installer
$ ./setup.py --lapacklib=/opt/OpenBLAS/lib/libopenblas.a --mpicc=mpicc --mpif90=mpif90 --mpiincdir=/usr/lib/x86_64-linux-gnu/openmpi/include --ldflags_c=-fopenmp --ldflags_fc=-fopenmp --prefix=/opt/scalapack
Over.
4.Parmetis

Get source code and unpack it.

$ tar xvf parmetis-4.0.3.tar.gz
$ cd parmetis-4.0.3
$ make config prefix=/opt/parmetis-4.0.3
$ make

Next, checking.

$ cd Graphs
$ mpirun -np 8 ptest rotor.graph rotor.graph.xyz

When any error is reported, go to~/parmetis-4.0.3 and execute follows:

$ make install

This part is finished.

5.Scotch and Ptscotch

Unpack scotch-6.0.4-aster5.tar.gz which is included the package of code_aster in /opt.

$ cd /opt/scotch-6.0.4/src

Makefile.inc is here.

$ make scotch esmumps ptscotch ptesmumps CCD=mpicc

After building, check it.

$make check
$make ptcheck

This part is finised.

6.MUMPS

Pick mumps-5.1.1-aster2.tar.gz from the package of code_aster out and unpack it in /opt. The name of folder is changed to mumps-5.1.1-mpi.

$ cd /opt/mumps-5.1.1-mpi

Makefile.inc is here.

$ make all

Next, to go to ~/examples and check the MUMPS.

7.Petsc

petsc-3.7.7.tar.gz is downloaded from author’s HP. Then unpack it in /opt. First step is “config”.

$ cd /opt/petsc-3.7.7
$ ./config/configure.py --with-mumps-dir=/opt/mumps-5.1.1-mpi --with-openmpi-dir=/usr/lib/x86_64-linux-gnu/openmpi --with-blas-lapack-lib=[/opt/OpenBLAS/lib/libopenblas.a] --download-hypre=yes --download-ml=yes --with-debugging=0 COPTFLAGS=-O1 CXXOPTFLAGS=-O1 FOPTFLAGS=-O1 --with-x=0 --with-shared-libraries=0 --with-scalapack-dir=/opt/scalapack --PETSC_ARCH=linux-metis-mumps --with-metis-dir=/opt/aster/public/metis-5.1.0 --with-parmetis-dir=/opt/parmetis-4.0.3 --with-scotch-dir=/opt/scotch-6.0.4 --with-ptscotch-dir=/opt/scotch-6.0.4 LIBS=-lgomp --configModules=PETSc.Configure --optionsModule=PETSc.compilerOptions

Next step is “make”

$ make PETSC_DIR=/opt/petsc-3.7.7 PETSC_ARCH=linux-metis-mumps all

Then a check of function.

$ make PETSC_DIR=/opt/petsc-3.7.7 PETSC_ARCH=linux-metis-mumps test
$ make PETSC_DIR=/opt/petsc-3.7.7 PETSC_ARCH=linux-metis-mumps streams

This part is finished.

8.Parallel version Code_Aster

Go to the folder stored the source code of code_aster. And unpack aster-13.6.0.

$ cd ~/Install_Files
$ cd aster-full-src-13.6.0/SRC
$ tar xfvz aster-13.6.0.tgz
$ cd aster-13.6.0

Next a part of ~/waftools/mathematics.py is modified to skip the checking of blacs.

# program testing a blacs call, output is 0 and 1
blacs_fragment = r"""
program test_blacs
    integer iam, nprocs
#    call blacs_pinfo (iam, nprocs)
#    print *,iam
#    print *,nprocs
end program test_blacs
"""

Then copy Ubuntu_gnu.py and Ubuntu_gnu_mpi.py to the folder. Now preparation of build is ready.

$ export ASTER_ROOT=/opt/aster
$ ./waf configure --use-config-dir=$ASTER_ROOT/13.6/share/aster --use-config=Ubuntu_gnu_mpi --prefix=$ASTER_ROOT/PAR13.6MUPT2
$ ./waf install -p

When build is finised. add register the parallel version to /opt/aster/etc/codeaster/aster.

# Code_Aster versions
# versions can be absolute paths or relative to ASTER_ROOT
# examples : NEW11, /usr/lib/codeaster/NEW11

# default version (overridden by --vers option)
default_vers : stable

# available versions
# DO NOT EDIT FOLLOWING LINE !
#?vers : VVV?
vers : stable:/opt/aster/13.6/share/aster
vers : 13.6MUPT:/opt/aster/PAR13.6MUPT2/share/aster
7.Change the setting
Open /opt/aster/etc/codeaster/asrun and edit the line of “mpi_get_procid_cmd”.
mpi_get_procid_cmd : echo $OMPI_COMM_WORLD_RANK
Next, the line regarding to “mpirun” is modified as follows.
mpirun_cmd : mpirun -np %(mpi_nbcpu)s %(program)s

Whole work is finished. Let’s Enjoy!



Installation of code_aster v13.6 on xUbuntu 18.04LTS

This is a minutes of installation of Code_Aster v13.6 on xUbuntu18.04LTS.

First, the package was downloaded from following homepage.

Next, some packages rewquired for build were installed.

$su apt-get install  gfortran g++ python-dev python-numpy liblapack-dev libblas-dev tcl tk zlib1g-dev bison flex checkinstall openmpi-bin libx11-dev cmake grace gettext libboost-all-dev swig

Then , aster-full-src-13.6.0-1.noarch.tar.gz was untared and to go into aster-full-src-13.6.0.

$python setup.py install --prefix=/opt/aster

Typing above command, code_aster v13.6 was set under /opt/aster.

This is a result of confirmation.

/opt/aster/bin/as_run --vers=13.6 --test forma01a

 

The work was completed without any trouble. Thank you!

MFRONTの追加

こちらで構築したCodeAsterですが、実はMFront:non disponsibleとあるとおり組み込まれていません。

せっかくですので、MFrontを組み込んでみました。

0.準備

CodeAsterのv13.6と一緒に配布されているtfel-3.0.0では、python libraryを作ることができませんでした。そこで、tfel-3.2.0をダウンロードして使用します。

$ tar xfvz tfel-3.2.0.tar.bz2
$ cd tfel-3.2.0

そして

$ cmake -DTFEL_SVN_REVISION=3.2.0 -DCMAKE_BUILD_TYPE=Release -Dlocal-castem-header=ON -Denable-fortran=ON -DPython_ADDITIONAL_VERSIONS=2.7 -Denable-python=ON -Denable-broken-boost-python-module-visibility-handling=ON -Denable-python-bindings=ON -Denable-cyrano=ON -Denable-aster=ON -Ddisable-reference-doc=ON -Ddisable-website=ON -Denable-portable-build=OFF -DCMAKE_INSTALL_PREFIX=/opt/tfel-3.2.0

$ make 
$ make install
1.環境設定

前回のCodeAsterの構築で作成されたファイルを利用します。

$ cd /opt/aster/13.6/share/aster

このフォルダにあるprofile_mfront.shを利用します。エディタで

HOME_MFRONT=/opt/aster/public/tfel-3.0.0

HOME_MFRONT=/opt/tfel-3.2.0

に変更します。

同様にaster_full_config.pyの中のtfelのフォルダ名も変更します。そして

opts.enable_mfront = True

を追加します。

 

2.構築

CodeAsterのソースファイルが置いてあるフォルダに移動します。

$ cd ~/Install_Files
$ cd aster-full-src-13.6.0/SRC/aster-13.6.0
$ export ASTER_ROOT=/opt/aster
$ source $ASTER_ROOT/13.6/share/aster/profile_mfront.sh
$ ./waf configure --use-config-dir=$ASTER_ROOT/13.6/share/aster --use-config=aster_full_config --prefix=$ASTER_ROOT/MFRONT13.6
$ ./waf install -p
3.結果

新たに構築したCodeAsterを使ってみます。MFRON01を試してみました。

まず、/opt/aster/13.6/share/aster/testからmfron01a.commとChaboche.mfrontを適当な場所(ここでは/home/kk)にコピーしました。

そして、astkを起動します。

$ /opt/aster/bin/astk

そして、次のように設定しました。

resuの設定は不要です。実行にあたり、commの中を少し変更しました。

変更前:os.system("cp src/libAsterBehavior.so Chaboche.so")
変更後:os.system("cp /home/kk/src/libAsterBehavior.so Chaboche.so")

そしてRunボタンをクリックします。

messファイルを開いてみると、MFront:3.2.0となっていることがわかります。

結果もhttps://www.code-aster.org/V2/doc/v13/en/man_v/v1/v1.03.126.pdfの値とあうようです。

Parallel版の方も、Ubuntu_gnu.pyUbuntu_gnu_mpi.pyを使ってbuildできました。

$ source $ASTER_ROOT/13.6/share/aster/profile_mfront.sh

を実行して、mfrontに必要なファイルへのpathを通すところがポイントでした。

Sponsored