Install Code aster 14.4 to xUbuntu 20.04LTS

After installing Salome meca, Code Aster 14.4.0 was installed.

The source code was downloaded.

Then packages were added

$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 swig

In case of xUbuntu 20.04, python3.8 is standard and it is cause of a trouble at building.(refere to this). Therefore we installed python3.6 and related packages as follows

$sudo apt-get install python3.6 python3.6-dev libboost1.67-all-dev

To get Numpy, visit to here and installed python-numpy_1.16.2-1ubuntu1_amd64.deb.

Then symbolic links was modified that  python3 indicated python3.6.

$cd /usr/bin
$sudo rm python3
$sudo ln -s python3.6 python3
$sudo rm python3-config
$sudo ln -s python3.6-config python3-config

Unpack the source code and move to the folder. Then start building.

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

In my case, the build finished without any trouble.

After building, python3 was returned to python3.8.

$cd /usr/bin
$sudo rm python3
$sudo ln-s python3.8 python3
$sudo rm python3-config
$sudo ln -s python3.8-config python3-config

For confirmation,  forma01a was conducted.

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

The result was next.

I wish for it to help you.




Code_Aster14.4をxUbuntu20.04にインストール

Salome mecaに続いてCode Aster 14.4.0をインストールしてみました。

まずはソースコードをダウンロードします。

次の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 swig

を追加しました。xUbuntuの標準のpython3.8はbuild時にエラーとなるのでpython3.6をインストールします。

$sudo apt-get install python3.6 python3.6-dev libboost1.67-all-dev

numpyはここからpython-numpy_1.16.2-1ubuntu1_amd64.debを入手してインストールしました。

次にpython3がpython3.6を指すようにリンクを変更します。

$cd /usr/bin
$sudo rm python3
$sudo ln -s python3.6 python3
$sudo rm python3-config
$sudo ln -s python3.6-config python3-config

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

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

とするだけです。無事に完了しました。

そして、python3をpython3.8に戻します。

$cd /usr/bin
$sudo rm python3
$sudo ln-s python3.8 python3
$sudo rm python3-config
$sudo ln -s python3.8-config python3-config

確認のため、forma01aを実行しました。

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

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

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




xUbuntu20.04にSalome-meca2019のインストール

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

xUbuntu18.04LTSと同じようにPackageを追加していきます。

$sudo apt-get install libQt5* net-tools libnlopt0
$sudo apt-get install python3 python3-dev python3-numpy

今回はさらに次の3つを追加しました。

$sudo apt-get install libffi* 

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

ダウンロードが完了したら、展開してsalome_meca-2019.0.3-1-universal.runとします。
インストール先は/opt/salome_mecaとしました。

 $./salome_meca-2019.0.3-1-universal.run -t /opt/salome_meca

このままでは、起動時にエラーとなるので、libstdc++.so.6への既存のリンクを削除して、新しいリンクを作成します。リンクを変更します。

$cd /opt/salome_meca/V2019.0.3_univ/prerequisites/debianForSalome/lib 
$rm libstdc++.so.6
$ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 libstdc++.so.6

さらにAsterstudyの起動時対策として次のリンクを作成します。(参考)

$ln -s /usr/lib/x86_64-linux-gnu/libffi.so libffi.so.6

salome-mecaを実行します。

(多分)うまくいくと、起動⇒AsterStudy。HelpでAboutを選ぶと次の画面が見られます。

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



First step for shape optimization?

I tried shape optimization.
Original article is here

COMM file is modified to do on Code Aster13.6.

Changing items are as follows:

  • Comment out Numeric
import numpy as N
#import numeric as N
import math
  • Addition of 1 dim element

After reading mesh data,  a node group ’TOUT’ is added.

msh[0]=DEFI_GROUP(reuse =msh[0],
MAILLAGE=msh[0],
CREA_GROUP_NO=_F(GROUP_MA='model',NOM='TOUT',) ,);

Then  1 dim elements are added on the nodes shown in ‘TOUT’.

nmh[i]=CREA_MAILLAGE(MAILLAGE=msh[0],
                     CREA_POI1=_F(NOM_GROUP_MA='spElmt',
                                    GROUP_NO='TOUT',),);
  • a procedure to make new mesh data

