Try on DesignSafe

Run OpenSeesMP App#

Submit Jobs to OpenSeesMP App

by Silvia Mazzoni, DesignSafe, 2025

In this Notebook we are going to run a set of OpenSeesMP jobs and a set of OpenSees-Express Jobs. We are also submitting the jobs from different input-file storage systems – MyData, CommunityData, Work, MyProjects

This notebook serves as a template for submitting the following DesignSafe OpenSees Apps:

  • openSees-mp-s3

  • opensees-sp-s3

I have combined all the commands into a common-command cell and one cell per storage system.

We are using previously-defined python function to streamline the process.

Connect to Tapis#

t=OpsUtils.connect_tapis()
 -- Checking Tapis token --
 Token loaded from file. Token is still valid!
 Token expires at: 2025-09-10T07:14:42+00:00
 Token expires in: 2:09:45.388630
-- LOG IN SUCCESSFUL! --

OpenSeesMP#

Common Input#

# initalize
tapisInputAll = {}
tapisInputAll["name"] = 'OpenSeesMP'

tapisInputAll["appId"] = "opensees-mp-s3" # options: "opensees-express", "opensees-mp-s3", "opensees-2p-s3"
tapisInputAll["appVersion"] = "latest" # always use latest in this Notebook Template

tapisInputAll["maxMinutes"] = 6

# OpenSees-mp-s3 and OpenSees-xp-s3 only:
tapisInputAll["execSystemId"] = "stampede3" # the app runs on stampede only
tapisInputAll["execSystemLogicalQueue"] = "skx-dev" # "skx", "skx-dev"
tapisInputAll["nodeCount"] = 1 # limits set by which compute nodes you use
tapisInputAll["coresPerNode"] = 48 # limits set by which compute nodes you use
tapisInputAll["allocation"] = "DS-HPC1"

tapisInputAll['archive_system']='MyData' # Options: MyData or Work

MyData#

This job is in the MyData Storage System

# initalize
tapisInput = tapisInputAll.copy()

tapisInput['storage_system'] = 'MyData'  # ########################## unique
tapisInput['input_folder'] = '_ToCommunityData/OpenSees/TrainingMaterial/training-OpenSees-on-DesignSafe/Examples_OpenSees/BasicExamples'  # ########################## unique
tapisInput['Main Script'] = 'Ex1a_verymany.Canti2D.Push.mp.tcl' # ########################## unique

tapisInput["name"] = tapisInput["name"] + '_' + tapisInput['storage_system']
# -----------------------------------------------------
jobReturns = OpsUtils.run_tapis_job(t,tapisInput,get_job_metadata=True,get_job_history=True,get_job_filedata=True,askConfirmJob = False,askConfirmMonitorRT = False)
# -----------------------------------------------------

CommunityData#

This job is in the CommunityData Storage System

# initalize
tapisInput = tapisInputAll.copy()

tapisInput['storage_system'] = 'CommunityData' # ########################## unique
tapisInput['input_folder'] = 'OpenSees/TrainingMaterial/training-OpenSees-on-DesignSafe/Examples_OpenSees/BasicExamples'  # ########################## unique
tapisInput['Main Script'] = 'Ex1a_verymany.Canti2D.Push.mp.tcl' # ########################## unique

tapisInput["name"] = tapisInput["name"] + '_' + tapisInput['storage_system']
# -----------------------------------------------------
jobReturns = OpsUtils.run_tapis_job(t,tapisInput,get_job_metadata=True,get_job_history=True,get_job_filedata=True,askConfirmJob = False,askConfirmMonitorRT = False)
# -----------------------------------------------------

Work#

This job is in the Work Storage System

# initalize
tapisInput = tapisInputAll.copy()

tapisInput['storage_system'] = 'Work/stampede3'  # ########################## unique
tapisInput['input_folder'] = 'BasicExamples'  # ########################## unique
tapisInput['Main Script'] = 'Ex1a_verymany.Canti2D.Push.mp.tcl' # ########################## unique

tapisInput["name"] = tapisInput["name"] + '_' + tapisInput['storage_system']
# -----------------------------------------------------
jobReturns = OpsUtils.run_tapis_job(t,tapisInput,get_job_metadata=True,get_job_history=True,get_job_filedata=True,askConfirmJob = False,askConfirmMonitorRT = False)
# -----------------------------------------------------

MyProjects#

This job is in the MyProjects Storage System

# initalize
tapisInput = tapisInputAll.copy()

tapisInput['storage_system'] = 'MyProjects' # ########################## unique
# The following are project-dependent
#  This value needs to be updated for each project -- got this from the web-portal app
if tapisInput['storage_system']=='MyProjects': # ########################## unique
    tapisInput['storage_system_baseURL'] = 'tapis://project-7997906542076432871-242ac11c-0001-012' # ########################## unique

tapisInput['input_folder'] = 'OpenSees/TrainingMaterial/training-OpenSees-on-DesignSafe/Examples_OpenSees/BasicExamples'  # ########################## unique
tapisInput['Main Script'] = 'Ex1a_verymany.Canti2D.Push.mp.tcl'

tapisInput["name"] = tapisInput["name"] + '_' + tapisInput['storage_system']
# -----------------------------------------------------
jobReturns = OpsUtils.run_tapis_job(t,tapisInput,get_job_metadata=True,get_job_history=True,get_job_filedata=True,askConfirmJob = False,askConfirmMonitorRT = False)
# -----------------------------------------------------