Difference between revisions of "CyberShake Code Base"

From SCECpedia
Jump to navigationJump to search
Line 34: Line 34:
  
 
<b>Purpose:</b>To determine the simulation volume for a particular CyberShake site.
 
<b>Purpose:</b>To determine the simulation volume for a particular CyberShake site.
 +
 
<b>Detailed description:</b>PreCVM queries the CyberShake database to determine all of the ruptures which fall within a given cutoff for a certain site.  From that information, padding is added around the edges to construct the CyberShake simulation volume for this site.  Additional padding so the dimensions are multiples of 10, 20, or 40 might also be applied, depending on the input parameters.  Using this volume, both the X/Y offset of each grid point, and then the latitude and longitude using a great circle projection, are determined and written to output files.
 
<b>Detailed description:</b>PreCVM queries the CyberShake database to determine all of the ruptures which fall within a given cutoff for a certain site.  From that information, padding is added around the edges to construct the CyberShake simulation volume for this site.  Additional padding so the dimensions are multiples of 10, 20, or 40 might also be applied, depending on the input parameters.  Using this volume, both the X/Y offset of each grid point, and then the latitude and longitude using a great circle projection, are determined and written to output files.
 +
 
<b>Source code location:</b> http://source.usc.edu/svn/cybershake/import/trunk/PreCVM/
 
<b>Source code location:</b> http://source.usc.edu/svn/cybershake/import/trunk/PreCVM/
 +
 
<b>Author:</b> Rob Graves, wrapped by Scott Callaghan
 
<b>Author:</b> Rob Graves, wrapped by Scott Callaghan
 +
 
<b>Dependencies:</b>Getpar
 
<b>Dependencies:</b>Getpar
 +
 
<b>Executable chain:</b>
 
<b>Executable chain:</b>
 
   pre_cvm.py
 
   pre_cvm.py
Line 44: Line 49:
 
     GenGrid_py/gen_grid.py
 
     GenGrid_py/gen_grid.py
 
       GenGrid_py/bin/gen_model_cords
 
       GenGrid_py/bin/gen_model_cords
 +
 
<b>Compile instructions:</b>Run 'make' in the Modelbox/src and the Getpar_py/src directories.
 
<b>Compile instructions:</b>Run 'make' in the Modelbox/src and the Getpar_py/src directories.
 +
 
<b>Usage:</b>
 
<b>Usage:</b>
Usage: pre_cvm.py [options]
+
<pre>Usage: pre_cvm.py [options]
<pre>Options:
+
  Options:
 
   -h, --help            show this help message and exit
 
   -h, --help            show this help message and exit
 
   --site=SITE          Site name
 
   --site=SITE          Site name
Line 68: Line 75:
  
 
<b>Typical run configuration:</b>Serial; requires 6 minutes for 100m spacing, 10 billion point volume
 
<b>Typical run configuration:</b>Serial; requires 6 minutes for 100m spacing, 10 billion point volume
 +
 
<b>Input files:</b>None; inputs are retrieved from the database
 
<b>Input files:</b>None; inputs are retrieved from the database
 +
 
<b>Output files:</b>modelbox, gridfile, gridout, params, coord, bounds
 
<b>Output files:</b>modelbox, gridfile, gridout, params, coord, bounds

Revision as of 22:12, 18 October 2017

This page details all the pieces of code which make up the CyberShake code base, as of November 2017. Note that this does not include the workflow middleware, or the workflow generators; that code is detailed at CyberShake Workflow Framework.

Conceptually, we can divide up the CyberShake codes into three categories:

  1. Strain Green Tensor-related codes: These codes produce the input files needed to generate SGTs, actually calculate the SGTs, and do some reformatting and sanity checks on the results.
  2. Synthesis-related codes: These codes take the SGTs and perform seismogram synthesis and intensity measure calculations.
  3. Data product codes: These codes insert the results into the database, and use the database to generate a variety of output data products.

Below is a description of each piece of software we use, organized by these categories. For each piece of software, we include a description of where it is located, how to compile and use it, and what its inputs and outputs are.

Code Installation

Historically, we have selected a root directory for CyberShake, then created the subdirectories 'software' for all the code, 'ruptures' for the rupture files, and 'utils' for workflow tools. Each code listed below, along with the configuration file, should be checked out into the 'software' subdirectory.

Configuration file

Many CyberShake codes use a configuration file, which specifies the root directory for the CyberShake installation, the command use to start an MPI executable, paths to a tmp and scratch space (which can be the same), and the path to the CyberShake rupture directory. We have done this instead of environment variables because it's more transparent and easier for multiple users. Both of these files should be stored in the 'software' subdirectory.

The configuration file is available at:

http://source.usc.edu/svn/cybershake/import/trunk/cybershake.cfg

Obviously, this file must be edited to be correct for the install.

Additionally, you must check out a Python script which is used to read in the configuration file and deliver it as key-value pairs, located here:

http://source.usc.edu/svn/cybershake/import/trunk/config.py

Several CyberShake codes import config, then use it to read out the cybershake.cfg file.

SGT-related codes

Overview of the codes involved in the SGT part of CyberShake, source file (ODG)

PreCVM

This code stands for "Pre-Community-Velocity-Model". It has to be run before the UCVM codes, since it generates input files required by UCVM.

Purpose:To determine the simulation volume for a particular CyberShake site.

Detailed description:PreCVM queries the CyberShake database to determine all of the ruptures which fall within a given cutoff for a certain site. From that information, padding is added around the edges to construct the CyberShake simulation volume for this site. Additional padding so the dimensions are multiples of 10, 20, or 40 might also be applied, depending on the input parameters. Using this volume, both the X/Y offset of each grid point, and then the latitude and longitude using a great circle projection, are determined and written to output files.

Source code location: http://source.usc.edu/svn/cybershake/import/trunk/PreCVM/

Author: Rob Graves, wrapped by Scott Callaghan

Dependencies:Getpar

Executable chain:

 pre_cvm.py
   Modelbox/get_modelbox.py
     Modelbox/bin/gcproj
   GenGrid_py/gen_grid.py
     GenGrid_py/bin/gen_model_cords

Compile instructions:Run 'make' in the Modelbox/src and the Getpar_py/src directories.

Usage:

Usage: pre_cvm.py [options]
  Options:
  -h, --help            show this help message and exit
  --site=SITE           Site name
  --erf_id=ERF_ID       ERF ID
  --modelbox=MODELBOX   Path to modelbox file (output)
  --gridfile=GRIDFILE   Path to gridfile (output)
  --gridout=GRIDOUT     Path to gridout (output)
  --coordfile=COORDSFILE
                        Path to coorfile (output)
  --paramsfile=PARAMSFILE
                        Path to paramsfile (output)
  --boundsfile=BOUNDSFILE
                        Path to boundsfile (output)
  --frequency=FREQUENCY
                        Frequency
  --gpu                 Use GPU box settings.
  --spacing=SPACING     Override default spacing with this value.
  --server=SERVER       Address of server to query in creating modelbox,
                        default is focal.usc.edu.

Typical run configuration:Serial; requires 6 minutes for 100m spacing, 10 billion point volume

Input files:None; inputs are retrieved from the database

Output files:modelbox, gridfile, gridout, params, coord, bounds