Not msh[i]⇒msh[i+1], renew a calculated mesh group in msh[0].

msh[0]=DEFI_GROUP(reuse =msh[0],
                  MAILLAGE=msh[0],
                  DETR_GROUP_MA=_F(NOM='model',),
                  DETR_GROUP_NO=_F(NOM='TOUT',),
                  CREA_GROUP_MA=_F(NOM='model',MAILLE=NewModel,),
                 CREA_GROUP_NO=_F(GROUP_MA='model',NOM='TOUT',) ,);

 

This is a snapshot of ASTK.

Result of 1st step.

10th step.

20th step

30th step

Final (34step)

A element which are low stress are removed.





Data is Optiastkv13-6.

形状最適化?の最初の一歩

形状の最適化について挑戦してみました。
元ねたはこちら

今のCode Aster13.6で計算できるようにしてみました。

主な変更点は次のとおり

  • Numericは使わないから削除
import numpy as N
#import numeric as N
import math
  • 1次要素を追加するところ

meshを読み込んだ後、節点GROUPの’TOUT’を追加します。

msh[0]=DEFI_GROUP(reuse =msh[0],
MAILLAGE=msh[0],
CREA_GROUP_NO=_F(GROUP_MA='model',NOM='TOUT',) ,);

そして、1次要素を追加します。

nmh[i]=CREA_MAILLAGE(MAILLAGE=msh[0],
                     CREA_POI1=_F(NOM_GROUP_MA='spElmt',
                                    GROUP_NO='TOUT',),);
  • 新しいmeshをつくるところ

msh[i]⇒msh[i+1]ではなく、msh[0]の計算対象のmesh groupを更新しています。

msh[0]=DEFI_GROUP(reuse =msh[0],
                  MAILLAGE=msh[0],
                  DETR_GROUP_MA=_F(NOM='model',),
                  DETR_GROUP_NO=_F(NOM='TOUT',),
                  CREA_GROUP_MA=_F(NOM='model',MAILLE=NewModel,),
                 CREA_GROUP_NO=_F(GROUP_MA='model',NOM='TOUT',) ,);

 

ASTKです。

1回目。

10回目

20回目

30回目

34回目(最終)

応力が低い部分が除かれていました。
 




使用したデータはOptiastkv13-6 です。

FreeFem on xUbuntu18.04LTS

FreeFemをxUbuntu18.04LTSでbuildした作業記録です。
参考はこちら

0. 準備

必要なpackageをインストールします。

#sudo apt-get update
#sudo apt-get upgrade
#sudo apt-get install cpp freeglut3-dev g++ gcc gfortran m4 make patch pkg-config wget python unzip libopenblas-dev liblapack-dev libhdf5-dev libgsl-dev \
    libscotch-dev libfftw3-dev libarpack2-dev libsuitesparse-dev libmumps-seq-dev libnlopt-dev coinor-libipopt-dev libgmm++-dev libtet1.5-dev \
    gnuplot-qt autoconf automake autotools-dev bison flex gdb valgrind git cmake

あと、次のpackageも必要になりました。

#sudo apt-get install mpich autoconf automake cmake libtool

1. Source codeのdownload

#git clone https://github.com/FreeFem/FreeFem-sources.git

そしてautoconfでbuildのためのfileを作ります。

#cd FreeFem-sources
#autoreconf -i
#./configure --enable-download --enable-optim

2. 3rd Party Packages

関連するPackageをdownloadします。今回はHPDDMを組み込みます。

#./3rdparty/getall -a
#./configure --enable-download

/usr/localの下にff-petscがあるのなら、削除します。そして、

#cd 3rdparty/ff-petsc
#make petsc-slepc SUDO=sudo 
(sudoは/usr/localへの書き込みに必要なら付けます)

petscのbuildが完了したら、

#cd -
#./reconfigure

3. build

#make 
#make check

そして

#sudo make install

以上です。

OpenFOAM v1812 on xUbuntu18.04LTS

OpenFOAM v1812をxUbuntu18.04LTSにインストールした時の作業記録です。

参考はこちら

0. 準備

必要なpackageをインストールします。

#sudo apt-get update

そして

