AgnosticApp - Input Arguments#
Input parameters (what each one means)
This section is the “user manual” for every input you see in the portal.
1. File input#
Input Directory (required)#
What it is: A single directory staged by Tapis into the job.
What should be inside:
your main script (Tcl or Python)
any supporting files your script needs (models, data, configs)
optional helper files:
modules.txt (for MODULE_LOADS_FILE)
requirements.txt (for PIP_INSTALLS_FILE)
prehook.sh / posthook.sh (for hook variables)
zipped bundles referenced by UNZIP_FILES_LIST
Runtime behavior: The wrapper cds into this directory before running the main command.
Implication: relative paths in your script should assume this directory is the working directory.
2. Required app arguments#
Main Program (required)#
What it is: The executable to run (binary name).
Common values:
OpenSees (serial Tcl)
OpenSeesMP / OpenSeesSP (MPI Tcl)
python3 (Python workflows, including OpenSeesPy)
Where it must come from:
available via modules (recommended), or
present in the working directory / PATH
Wrapper notes:
If Main Program is python or python3, the wrapper normalizes to python3.
Main Script (required)#
What it is: The filename of the input script passed to the executable.
Rules:
filename only (no path)
must exist inside the Input Directory
Examples:
model.tcl
run_analysis.py
Ex1a.Canti2D.Push.argv.tacc.py
UseMPI (required)#
Controls whether the wrapper launches the executable through ibrun.
UseMPI value |
What runs |
|---|---|
False |
|
True |
ibrun |
Use True when:
OpenSeesMP / OpenSeesSP
Python + mpi4py
Use False when:
serial OpenSees (Tcl)
serial Python / OpenSeesPy
Python using threading / concurrent.futures within a node
Note: the wrapper treats many “true-like” values as True (True, 1, Yes, case-insensitive).
CommandLine Arguments (optional)#
Free-form arguments appended after the Main Script.
Example:
--NodalMass 4.19 --outDir outCase1
Final command structure:
[ibrun] <MainProgram> <MainScript> <Arguments...>
3. Scheduler inputs#
TACC Scheduler Profile (defaulted)#
The app uses the tacc-no-modules profile by default so no modules are implicitly loaded. This is intentional: module state is controlled explicitly by the wrapper to improve reproducibility.
TACC Reservation (optional)#
Provide a reservation string if you have one.
4. Environment variables (advanced configuration)#
These values are presented as app inputs in the portal. Most are optional. If you never set them, the wrapper runs with conservative defaults.
4.1 OpenSeesPy injection#
GET_TACC_OPENSEESPY (default: True)#
If True-like, the wrapper attempts to use the TACC-compiled OpenSeesPy by:
loading python/3.12.11, hdf5/1.14.4, opensees
copying ${TACC_OPENSEES_BIN}/OpenSeesPy.so into the working directory as ./opensees.so
Use this when:
you want reliable OpenSeesPy on Stampede3 (recommended)
In your Python script:
import opensees as ops
Notes / failure modes:
if TACC_OPENSEES_BIN is unset or OpenSeesPy.so is missing, the wrapper logs a warning and skips the copy.
4.2 Module loading (two mechanisms)#
The two mechanisms are complementary – you can use both.
A. MODULE_LOADS_FILE (optional)#
A filename (in the Input Directory) containing module commands, one per line.
Supported line formats:
purge
use
load
?module (optional try-load)
bare module names
This is best for version-controlled, documented module stacks. It also makes submittal via the web-portal interface easier.
B. MODULE_LOADS_LIST (optional)#
Comma-separated list of modules to load, e.g.:
python/3.12.11,opensees,hdf5/1.14.4,pylauncher
Tip: use MODULE_LOADS_FILE when the setup is more than a few modules or needs comments.
4.3 Python package installs (two mechanisms)#
The two mechanisms are complementary – you can use both.
A. PIP_INSTALLS_FILE (optional)#
A requirements-style file (in the Input Directory), e.g. requirements.txt.
Wrapper behavior:
runs pip3 install -r
fails the job if pip fails (with a clear error)
It makes submittal via the web-portal interface easier.
B. PIP_INSTALLS_LIST (optional)#
Comma-separated list of packages, e.g.:
mpi4py,pandas,numpy,matplotlib
Wrapper behavior:
installs each package with pip3 install
fails the job if any install fails
4.4 Input preparation#
A. UNZIP_FILES_LIST (optional)#
Comma-separated list of ZIP files in the Input Directory to expand before execution. Entries may omit the .zip suffix.
Use this when:
you staged one bundled zip instead of many small files
B. PATH_COPY_IN_LIST (optional)#
Comma-separated list of absolute paths (within the execution system) to copy into the working directory before execution.
Example:
$WORK/FileSet2,$SCRATCH/FileSet3/thisFile.at2
Use this when:
you need large/shared datasets without duplicating them into the Input Directory
you want a specific runtime layout inside the working directory
C. DELETE_COPIED_IN_ON_EXIT (default: 0)#
If set to 1 / True-like, the wrapper deletes only the copied-in items listed in its manifest on exit.
Safety rules:
refuses absolute paths
refuses .. traversal
deletes only what landed in the working directory
Use this when:
copy-in files are “temporary conveniences” and should not be archived
4.5 Pre/Post hooks#
A. PRE_JOB_SCRIPT (optional)#
Script to run after environment setup but before the main executable.
if relative, interpreted as ./script inside the Input Directory
if executable, run directly; otherwise run via bash
B. POST_JOB_SCRIPT (optional)#
Script to run after the main executable (same resolution rules as pre-hook).
Default policy: hook failures are logged as warnings and the job continues (you can change this policy in the wrapper if desired).
4.6 Output management#
A. ZIP_OUTPUT_SWITCH (default: False)#
If True-like:
zips the entire Input Directory after execution into inputDirectory.zip
removes the original directory
Use this when:
output is large and contains many small files
you want a single artifact to move / download
B. PATH_MOVE_OUTPUT (optional)#
If set, the wrapper moves the main output artifact into:
<PATH_MOVE_OUTPUT>/_<JobUUID>/
and copies top-level logs into that same folder.
Recommended:
move to $WORK/… for interactive inspection in JupyterHub
move to $SCRATCH/… for chained HPC workflows
5. Typical patterns#
Serial OpenSees (Tcl)#
Main Program: OpenSees
UseMPI: False
OpenSeesMP / OpenSeesSP (MPI)#
Main Program: OpenSeesMP (or OpenSeesSP)
UseMPI: True
OpenSeesPy (serial)#
Main Program: python3
UseMPI: False
GET_TACC_OPENSEESPY=True
Python + mpi4py#
Main Program: python3
UseMPI: True
PIP_INSTALLS_LIST=mpi4py (or requirements file)