Skip to content

Instantly share code, notes, and snippets.

@michioga
Last active December 16, 2019 04:41
Show Gist options
  • Save michioga/3c4d1cbc66d511cef8c9b20a5076c903 to your computer and use it in GitHub Desktop.
Save michioga/3c4d1cbc66d511cef8c9b20a5076c903 to your computer and use it in GitHub Desktop.
オープンソース大規模並列FEM非線形構造解析プログラム FrontISTR v4.6のインストール (ubuntu 16.04 LTS) ref: https://qiita.com/michioga/items/b9bc6d5c04318b107714
% sudo apt install build-essensial
% sudo apt install libtrilinos-ml-dev
% sudo apt install libtrilinos-aztecoo-dev libtrilinos-zoltan-dev
% sudo apt install libopenblas-dev libmumps-dev libmetis-dev
$ sudo apt install build-essential gfortran
$ sudo apt install openmpi-bin libopenmpi-dev
$ sudo apt install libtrilinos-ml-dev
$ sudo apt install libtrilinos-aztecoo-dev libtrilinos-zoltan-dev
$ sudo apt install libopenblas-dev libmumps-dev libmetis-dev
% tar xvf REVOCAP_Refiner-1.1.04.tar.gz
% cd REVOCAP_Refiner-1.1.04
% make
$ tar xvf REVOCAP_Refiner-1.1.04.tar.gz
$ cd REVOCAP_Refiner-1.1.04
$ make
% tar xvf metis-5.1.0.tar.gz
% cd metis-5.1.0
$ sudo apt install cmake cmake-curses-gui cmake-extras cmake-qt-gui extra-cmake-modules
% vi CMakeLists.txt
set(GKLIB_PATH "GKlib" CACHE PATH "path to GKlib")
と書かれている部分を
set(GKLIB_PATH "${CMAKE_SOUCE_DIR}/GKlib" CACHE PATH "path to GKlib")
に修正
$ tar xvf OpenBLAS-0.2.20.tar.gz
$ cd OpenBLAS-0.2.20
$ make BINARY=64 NO_SHARED=1 USE_OPENMP=1
$ make PREFIX=$HOME/local install
% cd build
% cmake -DCMAKE_INSTALL_PREFIX=$HOME/local -DCMAKE_BUILD_TYPE="Release" -DOPENMP=ON ..
% make
% make install
$ tar xvf metis-5.1.0.tar.gz
$ cd metis-5.1.0
$ make config prefix=$HOME/local openmp=1 cc=gcc
$ make
$ make install
% tar xvf scalapack-2.0.2.tgz
% cd scalapack-2.0.2
% mkdir build
% cd build
% cmake -DCMAKE_INSTALL_PREFIX=$HOME/local ..
% make
% make install
$ tar xvf scalapack-2.0.2.tgz
$ cd scalapack-2.0.2
$ mkdir build
$ cd build
$ cmake -DCMAKE_INSTALL_PREFIX=$HOME/local \
-DCMAKE_EXE_LINKER_FLAGS="-fopenmp" \
-DBLAS_LIBRARIES=$HOME/local/lib/libopenblas.a \
-DLAPACK_LIBRARIES=$HOME/local/lib/libopenblas.a \
..
$ make
$ make install
% tar xvf MUMPS_5.0.1.tar.gz
% cd MUMPS_5.0.1
$ tar xvf MUMPS_5.1.2.tar.gz
$ cd MUMPS_5.1.2
% cp Make.inc/Makefile.inc.generic Makefile.inc
% vi Makefile.inc
LMETISDIR = $(HOME)/local
IMETIS = -I$(LMETISDIR)/include
LMETIS = -L$(LMETISDIR)/lib -lmetis
ORDERINGSF = -Dmetis -Dpord
CC = gcc -fopenmp
FC = gfortran -fopenmp
FL = gfortran -fopenmp
SCALAP = -L$(HOME)/local/lib -lscalapack
INCPAR = -I/usr/lib/openmpi/include
LIBPAR = $(SCALAP) -L/usr/lib/openmpi -lmpi -lmpi_mpifh
OPTF = -O -DMUMPS_OPENMP
OPTC = -O -I. -DMUMPS_OPENMP
OPTL = -O
$ cp Make.inc/Makefile.inc.generic Makefile.inc
$ vi Makefile.inc
LMETISDIR = $(HOME)/local
IMETIS = -I$(LMETISDIR)/include
LMETIS = -L$(LMETISDIR)/lib -lmetis
ORDERINGSF = -Dmetis -Dpord
CC = mpicc -fopenmp
FC = mpif90 -fopenmp
FL = mpif90 -fopenmp
SCALAP = -L$(HOME)/local/lib -lscalapack
INCPAR = -I/usr/lib/openmpi/include
LIBPAR = $(SCALAP) -L/usr/lib/openmpi -lmpi -lmpi_mpifh
LIBBLAS = -L$(HOME)/local/lib -lopenblas
OPTF = -O -DMUMPS_OPENMP
OPTC = -O -I. -DMUMPS_OPENMP
OPTL = -O
$ make
$ cp lib/*.a $HOME/local/lib
$ cp include/*.h $HOME/local/include
% tar xvf trilinos-12.6.4-Source.tar.gz
% cd trilinos-12.6.4-Source
% mkdir build
% cd build
% cmake \
-DCMAKE_INSTALL_PREFIX=$HOME/local \
-DTrilinos_ENABLE_ML=ON \
-DTrilinos_ENABLE_Zoltan=ON \
-DTrilinos_ENABLE_OpenMP=ON \
-DTrilinos_ENABLE_ALL_OPTIONAL_PACKAGES=OFF \
-DTPL_BLAS_LIBRARIES=$HOME/local/lib/libopenblas.a \
-DTPL_LAPACK_LIBRARIES=$HOME/local/lib/libopenblas.a \
-DTPL_ENABLE_MPI=ON \
..
% make
% make install
$ tar xvf trilinos-12.12.1-Source.tar.gz
$ cd trilinos-12.12.1-Source
$ mkdir build
$ cd build
$ cmake \
-DCMAKE_INSTALL_PREFIX=$HOME/local \
-DTrilinos_ENABLE_ML=ON \
-DTrilinos_ENABLE_Zoltan=ON \
-DTrilinos_ENABLE_OpenMP=ON \
-DTrilinos_ENABLE_ALL_OPTIONAL_PACKAGES=OFF \
-DTPL_BLAS_LIBRARIES=$HOME/local/lib/libopenblas.a \
-DTPL_LAPACK_LIBRARIES=$HOME/local/lib/libopenblas.a \
-DTPL_ENABLE_MPI=ON \
..
$ make
$ make install
##################################################
# #
# Setup Configulation File for FrontISTR #
# #
##################################################
# MPI
MPIDIR = /usr/lib/openmpi
MPIBINDIR = /usr/bin
MPILIBDIR = $(MPIDIR)/lib
MPIINCDIR = $(MPIDIR)/include
MPILIBS = -lmpi -lmpi_cxx -lmpi_mpifh
# for install option only
PREFIX = $(HOME)/FrontISTR
BINDIR = $(PREFIX)/bin
LIBDIR = $(PREFIX)/lib
INCLUDEDIR = $(PREFIX)/include
# Metis
METISDIR = $(HOME)/local
METISLIBDIR = $(METISDIR)/lib
METISINCDIR = $(METISDIR)/include
HECMW_METIS_VER= 5
# ParMetis
PARMETISDIR = $(HOME)/ParMetis-3.1
PARMETISLIBDIR = $(PARMETISDIR)
PARMETISINCDIR = $(PARMETISDIR)/ParMETISLib
# Refiner
REFINERDIR = $(HOME)/Software/REVOCAP_Refiner-1.1.04
REFINERINCDIR = $(REFINERDIR)/Refiner
REFINERLIBDIR = $(REFINERDIR)/lib/x86_64-linux
# Coupler
REVOCAPDIR = $(HOME)/REVOCAP_Coupler
REVOCAPINCDIR = $(REVOCAPDIR)/librcap
REVOCAPLIBDIR = $(REVOCAPDIR)/librcap
# MUMPS
MUMPSDIR = $(HOME)/local
MUMPSINCDIR = $(MUMPSDIR)/include
MUMPSLIBDIR = $(MUMPSDIR)/lib
MUMPSLIBS = -ldmumps -lmumps_common -lpord -L$(HOME)/local/lib -lscalapack
# MKL PARDISO
MKLDIR = $(HOME)/
MKLINCDIR = $(MKLDIR)/include
MKLLIBDIR = $(MKLDIR)/lib
# ML
MLDIR = $(HOME)/local
MLINCDIR = $(MLDIR)/include
MLLIBDIR = $(MLDIR)/lib
# C compiler settings
CC = mpicc -fopenmp
CFLAGS =
LDFLAGS = -lstdc++ -lm
OPTFLAGS = -O3
# C++ compiler settings
CPP = mpicxx -fopenmp
CPPFLAGS =
CPPLDFLAGS =
CPPOPTFLAGS = -O3
# Fortran compiler settings
F90 = mpif90 -fopenmp
F90FLAGS =
F90LDFLAGS = -lstdc++ -L$(HOME)/local -lopenblas
F90OPTFLAGS = -O2
F90FPP = -cpp
F90LINKER = mpif90 -fopenmp
MAKE = make
AR = ar ruv
MV = mv -f
CP = cp -f
RM = rm -f
MKDIR = mkdir -p
./setup.sh -p --with-tools --with-refiner --with-metis --with-mumps --with-lapack --with-ml
$ make
$ make install
% tar xvf FrontISTR_V45.tar.gz
% cd FrontISTR_V45
$ tar xvf FrontISTR_V46.tar.gz
$ cd FrontISTR_4.6
$ export PATH=$HOME/FrontISTR/bin:$PATH
$ which fistr1
~/FrontISTR/bin/fistr1
$ cd $HOME/Software/FrontISTR_V46/tutorial
$ ls
01_elastic_hinge 07_viscoelastic_cylinder 13_dynamic_beam_nonlinear
02_elastic_hinge_parallel 08_creep_cylinder 14_dynamic_plate_contact
03_hyperelastic_cylinder 09_contact_hertz 15_eigen_spring
04_hyperelastic_spring 10_contact_2tubes 16_heat_block
05_plastic_cylinder 11_contact_2beam 17_freq_beam
06_plastic_can 12_dynamic_beam 18_cavity_flow
$ cd 01_elastic_hinge
$ ls
hecmw_ctrl.dat hinge.cnt hinge.msh
$ fistr1
Step control not defined! Using default step=1
fstr_setup: OK
### 3x3 B-SSOR-CG(0) 1
1 1.903375E+00
2 1.974378E+00
3 2.534627E+00
...
...
Start visualize PSF 1 at timestep 1
====================================
TOTAL TIME (sec) : 61.42
pre (sec) : 0.67
solve (sec) : 60.75
====================================
FrontISTR Completed !!
$ ls
0.log FSTR.msg hecmw_ctrl.dat hinge.cnt hinge.res.0.1
FSTR.dbg.0 FSTR.sta hecmw_vis.ini hinge.msh hinge_vis_psf.0001.inp
% vi Makefile.am
PREFIX = @prefix@
BINDIR = @bindir@
LIBDIR = @libdir@
INCLUDEDIR = @includedir@
MAKE = @make@
AR = @ar@
CP = @cp@
RM = @rm@
MV = @mv@
RANLIB = @ranlib@
MKDIR = @mkdir@
all:
@cd hecmw1 && $(MAKE)
@cd fistr1 && $(MAKE)
# @cd hecmw2 && $(MAKE)
# @cd fistr2 && $(MAKE)
@cd fistr && $(MAKE)
clean:
@cd hecmw1 && $(MAKE) clean
@cd fistr1 && $(MAKE) clean
# @cd hecmw2 && $(MAKE) clean
# @cd fistr2 && $(MAKE) clean
@cd fistr && $(MAKE) clean
distclean:
@cd hecmw1 && $(MAKE) distclean
@cd fistr1 && $(MAKE) distclean
# @cd hecmw2 && $(MAKE) distclean
# @cd fistr2 && $(MAKE) distclean
@cd fistr && $(MAKE) distclean
- $(RM) ./bin/*
install:
if [ ! -d $(PREFIX) ]; then \
$(MKDIR) $(PREFIX); \
fi
if [ ! -d $(BINDIR) ]; then \
$(MKDIR) $(BINDIR); \
fi
@cd hecmw1 && $(MAKE) install
@cd fistr1 && $(MAKE) install
# @cd hecmw2 && $(MAKE) install
# @cd fistr2 && $(MAKE) install
@cd fistr && $(MAKE) install
$ vi Makefile.am
PREFIX = @prefix@
BINDIR = @bindir@
LIBDIR = @libdir@
INCLUDEDIR = @includedir@
MAKE = @make@
AR = @ar@
CP = @cp@
RM = @rm@
MV = @mv@
RANLIB = @ranlib@
MKDIR = @mkdir@
all:
@cd hecmw1 && $(MAKE)
@cd fistr1 && $(MAKE)
# @cd hecmw2 && $(MAKE)
# @cd fistr2 && $(MAKE)
@cd fistr && $(MAKE)
clean:
@cd hecmw1 && $(MAKE) clean
@cd fistr1 && $(MAKE) clean
# @cd hecmw2 && $(MAKE) clean
# @cd fistr2 && $(MAKE) clean
@cd fistr && $(MAKE) clean
distclean:
@cd hecmw1 && $(MAKE) distclean
@cd fistr1 && $(MAKE) distclean
# @cd hecmw2 && $(MAKE) distclean
# @cd fistr2 && $(MAKE) distclean
@cd fistr && $(MAKE) distclean
- $(RM) ./bin/*
install:
if [ ! -d $(PREFIX) ]; then \
$(MKDIR) $(PREFIX); \
fi
if [ ! -d $(BINDIR) ]; then \
$(MKDIR) $(BINDIR); \
fi
@cd hecmw1 && $(MAKE) install
@cd fistr1 && $(MAKE) install
# @cd hecmw2 && $(MAKE) install
# @cd fistr2 && $(MAKE) install
@cd fistr && $(MAKE) install
% cp Makefile.conf.org Makefile.conf
% vi Makefile.conf
$ cp Makefile.conf.org Makefile.conf
$ vi Makefile.conf
##################################################
# #
# Setup Configulation File for FrontISTR #
# #
##################################################
# MPI
MPIDIR = /usr/lib/openmpi
MPIBINDIR = /usr/bin
MPILIBDIR = $(MPIDIR)/lib
MPIINCDIR = $(MPIDIR)/include
MPILIBS = -lmpi -lmpi_mpifh
# for install option only
PREFIX = $(HOME)/FrontISTR
BINDIR = $(PREFIX)/bin
LIBDIR = $(PREFIX)/lib
INCLUDEDIR = $(PREFIX)/include
# Metis
METISDIR = /usr/lib/x86_64-linux-gnu
METISLIBDIR = $(METISDIR)
METISINCDIR = /usr/include
HECMW_METIS_VER= 5
# ParMetis
PARMETISDIR = $(HOME)/ParMetis-3.1
PARMETISLIBDIR = $(PARMETISDIR)
PARMETISINCDIR = $(PARMETISDIR)/ParMETISLib
# Refiner
REFINERDIR = $(HOME)/Software/REVOCAP_Refiner-1.1.04
REFINERINCDIR = $(REFINERDIR)/Refiner
REFINERLIBDIR = $(REFINERDIR)/lib/x86_64-linux
# Coupler
REVOCAPDIR = $(HOME)/REVOCAP_Coupler
REVOCAPINCDIR = $(REVOCAPDIR)/librcap
REVOCAPLIBDIR = $(REVOCAPDIR)/librcap
# MUMPS
MUMPSDIR = /usr
MUMPSINCDIR = $(MUMPSDIR)/include
MUMPSLIBDIR = $(MUMPSDIR)/lib
# MKL PARDISO
MKLDIR = $(HOME)/
MKLINCDIR = $(MKLDIR)/include
MKLLIBDIR = $(MKLDIR)/lib
# ML
MLDIR = /usr
MLINCDIR = $(MLDIR)/include/trilinos
MLLIBDIR = $(MLDIR)/lib/x86_64-linux-gnu
MLLIBS = -ltrilinos_ml -ltrilinos_zoltan
# C compiler settings
CC = mpicc -fopenmp
CFLAGS =
LDFLAGS = -lstdc++ -lm
OPTFLAGS = -O3
# C++ compiler settings
CPP = mpic++ -fopenmp
CPPFLAGS =
CPPLDFLAGS =
CPPOPTFLAGS = -O3
# Fortran compiler settings
F90 = mpif90 -fopenmp
F90FLAGS =
F90LDFLAGS = -lstdc++ -lopenblas
F90OPTFLAGS = -O2
F90FPP = -cpp
F90LINKER = mpif90 -fopenmp
MAKE = make
AR = ar ruv
MV = mv -f
CP = cp -f
RM = rm -f
MKDIR = mkdir -p
% ./setup.sh -p --with-tools --with-refiner --with-metis --with-mumps --with-lapack --with-ml
$ ./setup.sh -p --with-tools --with-refiner --with-metis --with-mumps --with-lapack --with-ml
% make
% make install
$ make
$ make install
% ls $HOME/FrontISTR/bin
fistr1 hec2rcap hecmw_part1 hecmw_vis1 neu2fstr rconv rmerge
$ ls $HOME/FrontISTR/bin
fistr1 hec2rcap hecmw_part1 hecmw_vis1 neu2fstr rconv rmerge
% tar xvf OpenBLAS-0.2.18.tar.gz
% cd OpenBLAS-0.2.18
% make BINARY=64 NO_SHARED=1 USE_OPENMP=1
% make PREFIX=$HOME/local install
$ sudo apt install build-essential gfortran libopenmpi-dev openmpi-bin
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment