Methods:

  1. follow and edit easybuild recipe used/provided by NeSI
  2. Clone git repo and build it yourself


Method #1:

  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
  2. 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 
    -------------------------------------------------------------------
    
    
    
  3. 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:

  1. clone the repository https://github.com/OpenSees/OpenSees
  2. 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)
  3. edit the Makefile.def to link to correct Tcl lib
  4.  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:

  1. SuperLU ( SuperLU_DIST will be using the one come with opensees)
  2. METIS
  3. ARPACK
  4. MUMPS
  5. 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


  • No labels