#apt-get install build-essential flex bison cmake zlib1g-dev libboost-system-dev libboost-thread-dev \
libopenmpi-dev openmpi-bin gnuplot libreadline-dev libncurses-dev libxt-dev \
qt5-default libqt5x11extras5-dev libqt5help5 qtdeclarative5-dev qttools5-dev \
libqtwebkit-dev freeglut3-dev libqt5opengl5-dev texinfo \
libscotch-dev libcgal-dev python python-dev

そして

#apt-get install libglu1-mesa-dev

をインストールしました。さらに次のpackageが必要だったのでインストールしました。

#apt-get install qt5-default qtwayland5

1. Source codeの取得

#cd ~
#mkdir OpenFOAM
#cd OpenFOAM
#wget "http://downloads.sourceforge.net/openfoamplus/files/OpenFOAM-v1812.tgz?use_mirror=mesh" -O OpenFOAM-v1812.tgz
#wget "http://downloads.sourceforge.net/openfoamplus/files/ThirdParty-v1812.tgz?use_mirror=mesh" -O ThirdParty-v1812.tgz
 
#tar -xzf OpenFOAM-v1812.tgz
#tar -xzf ThirdParty-v1812.tgz

MPI版を構築したいので

#ln -s /usr/bin/mpicc.openmpi OpenFOAM-v1812/bin/mpicc
#ln -s /usr/bin/mpirun.openmpi OpenFOAM-v1812/bin/mpirun

とします。次に

#source $HOME/OpenFOAM/OpenFOAM-v1812/etc/bashrc WM_LABEL_SIZE=64

とあるのですが、エラーが出たので、~/OpenFOAM/OpenFOAM-v1812/etc/のbashrc内の

export WM_LABEL_SIZE=32

export WM_LABEL_SIZE=64

としました。参考どおりにaliasを.bashrcに追加しました。

#echo "alias of1812+='source \$HOME/OpenFOAM/OpenFOAM-v1812/etc/bashrc $FOAM_SETTINGS'" >> $HOME/.bashrc

2. Paraview

Paraviewをbuildします。

#cd $WM_THIRD_PARTY_DIR
#export QT_SELECT=qt5
#./makeParaView -python -mpi -python-lib /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0 > log.makePV 2>&1

完了まで時間がかかりました。完了したら、log.makePVの中身を見て、エラーが発生していないことを確認しましょう。

3. Metis と Petsc

Metisはこちらから入手して、~/OpenFOAM/ThirdParty-v1812の下で展開します。metis-5.1.0というフォルダが作成されます。

Petscはこちらからpetsc-3.9.4を入手して、同様に展開します。

~/OpenFOAM/OpenFOAM-v1812/etc/config.sh/のsetupを開いて、

_foamEtc -config FFTW
_foamEtc -config petsc

petscを追加します。次に~/OpenFOAM/OpenFOAM-v1812/etc/config.sh/のpetscを開いて

petsc_version=petsc-3.9.3

petsc_version=petsc-3.9.4

に修正します。最後に、~/OpenFOAM/ThirdParty-v1812/のAllwmakeに

echo ========================================
if [ -n "$FFTW_ARCH_PATH" ]
then
    echo FFTW
    ./makeFFTW -test "$FFTW_ARCH_PATH" || \
    ./makeFFTW || warnBuildIssues FFTW
else
    warnNotFound FFTW # FFTW is optional
fi

echo
echo ========================================
if [ -n "$PETSC_ARCH_PATH" ]
then
    echo PETSC
    ./makePETSC -test "$PETSC_ARCH_PATH" || \
    ./makePETSC || warnBuildIssues PETSC
else
    warnNotFound PETSC # PETSC is optional
fi

echo
echo ========================================
echo Done ThirdParty Allwmake
echo ========================================
echo

#------------------------------------------------------------------------------

追加しました。

4. Build

#cd $WM_PROJECT_DIR
#export QT_SELECT=qt5
#./Allwmake -j 4 > log.make 2>&1

完了後、もう一回

#./Allwmake -j 4 > log.make 2>&1

として、~/OpenFOAM/OpenFOAM-v1812/のlog.make内を見て、エラーがないことを確認します。

#icoFoam -help

として、messageがちゃんと表示されるか確かめて作業終了です。

