Skip to main content
`Ctrl`+`K`

# Tutorial Introduction

Warning

Windows users: the WAVES builders require PowerShell 7 (`pwsh`). Earlier versions of PowerShell do not support key features such as command chaining (`&&`) and output redirection (`>`). You can check your version of Powershell with

    PS > $PSVersionTable

and install the latest version with the Microsoft instructions here: https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-windows?view=powershell-7.5

## Start Options

The Quickstart: Abaqus introduces the core concepts motivating WAVES without diving into the details of implementation.

For a detailed discussion of recommended best practices for SCons and MODSIM-TEMPLATE project setup, meta data, and features, start with Tutorial 00: SConstruct. Most of the `SContruct` file introduced in Tutorial 00: SConstruct is boilerplate code, so users may want to skip straight to the workflow task definitions in Tutorial 01: Geometry.

An optional `waves fetch` command is included in every tutorial to help users start in a focus topic without completing previous tutorials. The WAVES Command-Line Utility fetch subcommand may also be used to create a local copy of any tutorial file.

Users who are are ready to create their own modsim repository can use the WAVES Command-Line Utility fetch subcommand to access the project ModSim Templates. The template files include project documentation built with SCons and Sphinx and two simulation configurations for the rectangle project developed in the tutorials: nominal and mesh convergence. The fetch subcommand may be used to recursively fetch directories or to fetch individual files from both the ModSim Templates and the tutorials.

## Prerequisites

1. Computational Practices - Build System

2. Software Carpentry: SCons Novice - https://carpentries-incubator.github.io/scons-novice/ [1, 9]

3. Software Carpentry: Python - https://swcarpentry.github.io/python-novice-inflammation/ [1, 8]

## Quickstart

Time to complete (HH:MM) | Tutorial | Summary
00:30 | Quickstart: Abaqus | Minimally functional simulation build system workflow using SCons and WAVES
00:30 | Quickstart: Gmsh+CalculiX | Fully open-source, conda-forge-based quickstart using Gmsh and CalculiX in place of Abaqus

## Core Lessons

Time to complete (HH:MM) | Tutorial | Summary
01:00 | Tutorial 00: SConstruct | SCons project configuration and meta data
01:00 | Tutorial 01: Geometry | Hierarchical SCons builds, task creation, Abaqus journal files as small utility software
00:45 | Tutorial 02: Partition and Mesh | Dependent tasks and execution order
00:20 | Tutorial 03: SolverPrep | Copying files into the build directory
00:20 | Tutorial 04: Simulation | Abaqus solver execution
00:20 | Tutorial 05: Parameter Substitution | Parameterized builds and substituting parameter values into copied files
00:20 | Tutorial 06: Include Files | Including files that can be reused in more than one workflow
00:30 | Tutorial 07: Cartesian Product | Parameter study introduction using a cartesian product
00:20 | Tutorial 08: Data Extraction | Abaqus data extraction
00:30 | Tutorial 09: Post-Processing | Example solution to parameter study results concatenation with the parameter study definition
00:20 | Tutorial 10: Unit Testing | Unit testing
00:10 | Tutorial 11: Regression Testing | Alias for partial simulation verification and regression testing
00:10 | Tutorial 12: Data Archival | Archive simulation files for reproducibility and reporting

## Supplemental Lessons

Time to complete (HH:MM) | Tutorial | Summary
00:10 | SCons Quickstart | Minimally functional simulation build system workflow using pure SCons
00:10 | SCons Multi-Action Tasks | Execute multiple actions on the same target file
00:20 | Tutorial: Input Verification | Add input verification to workflow parameters
00:20 | Tutorial: Cubit+Abaqus | Geometry, partition, and mesh examples with Cubit replicating Tutorial 04: Simulation
00:20 | Tutorial: Cubit+Sierra | Side-by-side Abaqus and Sierra workflows complementing Tutorial: Cubit+Abaqus
00:30 | Tutorial: Cubit+Fierro | Fierro builders and workflow complementing Tutorial: Cubit+Abaqus
00:10 | Tutorial: Escape Sequences | Changing task actions without re-building the task
00:30 | Tutorial 07: Latin Hypercube | Parameter study introduction using a latin hypercube
00:30 | Tutorial 07: Sobol Sequence | Parameter study introduction using a Sobol sequence
00:10 | Tutorial 07: One-at-a-Time | Parameter study introduction using one-at-a-time set generation
00:30 | Tutorial: Mesh Convergence | Mesh convergence parameter study that uses common Geometry and Partition tasks.
00:10 | Tutorial: Part Image | Generate Abaqus model images for documentation
00:30 | Tutorial: Sensitivity Study | Run a sensitivity study with numpy and SALib
00:30 | Tutorial: Abaqus CAE | Integrate Abaqus CAE with build system workflows

## Work-in-progress Lessons

Warning

The lessons in this section represent WAVES features in the “alpha” development stage or draft solutions to common problems that require additional user testing to better define the user story, needs, and desired behavior.

Time to complete (HH:MM) | Tutorial | Summary
01:00 | Tutorial: Writing Builders | Writing custom builders and design considerations
00:30 | Tutorial: Simulation via SSH | Run the simulation on a remote server via SSH
00:30 | Tutorial: Simulation via SLURM | Run the simulation with the SLURM workload manager
00:30 | Automatically Extending a Parameter Study | Automatically extending and re-executing a parameter study
00:30 | Tutorial: Task Definition Reuse | Reuse task definitions
00:10 | Tutorial: setuptools_scm | Dynamic version number from git tags
00:10 | Tutorial: Quinoa | Quinoa builders