Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Agnostic Tapis App for General Execution, including Python, OpenSees, OpenSeesMP, OpenSeesSP, and OpenSeesPy

PlatformDesignSafe / TACC Stampede3
RuntimeZIP (HPC Batch)
Execution SystemStampede3
Queue (default)skx-dev

1. Purpose and Design Philosophy

designsafe-agnostic-app is a general-purpose, HPC-oriented Tapis application designed to support many computational workflows without baking assumptions into the app itself.

Instead of creating separate apps for

this app acts as a configurable execution driver.

All behavior is controlled by

This makes the app

Tapis orchestrates the job. SLURM executes it. The wrapper enforces semantics and safety.


2. High-Level Execution Model

At runtime, the following happens.

  1. Tapis stages inputDirectory

  2. A SLURM batch job is submitted

  3. tapisjob_app.sh executes on the first node

  4. The wrapper

    • prepares the environment

    • stages inputs

    • selects MPI vs non-MPI execution

    • runs the main executable

    • manages outputs

    • produces structured logs

The minimum mental model for the app is

[UseMPI?] BINARYNAME INPUTSCRIPT ARGUMENTS

Detailed Execution Mode
  1. Tapis stages your Input Directory to the job working directory.

  2. SLURM starts the batch job on Stampede3.

  3. tapisjob_app.sh runs on the first allocated node and

    • sets up summary and full environment logs

    • cds into the Input Directory

    • prepares inputs (optional copy-in, optional unzip)

    • loads modules (optional file + optional list)

    • normalizes Python (python to python3)

    • installs Python packages (optional file + optional list)

    • optionally injects TACC-compiled OpenSeesPy (opensees.so)

    • optionally runs pre/post hooks

    • chooses MPI launcher (ibrun) or direct run

    • runs your executable + script + args

    • optionally zips output and/or moves results inside the exec system

    • records timers and exits with clear error handling

3. Logs you should look at first

Every job produces

The summary log also records


4. Overview

designsafe-agnostic-app provides a single, well-instrumented execution interface for

It is designed to be debuggable, reproducible, and extensible, and to work as a template for future apps.

AgnosticApp - Quick Reference

This table defines all user-facing inputs and environment variables supported by the app. Details and relationships are explained in later sections.

Core Execution Inputs

InputRequiredDescription
inputDirectoryyesDirectory containing the main script and all runtime files
BINARYNAMEyesExecutable to run (OpenSees, OpenSeesMP, OpenSeesSP, python3, etc.)
INPUTSCRIPTyesMain script filename inside inputDirectory
UseMPIyesWhether to launch with ibrun (MPI)

Command-Line Arguments

InputRequiredDescription
ARGUMENTSnoFree-form command-line arguments appended after the script

Module and Environment Configuration

InputRequiredDescription
MODULE_LOADS_LISTnoComma-separated list of modules to load
MODULE_LOADS_FILEnoFile listing modules to load

Python Package Management

InputRequiredDescription
PIP_INSTALLS_LISTnoComma-separated list of pip packages to install
PIP_INSTALLS_FILEnorequirements.txt-style file

OpenSees / OpenSeesPy Support

InputRequiredDescription
GET_TACC_OPENSEESPYnoCopy TACC-compiled OpenSeesPy.so into run directory

Input Staging and Preparation

InputRequiredDescription
UNZIP_FILES_LISTnoZIP files in inputDirectory to expand
PATH_COPY_IN_LISTnoAbsolute paths (WORK/SCRATCH/HOME) to copy in
DELETE_COPIED_IN_ON_EXITnoRemove copied-in paths after job completes

Pre/Post Execution Hooks

InputRequiredDescription
PRE_JOB_SCRIPTnoScript to run before main executable
POST_JOB_SCRIPTnoScript to run after main executable

Output Management

InputRequiredDescription
ZIP_OUTPUT_SWITCHnoRepack output directory into a ZIP
PATH_MOVE_OUTPUTnoMove final output to WORK/SCRATCH/HOME

For a detailed description of every input parameter, see AgnosticApp Input Arguments.