code_aster 14.4 parallel version with PETSc

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

The linux box is xUbuntu 18.04LTS on VMware.

0.preparation

Preparation is same as the case of CodeAster 14.4.
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

And install superlu package.

$sudo apt-get install libsuperlu-dev
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-14.4.0
$ sed -i "s:PREFER_COMPILER\ =\ 'GNU':PREFER_COMPILER\ =\'GNU_without_MATH'\nMATHLIB=\ '/opt/OpenBLAS/lib/libopenblas.a':g" setup.cfg

And

$ python3 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-n
Over.
4.Parmetis

Get source code and unpack it. Integer size is 8 byte in this work.
#define IDXTYPEWIDTH 64″ and “#define REALTYPEWIDTH 32” is written in ~/parmetis-4.0.3/metis/include/metis.h. or add followings to metis.h

#ifdef INTSIZE32
#define IDXTYPEWIDTH 32
#else
#define IDXTYPEWIDTH 64
#endif

then

$ 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.2-aster6.tar.gz from the package of code_aster out and unpack it. The name of folder is changed to mumps-5.1.2_mob.

$ cd /opt/mumps-5.1.2_mob

Makefile.inc is.here.

$ make all

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

7.Petsc

petsc-3.9.4.tar.gz is downloaded from author’s HP. Then unpack it in /opt. First , a few line (line 43 to 48) is commented out metis.py in /opt/petsc-3.9.4/config/BuildSystem/config/packages.

def configureLibrary(self):
config.package.Package.configureLibrary(self)
oldFlags = self.compilers.CPPFLAGS
self.compilers.CPPFLAGS += ' '+self.headers.toString(self.include)
# if not self.checkCompile('#include "metis.h"', '#if (IDXTYPEWIDTH != '+ str(self.getDefaultIndexSize())+')\n#error incompatible IDXTYPEWIDTH\n#endif'):
# if self.defaultIndexSize == 64:
# msg= '--with-64-bit-indices option requires a metis build with IDXTYPEWIDTH=64.\n'
# else:
# msg= 'IDXTYPEWIDTH=64 metis build appears to be specified for a default 32-bit-indices build of PETSc.\n'
# raise RuntimeError('Metis specified is incompatible!\n'+msg+'Suggest using --download-metis for a compatible metis')

And when openmpi is used, path to openmpi library is added to LD_LIBRARY_PATH. Next is a sample.

$ export LD_LIBRARY_PATH =/usr/lib/x86_64-linux-gnu/openmpi/lib/:$LD_LIBRARY_PATH

Then, “configure” is done.

$./configure --with-debugging=0 COPTFLAGS=-O CXXOPTFLAGS=-O FOPTFLAGS=-O --with-shared-libraries=0 --with-scalapack-dir=/opt/scalapack-n --PETSC_ARCH=linux-metis-mumps --with-metis-dir=/opt/aster/public/metis-5.1.0 --with-parmetis-dir=/opt/parmetis-4.0.3 --with-ptscotch-dir=/opt/scotch-6.0.4 --LIBS="-lgomp" --with-mumps-dir=/opt/mumps-5.1.2_mob -with-x=0 --with-blas-lapack-lib=[/opt/OpenBLAS/lib/libopenblas.a] --download-hypre=yes --download-ml=yes

and “make”

$ make PETSC_DIR=/opt/petsc-3.9.4 PETSC_ARCH=linux-metis-mumps all
8.Parallel version Code_Aster

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

$ cd ~/Install_Files
$ cd aster-full-src-14.4.0/SRC
$ tar xfvz aster-14.4.0.tgz
$ cd aster-14.4.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
$ export PYTHONPATH=/$ASTER_ROOT/lib/python3.6/site-packages/:$PYTHONPATH
$ ./waf configure --use-config-dir=$ASTER_ROOT/14.4/share/aster --use-config=Ubuntu_gnu_mpi --prefix=$ASTER_ROOT/PAR14.4MUPT
$ ./waf install -p --jobs=1

When build is finished. 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/14.4/share/aster
vers : 13.6MUPT:/opt/aster/PAR14.4MUPT/share/aster

Whole work is finished.
I got many information from Code_aster forum. I appreciate the form members.