Methods:
- follow and edit easybuild recipe used/provided by NeSI
- Clone git repo and build it yourself
Method #1:
find any version of opensees module that is available to load in module
module avail OpenSees ---------------------------------------------------------------------------------- /opt/nesi/XC50_sles12_skl/modules/all ----------------------------------------------------------------------------------- OpenSees/3.0.0-CrayGNU-18.08 OpenSees/3.0.2-CrayGNU-18.08 OpenSees/3.1.0-CrayGNU-18.08
run module show to allocate the path of the module
module show OpenSees/3.1.0-CrayGNU-18.08 ------------------------------------------------------------------- /opt/nesi/XC50_sles12_skl/modules/all/OpenSees/3.1.0-CrayGNU-18.08: module-whatis Description: OpenSees is a software framework for developing applications to simulate the performance of structural and geotechnical systems subjected to earthquakes. module-whatis Homepage: http://opensees.berkeley.edu conflict OpenSees module load CrayGNU/18.08 module load Tcl/8.6.7-CrayGNU-18.08 module load cray-tpsl module load METIS/.4.0.3-CrayGNU-18.08 module load SuperLU/.5.2.1-CrayGNU-18.08 module load arpack-ng/.3.6.3-CrayGNU-18.08 module load MUMPS/.4.10.0-CrayGNU-18.08-metis-4.0.3 prepend-path PATH /opt/nesi/XC50_sles12_skl/OpenSees/3.1.0-CrayGNU-18.08/bin setenv EBROOTOPENSEES /opt/nesi/XC50_sles12_skl/OpenSees/3.1.0-CrayGNU-18.08 setenv EBVERSIONOPENSEES 3.1.0 setenv EBDEVELOPENSEES /opt/nesi/XC50_sles12_skl/OpenSees/3.1.0-CrayGNU-18.08/easybuild/OpenSees-3.1.0-CrayGNU-18.08-easybuild-devel -------------------------------------------------------------------
- edit the easybuild recipe to your liking (version, and build options)
an example of successfully built easybuild-config:OpenSees-3.2.0-CrayGNU-18.08.eb
Method #2:
- clone the repository https://github.com/OpenSees/OpenSees
If TCL is available in module, use ldd to find the library to link
$which tclsh /usr/bin/tclsh $ ldd /usr/bin/tclsh libtcl8.6.so => /usr/lib64/libtcl8.6.so (0x00007f757cb51000)
- edit the Makefile.def to link to correct Tcl lib
- If you are building MP/SP version, you'll need to build SuperLU and etc.
example of Makefile.def : Makefile.def
Building OpenSeesMP:
critical dependencies:
- SuperLU ( SuperLU_DIST will be using the one come with opensees)
- METIS
- ARPACK
- MUMPS
- Tcl
All above modules must be built before attemping to build OpenSeesMP
If vendor provided TPSL ( third-party scientific libraries ), try use it first instead of rebuilding, may save you some time.
example of easybuild config:
easyblock = 'MakeCp' name = 'OpenSees' version = '3.2.0' metis_version = '4.0.3' #'5.1.0' homepage = 'http://opensees.berkeley.edu' description = "OpenSees is a software framework for developing applications to simulate the performance of structural and geotechnical systems subjected to earthquakes." toolchain = {'name': 'CrayGNU', 'version': '18.08'} toolchainopts = {'pic': True, 'usempi': True} source_urls = ['https://github.com/OpenSees/OpenSees/archive'] sources = ['v%(version)s.tar.gz'] dependencies = [ ('cray-tpsl', EXTERNAL_MODULE), ('Tcl', '8.6.7'), ('METIS', metis_version), ('SuperLU', '5.2.1'), ('arpack-ng', '3.6.3'), ('MUMPS', '4.10.0', '-metis-%s' % metis_version), #'5.1.2', '-metis-%s' % metis_version), ] hiddendependencies = [ ('cray-tpsl', EXTERNAL_MODULE), ('METIS', metis_version), ('SuperLU', '5.2.1'), ('arpack-ng', '3.6.3'), ('MUMPS', '4.10.0', '-metis-%s' % metis_version), #'5.1.2', '-metis-%s' % metis_version), ] MAKEFILE = 'Makefile.def.MAUI' patches = [ (MAKEFILE, 'MAKES'), ] prebuildopts = 'rm -f Makefile.def && cp "MAKES/%s" ./Makefile.def && mkdir -p lib && mkdir -p bin && ' % MAKEFILE # With this OpenSees version the 'PARALLEL_INTERPRETERS' mode (ie: OpenSeesMP) apparently still requires # the mumps.o hack from OpenSees_EB_Makefile_v4.def, but the more useful OpenSeesSP does not. _MODES = ['PARALLEL_INTERPRETERS', 'PARALLEL', 'SEQUENTIAL'] _expected_executables = ['OpenSees' + {'SEQUENTIAL':'', 'PARALLEL_INTERPRETERS':'MP', 'PARALLEL':'SP'}[m] for m in _MODES] buildopts = ['all HOME=`pwd` PROGRAMMING_MODE='+m for m in _MODES] files_to_copy = [(["bin/*"], "bin"), "Makefile.def"] # get repeatedly copied if len(MODES)>1, so no dirs sanity_check_paths = { 'files': ['bin/'+f for f in _expected_executables], 'dirs': ["."], } parallel = 8 moduleclass = 'cae'
makefile used for OpenSeesMP on maui: Makefile.def.MAUI
*The OpenSees_EB_Makefile_v4.def
was not used when comiling one Maui, but uploaded here as a reference just in case. OpenSees_EB_Makefile_v4.def