One calculation, every dapi step. A 5%-damped oscillator is shaken at its natural frequency, and a single Stampede3 job integrates the motion and reports the dynamic amplification, which lands at the top of the resonance curve near 1/(2*damping) = 10. The point of the pair is the dapi lifecycle itself: authenticate, point Tapis at a folder, generate the job request, submit and monitor, and read the result back from the archive, each as one visible call.
The five steps¶
Authenticate.
DSClient()holds the connection every later call uses.Point Tapis at the folder.
ds.files.to_urion JupyterHub;prepare_inputsuploads from anywhere else.Generate.
ds.jobs.generatebuilds the full request from the app definition; the notebook prints the dict Tapis receives.Submit and monitor.
submit,monitor,interpret_status, and the runtime summary showing that a ten-second calculation spends its wall clock on staging and queueing.Read the archive.
archive_uri,ds.files.list, andget_output_contentbringresult.jsonback, self-checked against the physics.
The same oscillator continues into the PyLauncher sweep, which computes the whole resonance curve inside one job.