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

Nothing.

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=arch-linux2-c-opt all

Then a check of function.

$ make PETSC_DIR=/opt/petsc-3.7.7 PETSC_ARCH=arch-linux2-c-opt test
$ make PETSC_DIR=/opt/petsc-3.7.7 PETSC_ARCH=arch-linux2-c-opt 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/asterprofile_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版 code_aster v13.6の作成

0.準備

特にありません。

1.OpenBLAS
$ 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.OpenBLAS版CodeAster
CodeAsterのソースコードをダウンロードして展開したら、参考のとおりにsetup.pyを変更します。
$ 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

続けて

$ python setup.py install

以上です。参考のとおりに並列計算用のホストファイルを作成しておきます。

$ 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
以上です。
4.Parmetis

ソースコードをダウンロードして展開します。

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

完了したら、動作確認をします。

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

特にエラーが出なければ~/parmetis-4.0.3に戻って

$ make install

で終了です。

5.ScotchとPtscotch

Codeasterのソースコードに含まれているscotch-6.0.4-aster5.tar.gzを/opt下に展開します。

$ cd /opt/scotch-6.0.4/src

Makefile.incはこちら

$ make scotch esmumps ptscotch ptesmumps CCD=mpicc

完了したら、動作確認です。

$make check
$make ptcheck

問題なければ完了です。

6.MUMPS

Codeasterのソースコードに含まれているmumps-5.1.1-aster2.tar.gzを/opt下に展開します。フォルダ名はmumps-5.1.1-mpiとしています。

$ cd /opt/mumps-5.1.1-mpi

Makefile.incはこちら

$ make all

終了したらexamplesに移動して動作チェックを行います。

7.Petsc

petsc-3.7.7.tar.gzをダウンロードし、/opt下に展開します。まず、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

そしてmakeです。

$ make PETSC_DIR=/opt/petsc-3.7.7 PETSC_ARCH=arch-linux2-c-opt all

次に動作確認です。

$ make PETSC_DIR=/opt/petsc-3.7.7 PETSC_ARCH=arch-linux2-c-opt test
$ make PETSC_DIR=/opt/petsc-3.7.7 PETSC_ARCH=arch-linux2-c-opt streams

以上です。

8.Parallel版CodeAster

ソースコードを展開したフォルダに入っていき、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

次に、~/waftools/mathematics.pyの一部を変更して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
"""

そしてUbuntu_gnu.pyUbuntu_gnu_mpi.pyをフォルダ内にコピーしてbuildの準備が完了です。

$ 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

成功したら、/opt/aster/etc/codeaster/asterの中にParallel 版を追加します。

# 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.設定ファイルの変更
/opt/aster/etc/codeaster/asrunをテキストエディタで開いて、mpi_get_procid_cmdの部分を書き換えます。
mpi_get_procid_cmd : echo $OMPI_COMM_WORLD_RANK
そしてmpirunの部分を次のように書き換えます。
mpirun_cmd : mpirun -np %(mpi_nbcpu)s %(program)s

お疲れ様でした。

Ubuntu_gnu_mpi.py for parallel CAv13.6

# encoding: utf-8

"""
Fichier de configuration WAF pour version parallèle sur Ubuntu 13.6 :
- Compilateur : GNU
- MPI         : système (OpenMPI, Ubuntu 13.6)
- BLAS        : OpenBLAS
- Scalapack   : système (Ubuntu 13.6)
- PETSc       : 
"""

import Ubuntu_gnu

def configure(self):
    opts = self.options
    Ubuntu_gnu.configure(self)

    self.env.prepend_value('LIBPATH', [
        '/opt/petsc-3.7.7/linux-metis-mumps/lib',
        '/opt/parmetis-4.0.3/lib',
        '/opt/scalapack/lib',
        '/opt/mumps-5.1.1-mpi/lib',])

    self.env.prepend_value('INCLUDES', [
        '/opt/petsc-3.7.7/linux-metis-mumps/include',
        '/opt/petsc-3.7.7/include',
        '/opt/parmetis-4.0.3/include',
        '/opt/mumps-5.1.1-mpi/include',])

    self.env.append_value('LIB', ('X11',))

    opts.parallel = True

    opts.enable_mumps  = True
    opts.mumps_version = '5.1.1'
    opts.mumps_libs = 'dmumps zmumps smumps cmumps mumps_common pord metis scalapack openblas esmumps scotch scotcherr'

#    opts.enable_petsc = False
    opts.petsc_libs='petsc HYPRE ml'

    opts.enable_petsc = True
    self.env.append_value('LIB_METIS', ('parmetis'))
    self.env.append_value('LIB_SCOTCH', ('ptscotch','ptscotcherr','ptscotcherrexit','ptesmumps'))

Ubuntu_gnu.py for Parallel CAv13.6

# encoding: utf-8

"""
Fichier de configuration WAF pour version séquentielle sur Ubuntu 13.6 :
- Compilateur : GNU
- BLAS        : OpenBLAS
"""
import os

def configure(self):
    opts = self.options

#    TFELVERS = '3.0.0'
#    self.env.TFELHOME = '/opt/aster/public/tfel-3.0.0'
#    self.env.TFELVERS = TFELVERS

    self.env.append_value('LIBPATH', [
        '/opt/aster/public/hdf5-1.8.14/lib',
        '/opt/aster/public/med-3.3.1/lib',
        '/opt/aster/public/metis-5.1.0/lib',
        '/opt/scotch-6.0.4/lib',
        '/opt/aster/public/tfel-3.0.0/lib',
        '/opt/OpenBLAS/lib',])

    self.env.append_value('INCLUDES', [
        '/opt/aster/public/hdf5-1.8.14/include',
        '/opt/aster/public/med-3.3.1/include',
        '/opt/aster/public/metis-5.1.0/include',
        '/opt/scotch-6.0.4/include',
        '/opt/aster/public/tfel-3.0.0/include',
        '/opt/OpenBLAS/include'])

    opts.maths_libs = 'openblas'
    opts.embed_math = True

    opts.enable_med = True
#    opts.enable_hdf5 = True
    opts.hdf5_libs  = 'hdf5 z'
#    opts.embed_hdf5 = True
    opts.med_libs  = 'med stdc++'
    opts.embed_med  = True

    opts.enable_petsc = True

    opts.enable_mfront = False

    opts.enable_scotch = True
    opts.embed_scotch  = True

    opts.embed_aster    = True
    opts.embed_fermetur = True

    # add paths for external programs
    os.environ['METISDIR'] = '/opt/aster/public/metis-5.1.0'
    os.environ['GMSH_BIN_DIR'] = '/opt/aster/public/gmsh-3.0.6-Linux/bin'
    os.environ['HOMARD_ASTER_ROOT_DIR'] = '/opt/aster/public/homard-11.10'

    opts.with_prog_metis = True
#    opts.with_prog_gmsh = True
    # salome: only required by few testcases
    # europlexus: not available on all platforms
#    opts.with_prog_miss3d = True
    opts.with_prog_homard = True
#    opts.with_prog_ecrevisse = True
    opts.with_prog_xmgrace = True