This is the repository for the source code for the New Zealand Velocity Model (NZVM, Ref. https://doi.org/10.1080/00288306.2019.1636830).
As of May 2025, this project is superseded by New Zealand Community Velocity Model (NZCVM) https://github.com/ucgmsim/velocity_modelling NZCVM produces near 100% identical velocity models, and incorporates new data sets and enhancements.
There are seven general call types which are outlined in this readme.
To clone the code from the github repository:
git clone https://github.com/ucgmsim/Velocity-Model
In order to execute the code:
- Make a build directory and go into it
mkdir build
cd build
- Compile - cmake followed by make. Use OpenMP to utilize multiple threads
cmake ../ -DCMAKE_C_FLAGS="-fopenmp" -DCMAKE_CXX_FLAGS="-fopenmp"
make
3Copy NZVM to the root where Data directory is located.
cp NZVM ../
Important: You should always execute "NZVM" at this location.
- Execute the code using one of the call types:
- GENERATE_VELOCITY_MOD - Generates a velocity model from input parameters
- EXTRACT_VELOCITY_SLICES - Extracts velocity slices from a saved model (Model need to have been previously generated to use this call)
- GENERATE_VELOCITY_SLICES - Generated velocity slices for plotting (slices generated from scratch)
- GENERATE_PROFILE - Generates a velocity profile at a single lat-lon location
- GENERATE_MULTIPLE_PROFILES - Generates profiles for a list of lat-lon locations
- GENERATE_THRESHOLD - Generates a map of Vs30 Vs500, Z1.0 or Z2.5 (on the same coords as the FD 3D model)
- GENERATE_THRESHOLD_USER_INPUT - Generates Vs30, Vs500, Z1.0 or Z2.5 for a user specified list of points
First run
./NZVM
which creates example input text files (if desired otherwise skip this step)
Then modify the desired parameters and use the text file as an input to NZVM
./NZVM "MyParametersFile.txt"
See the git repo https://github.com/ucgmsim/Velocity-Model-Viz for automated plotting tools.
All five call types and required inputs are explained here.
Call type 1) GENERATE_VELOCITY_MOD
- 1 CALL_TYPE=GENERATE_VELOCITY_MOD
- 2 MODEL_VERSION (model version - select from list of model versions at bottom of readme)
- 3 OUTPUT_DIR (directory to save outputs to)
- 4 ORIGIN_LAT (origin latitude - in decimal format)
- 5 ORIGIN_LON (origin longitude - in decimal format)
- 6 ORIGIN_ROT (model rotation - clockwise is positive)
- 7 EXTENT_X (model extent in the X direction in km)
- 8 EXTENT_Y (model extent in the Y direction in km)
- 9 EXTENT_ZMAX (maximum model extent in the Z direction - positive downwards in km)
- 10 EXTENT_ZMIN (minimum model extent in the Z direction - positive downwards i.e -1 represents +1km above mean sea level)
- 11 EXTENT_Z_SPACING (gridspacing in the Z direction in km)
- 12 EXTENT_LATLON_SPACING (gridspacing in the Y and X direction in km)
- 13 MIN_VS (minimium shear wave velocity to enforce, in km/s - typically 0.5)
- 14 TOPO_TYPE (SQUASHED, BULLDOZED etc)
The output directory must not exist
Call type 2) EXTRACT_VELOCITY_SLICES - All parameters must be set and the output directory must have been generated previously using GENERATE_VELOCITY_MOD call
- 1 CALL_TYPE=EXTRACT_VELOCITY_SLICES
- 2 MODEL_VERSION (model version - select from list of model versions at bottom of readme)
- 3 OUTPUT_DIR (directory to save outputs to)
- 4 ORIGIN_LAT (origin latitude - in decimal format)
- 5 ORIGIN_LON (origin longitude - in decimal format)
- 6 ORIGIN_ROT (model rotation - clockwise is positive)
- 7 EXTENT_X (model extent in the X direction in km)
- 8 EXTENT_Y (model extent in the Y direction in km)
- 9 EXTENT_ZMAX (maximum model extent in the Z direction - positive downwards in km)
- 10 EXTENT_ZMIN (minimum model extent in the Z direction - positive downwards i.e -1 represents +1km above mean sea level)
- 11 EXTENT_Z_SPACING (gridspacing in the Z direction in km)
- 12 EXTENT_LATLON_SPACING (gridspacing in the Y and X direction in km)
- 13 MIN_VS (minimium shear wave velocity to enforce, in km/s - typically 0.5)
- 14 TOPO_TYPE (SQUASHED, BULLDOZED etc)
- 15 EXTRACTED_SLICE_PARAMETERS_TEXTFILE (textfile location withslice parameters)
- See readme in ExtractedSliceParameters directory for additional information
Call type 3) GENERATE_VELOCITY_SLICES
- 1 CALL_TYPE=GENERATE_VELOCITY_SLICES
- 2 MODEL_VERSION (model version - select from list of model versions at bottom of readme)
- 3 OUTPUT_DIR (directory to save outputs to)
- 4 GENERATED_SLICE_PARAMETERS_TEXTFILE (textfile location with slice parameters)
- 5 TOPO_TYPE (SQUASHED, BULLDOZED etc)
Call type 4) GENERATE_PROFILE - All parameters must be set and the output directory must not exist
- 1 CALL_TYPE=GENERATE_PROFILE
- 2 MODEL_VERSION (model version - select from list of model versions at bottom of readme)
- 3 OUTPUT_DIR (directory to save outputs to)
- 4 PROFILE_LAT (latitude point of profile - in decimal format)
- 5 PROFILE_LON (longitude point of profile - in decimal format)
- 6 PROFILE_ZMIN (minimum depth of profile +ve downwards in km ie. -0.1 corresponds to the
- 7 PROFILE_ZMAX (maximum depth of profile +ve downwards in km)
- 8 EXTENT_Z_SPACING_PROFILE (z spacing of the profile in km) top of the profile at +0.1km above mean sea level)
- 9 PROFILE_MIN_VS (minimium shear wave velocity to enforce, in km/s - typically 0.5, set as 0.0 for no restriction)
- 10 TOPO_TYPE (SQUASHED, BULLDOZED etc)
Call type 5) GENERATE_MULTIPLE_PROFILES - Two different types: constant spacing, and variable spacing profile generation (the output directory must not exist)
- 1 CALL_TYPE=GENERATE_MULTIPLE_PROFILES
- 2 MODEL_VERSION (model version - select from list of model versions at bottom of readme)
- 3 OUTPUT_DIR (directory to save outputs to)
- 4 OUTPUT_TYPE (Specify the toe of file output required - 1D_SITE_RESPONSE or STANDARD)
- 5 PROFILE_MIN_VS (minimium shear wave velocity to enforce, in km/s - typically 0.5, set as 0.0 for no restriction)
- 6 TOPO_TYPE (SQUASHED, BULLDOZED etc)
- 7 COORDINATES_TEXTFILE (textfile location with coordinates to generate profiles at)
- 8 SPACING_TYPE (Set as CONSTANT, or VARIABLE)
- Optional inputs
- if SPACING_TYPE=CONSTANT, then set:
- 9 PROFILE_ZMIN (minimum depth of profile +ve downwards in km ie. -0.1 corresponds to the
- 10 PROFILE_ZMAX (maximum depth of profile +ve downwards in km)
- 11 SPACING_PROFILE (z spacing of the profile in km)
- if SPACING_TYPE=VARIABLE, then set:
- 12 PROFILE_DEPTHS_TEXTFILE (textfile location with vector of depths to prescribe velocities to)
Call type 6) GENERATE_THRESHOLD
Extracts Vs30 Vs500 Z1.0 Z2.5 for the same coords as the FD grid
- 1 CALL_TYPE=GENERATE_THRESHOLD
- 2 MODEL_VERSION (model version - select from list of model versions at bottom of readme)
- 3 OUTPUT_DIR (directory to save outputs to)
- 4 ORIGIN_LAT (origin latitude - in decimal format)
- 5 ORIGIN_LON (origin longitude - in decimal format)
- 6 ORIGIN_ROT (model rotation - clockwise is positive)
- 7 EXTENT_X (model extent in the X direction in km)
- 8 EXTENT_Y (model extent in the Y direction in km)
- 9 EXTENT_LATLON_SPACING (gridspacing in the Y and X direction in km)
- 10 VS_TYPE (set as Vs30 Vs500 Z1.0 Z2.5)
Call type 7) GENERATE_THRESHOLD_USER_INPUT
Extracts Vs30 Vs500 Z1.0 Z2.5 for a user specified list of points
- 1 CALL_TYPE=GENERATE_THRESHOLD_USER_INPUT
- 2 MODEL_VERSION (model version - select from list of model versions at bottom of readme)
- 3 OUTPUT_DIR (directory to save outputs to)
- 4 COORDINATES_TEXT_FILE (text file name containing gridpoints to presribe velocities at)
- 5 VS_TYPE (set as Vs30 Vs500 Z1.0 Z2.5)
Call type 8) GENERATE_VELOCITIES_ON_GRID
- 1 CALL_TYPE=GENERATE_VELOCITIES_ON_GRID
- 2 MODEL_VERSION (model version - select from list of model versions at bottom of readme)
- 3 OUTPUT_DIR (directory to save outputs to)
- 4 TOPO_TYPE (SQUASHED, BULLDOZED etc)
- 5 MIN_VS (minimium shear wave velocity to enforce, in km/s - typically 0.5)
- 6 COORDINATES_TEXT_FILE (text file name containing gridpoints to presribe velocities at)
Execute one of these call types and open the output directory to view saved outputs.
To add a new basin model to the NZVM follow the instructions in src/Addition_of_new_basins_readme.md
List of TOPO_TYPES
Unshifted representations:
- TRUE
- BULLDOZED - Cuts off all gridpoints above Mean Sea Level (0km)
Shifted representations: Note that no gridpoint with a value above Mean Sea Level (MSL) (0km) will have velocities prescribed to it.
- SQUASHED - Pushes the ground surface (DEM) to zero meteres, all values are then relative to this.
- SQUASHED_TAPERED - Compacts the region between the DEM and MSL into the region between MSL and -1.0xZ(DEM)
Summary of velocity model version numbers
-
v1.01 1D velocity model
- 1D model version (Cant. 1D velocity model)
-
v1.02 1D velocity model
- 1D model version (Cant. 1D velocity model v2)
-
v1.11 Eberhart-Phillips Tomography
- (Unpublished updated Canterbury version)
-
v1.21 Tomography below basement, 1D above
- 1D model version (Cant. 1D velocity model)
- Basement version (BasementPoints_35_v8p9_1000m.txt)
-
v1.22 Tomography below basement, 1D above
- 1D model version (Cant. 1D velocity model v2)
- Basement version (BasementPoints_35_v8p9_1000m.txt)
-
v1.31 Tomography below basement, constant velocity Paleogene layer, 1D Above
- 1D model version (Cant. 1D velocity model)
- Basement version (BasementPoints_35_v8p9_1000m.txt)
- Paleogene version (PaleogenePoints_35_v8p9_1000m.txt)
- Paleogene - Vp=2.7 , Vs=1.1511 , Rho=2.151
-
v1.41 Tomography below basement, constant velocity Paleogene & Miocene layers, 1D Above
- 1D model version (Cant. 1D velocity model)
- Basement version (BasementPoints_35_v8p9_1000m.txt)
- Paleogene version (PaleogenePoints_35_v8p9_1000m.txt)
- Miocene version (MiocenePoints_35_v8p9_1000m.txt)
- Paleogene - Vp=2.7 , Vs=1.1511 , Rho=2.151
- Miocene - Vp=2.5, Vs=0.98355, Rho=2.9031
-
v1.51 Tomography below basement, constant velocity Paleogene & Miocene layers, 1D Above, BPV Basin
- 1D model version (Cant. 1D velocity model)
- Basement version (BasementPoints_35_v8p9_1000m.txt)
- Paleogene version (PaleogenePoints_35_v8p9_1000m.txt)
- Miocene version (MiocenePoints_35_v8p9_1000m.txt)
- BPV top version (BPPoints_41_v1p13_1000m.txt)
- Paleogene - Vp=2.7 , Vs=1.1511 , Rho=2.151
- Miocene - Vp=2.5, Vs=0.98355, Rho=2.9031
- BPV - Vp=4.0, Vs=2.2818, Rho= 2.393
-
v1.61 Tomography below basement, constant velocity Paleogene, Miocene & Pliocene layers, 1D Above, BPV Basin
- 1D model version (Cant. 1D velocity model)
- Basement version (BasementPoints_35_v8p9_1000m.txt)
- Paleogene version (PaleogenePoints_35_v8p9_1000m.txt)
- Miocene version (MiocenePoints_35_v8p9_1000m.txt)
- Pliocene version (PliocenePoints_35_v8p9_1000m.txt)
- BPV top version (BPPoints_41_v1p13_1000m.txt)
- Paleogene - Vp=2.7 , Vs=1.1511 , Rho=2.151
- Miocene - Vp=2.5, Vs=0.98355, Rho=2.9031
- Pliocene - Vp=2.0, Vs=0.6086, Rho = 1.905
- BPV - Vp=4.0, Vs=2.2818, Rho= 2.393
-
v1.62 Same as v1.61 with different parameters for the BPV
- BPV - Vp=3.6, Vs=1.9428, Rho= 2.334
-
v1.63 Same as v1.61 with weathering function for the top 100m of the BPV
- BPV at 0m - Vp=3.2, Vs=1.59, Rho= 2.265
- BPV below 100m - Vp=4.0, Vs=2.2818, Rho= 2.393
- Linear relationship between 0 and 100m depth
-
v1.64 Same as v1.63 with updated 1D velocity model
- 1D model version (Cant1D_v2.fd_modfile)
-
v1.65 Same as v1.64 with updated 1D velocity model to ensure Vs_1dmax < Vs_pliocene
- 1D model version (Cant1D_v2_Pliocene_Enforced.fd_modfile)
-
v1.66 Same as v1.65 with updated pliocene layer model
-
v1.67 Same as v1.66 with ELY (2010) taper implemented in non-basin regions. New NZ-Wide HD DEM. Updated weathering in BPV region.
- Weathering in BPV modified from ELY (2010), using Vs_BPV(top)=700m/s @ z=0, Vs_BPV(top)=1500m/s @ z=1000m (linearly varying between)
-
v2.01 Added 5 new South Island Basins (Kaikoura, Cheviot, Hanmer, Marlborough, NorthCanterbury) and offshore tapering
-
v2.02 Updated Wellington basin model
-
v2.03 added WaikatoHauraki_v19p7 basin model, offshore generic basin model added
-
v2.03_m10 with m10 perturbaton from F3DT
-
v2.03_m15 with m15 perturbaton from F3DT
-
v2.04 added USER20 basins
-
v2.05 Updated 2020 tomography model
-
v2.05_m12 with m12 perturbaton from F3DT (2020 tomography model)
-
v2.06 Added Takaka / Collingwood Basins / Springs Junction & Karamea
-
v2.07 Added Hawkes Bay / Napier / Wellington Regional basins and Updated the Wellington Basin to Matt Hill's version / Wairarapa / S. Hawkes Bay / Gisborne / Motu
-
v2.08 Replaced tomography model with the combination of Chow's North Island tomography model and EP2020 with/without basins (basins from v2.07)
Summary of Korean velocity model (KVM) version numbers
-
KVM_20p6 - 1D VM
-
KVM_20p12 - 3D VM Based on "Crustal structure beneath the southern Korean Peninsula from local earthquakes" Kim et al (2017), Vs and Rho derived from Brocher (2005) relationships
We will be adding NZVM binary into a minimum base image. This containerized NZVM binary is used to test the NZCVM.
If you haven't, build a NZVM first.
mkdir build
cd build
cmake ../ -DCMAKE_C_FLAGS="-fopenmp" -DCMAKE_CXX_FLAGS="-fopenmp"
make
Create a Dockerfile
FROM gcc:latest
# Copy the pre-built binary into the Docker image
COPY NZVM /nzvm/NZVM
# Set the working directory
WORKDIR /nzvm
In the directory where NZVM and Dockerfile are located, build the docker image.
Our Docker Hub handler is earthquakesuc
docker build -t earthquakesuc/nzvm .
or
docker build --no-cache -t earthquakesuc/nzvm .
(Optional) Tag the image
docker tag earthquakesuc/nzvm quathquakesuc/nzvm:v1.0
Push to Docker Hub. First make sure you're logged into Docker Hub
docker login
Then push the image
docker push earthquakesuc/nzvm
Or push a specific tag
docker push earthquakesuc/nzvm:v1.0