<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://strike.scec.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mei</id>
	<title>SCECpedia - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://strike.scec.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mei"/>
	<link rel="alternate" type="text/html" href="https://strike.scec.org/scecpedia/Special:Contributions/Mei"/>
	<updated>2026-10-24T04:58:59Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://strike.scec.org/index.php?title=UCVM_shakeout2_velocity_model&amp;diff=31039</id>
		<title>UCVM shakeout2 velocity model</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=UCVM_shakeout2_velocity_model&amp;diff=31039"/>
		<updated>2026-10-06T00:38:38Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* plots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model overview ==&lt;br /&gt;
&lt;br /&gt;
The shakeout2 velocity model for the ShakeOut Scenario 2.0 is based on CVM-S4.26.M01(with embedded GTL layer for basin regions) and&lt;br /&gt;
GTL Tapering for all non-basin area.  &lt;br /&gt;
&lt;br /&gt;
Tapering&#039;s z range is from 0m to 700m,  and material property floors used are vs=200m,  vp=500m and density=200m&lt;br /&gt;
a customized z coordinates list is pre-defined&lt;br /&gt;
&lt;br /&gt;
four corners:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mesh dimensions: 516 x 468 x 152&lt;br /&gt;
&lt;br /&gt;
Grid 4 corners:&lt;br /&gt;
  -120.028425 31.874269&lt;br /&gt;
  -114.584135 31.887394&lt;br /&gt;
  -120.181534 36.079919&lt;br /&gt;
  -114.461905 36.095287&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating the Data files with ucvm2mesh ==&lt;br /&gt;
&lt;br /&gt;
UCVM&#039;s ucvm2mesh is used to generate 3 binary mesh data files: vs, vp and density for ROI&lt;br /&gt;
&lt;br /&gt;
In &#039;debug mode&#039;, 3 coordinate lists are created: one for the lats, the lons and the z depths.&lt;br /&gt;
&lt;br /&gt;
With these data files and lists, a simple NetCDF file is created&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh configuration file: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# List of CVMs to query&lt;br /&gt;
ucvmlist=cvmsi,elygtl:taper&lt;br /&gt;
&lt;br /&gt;
# (optional) zranges: -Z zmin,zmax &lt;br /&gt;
min_zrange=0.0&lt;br /&gt;
max_zrange=700.0&lt;br /&gt;
&lt;br /&gt;
# (optional) floors: -L vs_floor,vp_floor,density_floor&lt;br /&gt;
vs_floor=200.0&lt;br /&gt;
vp_floor=500.0&lt;br /&gt;
density_floor=200.0&lt;br /&gt;
&lt;br /&gt;
# UCVM conf file&lt;br /&gt;
ucvmconf=YOUR_UCVM_INSTALL_PATH/conf/ucvm.conf&lt;br /&gt;
&lt;br /&gt;
# Gridding cell: CENTER or VERTEX &lt;br /&gt;
gridtype=CENTER&lt;br /&gt;
&lt;br /&gt;
# Spacing of cells (m)&lt;br /&gt;
spacing=1000.0&lt;br /&gt;
# (optional) Spacing of z depth (m)&lt;br /&gt;
# if not set, z_spacing = spacing &lt;br /&gt;
#z_spacing = 500.0&lt;br /&gt;
&lt;br /&gt;
# (optional) Allow varying z depth&lt;br /&gt;
# format: 1 row 1 target depth &lt;br /&gt;
z_file = so2_zlist&lt;br /&gt;
&lt;br /&gt;
# (optional) output latitudes filename&lt;br /&gt;
y_file = so2_ylist&lt;br /&gt;
&lt;br /&gt;
# (optional) output longitudes filename&lt;br /&gt;
x_file = so2_xlist&lt;br /&gt;
&lt;br /&gt;
# Projection&lt;br /&gt;
proj=+proj=utm +datum=WGS84 +zone=11&lt;br /&gt;
#to rotate, rot=-39.9&lt;br /&gt;
rot=0&lt;br /&gt;
&lt;br /&gt;
# Origin &lt;br /&gt;
# x,y: latlon&lt;br /&gt;
# z: depth (m)&lt;br /&gt;
x0=-120.033556&lt;br /&gt;
y0=31.869638&lt;br /&gt;
z0=0.0&lt;br /&gt;
&lt;br /&gt;
# Number of cells along each dim&lt;br /&gt;
nx=516&lt;br /&gt;
ny=468&lt;br /&gt;
nz=152&lt;br /&gt;
# how to determine distance in meter for each dim&lt;br /&gt;
# x = nx * spacing&lt;br /&gt;
# y = ny * spacing&lt;br /&gt;
# z = nz * (spacing or z_spacing), or = z_file[idx])&lt;br /&gt;
&lt;br /&gt;
# Partitioning of grid among processors&lt;br /&gt;
# relevant to chunking, should be divisible into nx,ny,nz&lt;br /&gt;
px=2&lt;br /&gt;
py=2&lt;br /&gt;
pz=2&lt;br /&gt;
&lt;br /&gt;
# Vs/Vp minimum&lt;br /&gt;
vp_min=0&lt;br /&gt;
vs_min=0&lt;br /&gt;
&lt;br /&gt;
# Mesh grid files&lt;br /&gt;
meshfile=so2.media&lt;br /&gt;
gridfile=so2.grid&lt;br /&gt;
&lt;br /&gt;
# Mesh Grid formats&lt;br /&gt;
# IJK-12, IJK-20, IJK-32 : single triplet file&lt;br /&gt;
# SORD : separate vs, vp, rho files&lt;br /&gt;
meshtype=SORD&lt;br /&gt;
&lt;br /&gt;
# Location of scratch dir&lt;br /&gt;
scratch=./scratch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh z depths list:&lt;br /&gt;
[[Media:so2_zlist.txt|so2_zlist]]&lt;br /&gt;
&lt;br /&gt;
latitude coordinate list:&lt;br /&gt;
[[Media:so2_xlist.txt|so2_xlist]]&lt;br /&gt;
&lt;br /&gt;
longitude coordinate list:&lt;br /&gt;
[[Media:so2_ylist.txt|so2_ylist]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh command used:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ucvm2mesh -f so2.conf &amp;gt; so2.out 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
and if so2.grid is known,&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh -f so2.conf -g so2.grid &amp;gt; so2.out 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Create NetCDF mesh data ==&lt;br /&gt;
&lt;br /&gt;
make_nc.py&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  &lt;br /&gt;
#!/usr/bin/env python3&lt;br /&gt;
&lt;br /&gt;
import numpy as np&lt;br /&gt;
from netCDF4 import Dataset&lt;br /&gt;
&lt;br /&gt;
## Update filenames to match your local paths&lt;br /&gt;
file_zlist = &amp;quot;so2_zlist&amp;quot;&lt;br /&gt;
file_ylist = &amp;quot;so2_ylist&amp;quot;&lt;br /&gt;
file_xlist = &amp;quot;so2_xlist&amp;quot;&lt;br /&gt;
&lt;br /&gt;
file_vp = &amp;quot;so2.mesh_vp&amp;quot;&lt;br /&gt;
file_vs = &amp;quot;so2.mesh_vs&amp;quot;&lt;br /&gt;
file_rho = &amp;quot;so2.mesh_rho&amp;quot;&lt;br /&gt;
&lt;br /&gt;
output_nc = &amp;quot;model_CVMSI_taper_so2.nc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
## Read ASCII coordinate files&lt;br /&gt;
zlist = np.loadtxt(file_zlist, dtype=np.float32)&lt;br /&gt;
ylist = np.loadtxt(file_ylist, dtype=np.float32)&lt;br /&gt;
xlist = np.loadtxt(file_xlist, dtype=np.float32)&lt;br /&gt;
&lt;br /&gt;
# Extract dimension sizes dynamically from coordinate lists&lt;br /&gt;
n_depth = len(zlist)      # Expecting 210&lt;br /&gt;
n_lat = len(ylist)        # Expecting 1251&lt;br /&gt;
n_lon = len(xlist)        # Expecting 1301&lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;n_depth is &#039;{n_depth}&#039;&amp;quot;)&lt;br /&gt;
print(f&amp;quot;n_lat is &#039;{n_lat}&#039;&amp;quot;)&lt;br /&gt;
print(f&amp;quot;n_lon is &#039;{n_lon}&#039;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
## Read raw binary 3D data files and reshape to (depth, latitude, longitude)&lt;br /&gt;
# Note: Adjust byteorder if needed (e.g., dtype=&#039;&amp;gt;f4&#039; for big-endian)&lt;br /&gt;
vp_data = np.fromfile(file_vp, dtype=np.float32).reshape((n_depth, n_lat, n_lon))&lt;br /&gt;
vs_data = np.fromfile(file_vs, dtype=np.float32).reshape((n_depth, n_lat, n_lon))&lt;br /&gt;
rho_data = np.fromfile(file_rho, dtype=np.float32).reshape((n_depth, n_lat, n_lon))&lt;br /&gt;
vp_cnt = vp_data.size&lt;br /&gt;
vs_cnt = vs_data.size&lt;br /&gt;
rho_cnt = rho_data.size&lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;vp_cnt is &#039;{vp_cnt}&#039;&amp;quot;)&lt;br /&gt;
print(f&amp;quot;vs_cnt is &#039;{vs_cnt}&#039;&amp;quot;)&lt;br /&gt;
print(f&amp;quot;rho_cnt is &#039;{rho_cnt}&#039;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
#print(f&amp;quot;vs..&#039;{vs_data[100][100][100]}&#039;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
## Create and write NetCDF4 dataset&lt;br /&gt;
with Dataset(output_nc, mode=&amp;quot;w&amp;quot;, format=&amp;quot;NETCDF4&amp;quot;) as ncfile:&lt;br /&gt;
&lt;br /&gt;
    # Define dimensions&lt;br /&gt;
    ncfile.createDimension(&amp;quot;depth&amp;quot;, n_depth)&lt;br /&gt;
    ncfile.createDimension(&amp;quot;latitude&amp;quot;, n_lat)&lt;br /&gt;
    ncfile.createDimension(&amp;quot;longitude&amp;quot;, n_lon)&lt;br /&gt;
&lt;br /&gt;
    # Define coordinate variables&lt;br /&gt;
    var_depth = ncfile.createVariable(&amp;quot;depth&amp;quot;, &amp;quot;f4&amp;quot;, (&amp;quot;depth&amp;quot;,), fill_value=np.nan)&lt;br /&gt;
    var_depth.units = &amp;quot;meters&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    var_lat = ncfile.createVariable(&amp;quot;latitude&amp;quot;, &amp;quot;f4&amp;quot;, (&amp;quot;latitude&amp;quot;,), fill_value=np.nan)&lt;br /&gt;
    var_lat.units = &amp;quot;degrees_north&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    var_lon = ncfile.createVariable(&amp;quot;longitude&amp;quot;, &amp;quot;f4&amp;quot;, (&amp;quot;longitude&amp;quot;,), fill_value=np.nan)&lt;br /&gt;
    var_lon.units = &amp;quot;degrees_east&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # Define 3D data variables&lt;br /&gt;
    var_vp = ncfile.createVariable(&amp;quot;vp&amp;quot;, &amp;quot;f4&amp;quot;, (&amp;quot;depth&amp;quot;, &amp;quot;latitude&amp;quot;, &amp;quot;longitude&amp;quot;), fill_value=np.nan)&lt;br /&gt;
    var_vp.units = &amp;quot;m/s&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    var_vs = ncfile.createVariable(&amp;quot;vs&amp;quot;, &amp;quot;f4&amp;quot;, (&amp;quot;depth&amp;quot;, &amp;quot;latitude&amp;quot;, &amp;quot;longitude&amp;quot;), fill_value=np.nan)&lt;br /&gt;
    var_vs.units = &amp;quot;m/s&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    var_rho = ncfile.createVariable(&amp;quot;rho&amp;quot;, &amp;quot;f4&amp;quot;, (&amp;quot;depth&amp;quot;, &amp;quot;latitude&amp;quot;, &amp;quot;longitude&amp;quot;), fill_value=np.nan)&lt;br /&gt;
    var_rho.units = &amp;quot;kg/m^3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # Assign values&lt;br /&gt;
    var_depth[:] = zlist&lt;br /&gt;
    var_lat[:] = ylist&lt;br /&gt;
    var_lon[:] = xlist&lt;br /&gt;
&lt;br /&gt;
    var_vp[:] = vp_data&lt;br /&gt;
    var_vs[:] = vs_data&lt;br /&gt;
    var_rho[:] = rho_data&lt;br /&gt;
&lt;br /&gt;
## All done&lt;br /&gt;
print(f&amp;quot;NetCDF file &#039;{output_nc}&#039; successfully written.&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== plots ==&lt;br /&gt;
&lt;br /&gt;
shakeout2, horizontal vs slice at 0m, 200m, 700m&lt;br /&gt;
{|&lt;br /&gt;
| [[FILE:shakeout2_0m.png|thumb|400px|shakeout2 0m]] &lt;br /&gt;
| [[FILE:shakeout2_200m.png|thumb|400px|shakeout2 200m]]&lt;br /&gt;
| [[FILE:shakeout2_700m.png|thumb|400px|shakeout2 700m]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
cvmsi,  horizontal vs slice at 0m, 200m, 700m&lt;br /&gt;
{|&lt;br /&gt;
| [[FILE:shakeout2_cvmsi_0m.png|thumb|400px|cvmsi 0m]] &lt;br /&gt;
| [[FILE:shakeout2_cvmsi_200m.png|thumb|400px|cvmsi 200m]] &lt;br /&gt;
| [[FILE:shakeout2_cvmsi_700m.png|thumb|400px|cvmsi 700m]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
shakeout2, within basin&lt;br /&gt;
{|&lt;br /&gt;
| [[FILE:shakeout2_profile_in0.png|thumb|400px|shakeout2 profile in0]] &lt;br /&gt;
| [[FILE:shakeout2_profile_in1.png|thumb|400px|shakeout2 profile in1]] &lt;br /&gt;
| [[FILE:shakeout2_profile_in2.png|thumb|400px|shakeout2 profile in2]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
shakeout2, outside of basin&lt;br /&gt;
{|&lt;br /&gt;
| [[FILE:shakeout2_profile_out0.png|thumb|400px|shakeout2 profile out0]] &lt;br /&gt;
| [[FILE:shakeout2_profile_out1.png|thumb|400px|shakeout2 profile out1]] &lt;br /&gt;
| [[FILE:shakeout2_profile_out2.png|thumb|400px|shakeout2 profile out2]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
cvmsi, within basin&lt;br /&gt;
{|&lt;br /&gt;
| [[FILE:shakeout2_cvmsi_profile_in0.png|thumb|400px|cvmsi profile in0]] &lt;br /&gt;
| [[FILE:shakeout2_cvmsi_profile_in1.png|thumb|400px|cvmsi profile in1]] &lt;br /&gt;
| [[FILE:shakeout2_cvmsi_profile_in2.png|thumb|400px|cvmsi profile in2]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
cvmsi, outside of basin&lt;br /&gt;
{|&lt;br /&gt;
| [[FILE:shakeout2_cvmsi_profile_out0.png|thumb|400px|cvmsi profile out0]] &lt;br /&gt;
| [[FILE:shakeout2_cvmsi_profile_out1.png|thumb|400px|cvmsi profile out1]] &lt;br /&gt;
| [[FILE:shakeout2_cvmsi_profile_out2.png|thumb|400px|cvmsi profile out2]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Related Links ==&lt;br /&gt;
*[[Main Page]]&lt;br /&gt;
*[[UCVM]]&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=UCVM_shakeout2_velocity_model&amp;diff=31038</id>
		<title>UCVM shakeout2 velocity model</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=UCVM_shakeout2_velocity_model&amp;diff=31038"/>
		<updated>2026-10-05T23:29:49Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* plots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model overview ==&lt;br /&gt;
&lt;br /&gt;
The shakeout2 velocity model for the ShakeOut Scenario 2.0 is based on CVM-S4.26.M01(with embedded GTL layer for basin regions) and&lt;br /&gt;
GTL Tapering for all non-basin area.  &lt;br /&gt;
&lt;br /&gt;
Tapering&#039;s z range is from 0m to 700m,  and material property floors used are vs=200m,  vp=500m and density=200m&lt;br /&gt;
a customized z coordinates list is pre-defined&lt;br /&gt;
&lt;br /&gt;
four corners:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mesh dimensions: 516 x 468 x 152&lt;br /&gt;
&lt;br /&gt;
Grid 4 corners:&lt;br /&gt;
  -120.028425 31.874269&lt;br /&gt;
  -114.584135 31.887394&lt;br /&gt;
  -120.181534 36.079919&lt;br /&gt;
  -114.461905 36.095287&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating the Data files with ucvm2mesh ==&lt;br /&gt;
&lt;br /&gt;
UCVM&#039;s ucvm2mesh is used to generate 3 binary mesh data files: vs, vp and density for ROI&lt;br /&gt;
&lt;br /&gt;
In &#039;debug mode&#039;, 3 coordinate lists are created: one for the lats, the lons and the z depths.&lt;br /&gt;
&lt;br /&gt;
With these data files and lists, a simple NetCDF file is created&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh configuration file: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# List of CVMs to query&lt;br /&gt;
ucvmlist=cvmsi,elygtl:taper&lt;br /&gt;
&lt;br /&gt;
# (optional) zranges: -Z zmin,zmax &lt;br /&gt;
min_zrange=0.0&lt;br /&gt;
max_zrange=700.0&lt;br /&gt;
&lt;br /&gt;
# (optional) floors: -L vs_floor,vp_floor,density_floor&lt;br /&gt;
vs_floor=200.0&lt;br /&gt;
vp_floor=500.0&lt;br /&gt;
density_floor=200.0&lt;br /&gt;
&lt;br /&gt;
# UCVM conf file&lt;br /&gt;
ucvmconf=YOUR_UCVM_INSTALL_PATH/conf/ucvm.conf&lt;br /&gt;
&lt;br /&gt;
# Gridding cell: CENTER or VERTEX &lt;br /&gt;
gridtype=CENTER&lt;br /&gt;
&lt;br /&gt;
# Spacing of cells (m)&lt;br /&gt;
spacing=1000.0&lt;br /&gt;
# (optional) Spacing of z depth (m)&lt;br /&gt;
# if not set, z_spacing = spacing &lt;br /&gt;
#z_spacing = 500.0&lt;br /&gt;
&lt;br /&gt;
# (optional) Allow varying z depth&lt;br /&gt;
# format: 1 row 1 target depth &lt;br /&gt;
z_file = so2_zlist&lt;br /&gt;
&lt;br /&gt;
# (optional) output latitudes filename&lt;br /&gt;
y_file = so2_ylist&lt;br /&gt;
&lt;br /&gt;
# (optional) output longitudes filename&lt;br /&gt;
x_file = so2_xlist&lt;br /&gt;
&lt;br /&gt;
# Projection&lt;br /&gt;
proj=+proj=utm +datum=WGS84 +zone=11&lt;br /&gt;
#to rotate, rot=-39.9&lt;br /&gt;
rot=0&lt;br /&gt;
&lt;br /&gt;
# Origin &lt;br /&gt;
# x,y: latlon&lt;br /&gt;
# z: depth (m)&lt;br /&gt;
x0=-120.033556&lt;br /&gt;
y0=31.869638&lt;br /&gt;
z0=0.0&lt;br /&gt;
&lt;br /&gt;
# Number of cells along each dim&lt;br /&gt;
nx=516&lt;br /&gt;
ny=468&lt;br /&gt;
nz=152&lt;br /&gt;
# how to determine distance in meter for each dim&lt;br /&gt;
# x = nx * spacing&lt;br /&gt;
# y = ny * spacing&lt;br /&gt;
# z = nz * (spacing or z_spacing), or = z_file[idx])&lt;br /&gt;
&lt;br /&gt;
# Partitioning of grid among processors&lt;br /&gt;
# relevant to chunking, should be divisible into nx,ny,nz&lt;br /&gt;
px=2&lt;br /&gt;
py=2&lt;br /&gt;
pz=2&lt;br /&gt;
&lt;br /&gt;
# Vs/Vp minimum&lt;br /&gt;
vp_min=0&lt;br /&gt;
vs_min=0&lt;br /&gt;
&lt;br /&gt;
# Mesh grid files&lt;br /&gt;
meshfile=so2.media&lt;br /&gt;
gridfile=so2.grid&lt;br /&gt;
&lt;br /&gt;
# Mesh Grid formats&lt;br /&gt;
# IJK-12, IJK-20, IJK-32 : single triplet file&lt;br /&gt;
# SORD : separate vs, vp, rho files&lt;br /&gt;
meshtype=SORD&lt;br /&gt;
&lt;br /&gt;
# Location of scratch dir&lt;br /&gt;
scratch=./scratch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh z depths list:&lt;br /&gt;
[[Media:so2_zlist.txt|so2_zlist]]&lt;br /&gt;
&lt;br /&gt;
latitude coordinate list:&lt;br /&gt;
[[Media:so2_xlist.txt|so2_xlist]]&lt;br /&gt;
&lt;br /&gt;
longitude coordinate list:&lt;br /&gt;
[[Media:so2_ylist.txt|so2_ylist]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh command used:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ucvm2mesh -f so2.conf &amp;gt; so2.out 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
and if so2.grid is known,&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh -f so2.conf -g so2.grid &amp;gt; so2.out 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Create NetCDF mesh data ==&lt;br /&gt;
&lt;br /&gt;
make_nc.py&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  &lt;br /&gt;
#!/usr/bin/env python3&lt;br /&gt;
&lt;br /&gt;
import numpy as np&lt;br /&gt;
from netCDF4 import Dataset&lt;br /&gt;
&lt;br /&gt;
## Update filenames to match your local paths&lt;br /&gt;
file_zlist = &amp;quot;so2_zlist&amp;quot;&lt;br /&gt;
file_ylist = &amp;quot;so2_ylist&amp;quot;&lt;br /&gt;
file_xlist = &amp;quot;so2_xlist&amp;quot;&lt;br /&gt;
&lt;br /&gt;
file_vp = &amp;quot;so2.mesh_vp&amp;quot;&lt;br /&gt;
file_vs = &amp;quot;so2.mesh_vs&amp;quot;&lt;br /&gt;
file_rho = &amp;quot;so2.mesh_rho&amp;quot;&lt;br /&gt;
&lt;br /&gt;
output_nc = &amp;quot;model_CVMSI_taper_so2.nc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
## Read ASCII coordinate files&lt;br /&gt;
zlist = np.loadtxt(file_zlist, dtype=np.float32)&lt;br /&gt;
ylist = np.loadtxt(file_ylist, dtype=np.float32)&lt;br /&gt;
xlist = np.loadtxt(file_xlist, dtype=np.float32)&lt;br /&gt;
&lt;br /&gt;
# Extract dimension sizes dynamically from coordinate lists&lt;br /&gt;
n_depth = len(zlist)      # Expecting 210&lt;br /&gt;
n_lat = len(ylist)        # Expecting 1251&lt;br /&gt;
n_lon = len(xlist)        # Expecting 1301&lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;n_depth is &#039;{n_depth}&#039;&amp;quot;)&lt;br /&gt;
print(f&amp;quot;n_lat is &#039;{n_lat}&#039;&amp;quot;)&lt;br /&gt;
print(f&amp;quot;n_lon is &#039;{n_lon}&#039;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
## Read raw binary 3D data files and reshape to (depth, latitude, longitude)&lt;br /&gt;
# Note: Adjust byteorder if needed (e.g., dtype=&#039;&amp;gt;f4&#039; for big-endian)&lt;br /&gt;
vp_data = np.fromfile(file_vp, dtype=np.float32).reshape((n_depth, n_lat, n_lon))&lt;br /&gt;
vs_data = np.fromfile(file_vs, dtype=np.float32).reshape((n_depth, n_lat, n_lon))&lt;br /&gt;
rho_data = np.fromfile(file_rho, dtype=np.float32).reshape((n_depth, n_lat, n_lon))&lt;br /&gt;
vp_cnt = vp_data.size&lt;br /&gt;
vs_cnt = vs_data.size&lt;br /&gt;
rho_cnt = rho_data.size&lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;vp_cnt is &#039;{vp_cnt}&#039;&amp;quot;)&lt;br /&gt;
print(f&amp;quot;vs_cnt is &#039;{vs_cnt}&#039;&amp;quot;)&lt;br /&gt;
print(f&amp;quot;rho_cnt is &#039;{rho_cnt}&#039;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
#print(f&amp;quot;vs..&#039;{vs_data[100][100][100]}&#039;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
## Create and write NetCDF4 dataset&lt;br /&gt;
with Dataset(output_nc, mode=&amp;quot;w&amp;quot;, format=&amp;quot;NETCDF4&amp;quot;) as ncfile:&lt;br /&gt;
&lt;br /&gt;
    # Define dimensions&lt;br /&gt;
    ncfile.createDimension(&amp;quot;depth&amp;quot;, n_depth)&lt;br /&gt;
    ncfile.createDimension(&amp;quot;latitude&amp;quot;, n_lat)&lt;br /&gt;
    ncfile.createDimension(&amp;quot;longitude&amp;quot;, n_lon)&lt;br /&gt;
&lt;br /&gt;
    # Define coordinate variables&lt;br /&gt;
    var_depth = ncfile.createVariable(&amp;quot;depth&amp;quot;, &amp;quot;f4&amp;quot;, (&amp;quot;depth&amp;quot;,), fill_value=np.nan)&lt;br /&gt;
    var_depth.units = &amp;quot;meters&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    var_lat = ncfile.createVariable(&amp;quot;latitude&amp;quot;, &amp;quot;f4&amp;quot;, (&amp;quot;latitude&amp;quot;,), fill_value=np.nan)&lt;br /&gt;
    var_lat.units = &amp;quot;degrees_north&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    var_lon = ncfile.createVariable(&amp;quot;longitude&amp;quot;, &amp;quot;f4&amp;quot;, (&amp;quot;longitude&amp;quot;,), fill_value=np.nan)&lt;br /&gt;
    var_lon.units = &amp;quot;degrees_east&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # Define 3D data variables&lt;br /&gt;
    var_vp = ncfile.createVariable(&amp;quot;vp&amp;quot;, &amp;quot;f4&amp;quot;, (&amp;quot;depth&amp;quot;, &amp;quot;latitude&amp;quot;, &amp;quot;longitude&amp;quot;), fill_value=np.nan)&lt;br /&gt;
    var_vp.units = &amp;quot;m/s&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    var_vs = ncfile.createVariable(&amp;quot;vs&amp;quot;, &amp;quot;f4&amp;quot;, (&amp;quot;depth&amp;quot;, &amp;quot;latitude&amp;quot;, &amp;quot;longitude&amp;quot;), fill_value=np.nan)&lt;br /&gt;
    var_vs.units = &amp;quot;m/s&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    var_rho = ncfile.createVariable(&amp;quot;rho&amp;quot;, &amp;quot;f4&amp;quot;, (&amp;quot;depth&amp;quot;, &amp;quot;latitude&amp;quot;, &amp;quot;longitude&amp;quot;), fill_value=np.nan)&lt;br /&gt;
    var_rho.units = &amp;quot;kg/m^3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # Assign values&lt;br /&gt;
    var_depth[:] = zlist&lt;br /&gt;
    var_lat[:] = ylist&lt;br /&gt;
    var_lon[:] = xlist&lt;br /&gt;
&lt;br /&gt;
    var_vp[:] = vp_data&lt;br /&gt;
    var_vs[:] = vs_data&lt;br /&gt;
    var_rho[:] = rho_data&lt;br /&gt;
&lt;br /&gt;
## All done&lt;br /&gt;
print(f&amp;quot;NetCDF file &#039;{output_nc}&#039; successfully written.&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== plots ==&lt;br /&gt;
&lt;br /&gt;
shakeout2, horizontal vs slice at 0m, 200m, 700m&lt;br /&gt;
{|&lt;br /&gt;
| [[FILE:shakeout2_0m.png|thumb|400px|shakeout2 0m]] &lt;br /&gt;
| [[FILE:shakeout2_200m.png|thumb|400px|shakeout2 200m]]&lt;br /&gt;
| [[FILE:shakeout2_700m.png|thumb|400px|shakeout2 700m]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
cvmsi,  horizontal vs slice at 0m, 200m, 700m&lt;br /&gt;
{|&lt;br /&gt;
| [[FILE:cvmsi_0m.png|thumb|400px|cvmsi 0m]] &lt;br /&gt;
| [[FILE:cvmsi_200m.png|thumb|400px|cvmsi 200m]] &lt;br /&gt;
| [[FILE:cvmsi_700m.png|thumb|400px|cvmsi 700m]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
shakeout2, within basin&lt;br /&gt;
{|&lt;br /&gt;
| [[FILE:shakeout2_profile_in0.png|thumb|400px|shakeout profile in0]] &lt;br /&gt;
| [[FILE:shakeout2_profile_in1.png|thumb|400px|shakeout2 profile in1]] &lt;br /&gt;
| [[FILE:shakeout2_profile_in2.png|thumb|400px|shakeout2 profile in2]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
shakeout2, outside of basin&lt;br /&gt;
{|&lt;br /&gt;
| [[FILE:shakeout2_profile_out0.png|thumb|400px|shakeout profile out0]] &lt;br /&gt;
| [[FILE:shakeout2_profile_out1.png|thumb|400px|shakeout2 profile out1]] &lt;br /&gt;
| [[FILE:shakeout2_profile_out2.png|thumb|400px|shakeout2 profile out2]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
cvmsi, within basin&lt;br /&gt;
{|&lt;br /&gt;
| [[FILE:shakeout2_profile_in0.png|thumb|400px|shakeout profile in0]] &lt;br /&gt;
| [[FILE:shakeout2_profile_in1.png|thumb|400px|shakeout2 profile in1]] &lt;br /&gt;
| [[FILE:shakeout2_profile_in2.png|thumb|400px|shakeout2 profile in2]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
cvmsi, outside of basin&lt;br /&gt;
{|&lt;br /&gt;
| [[FILE:shakeout2_profile_out0.png|thumb|400px|shakeout profile out0]] &lt;br /&gt;
| [[FILE:shakeout2_profile_out1.png|thumb|400px|shakeout2 profile out1]] &lt;br /&gt;
| [[FILE:shakeout2_profile_out2.png|thumb|400px|shakeout2 profile out2]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Related Links ==&lt;br /&gt;
*[[Main Page]]&lt;br /&gt;
*[[UCVM]]&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=UCVM_shakeout2_velocity_model&amp;diff=31037</id>
		<title>UCVM shakeout2 velocity model</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=UCVM_shakeout2_velocity_model&amp;diff=31037"/>
		<updated>2026-10-05T22:58:55Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* Related Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model overview ==&lt;br /&gt;
&lt;br /&gt;
The shakeout2 velocity model for the ShakeOut Scenario 2.0 is based on CVM-S4.26.M01(with embedded GTL layer for basin regions) and&lt;br /&gt;
GTL Tapering for all non-basin area.  &lt;br /&gt;
&lt;br /&gt;
Tapering&#039;s z range is from 0m to 700m,  and material property floors used are vs=200m,  vp=500m and density=200m&lt;br /&gt;
a customized z coordinates list is pre-defined&lt;br /&gt;
&lt;br /&gt;
four corners:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mesh dimensions: 516 x 468 x 152&lt;br /&gt;
&lt;br /&gt;
Grid 4 corners:&lt;br /&gt;
  -120.028425 31.874269&lt;br /&gt;
  -114.584135 31.887394&lt;br /&gt;
  -120.181534 36.079919&lt;br /&gt;
  -114.461905 36.095287&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating the Data files with ucvm2mesh ==&lt;br /&gt;
&lt;br /&gt;
UCVM&#039;s ucvm2mesh is used to generate 3 binary mesh data files: vs, vp and density for ROI&lt;br /&gt;
&lt;br /&gt;
In &#039;debug mode&#039;, 3 coordinate lists are created: one for the lats, the lons and the z depths.&lt;br /&gt;
&lt;br /&gt;
With these data files and lists, a simple NetCDF file is created&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh configuration file: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# List of CVMs to query&lt;br /&gt;
ucvmlist=cvmsi,elygtl:taper&lt;br /&gt;
&lt;br /&gt;
# (optional) zranges: -Z zmin,zmax &lt;br /&gt;
min_zrange=0.0&lt;br /&gt;
max_zrange=700.0&lt;br /&gt;
&lt;br /&gt;
# (optional) floors: -L vs_floor,vp_floor,density_floor&lt;br /&gt;
vs_floor=200.0&lt;br /&gt;
vp_floor=500.0&lt;br /&gt;
density_floor=200.0&lt;br /&gt;
&lt;br /&gt;
# UCVM conf file&lt;br /&gt;
ucvmconf=YOUR_UCVM_INSTALL_PATH/conf/ucvm.conf&lt;br /&gt;
&lt;br /&gt;
# Gridding cell: CENTER or VERTEX &lt;br /&gt;
gridtype=CENTER&lt;br /&gt;
&lt;br /&gt;
# Spacing of cells (m)&lt;br /&gt;
spacing=1000.0&lt;br /&gt;
# (optional) Spacing of z depth (m)&lt;br /&gt;
# if not set, z_spacing = spacing &lt;br /&gt;
#z_spacing = 500.0&lt;br /&gt;
&lt;br /&gt;
# (optional) Allow varying z depth&lt;br /&gt;
# format: 1 row 1 target depth &lt;br /&gt;
z_file = so2_zlist&lt;br /&gt;
&lt;br /&gt;
# (optional) output latitudes filename&lt;br /&gt;
y_file = so2_ylist&lt;br /&gt;
&lt;br /&gt;
# (optional) output longitudes filename&lt;br /&gt;
x_file = so2_xlist&lt;br /&gt;
&lt;br /&gt;
# Projection&lt;br /&gt;
proj=+proj=utm +datum=WGS84 +zone=11&lt;br /&gt;
#to rotate, rot=-39.9&lt;br /&gt;
rot=0&lt;br /&gt;
&lt;br /&gt;
# Origin &lt;br /&gt;
# x,y: latlon&lt;br /&gt;
# z: depth (m)&lt;br /&gt;
x0=-120.033556&lt;br /&gt;
y0=31.869638&lt;br /&gt;
z0=0.0&lt;br /&gt;
&lt;br /&gt;
# Number of cells along each dim&lt;br /&gt;
nx=516&lt;br /&gt;
ny=468&lt;br /&gt;
nz=152&lt;br /&gt;
# how to determine distance in meter for each dim&lt;br /&gt;
# x = nx * spacing&lt;br /&gt;
# y = ny * spacing&lt;br /&gt;
# z = nz * (spacing or z_spacing), or = z_file[idx])&lt;br /&gt;
&lt;br /&gt;
# Partitioning of grid among processors&lt;br /&gt;
# relevant to chunking, should be divisible into nx,ny,nz&lt;br /&gt;
px=2&lt;br /&gt;
py=2&lt;br /&gt;
pz=2&lt;br /&gt;
&lt;br /&gt;
# Vs/Vp minimum&lt;br /&gt;
vp_min=0&lt;br /&gt;
vs_min=0&lt;br /&gt;
&lt;br /&gt;
# Mesh grid files&lt;br /&gt;
meshfile=so2.media&lt;br /&gt;
gridfile=so2.grid&lt;br /&gt;
&lt;br /&gt;
# Mesh Grid formats&lt;br /&gt;
# IJK-12, IJK-20, IJK-32 : single triplet file&lt;br /&gt;
# SORD : separate vs, vp, rho files&lt;br /&gt;
meshtype=SORD&lt;br /&gt;
&lt;br /&gt;
# Location of scratch dir&lt;br /&gt;
scratch=./scratch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh z depths list:&lt;br /&gt;
[[Media:so2_zlist.txt|so2_zlist]]&lt;br /&gt;
&lt;br /&gt;
latitude coordinate list:&lt;br /&gt;
[[Media:so2_xlist.txt|so2_xlist]]&lt;br /&gt;
&lt;br /&gt;
longitude coordinate list:&lt;br /&gt;
[[Media:so2_ylist.txt|so2_ylist]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh command used:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ucvm2mesh -f so2.conf &amp;gt; so2.out 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
and if so2.grid is known,&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh -f so2.conf -g so2.grid &amp;gt; so2.out 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Create NetCDF mesh data ==&lt;br /&gt;
&lt;br /&gt;
make_nc.py&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  &lt;br /&gt;
#!/usr/bin/env python3&lt;br /&gt;
&lt;br /&gt;
import numpy as np&lt;br /&gt;
from netCDF4 import Dataset&lt;br /&gt;
&lt;br /&gt;
## Update filenames to match your local paths&lt;br /&gt;
file_zlist = &amp;quot;so2_zlist&amp;quot;&lt;br /&gt;
file_ylist = &amp;quot;so2_ylist&amp;quot;&lt;br /&gt;
file_xlist = &amp;quot;so2_xlist&amp;quot;&lt;br /&gt;
&lt;br /&gt;
file_vp = &amp;quot;so2.mesh_vp&amp;quot;&lt;br /&gt;
file_vs = &amp;quot;so2.mesh_vs&amp;quot;&lt;br /&gt;
file_rho = &amp;quot;so2.mesh_rho&amp;quot;&lt;br /&gt;
&lt;br /&gt;
output_nc = &amp;quot;model_CVMSI_taper_so2.nc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
## Read ASCII coordinate files&lt;br /&gt;
zlist = np.loadtxt(file_zlist, dtype=np.float32)&lt;br /&gt;
ylist = np.loadtxt(file_ylist, dtype=np.float32)&lt;br /&gt;
xlist = np.loadtxt(file_xlist, dtype=np.float32)&lt;br /&gt;
&lt;br /&gt;
# Extract dimension sizes dynamically from coordinate lists&lt;br /&gt;
n_depth = len(zlist)      # Expecting 210&lt;br /&gt;
n_lat = len(ylist)        # Expecting 1251&lt;br /&gt;
n_lon = len(xlist)        # Expecting 1301&lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;n_depth is &#039;{n_depth}&#039;&amp;quot;)&lt;br /&gt;
print(f&amp;quot;n_lat is &#039;{n_lat}&#039;&amp;quot;)&lt;br /&gt;
print(f&amp;quot;n_lon is &#039;{n_lon}&#039;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
## Read raw binary 3D data files and reshape to (depth, latitude, longitude)&lt;br /&gt;
# Note: Adjust byteorder if needed (e.g., dtype=&#039;&amp;gt;f4&#039; for big-endian)&lt;br /&gt;
vp_data = np.fromfile(file_vp, dtype=np.float32).reshape((n_depth, n_lat, n_lon))&lt;br /&gt;
vs_data = np.fromfile(file_vs, dtype=np.float32).reshape((n_depth, n_lat, n_lon))&lt;br /&gt;
rho_data = np.fromfile(file_rho, dtype=np.float32).reshape((n_depth, n_lat, n_lon))&lt;br /&gt;
vp_cnt = vp_data.size&lt;br /&gt;
vs_cnt = vs_data.size&lt;br /&gt;
rho_cnt = rho_data.size&lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;vp_cnt is &#039;{vp_cnt}&#039;&amp;quot;)&lt;br /&gt;
print(f&amp;quot;vs_cnt is &#039;{vs_cnt}&#039;&amp;quot;)&lt;br /&gt;
print(f&amp;quot;rho_cnt is &#039;{rho_cnt}&#039;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
#print(f&amp;quot;vs..&#039;{vs_data[100][100][100]}&#039;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
## Create and write NetCDF4 dataset&lt;br /&gt;
with Dataset(output_nc, mode=&amp;quot;w&amp;quot;, format=&amp;quot;NETCDF4&amp;quot;) as ncfile:&lt;br /&gt;
&lt;br /&gt;
    # Define dimensions&lt;br /&gt;
    ncfile.createDimension(&amp;quot;depth&amp;quot;, n_depth)&lt;br /&gt;
    ncfile.createDimension(&amp;quot;latitude&amp;quot;, n_lat)&lt;br /&gt;
    ncfile.createDimension(&amp;quot;longitude&amp;quot;, n_lon)&lt;br /&gt;
&lt;br /&gt;
    # Define coordinate variables&lt;br /&gt;
    var_depth = ncfile.createVariable(&amp;quot;depth&amp;quot;, &amp;quot;f4&amp;quot;, (&amp;quot;depth&amp;quot;,), fill_value=np.nan)&lt;br /&gt;
    var_depth.units = &amp;quot;meters&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    var_lat = ncfile.createVariable(&amp;quot;latitude&amp;quot;, &amp;quot;f4&amp;quot;, (&amp;quot;latitude&amp;quot;,), fill_value=np.nan)&lt;br /&gt;
    var_lat.units = &amp;quot;degrees_north&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    var_lon = ncfile.createVariable(&amp;quot;longitude&amp;quot;, &amp;quot;f4&amp;quot;, (&amp;quot;longitude&amp;quot;,), fill_value=np.nan)&lt;br /&gt;
    var_lon.units = &amp;quot;degrees_east&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # Define 3D data variables&lt;br /&gt;
    var_vp = ncfile.createVariable(&amp;quot;vp&amp;quot;, &amp;quot;f4&amp;quot;, (&amp;quot;depth&amp;quot;, &amp;quot;latitude&amp;quot;, &amp;quot;longitude&amp;quot;), fill_value=np.nan)&lt;br /&gt;
    var_vp.units = &amp;quot;m/s&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    var_vs = ncfile.createVariable(&amp;quot;vs&amp;quot;, &amp;quot;f4&amp;quot;, (&amp;quot;depth&amp;quot;, &amp;quot;latitude&amp;quot;, &amp;quot;longitude&amp;quot;), fill_value=np.nan)&lt;br /&gt;
    var_vs.units = &amp;quot;m/s&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    var_rho = ncfile.createVariable(&amp;quot;rho&amp;quot;, &amp;quot;f4&amp;quot;, (&amp;quot;depth&amp;quot;, &amp;quot;latitude&amp;quot;, &amp;quot;longitude&amp;quot;), fill_value=np.nan)&lt;br /&gt;
    var_rho.units = &amp;quot;kg/m^3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # Assign values&lt;br /&gt;
    var_depth[:] = zlist&lt;br /&gt;
    var_lat[:] = ylist&lt;br /&gt;
    var_lon[:] = xlist&lt;br /&gt;
&lt;br /&gt;
    var_vp[:] = vp_data&lt;br /&gt;
    var_vs[:] = vs_data&lt;br /&gt;
    var_rho[:] = rho_data&lt;br /&gt;
&lt;br /&gt;
## All done&lt;br /&gt;
print(f&amp;quot;NetCDF file &#039;{output_nc}&#039; successfully written.&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== plots ==&lt;br /&gt;
&lt;br /&gt;
== Related Links ==&lt;br /&gt;
*[[Main Page]]&lt;br /&gt;
*[[UCVM]]&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=UCVM_shakeout2_velocity_model&amp;diff=31036</id>
		<title>UCVM shakeout2 velocity model</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=UCVM_shakeout2_velocity_model&amp;diff=31036"/>
		<updated>2026-10-05T22:49:43Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* Create NetCDF mesh data */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model overview ==&lt;br /&gt;
&lt;br /&gt;
The shakeout2 velocity model for the ShakeOut Scenario 2.0 is based on CVM-S4.26.M01(with embedded GTL layer for basin regions) and&lt;br /&gt;
GTL Tapering for all non-basin area.  &lt;br /&gt;
&lt;br /&gt;
Tapering&#039;s z range is from 0m to 700m,  and material property floors used are vs=200m,  vp=500m and density=200m&lt;br /&gt;
a customized z coordinates list is pre-defined&lt;br /&gt;
&lt;br /&gt;
four corners:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mesh dimensions: 516 x 468 x 152&lt;br /&gt;
&lt;br /&gt;
Grid 4 corners:&lt;br /&gt;
  -120.028425 31.874269&lt;br /&gt;
  -114.584135 31.887394&lt;br /&gt;
  -120.181534 36.079919&lt;br /&gt;
  -114.461905 36.095287&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating the Data files with ucvm2mesh ==&lt;br /&gt;
&lt;br /&gt;
UCVM&#039;s ucvm2mesh is used to generate 3 binary mesh data files: vs, vp and density for ROI&lt;br /&gt;
&lt;br /&gt;
In &#039;debug mode&#039;, 3 coordinate lists are created: one for the lats, the lons and the z depths.&lt;br /&gt;
&lt;br /&gt;
With these data files and lists, a simple NetCDF file is created&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh configuration file: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# List of CVMs to query&lt;br /&gt;
ucvmlist=cvmsi,elygtl:taper&lt;br /&gt;
&lt;br /&gt;
# (optional) zranges: -Z zmin,zmax &lt;br /&gt;
min_zrange=0.0&lt;br /&gt;
max_zrange=700.0&lt;br /&gt;
&lt;br /&gt;
# (optional) floors: -L vs_floor,vp_floor,density_floor&lt;br /&gt;
vs_floor=200.0&lt;br /&gt;
vp_floor=500.0&lt;br /&gt;
density_floor=200.0&lt;br /&gt;
&lt;br /&gt;
# UCVM conf file&lt;br /&gt;
ucvmconf=YOUR_UCVM_INSTALL_PATH/conf/ucvm.conf&lt;br /&gt;
&lt;br /&gt;
# Gridding cell: CENTER or VERTEX &lt;br /&gt;
gridtype=CENTER&lt;br /&gt;
&lt;br /&gt;
# Spacing of cells (m)&lt;br /&gt;
spacing=1000.0&lt;br /&gt;
# (optional) Spacing of z depth (m)&lt;br /&gt;
# if not set, z_spacing = spacing &lt;br /&gt;
#z_spacing = 500.0&lt;br /&gt;
&lt;br /&gt;
# (optional) Allow varying z depth&lt;br /&gt;
# format: 1 row 1 target depth &lt;br /&gt;
z_file = so2_zlist&lt;br /&gt;
&lt;br /&gt;
# (optional) output latitudes filename&lt;br /&gt;
y_file = so2_ylist&lt;br /&gt;
&lt;br /&gt;
# (optional) output longitudes filename&lt;br /&gt;
x_file = so2_xlist&lt;br /&gt;
&lt;br /&gt;
# Projection&lt;br /&gt;
proj=+proj=utm +datum=WGS84 +zone=11&lt;br /&gt;
#to rotate, rot=-39.9&lt;br /&gt;
rot=0&lt;br /&gt;
&lt;br /&gt;
# Origin &lt;br /&gt;
# x,y: latlon&lt;br /&gt;
# z: depth (m)&lt;br /&gt;
x0=-120.033556&lt;br /&gt;
y0=31.869638&lt;br /&gt;
z0=0.0&lt;br /&gt;
&lt;br /&gt;
# Number of cells along each dim&lt;br /&gt;
nx=516&lt;br /&gt;
ny=468&lt;br /&gt;
nz=152&lt;br /&gt;
# how to determine distance in meter for each dim&lt;br /&gt;
# x = nx * spacing&lt;br /&gt;
# y = ny * spacing&lt;br /&gt;
# z = nz * (spacing or z_spacing), or = z_file[idx])&lt;br /&gt;
&lt;br /&gt;
# Partitioning of grid among processors&lt;br /&gt;
# relevant to chunking, should be divisible into nx,ny,nz&lt;br /&gt;
px=2&lt;br /&gt;
py=2&lt;br /&gt;
pz=2&lt;br /&gt;
&lt;br /&gt;
# Vs/Vp minimum&lt;br /&gt;
vp_min=0&lt;br /&gt;
vs_min=0&lt;br /&gt;
&lt;br /&gt;
# Mesh grid files&lt;br /&gt;
meshfile=so2.media&lt;br /&gt;
gridfile=so2.grid&lt;br /&gt;
&lt;br /&gt;
# Mesh Grid formats&lt;br /&gt;
# IJK-12, IJK-20, IJK-32 : single triplet file&lt;br /&gt;
# SORD : separate vs, vp, rho files&lt;br /&gt;
meshtype=SORD&lt;br /&gt;
&lt;br /&gt;
# Location of scratch dir&lt;br /&gt;
scratch=./scratch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh z depths list:&lt;br /&gt;
[[Media:so2_zlist.txt|so2_zlist]]&lt;br /&gt;
&lt;br /&gt;
latitude coordinate list:&lt;br /&gt;
[[Media:so2_xlist.txt|so2_xlist]]&lt;br /&gt;
&lt;br /&gt;
longitude coordinate list:&lt;br /&gt;
[[Media:so2_ylist.txt|so2_ylist]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh command used:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ucvm2mesh -f so2.conf &amp;gt; so2.out 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
and if so2.grid is known,&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh -f so2.conf -g so2.grid &amp;gt; so2.out 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Create NetCDF mesh data ==&lt;br /&gt;
&lt;br /&gt;
make_nc.py&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  &lt;br /&gt;
#!/usr/bin/env python3&lt;br /&gt;
&lt;br /&gt;
import numpy as np&lt;br /&gt;
from netCDF4 import Dataset&lt;br /&gt;
&lt;br /&gt;
## Update filenames to match your local paths&lt;br /&gt;
file_zlist = &amp;quot;so2_zlist&amp;quot;&lt;br /&gt;
file_ylist = &amp;quot;so2_ylist&amp;quot;&lt;br /&gt;
file_xlist = &amp;quot;so2_xlist&amp;quot;&lt;br /&gt;
&lt;br /&gt;
file_vp = &amp;quot;so2.mesh_vp&amp;quot;&lt;br /&gt;
file_vs = &amp;quot;so2.mesh_vs&amp;quot;&lt;br /&gt;
file_rho = &amp;quot;so2.mesh_rho&amp;quot;&lt;br /&gt;
&lt;br /&gt;
output_nc = &amp;quot;model_CVMSI_taper_so2.nc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
## Read ASCII coordinate files&lt;br /&gt;
zlist = np.loadtxt(file_zlist, dtype=np.float32)&lt;br /&gt;
ylist = np.loadtxt(file_ylist, dtype=np.float32)&lt;br /&gt;
xlist = np.loadtxt(file_xlist, dtype=np.float32)&lt;br /&gt;
&lt;br /&gt;
# Extract dimension sizes dynamically from coordinate lists&lt;br /&gt;
n_depth = len(zlist)      # Expecting 210&lt;br /&gt;
n_lat = len(ylist)        # Expecting 1251&lt;br /&gt;
n_lon = len(xlist)        # Expecting 1301&lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;n_depth is &#039;{n_depth}&#039;&amp;quot;)&lt;br /&gt;
print(f&amp;quot;n_lat is &#039;{n_lat}&#039;&amp;quot;)&lt;br /&gt;
print(f&amp;quot;n_lon is &#039;{n_lon}&#039;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
## Read raw binary 3D data files and reshape to (depth, latitude, longitude)&lt;br /&gt;
# Note: Adjust byteorder if needed (e.g., dtype=&#039;&amp;gt;f4&#039; for big-endian)&lt;br /&gt;
vp_data = np.fromfile(file_vp, dtype=np.float32).reshape((n_depth, n_lat, n_lon))&lt;br /&gt;
vs_data = np.fromfile(file_vs, dtype=np.float32).reshape((n_depth, n_lat, n_lon))&lt;br /&gt;
rho_data = np.fromfile(file_rho, dtype=np.float32).reshape((n_depth, n_lat, n_lon))&lt;br /&gt;
vp_cnt = vp_data.size&lt;br /&gt;
vs_cnt = vs_data.size&lt;br /&gt;
rho_cnt = rho_data.size&lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;vp_cnt is &#039;{vp_cnt}&#039;&amp;quot;)&lt;br /&gt;
print(f&amp;quot;vs_cnt is &#039;{vs_cnt}&#039;&amp;quot;)&lt;br /&gt;
print(f&amp;quot;rho_cnt is &#039;{rho_cnt}&#039;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
#print(f&amp;quot;vs..&#039;{vs_data[100][100][100]}&#039;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
## Create and write NetCDF4 dataset&lt;br /&gt;
with Dataset(output_nc, mode=&amp;quot;w&amp;quot;, format=&amp;quot;NETCDF4&amp;quot;) as ncfile:&lt;br /&gt;
&lt;br /&gt;
    # Define dimensions&lt;br /&gt;
    ncfile.createDimension(&amp;quot;depth&amp;quot;, n_depth)&lt;br /&gt;
    ncfile.createDimension(&amp;quot;latitude&amp;quot;, n_lat)&lt;br /&gt;
    ncfile.createDimension(&amp;quot;longitude&amp;quot;, n_lon)&lt;br /&gt;
&lt;br /&gt;
    # Define coordinate variables&lt;br /&gt;
    var_depth = ncfile.createVariable(&amp;quot;depth&amp;quot;, &amp;quot;f4&amp;quot;, (&amp;quot;depth&amp;quot;,), fill_value=np.nan)&lt;br /&gt;
    var_depth.units = &amp;quot;meters&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    var_lat = ncfile.createVariable(&amp;quot;latitude&amp;quot;, &amp;quot;f4&amp;quot;, (&amp;quot;latitude&amp;quot;,), fill_value=np.nan)&lt;br /&gt;
    var_lat.units = &amp;quot;degrees_north&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    var_lon = ncfile.createVariable(&amp;quot;longitude&amp;quot;, &amp;quot;f4&amp;quot;, (&amp;quot;longitude&amp;quot;,), fill_value=np.nan)&lt;br /&gt;
    var_lon.units = &amp;quot;degrees_east&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # Define 3D data variables&lt;br /&gt;
    var_vp = ncfile.createVariable(&amp;quot;vp&amp;quot;, &amp;quot;f4&amp;quot;, (&amp;quot;depth&amp;quot;, &amp;quot;latitude&amp;quot;, &amp;quot;longitude&amp;quot;), fill_value=np.nan)&lt;br /&gt;
    var_vp.units = &amp;quot;m/s&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    var_vs = ncfile.createVariable(&amp;quot;vs&amp;quot;, &amp;quot;f4&amp;quot;, (&amp;quot;depth&amp;quot;, &amp;quot;latitude&amp;quot;, &amp;quot;longitude&amp;quot;), fill_value=np.nan)&lt;br /&gt;
    var_vs.units = &amp;quot;m/s&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    var_rho = ncfile.createVariable(&amp;quot;rho&amp;quot;, &amp;quot;f4&amp;quot;, (&amp;quot;depth&amp;quot;, &amp;quot;latitude&amp;quot;, &amp;quot;longitude&amp;quot;), fill_value=np.nan)&lt;br /&gt;
    var_rho.units = &amp;quot;kg/m^3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # Assign values&lt;br /&gt;
    var_depth[:] = zlist&lt;br /&gt;
    var_lat[:] = ylist&lt;br /&gt;
    var_lon[:] = xlist&lt;br /&gt;
&lt;br /&gt;
    var_vp[:] = vp_data&lt;br /&gt;
    var_vs[:] = vs_data&lt;br /&gt;
    var_rho[:] = rho_data&lt;br /&gt;
&lt;br /&gt;
## All done&lt;br /&gt;
print(f&amp;quot;NetCDF file &#039;{output_nc}&#039; successfully written.&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related Links ==&lt;br /&gt;
*[[Main Page]]&lt;br /&gt;
*[[UCVM]]&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=UCVM_shakeout2_velocity_model&amp;diff=31035</id>
		<title>UCVM shakeout2 velocity model</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=UCVM_shakeout2_velocity_model&amp;diff=31035"/>
		<updated>2026-10-05T22:14:29Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* Model overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model overview ==&lt;br /&gt;
&lt;br /&gt;
The shakeout2 velocity model for the ShakeOut Scenario 2.0 is based on CVM-S4.26.M01(with embedded GTL layer for basin regions) and&lt;br /&gt;
GTL Tapering for all non-basin area.  &lt;br /&gt;
&lt;br /&gt;
Tapering&#039;s z range is from 0m to 700m,  and material property floors used are vs=200m,  vp=500m and density=200m&lt;br /&gt;
a customized z coordinates list is pre-defined&lt;br /&gt;
&lt;br /&gt;
four corners:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mesh dimensions: 516 x 468 x 152&lt;br /&gt;
&lt;br /&gt;
Grid 4 corners:&lt;br /&gt;
  -120.028425 31.874269&lt;br /&gt;
  -114.584135 31.887394&lt;br /&gt;
  -120.181534 36.079919&lt;br /&gt;
  -114.461905 36.095287&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating the Data files with ucvm2mesh ==&lt;br /&gt;
&lt;br /&gt;
UCVM&#039;s ucvm2mesh is used to generate 3 binary mesh data files: vs, vp and density for ROI&lt;br /&gt;
&lt;br /&gt;
In &#039;debug mode&#039;, 3 coordinate lists are created: one for the lats, the lons and the z depths.&lt;br /&gt;
&lt;br /&gt;
With these data files and lists, a simple NetCDF file is created&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh configuration file: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# List of CVMs to query&lt;br /&gt;
ucvmlist=cvmsi,elygtl:taper&lt;br /&gt;
&lt;br /&gt;
# (optional) zranges: -Z zmin,zmax &lt;br /&gt;
min_zrange=0.0&lt;br /&gt;
max_zrange=700.0&lt;br /&gt;
&lt;br /&gt;
# (optional) floors: -L vs_floor,vp_floor,density_floor&lt;br /&gt;
vs_floor=200.0&lt;br /&gt;
vp_floor=500.0&lt;br /&gt;
density_floor=200.0&lt;br /&gt;
&lt;br /&gt;
# UCVM conf file&lt;br /&gt;
ucvmconf=YOUR_UCVM_INSTALL_PATH/conf/ucvm.conf&lt;br /&gt;
&lt;br /&gt;
# Gridding cell: CENTER or VERTEX &lt;br /&gt;
gridtype=CENTER&lt;br /&gt;
&lt;br /&gt;
# Spacing of cells (m)&lt;br /&gt;
spacing=1000.0&lt;br /&gt;
# (optional) Spacing of z depth (m)&lt;br /&gt;
# if not set, z_spacing = spacing &lt;br /&gt;
#z_spacing = 500.0&lt;br /&gt;
&lt;br /&gt;
# (optional) Allow varying z depth&lt;br /&gt;
# format: 1 row 1 target depth &lt;br /&gt;
z_file = so2_zlist&lt;br /&gt;
&lt;br /&gt;
# (optional) output latitudes filename&lt;br /&gt;
y_file = so2_ylist&lt;br /&gt;
&lt;br /&gt;
# (optional) output longitudes filename&lt;br /&gt;
x_file = so2_xlist&lt;br /&gt;
&lt;br /&gt;
# Projection&lt;br /&gt;
proj=+proj=utm +datum=WGS84 +zone=11&lt;br /&gt;
#to rotate, rot=-39.9&lt;br /&gt;
rot=0&lt;br /&gt;
&lt;br /&gt;
# Origin &lt;br /&gt;
# x,y: latlon&lt;br /&gt;
# z: depth (m)&lt;br /&gt;
x0=-120.033556&lt;br /&gt;
y0=31.869638&lt;br /&gt;
z0=0.0&lt;br /&gt;
&lt;br /&gt;
# Number of cells along each dim&lt;br /&gt;
nx=516&lt;br /&gt;
ny=468&lt;br /&gt;
nz=152&lt;br /&gt;
# how to determine distance in meter for each dim&lt;br /&gt;
# x = nx * spacing&lt;br /&gt;
# y = ny * spacing&lt;br /&gt;
# z = nz * (spacing or z_spacing), or = z_file[idx])&lt;br /&gt;
&lt;br /&gt;
# Partitioning of grid among processors&lt;br /&gt;
# relevant to chunking, should be divisible into nx,ny,nz&lt;br /&gt;
px=2&lt;br /&gt;
py=2&lt;br /&gt;
pz=2&lt;br /&gt;
&lt;br /&gt;
# Vs/Vp minimum&lt;br /&gt;
vp_min=0&lt;br /&gt;
vs_min=0&lt;br /&gt;
&lt;br /&gt;
# Mesh grid files&lt;br /&gt;
meshfile=so2.media&lt;br /&gt;
gridfile=so2.grid&lt;br /&gt;
&lt;br /&gt;
# Mesh Grid formats&lt;br /&gt;
# IJK-12, IJK-20, IJK-32 : single triplet file&lt;br /&gt;
# SORD : separate vs, vp, rho files&lt;br /&gt;
meshtype=SORD&lt;br /&gt;
&lt;br /&gt;
# Location of scratch dir&lt;br /&gt;
scratch=./scratch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh z depths list:&lt;br /&gt;
[[Media:so2_zlist.txt|so2_zlist]]&lt;br /&gt;
&lt;br /&gt;
latitude coordinate list:&lt;br /&gt;
[[Media:so2_xlist.txt|so2_xlist]]&lt;br /&gt;
&lt;br /&gt;
longitude coordinate list:&lt;br /&gt;
[[Media:so2_ylist.txt|so2_ylist]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh command used:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ucvm2mesh -f so2.conf &amp;gt; so2.out 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
and if so2.grid is known,&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh -f so2.conf -g so2.grid &amp;gt; so2.out 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Create NetCDF mesh data ==&lt;br /&gt;
&lt;br /&gt;
== Related Links ==&lt;br /&gt;
*[[Main Page]]&lt;br /&gt;
*[[UCVM]]&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=UCVM_shakeout2_velocity_model&amp;diff=31034</id>
		<title>UCVM shakeout2 velocity model</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=UCVM_shakeout2_velocity_model&amp;diff=31034"/>
		<updated>2026-10-05T22:12:34Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* Creating the NetCDF model mesh */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model overview ==&lt;br /&gt;
&lt;br /&gt;
The shakeout2 velocity model for the ShakeOut Scenario 2.0 is based on CVM-S4.26.M01(with embedded GTL layer for basin regions) and&lt;br /&gt;
GTL Tapering for all non-basin area.  &lt;br /&gt;
&lt;br /&gt;
Tapering&#039;s z range is from 0m to 700m,  and material property floors used are vs=200m,  vp=500m and density=200m&lt;br /&gt;
a customized z coordinates list is pre-defined&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating the Data files with ucvm2mesh ==&lt;br /&gt;
&lt;br /&gt;
UCVM&#039;s ucvm2mesh is used to generate 3 binary mesh data files: vs, vp and density for ROI&lt;br /&gt;
&lt;br /&gt;
In &#039;debug mode&#039;, 3 coordinate lists are created: one for the lats, the lons and the z depths.&lt;br /&gt;
&lt;br /&gt;
With these data files and lists, a simple NetCDF file is created&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh configuration file: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# List of CVMs to query&lt;br /&gt;
ucvmlist=cvmsi,elygtl:taper&lt;br /&gt;
&lt;br /&gt;
# (optional) zranges: -Z zmin,zmax &lt;br /&gt;
min_zrange=0.0&lt;br /&gt;
max_zrange=700.0&lt;br /&gt;
&lt;br /&gt;
# (optional) floors: -L vs_floor,vp_floor,density_floor&lt;br /&gt;
vs_floor=200.0&lt;br /&gt;
vp_floor=500.0&lt;br /&gt;
density_floor=200.0&lt;br /&gt;
&lt;br /&gt;
# UCVM conf file&lt;br /&gt;
ucvmconf=YOUR_UCVM_INSTALL_PATH/conf/ucvm.conf&lt;br /&gt;
&lt;br /&gt;
# Gridding cell: CENTER or VERTEX &lt;br /&gt;
gridtype=CENTER&lt;br /&gt;
&lt;br /&gt;
# Spacing of cells (m)&lt;br /&gt;
spacing=1000.0&lt;br /&gt;
# (optional) Spacing of z depth (m)&lt;br /&gt;
# if not set, z_spacing = spacing &lt;br /&gt;
#z_spacing = 500.0&lt;br /&gt;
&lt;br /&gt;
# (optional) Allow varying z depth&lt;br /&gt;
# format: 1 row 1 target depth &lt;br /&gt;
z_file = so2_zlist&lt;br /&gt;
&lt;br /&gt;
# (optional) output latitudes filename&lt;br /&gt;
y_file = so2_ylist&lt;br /&gt;
&lt;br /&gt;
# (optional) output longitudes filename&lt;br /&gt;
x_file = so2_xlist&lt;br /&gt;
&lt;br /&gt;
# Projection&lt;br /&gt;
proj=+proj=utm +datum=WGS84 +zone=11&lt;br /&gt;
#to rotate, rot=-39.9&lt;br /&gt;
rot=0&lt;br /&gt;
&lt;br /&gt;
# Origin &lt;br /&gt;
# x,y: latlon&lt;br /&gt;
# z: depth (m)&lt;br /&gt;
x0=-120.033556&lt;br /&gt;
y0=31.869638&lt;br /&gt;
z0=0.0&lt;br /&gt;
&lt;br /&gt;
# Number of cells along each dim&lt;br /&gt;
nx=516&lt;br /&gt;
ny=468&lt;br /&gt;
nz=152&lt;br /&gt;
# how to determine distance in meter for each dim&lt;br /&gt;
# x = nx * spacing&lt;br /&gt;
# y = ny * spacing&lt;br /&gt;
# z = nz * (spacing or z_spacing), or = z_file[idx])&lt;br /&gt;
&lt;br /&gt;
# Partitioning of grid among processors&lt;br /&gt;
# relevant to chunking, should be divisible into nx,ny,nz&lt;br /&gt;
px=2&lt;br /&gt;
py=2&lt;br /&gt;
pz=2&lt;br /&gt;
&lt;br /&gt;
# Vs/Vp minimum&lt;br /&gt;
vp_min=0&lt;br /&gt;
vs_min=0&lt;br /&gt;
&lt;br /&gt;
# Mesh grid files&lt;br /&gt;
meshfile=so2.media&lt;br /&gt;
gridfile=so2.grid&lt;br /&gt;
&lt;br /&gt;
# Mesh Grid formats&lt;br /&gt;
# IJK-12, IJK-20, IJK-32 : single triplet file&lt;br /&gt;
# SORD : separate vs, vp, rho files&lt;br /&gt;
meshtype=SORD&lt;br /&gt;
&lt;br /&gt;
# Location of scratch dir&lt;br /&gt;
scratch=./scratch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh z depths list:&lt;br /&gt;
[[Media:so2_zlist.txt|so2_zlist]]&lt;br /&gt;
&lt;br /&gt;
latitude coordinate list:&lt;br /&gt;
[[Media:so2_xlist.txt|so2_xlist]]&lt;br /&gt;
&lt;br /&gt;
longitude coordinate list:&lt;br /&gt;
[[Media:so2_ylist.txt|so2_ylist]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh command used:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ucvm2mesh -f so2.conf &amp;gt; so2.out 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
and if so2.grid is known,&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh -f so2.conf -g so2.grid &amp;gt; so2.out 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Create NetCDF mesh data ==&lt;br /&gt;
&lt;br /&gt;
== Related Links ==&lt;br /&gt;
*[[Main Page]]&lt;br /&gt;
*[[UCVM]]&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=UCVM_shakeout2_velocity_model&amp;diff=31033</id>
		<title>UCVM shakeout2 velocity model</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=UCVM_shakeout2_velocity_model&amp;diff=31033"/>
		<updated>2026-10-05T21:38:59Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* Creating the NetCDF model mesh */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model overview ==&lt;br /&gt;
&lt;br /&gt;
The shakeout2 velocity model for the ShakeOut Scenario 2.0 is based on CVM-S4.26.M01(with embedded GTL layer for basin regions) and&lt;br /&gt;
GTL Tapering for all non-basin area.  &lt;br /&gt;
&lt;br /&gt;
Tapering&#039;s z range is from 0m to 700m,  and material property floors used are vs=200m,  vp=500m and density=200m&lt;br /&gt;
a customized z coordinates list is pre-defined&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating the NetCDF model mesh ==&lt;br /&gt;
&lt;br /&gt;
UCVM&#039;s ucvm2mesh is used to generate 3 binary mesh data files: vs, vp and density for ROI&lt;br /&gt;
&lt;br /&gt;
In &#039;debug mode&#039;, 3 coordinate lists are created: one for the lats, the lons and the z depths.&lt;br /&gt;
&lt;br /&gt;
With these data files and lists, a simple NetCDF file is created&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh configuration file: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# List of CVMs to query&lt;br /&gt;
ucvmlist=cvmsi,elygtl:taper&lt;br /&gt;
&lt;br /&gt;
# (optional) zranges: -Z zmin,zmax &lt;br /&gt;
min_zrange=0.0&lt;br /&gt;
max_zrange=700.0&lt;br /&gt;
&lt;br /&gt;
# (optional) floors: -L vs_floor,vp_floor,density_floor&lt;br /&gt;
vs_floor=200.0&lt;br /&gt;
vp_floor=500.0&lt;br /&gt;
density_floor=200.0&lt;br /&gt;
&lt;br /&gt;
# UCVM conf file&lt;br /&gt;
ucvmconf=YOUR_UCVM_INSTALL_PATH/conf/ucvm.conf&lt;br /&gt;
&lt;br /&gt;
# Gridding cell: CENTER or VERTEX &lt;br /&gt;
gridtype=CENTER&lt;br /&gt;
&lt;br /&gt;
# Spacing of cells (m)&lt;br /&gt;
spacing=1000.0&lt;br /&gt;
# (optional) Spacing of z depth (m)&lt;br /&gt;
# if not set, z_spacing = spacing &lt;br /&gt;
#z_spacing = 500.0&lt;br /&gt;
&lt;br /&gt;
# (optional) Allow varying z depth&lt;br /&gt;
# format: 1 row 1 target depth &lt;br /&gt;
z_file = so2_zlist&lt;br /&gt;
&lt;br /&gt;
# (optional) output latitudes filename&lt;br /&gt;
y_file = so2_ylist&lt;br /&gt;
&lt;br /&gt;
# (optional) output longitudes filename&lt;br /&gt;
x_file = so2_xlist&lt;br /&gt;
&lt;br /&gt;
# Projection&lt;br /&gt;
proj=+proj=utm +datum=WGS84 +zone=11&lt;br /&gt;
#to rotate, rot=-39.9&lt;br /&gt;
rot=0&lt;br /&gt;
&lt;br /&gt;
# Origin &lt;br /&gt;
# x,y: latlon&lt;br /&gt;
# z: depth (m)&lt;br /&gt;
x0=-120.033556&lt;br /&gt;
y0=31.869638&lt;br /&gt;
z0=0.0&lt;br /&gt;
&lt;br /&gt;
# Number of cells along each dim&lt;br /&gt;
nx=516&lt;br /&gt;
ny=468&lt;br /&gt;
nz=152&lt;br /&gt;
# how to determine distance in meter for each dim&lt;br /&gt;
# x = nx * spacing&lt;br /&gt;
# y = ny * spacing&lt;br /&gt;
# z = nz * (spacing or z_spacing), or = z_file[idx])&lt;br /&gt;
&lt;br /&gt;
# Partitioning of grid among processors&lt;br /&gt;
# relevant to chunking, should be divisible into nx,ny,nz&lt;br /&gt;
px=2&lt;br /&gt;
py=2&lt;br /&gt;
pz=2&lt;br /&gt;
&lt;br /&gt;
# Vs/Vp minimum&lt;br /&gt;
vp_min=0&lt;br /&gt;
vs_min=0&lt;br /&gt;
&lt;br /&gt;
# Mesh grid files&lt;br /&gt;
meshfile=so2.media&lt;br /&gt;
gridfile=so2.grid&lt;br /&gt;
&lt;br /&gt;
# Mesh Grid formats&lt;br /&gt;
# IJK-12, IJK-20, IJK-32 : single triplet file&lt;br /&gt;
# SORD : separate vs, vp, rho files&lt;br /&gt;
meshtype=SORD&lt;br /&gt;
&lt;br /&gt;
# Location of scratch dir&lt;br /&gt;
scratch=./scratch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh z depths list:&lt;br /&gt;
[[Media:so2_zlist.txt|so2_zlist]]&lt;br /&gt;
&lt;br /&gt;
latitude coordinate list:&lt;br /&gt;
[[Media:so2_xlist.txt|so2_xlist]]&lt;br /&gt;
&lt;br /&gt;
longitude coordinate list:&lt;br /&gt;
[[Media:so2_ylist.txt|so2_ylist]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh command used:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ucvm2mesh -f so2.conf &amp;gt; so2.out 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
and if so2.grid is known,&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh -f so2.conf -g so2.grid &amp;gt; so2.out 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related Links ==&lt;br /&gt;
*[[Main Page]]&lt;br /&gt;
*[[UCVM]]&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=UCVM_shakeout2_velocity_model&amp;diff=31032</id>
		<title>UCVM shakeout2 velocity model</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=UCVM_shakeout2_velocity_model&amp;diff=31032"/>
		<updated>2026-10-05T20:39:22Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* Creating the NetCDF model mesh */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model overview ==&lt;br /&gt;
&lt;br /&gt;
The shakeout2 velocity model for the ShakeOut Scenario 2.0 is based on CVM-S4.26.M01(with embedded GTL layer for basin regions) and&lt;br /&gt;
GTL Tapering for all non-basin area.  &lt;br /&gt;
&lt;br /&gt;
Tapering&#039;s z range is from 0m to 700m,  and material property floors used are vs=200m,  vp=500m and density=200m&lt;br /&gt;
a customized z coordinates list is pre-defined&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating the NetCDF model mesh ==&lt;br /&gt;
&lt;br /&gt;
UCVM&#039;s ucvm2mesh is used to generate 3 binary mesh data files: vs, vp and density for ROI&lt;br /&gt;
&lt;br /&gt;
In &#039;debug mode&#039;, 3 coordinate lists are created: one for the lats, the lons and the z depths.&lt;br /&gt;
&lt;br /&gt;
With these data files and lists, a simple NetCDF file is created&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh configuration file: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# List of CVMs to query&lt;br /&gt;
ucvmlist=cvmsi,elygtl:taper&lt;br /&gt;
&lt;br /&gt;
# (optional) zranges: -Z zmin,zmax &lt;br /&gt;
min_zrange=0.0&lt;br /&gt;
max_zrange=700.0&lt;br /&gt;
&lt;br /&gt;
# (optional) floors: -L vs_floor,vp_floor,density_floor&lt;br /&gt;
vs_floor=200.0&lt;br /&gt;
vp_floor=500.0&lt;br /&gt;
density_floor=200.0&lt;br /&gt;
&lt;br /&gt;
# UCVM conf file&lt;br /&gt;
ucvmconf=YOUR_UCVM_INSTALL_PATH/conf/ucvm.conf&lt;br /&gt;
&lt;br /&gt;
# Gridding cell: CENTER or VERTEX &lt;br /&gt;
gridtype=VERTEX&lt;br /&gt;
&lt;br /&gt;
# Spacing of cells (m)&lt;br /&gt;
spacing=1000.0&lt;br /&gt;
# (optional) Spacing of z depth (m)&lt;br /&gt;
# if not set, z_spacing = spacing &lt;br /&gt;
#z_spacing = 500.0&lt;br /&gt;
&lt;br /&gt;
# (optional) Allow varying z depth&lt;br /&gt;
# format: 1 row 1 target depth &lt;br /&gt;
z_file = so2_zlist&lt;br /&gt;
&lt;br /&gt;
# (optional) output latitudes filename&lt;br /&gt;
y_file = so2_ylist&lt;br /&gt;
&lt;br /&gt;
# (optional) output longitudes filename&lt;br /&gt;
x_file = so2_xlist&lt;br /&gt;
&lt;br /&gt;
# Projection&lt;br /&gt;
proj=+proj=utm +datum=WGS84 +zone=11&lt;br /&gt;
#to rotate, rot=-39.9&lt;br /&gt;
rot=0&lt;br /&gt;
&lt;br /&gt;
# Origin &lt;br /&gt;
# x,y: latlon&lt;br /&gt;
# z: depth (m)&lt;br /&gt;
x0=-120.033556&lt;br /&gt;
y0=31.869638&lt;br /&gt;
z0=0.0&lt;br /&gt;
&lt;br /&gt;
# Number of cells along each dim&lt;br /&gt;
nx=516&lt;br /&gt;
ny=468&lt;br /&gt;
nz=152&lt;br /&gt;
# how to determine distance in meter for each dim&lt;br /&gt;
# x = nx * spacing&lt;br /&gt;
# y = ny * spacing&lt;br /&gt;
# z = nz * (spacing or z_spacing), or = z_file[idx])&lt;br /&gt;
&lt;br /&gt;
# Partitioning of grid among processors&lt;br /&gt;
# relevant to chunking, should be divisible into nx,ny,nz&lt;br /&gt;
px=2&lt;br /&gt;
py=2&lt;br /&gt;
pz=2&lt;br /&gt;
&lt;br /&gt;
# Vs/Vp minimum&lt;br /&gt;
vp_min=0&lt;br /&gt;
vs_min=0&lt;br /&gt;
&lt;br /&gt;
# Mesh grid files&lt;br /&gt;
meshfile=so2.media&lt;br /&gt;
gridfile=so2.grid&lt;br /&gt;
&lt;br /&gt;
# Mesh Grid formats&lt;br /&gt;
# IJK-12, IJK-20, IJK-32 : single triplet file&lt;br /&gt;
# SORD : separate vs, vp, rho files&lt;br /&gt;
meshtype=SORD&lt;br /&gt;
&lt;br /&gt;
# Location of scratch dir&lt;br /&gt;
scratch=./scratch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh z depths list:&lt;br /&gt;
[[Media:so2_zlist.txt|so2_zlist]]&lt;br /&gt;
&lt;br /&gt;
latitude coordinate list:&lt;br /&gt;
[[Media:so2_xlist.txt|so2_xlist]]&lt;br /&gt;
&lt;br /&gt;
longitude coordinate list:&lt;br /&gt;
[[Media:so2_ylist.txt|so2_ylist]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh command used:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ucvm2mesh -f so2.conf &amp;gt; so2.out 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
and if so2.grid is known,&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh -f so2.conf -g so2.grid &amp;gt; so2.out 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related Links ==&lt;br /&gt;
*[[Main Page]]&lt;br /&gt;
*[[UCVM]]&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=UCVM_shakeout2_velocity_model&amp;diff=31031</id>
		<title>UCVM shakeout2 velocity model</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=UCVM_shakeout2_velocity_model&amp;diff=31031"/>
		<updated>2026-10-05T19:27:20Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* Creating the NetCDF model mesh */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model overview ==&lt;br /&gt;
&lt;br /&gt;
The shakeout2 velocity model for the ShakeOut Scenario 2.0 is based on CVM-S4.26.M01(with embedded GTL layer for basin regions) and&lt;br /&gt;
GTL Tapering for all non-basin area.  &lt;br /&gt;
&lt;br /&gt;
Tapering&#039;s z range is from 0m to 700m,  and material property floors used are vs=200m,  vp=500m and density=200m&lt;br /&gt;
a customized z coordinates list is pre-defined&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating the NetCDF model mesh ==&lt;br /&gt;
&lt;br /&gt;
UCVM&#039;s ucvm2mesh is used to generate 3 binary mesh data files: vs, vp and density for ROI&lt;br /&gt;
&lt;br /&gt;
In &#039;debug mode&#039;, 3 coordinate lists are created: one for the lats, the lons and the z depths.&lt;br /&gt;
&lt;br /&gt;
With these data files and lists, a simple NetCDF file is created&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh configuration file: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# List of CVMs to query&lt;br /&gt;
ucvmlist=cvmsi,elygtl:taper&lt;br /&gt;
&lt;br /&gt;
# (optional) zranges: -Z zmin,zmax &lt;br /&gt;
min_zrange=0.0&lt;br /&gt;
max_zrange=700.0&lt;br /&gt;
&lt;br /&gt;
# (optional) floors: -L vs_floor,vp_floor,density_floor&lt;br /&gt;
vs_floor=200.0&lt;br /&gt;
vp_floor=500.0&lt;br /&gt;
density_floor=200.0&lt;br /&gt;
&lt;br /&gt;
# UCVM conf file&lt;br /&gt;
ucvmconf=YOUR_UCVM_INSTALL_PATH/conf/ucvm.conf&lt;br /&gt;
&lt;br /&gt;
# Gridding cell: CENTER or VERTEX &lt;br /&gt;
gridtype=VERTEX&lt;br /&gt;
&lt;br /&gt;
# Spacing of cells (m)&lt;br /&gt;
spacing=1000.0&lt;br /&gt;
# (optional) Spacing of z depth (m)&lt;br /&gt;
# if not set, z_spacing = spacing &lt;br /&gt;
#z_spacing = 500.0&lt;br /&gt;
&lt;br /&gt;
# (optional) Allow varying z depth&lt;br /&gt;
# format: 1 row 1 target depth &lt;br /&gt;
z_file = so2_zlist&lt;br /&gt;
&lt;br /&gt;
# Projection&lt;br /&gt;
proj=+proj=utm +datum=WGS84 +zone=11&lt;br /&gt;
#to rotate, rot=-39.9&lt;br /&gt;
rot=0&lt;br /&gt;
&lt;br /&gt;
# Origin &lt;br /&gt;
# x,y: latlon&lt;br /&gt;
# z: depth (m)&lt;br /&gt;
x0=-120.033556&lt;br /&gt;
y0=31.869638&lt;br /&gt;
z0=0.0&lt;br /&gt;
&lt;br /&gt;
# Number of cells along each dim&lt;br /&gt;
nx=516&lt;br /&gt;
ny=468&lt;br /&gt;
nz=152&lt;br /&gt;
# how to determine distance in meter for each dim&lt;br /&gt;
# x = nx * spacing&lt;br /&gt;
# y = ny * spacing&lt;br /&gt;
# z = nz * (spacing or z_spacing), or = z_file[idx])&lt;br /&gt;
&lt;br /&gt;
# Partitioning of grid among processors&lt;br /&gt;
# relevant to chunking, should be divisible into nx,ny,nz&lt;br /&gt;
px=2&lt;br /&gt;
py=2&lt;br /&gt;
pz=2&lt;br /&gt;
&lt;br /&gt;
# Vs/Vp minimum&lt;br /&gt;
vp_min=0&lt;br /&gt;
vs_min=0&lt;br /&gt;
&lt;br /&gt;
# Mesh grid files&lt;br /&gt;
meshfile=so2.media&lt;br /&gt;
gridfile=so2.grid&lt;br /&gt;
&lt;br /&gt;
# Mesh Grid formats&lt;br /&gt;
# IJK-12, IJK-20, IJK-32 : single triplet file&lt;br /&gt;
# SORD : separate vs, vp, rho files&lt;br /&gt;
meshtype=SORD&lt;br /&gt;
&lt;br /&gt;
# Location of scratch dir&lt;br /&gt;
scratch=./scratch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh z depths list:&lt;br /&gt;
[[Media:so2_zlist.txt|so2_zlist]]&lt;br /&gt;
&lt;br /&gt;
latitude coordinate list:&lt;br /&gt;
[[Media:so2_xlist.txt|so2_xlist]]&lt;br /&gt;
&lt;br /&gt;
longitude coordinate list:&lt;br /&gt;
[[Media:so2_ylist.txt|so2_ylist]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh command used:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ucvm2mesh -f so2.conf &amp;gt; so2.out 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
and if so2.grid is known,&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh -f so2.conf -g so2.grid &amp;gt; so2.out 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related Links ==&lt;br /&gt;
*[[Main Page]]&lt;br /&gt;
*[[UCVM]]&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=File:So2_ylist.txt&amp;diff=31030</id>
		<title>File:So2 ylist.txt</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=File:So2_ylist.txt&amp;diff=31030"/>
		<updated>2026-10-05T19:20:17Z</updated>

		<summary type="html">&lt;p&gt;Mei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=File:So2_xlist.txt&amp;diff=31029</id>
		<title>File:So2 xlist.txt</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=File:So2_xlist.txt&amp;diff=31029"/>
		<updated>2026-10-05T19:19:41Z</updated>

		<summary type="html">&lt;p&gt;Mei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=UCVM_shakeout2_velocity_model&amp;diff=31028</id>
		<title>UCVM shakeout2 velocity model</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=UCVM_shakeout2_velocity_model&amp;diff=31028"/>
		<updated>2026-10-05T19:19:00Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* Creating the NetCDF model mesh */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model overview ==&lt;br /&gt;
&lt;br /&gt;
The shakeout2 velocity model for the ShakeOut Scenario 2.0 is based on CVM-S4.26.M01(with embedded GTL layer for basin regions) and&lt;br /&gt;
GTL Tapering for all non-basin area.  &lt;br /&gt;
&lt;br /&gt;
Tapering&#039;s z range is from 0m to 700m,  and material property floors used are vs=200m,  vp=500m and density=200m&lt;br /&gt;
a customized z coordinates list is pre-defined&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating the NetCDF model mesh ==&lt;br /&gt;
&lt;br /&gt;
UCVM&#039;s ucvm2mesh is used to generate 3 binary mesh data files: vs, vp and density for ROI&lt;br /&gt;
&lt;br /&gt;
In &#039;debug mode&#039;, 3 coordinate lists are created: one for the lats, the lons and the z depths.&lt;br /&gt;
&lt;br /&gt;
With these data files and lists, a simple NetCDF file is created&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh configuration file: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# List of CVMs to query&lt;br /&gt;
ucvmlist=cvmsi,elygtl:taper&lt;br /&gt;
&lt;br /&gt;
# (optional) zranges: -Z zmin,zmax &lt;br /&gt;
min_zrange=0.0&lt;br /&gt;
max_zrange=700.0&lt;br /&gt;
&lt;br /&gt;
# (optional) floors: -L vs_floor,vp_floor,density_floor&lt;br /&gt;
vs_floor=200.0&lt;br /&gt;
vp_floor=500.0&lt;br /&gt;
density_floor=200.0&lt;br /&gt;
&lt;br /&gt;
# UCVM conf file&lt;br /&gt;
ucvmconf=YOUR_UCVM_INSTALL_PATH/conf/ucvm.conf&lt;br /&gt;
&lt;br /&gt;
# Gridding cell: CENTER or VERTEX &lt;br /&gt;
gridtype=VERTEX&lt;br /&gt;
&lt;br /&gt;
# Spacing of cells (m)&lt;br /&gt;
spacing=1000.0&lt;br /&gt;
# (optional) Spacing of z depth (m)&lt;br /&gt;
# if not set, z_spacing = spacing &lt;br /&gt;
#z_spacing = 500.0&lt;br /&gt;
&lt;br /&gt;
# (optional) Allow varying z depth&lt;br /&gt;
# format: 1 row 1 target depth &lt;br /&gt;
z_file = so2_zlist&lt;br /&gt;
&lt;br /&gt;
# Projection&lt;br /&gt;
proj=+proj=utm +datum=WGS84 +zone=11&lt;br /&gt;
#to rotate, rot=-39.9&lt;br /&gt;
rot=0&lt;br /&gt;
&lt;br /&gt;
# Origin &lt;br /&gt;
# x,y: latlon&lt;br /&gt;
# z: depth (m)&lt;br /&gt;
x0=-120.033556&lt;br /&gt;
y0=31.869638&lt;br /&gt;
z0=0.0&lt;br /&gt;
&lt;br /&gt;
# Number of cells along each dim&lt;br /&gt;
nx=516&lt;br /&gt;
ny=468&lt;br /&gt;
nz=152&lt;br /&gt;
# how to determine distance in meter for each dim&lt;br /&gt;
# x = nx * spacing&lt;br /&gt;
# y = ny * spacing&lt;br /&gt;
# z = nz * (spacing or z_spacing), or = z_file[idx])&lt;br /&gt;
&lt;br /&gt;
# Partitioning of grid among processors&lt;br /&gt;
# relevant to chunking, should be divisible into nx,ny,nz&lt;br /&gt;
px=2&lt;br /&gt;
py=2&lt;br /&gt;
pz=2&lt;br /&gt;
&lt;br /&gt;
# Vs/Vp minimum&lt;br /&gt;
vp_min=0&lt;br /&gt;
vs_min=0&lt;br /&gt;
&lt;br /&gt;
# Mesh grid files&lt;br /&gt;
meshfile=so2.media&lt;br /&gt;
gridfile=so2.grid&lt;br /&gt;
&lt;br /&gt;
# Mesh Grid formats&lt;br /&gt;
# IJK-12, IJK-20, IJK-32 : single triplet file&lt;br /&gt;
# SORD : separate vs, vp, rho files&lt;br /&gt;
meshtype=SORD&lt;br /&gt;
&lt;br /&gt;
# Location of scratch dir&lt;br /&gt;
scratch=./scratch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh z depths list:&lt;br /&gt;
[[Media:so2_zlist.txt|so2_zlist]]&lt;br /&gt;
&lt;br /&gt;
latitude coordinate list:&lt;br /&gt;
[[Media:so2_xlist.txt|so2_xlist]]&lt;br /&gt;
&lt;br /&gt;
longitude coordinate list:&lt;br /&gt;
[[Media:so2_ylist.txt|so2_ylist]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh command used:&lt;br /&gt;
&lt;br /&gt;
== Related Links ==&lt;br /&gt;
*[[Main Page]]&lt;br /&gt;
*[[UCVM]]&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=File:So2_zlist.txt&amp;diff=31027</id>
		<title>File:So2 zlist.txt</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=File:So2_zlist.txt&amp;diff=31027"/>
		<updated>2026-10-05T19:14:30Z</updated>

		<summary type="html">&lt;p&gt;Mei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=UCVM_shakeout2_velocity_model&amp;diff=31026</id>
		<title>UCVM shakeout2 velocity model</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=UCVM_shakeout2_velocity_model&amp;diff=31026"/>
		<updated>2026-10-05T19:10:51Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* Creating the NetCDF model mesh */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model overview ==&lt;br /&gt;
&lt;br /&gt;
The shakeout2 velocity model for the ShakeOut Scenario 2.0 is based on CVM-S4.26.M01(with embedded GTL layer for basin regions) and&lt;br /&gt;
GTL Tapering for all non-basin area.  &lt;br /&gt;
&lt;br /&gt;
Tapering&#039;s z range is from 0m to 700m,  and material property floors used are vs=200m,  vp=500m and density=200m&lt;br /&gt;
a customized z coordinates list is pre-defined&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating the NetCDF model mesh ==&lt;br /&gt;
&lt;br /&gt;
UCVM&#039;s ucvm2mesh is used to generate 3 binary mesh data files: vs, vp and density for ROI&lt;br /&gt;
&lt;br /&gt;
In &#039;debug mode&#039;, 3 coordinate lists are created: one for the lats, the lons and the z depths.&lt;br /&gt;
&lt;br /&gt;
With these data files and lists, a simple NetCDF file is created&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh configuration file: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# List of CVMs to query&lt;br /&gt;
ucvmlist=cvmsi,elygtl:taper&lt;br /&gt;
&lt;br /&gt;
# (optional) zranges: -Z zmin,zmax &lt;br /&gt;
min_zrange=0.0&lt;br /&gt;
max_zrange=700.0&lt;br /&gt;
&lt;br /&gt;
# (optional) floors: -L vs_floor,vp_floor,density_floor&lt;br /&gt;
vs_floor=200.0&lt;br /&gt;
vp_floor=500.0&lt;br /&gt;
density_floor=200.0&lt;br /&gt;
&lt;br /&gt;
# UCVM conf file&lt;br /&gt;
ucvmconf=YOUR_UCVM_INSTALL_PATH/conf/ucvm.conf&lt;br /&gt;
&lt;br /&gt;
# Gridding cell: CENTER or VERTEX &lt;br /&gt;
gridtype=VERTEX&lt;br /&gt;
&lt;br /&gt;
# Spacing of cells (m)&lt;br /&gt;
spacing=1000.0&lt;br /&gt;
# (optional) Spacing of z depth (m)&lt;br /&gt;
# if not set, z_spacing = spacing &lt;br /&gt;
#z_spacing = 500.0&lt;br /&gt;
&lt;br /&gt;
# (optional) Allow varying z depth&lt;br /&gt;
# format: 1 row 1 target depth &lt;br /&gt;
z_file = so2_zlist&lt;br /&gt;
&lt;br /&gt;
# Projection&lt;br /&gt;
proj=+proj=utm +datum=WGS84 +zone=11&lt;br /&gt;
#to rotate, rot=-39.9&lt;br /&gt;
rot=0&lt;br /&gt;
&lt;br /&gt;
# Origin &lt;br /&gt;
# x,y: latlon&lt;br /&gt;
# z: depth (m)&lt;br /&gt;
x0=-120.033556&lt;br /&gt;
y0=31.869638&lt;br /&gt;
z0=0.0&lt;br /&gt;
&lt;br /&gt;
# Number of cells along each dim&lt;br /&gt;
nx=516&lt;br /&gt;
ny=468&lt;br /&gt;
nz=152&lt;br /&gt;
# how to determine distance in meter for each dim&lt;br /&gt;
# x = nx * spacing&lt;br /&gt;
# y = ny * spacing&lt;br /&gt;
# z = nz * (spacing or z_spacing), or = z_file[idx])&lt;br /&gt;
&lt;br /&gt;
# Partitioning of grid among processors&lt;br /&gt;
# relevant to chunking, should be divisible into nx,ny,nz&lt;br /&gt;
px=2&lt;br /&gt;
py=2&lt;br /&gt;
pz=2&lt;br /&gt;
&lt;br /&gt;
# Vs/Vp minimum&lt;br /&gt;
vp_min=0&lt;br /&gt;
vs_min=0&lt;br /&gt;
&lt;br /&gt;
# Mesh grid files&lt;br /&gt;
meshfile=so2.media&lt;br /&gt;
gridfile=so2.grid&lt;br /&gt;
&lt;br /&gt;
# Mesh Grid formats&lt;br /&gt;
# IJK-12, IJK-20, IJK-32 : single triplet file&lt;br /&gt;
# SORD : separate vs, vp, rho files&lt;br /&gt;
meshtype=SORD&lt;br /&gt;
&lt;br /&gt;
# Location of scratch dir&lt;br /&gt;
scratch=./scratch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh z depths list:&lt;br /&gt;
[[Media:so2_zlist|So2_zlist]]&lt;br /&gt;
&lt;br /&gt;
latitude coordinate list:&lt;br /&gt;
[[Media:so2_xlist|So2_xlist]]&lt;br /&gt;
&lt;br /&gt;
longitude coordinate list:&lt;br /&gt;
[[Media:so2_ylist|So2_ylist]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh command used:&lt;br /&gt;
&lt;br /&gt;
== Related Links ==&lt;br /&gt;
*[[Main Page]]&lt;br /&gt;
*[[UCVM]]&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=UCVM_shakeout2_velocity_model&amp;diff=31025</id>
		<title>UCVM shakeout2 velocity model</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=UCVM_shakeout2_velocity_model&amp;diff=31025"/>
		<updated>2026-10-05T19:09:39Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* Creating the NetCDF model mesh */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model overview ==&lt;br /&gt;
&lt;br /&gt;
The shakeout2 velocity model for the ShakeOut Scenario 2.0 is based on CVM-S4.26.M01(with embedded GTL layer for basin regions) and&lt;br /&gt;
GTL Tapering for all non-basin area.  &lt;br /&gt;
&lt;br /&gt;
Tapering&#039;s z range is from 0m to 700m,  and material property floors used are vs=200m,  vp=500m and density=200m&lt;br /&gt;
a customized z coordinates list is pre-defined&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating the NetCDF model mesh ==&lt;br /&gt;
&lt;br /&gt;
UCVM&#039;s ucvm2mesh is used to generate 3 binary mesh data files: vs, vp and density for ROI&lt;br /&gt;
&lt;br /&gt;
In &#039;debug mode&#039;, 3 coordinate lists are created: one for the lats, the lons and the z depths.&lt;br /&gt;
&lt;br /&gt;
With these data files and lists, a simple NetCDF file is created&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh configuration file: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# List of CVMs to query&lt;br /&gt;
ucvmlist=cvmsi,elygtl:taper&lt;br /&gt;
&lt;br /&gt;
# (optional) zranges: -Z zmin,zmax &lt;br /&gt;
min_zrange=0.0&lt;br /&gt;
max_zrange=700.0&lt;br /&gt;
&lt;br /&gt;
# (optional) floors: -L vs_floor,vp_floor,density_floor&lt;br /&gt;
vs_floor=200.0&lt;br /&gt;
vp_floor=500.0&lt;br /&gt;
density_floor=200.0&lt;br /&gt;
&lt;br /&gt;
# UCVM conf file&lt;br /&gt;
ucvmconf=YOUR_UCVM_INSTALL_PATH/conf/ucvm.conf&lt;br /&gt;
&lt;br /&gt;
# Gridding cell: CENTER or VERTEX &lt;br /&gt;
gridtype=VERTEX&lt;br /&gt;
&lt;br /&gt;
# Spacing of cells (m)&lt;br /&gt;
spacing=1000.0&lt;br /&gt;
# (optional) Spacing of z depth (m)&lt;br /&gt;
# if not set, z_spacing = spacing &lt;br /&gt;
#z_spacing = 500.0&lt;br /&gt;
&lt;br /&gt;
# (optional) Allow varying z depth&lt;br /&gt;
# format: 1 row 1 target depth &lt;br /&gt;
z_file = so2_zlist&lt;br /&gt;
&lt;br /&gt;
# Projection&lt;br /&gt;
proj=+proj=utm +datum=WGS84 +zone=11&lt;br /&gt;
#to rotate, rot=-39.9&lt;br /&gt;
rot=0&lt;br /&gt;
&lt;br /&gt;
# Origin &lt;br /&gt;
# x,y: latlon&lt;br /&gt;
# z: depth (m)&lt;br /&gt;
x0=-120.033556&lt;br /&gt;
y0=31.869638&lt;br /&gt;
z0=0.0&lt;br /&gt;
&lt;br /&gt;
# Number of cells along each dim&lt;br /&gt;
nx=516&lt;br /&gt;
ny=468&lt;br /&gt;
nz=152&lt;br /&gt;
# how to determine distance in meter for each dim&lt;br /&gt;
# x = nx * spacing&lt;br /&gt;
# y = ny * spacing&lt;br /&gt;
# z = nz * (spacing or z_spacing), or = z_file[idx])&lt;br /&gt;
&lt;br /&gt;
# Partitioning of grid among processors&lt;br /&gt;
# relevant to chunking, should be divisible into nx,ny,nz&lt;br /&gt;
px=2&lt;br /&gt;
py=2&lt;br /&gt;
pz=2&lt;br /&gt;
&lt;br /&gt;
# Vs/Vp minimum&lt;br /&gt;
vp_min=0&lt;br /&gt;
vs_min=0&lt;br /&gt;
&lt;br /&gt;
# Mesh grid files&lt;br /&gt;
meshfile=so2.media&lt;br /&gt;
gridfile=so2.grid&lt;br /&gt;
&lt;br /&gt;
# Mesh Grid formats&lt;br /&gt;
# IJK-12, IJK-20, IJK-32 : single triplet file&lt;br /&gt;
# SORD : separate vs, vp, rho files&lt;br /&gt;
meshtype=SORD&lt;br /&gt;
&lt;br /&gt;
# Location of scratch dir&lt;br /&gt;
scratch=./scratch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh z depths list:&lt;br /&gt;
&lt;br /&gt;
[[Media:so2_zlist|So2_zlist]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Media:so2_xlist|So2_xlist]]&lt;br /&gt;
[[Media:so2_ylist|So2_ylist]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh command used:&lt;br /&gt;
&lt;br /&gt;
== Related Links ==&lt;br /&gt;
*[[Main Page]]&lt;br /&gt;
*[[UCVM]]&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=UCVM_shakeout2_velocity_model&amp;diff=31023</id>
		<title>UCVM shakeout2 velocity model</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=UCVM_shakeout2_velocity_model&amp;diff=31023"/>
		<updated>2026-10-05T18:50:19Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* Creating the NetCDF model mesh */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model overview ==&lt;br /&gt;
&lt;br /&gt;
The shakeout2 velocity model for the ShakeOut Scenario 2.0 is based on CVM-S4.26.M01(with embedded GTL layer for basin regions) and&lt;br /&gt;
GTL Tapering for all non-basin area.  &lt;br /&gt;
&lt;br /&gt;
Tapering&#039;s z range is from 0m to 700m,  and material property floors used are vs=200m,  vp=500m and density=200m&lt;br /&gt;
a customized z coordinates list is pre-defined&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating the NetCDF model mesh ==&lt;br /&gt;
&lt;br /&gt;
UCVM&#039;s ucvm2mesh is used to generate 3 binary mesh data files: vs, vp and density for ROI&lt;br /&gt;
&lt;br /&gt;
In &#039;debug mode&#039;, 3 coordinate lists are created: one for the lats, the lons and the z depths.&lt;br /&gt;
&lt;br /&gt;
With these data files and lists, a simple NetCDF file is created&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh configuration file: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# List of CVMs to query&lt;br /&gt;
ucvmlist=cvmsi,elygtl:taper&lt;br /&gt;
&lt;br /&gt;
# (optional) zranges: -Z zmin,zmax &lt;br /&gt;
min_zrange=0.0&lt;br /&gt;
max_zrange=700.0&lt;br /&gt;
&lt;br /&gt;
# (optional) floors: -L vs_floor,vp_floor,density_floor&lt;br /&gt;
vs_floor=200.0&lt;br /&gt;
vp_floor=500.0&lt;br /&gt;
density_floor=200.0&lt;br /&gt;
&lt;br /&gt;
# UCVM conf file&lt;br /&gt;
ucvmconf=YOUR_UCVM_INSTALL_PATH/conf/ucvm.conf&lt;br /&gt;
&lt;br /&gt;
# Gridding cell: CENTER or VERTEX &lt;br /&gt;
gridtype=VERTEX&lt;br /&gt;
&lt;br /&gt;
# Spacing of cells (m)&lt;br /&gt;
spacing=1000.0&lt;br /&gt;
# (optional) Spacing of z depth (m)&lt;br /&gt;
# if not set, z_spacing = spacing &lt;br /&gt;
#z_spacing = 500.0&lt;br /&gt;
&lt;br /&gt;
# (optional) Allow varying z depth&lt;br /&gt;
# format: 1 row 1 target depth &lt;br /&gt;
z_file = so2_zlist&lt;br /&gt;
&lt;br /&gt;
# Projection&lt;br /&gt;
proj=+proj=utm +datum=WGS84 +zone=11&lt;br /&gt;
#to rotate, rot=-39.9&lt;br /&gt;
rot=0&lt;br /&gt;
&lt;br /&gt;
# Origin &lt;br /&gt;
# x,y: latlon&lt;br /&gt;
# z: depth (m)&lt;br /&gt;
x0=-120.033556&lt;br /&gt;
y0=31.869638&lt;br /&gt;
z0=0.0&lt;br /&gt;
&lt;br /&gt;
# Number of cells along each dim&lt;br /&gt;
nx=516&lt;br /&gt;
ny=468&lt;br /&gt;
nz=152&lt;br /&gt;
# how to determine distance in meter for each dim&lt;br /&gt;
# x = nx * spacing&lt;br /&gt;
# y = ny * spacing&lt;br /&gt;
# z = nz * (spacing or z_spacing), or = z_file[idx])&lt;br /&gt;
&lt;br /&gt;
# Partitioning of grid among processors&lt;br /&gt;
# relevant to chunking, should be divisible into nx,ny,nz&lt;br /&gt;
px=2&lt;br /&gt;
py=2&lt;br /&gt;
pz=2&lt;br /&gt;
&lt;br /&gt;
# Vs/Vp minimum&lt;br /&gt;
vp_min=0&lt;br /&gt;
vs_min=0&lt;br /&gt;
&lt;br /&gt;
# Mesh grid files&lt;br /&gt;
meshfile=so2.media&lt;br /&gt;
gridfile=so2.grid&lt;br /&gt;
&lt;br /&gt;
# Mesh Grid formats&lt;br /&gt;
# IJK-12, IJK-20, IJK-32 : single triplet file&lt;br /&gt;
# SORD : separate vs, vp, rho files&lt;br /&gt;
meshtype=SORD&lt;br /&gt;
&lt;br /&gt;
# Location of scratch dir&lt;br /&gt;
scratch=./scratch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh z depths list:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh command used:&lt;br /&gt;
&lt;br /&gt;
== Related Links ==&lt;br /&gt;
*[[Main Page]]&lt;br /&gt;
*[[UCVM]]&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=UCVM_shakeout2_velocity_model&amp;diff=31022</id>
		<title>UCVM shakeout2 velocity model</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=UCVM_shakeout2_velocity_model&amp;diff=31022"/>
		<updated>2026-10-05T18:48:06Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* Creating the NetCDF model mesh */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model overview ==&lt;br /&gt;
&lt;br /&gt;
The shakeout2 velocity model for the ShakeOut Scenario 2.0 is based on CVM-S4.26.M01(with embedded GTL layer for basin regions) and&lt;br /&gt;
GTL Tapering for all non-basin area.  &lt;br /&gt;
&lt;br /&gt;
Tapering&#039;s z range is from 0m to 700m,  and material property floors used are vs=200m,  vp=500m and density=200m&lt;br /&gt;
a customized z coordinates list is pre-defined&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating the NetCDF model mesh ==&lt;br /&gt;
&lt;br /&gt;
UCVM&#039;s ucvm2mesh is used to generate 3 binary mesh data files: vs, vp and density for ROI&lt;br /&gt;
&lt;br /&gt;
In &#039;debug mode&#039;, 3 coordinate lists are created: one for the lats, the lons and the z depths.&lt;br /&gt;
&lt;br /&gt;
With these data files and lists, a simple NetCDF file is created&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh configuration file: &lt;br /&gt;
&lt;br /&gt;
ucvm2mesh z depths list:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ucvm2mesh command used:&lt;br /&gt;
&lt;br /&gt;
== Related Links ==&lt;br /&gt;
*[[Main Page]]&lt;br /&gt;
*[[UCVM]]&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=UCVM_shakeout2_velocity_model&amp;diff=31019</id>
		<title>UCVM shakeout2 velocity model</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=UCVM_shakeout2_velocity_model&amp;diff=31019"/>
		<updated>2026-10-05T18:30:10Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* Creating the NetCDF model mesh */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model overview ==&lt;br /&gt;
&lt;br /&gt;
The shakeout2 velocity model for the ShakeOut Scenario 2.0 is based on CVM-S4.26.M01(with embedded GTL layer for basin regions) and&lt;br /&gt;
GTL Tapering for all non-basin area.  &lt;br /&gt;
&lt;br /&gt;
Tapering&#039;s z range is from 0m to 700m,  and material property floors used are vs=200m,  vp=500m and density=200m&lt;br /&gt;
a customized z coordinates list is pre-defined&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating the NetCDF model mesh ==&lt;br /&gt;
&lt;br /&gt;
UCVM&#039;s ucvm2mesh is used to generate 3 binary mesh data files: vs, vp and density for ROI&lt;br /&gt;
&lt;br /&gt;
In &#039;debug mode&#039;, 3 coordinate lists are created: one for the lats, the lons and the z depths.&lt;br /&gt;
&lt;br /&gt;
With these data files and lists, a simple NetCDF file is created&lt;br /&gt;
&lt;br /&gt;
== Related Links ==&lt;br /&gt;
*[[Main Page]]&lt;br /&gt;
*[[UCVM]]&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=UCVM_shakeout2_velocity_model&amp;diff=31018</id>
		<title>UCVM shakeout2 velocity model</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=UCVM_shakeout2_velocity_model&amp;diff=31018"/>
		<updated>2026-10-05T18:17:24Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* Creating the mesh */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model overview ==&lt;br /&gt;
&lt;br /&gt;
The shakeout2 velocity model for the ShakeOut Scenario 2.0 is based on CVM-S4.26.M01(with embedded GTL layer for basin regions) and&lt;br /&gt;
GTL Tapering for all non-basin area.  &lt;br /&gt;
&lt;br /&gt;
Tapering&#039;s z range is from 0m to 700m,  and material property floors used are vs=200m,  vp=500m and density=200m&lt;br /&gt;
a customized z coordinates list is pre-defined&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating the NetCDF model mesh ==&lt;br /&gt;
&lt;br /&gt;
UCVM&#039;s ucvm2mesh is used to generate 3 binary mesh data files: vs, vp and density for ROI&lt;br /&gt;
&lt;br /&gt;
In &#039;debug mode&#039;, 3 coordinate lists are created: one for the lats, the lons and the z depths.&lt;br /&gt;
&lt;br /&gt;
With these data files and lists, a simple NetCDF file is created&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=UCVM_shakeout2_velocity_model&amp;diff=31017</id>
		<title>UCVM shakeout2 velocity model</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=UCVM_shakeout2_velocity_model&amp;diff=31017"/>
		<updated>2026-10-05T18:16:21Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* Model overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model overview ==&lt;br /&gt;
&lt;br /&gt;
The shakeout2 velocity model for the ShakeOut Scenario 2.0 is based on CVM-S4.26.M01(with embedded GTL layer for basin regions) and&lt;br /&gt;
GTL Tapering for all non-basin area.  &lt;br /&gt;
&lt;br /&gt;
Tapering&#039;s z range is from 0m to 700m,  and material property floors used are vs=200m,  vp=500m and density=200m&lt;br /&gt;
a customized z coordinates list is pre-defined&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating the mesh ==&lt;br /&gt;
&lt;br /&gt;
UCVM&#039;s ucvm2mesh is used to generate 3 binary mesh data files: vs, vp and density for ROI&lt;br /&gt;
&lt;br /&gt;
In &#039;debug mode&#039;, 3 coordinate lists are created; One for the lats, the lons and the z depths.&lt;br /&gt;
&lt;br /&gt;
With these data files and lists, a simple NetCDF file is created&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=UCVM_shakeout2_velocity_model&amp;diff=31016</id>
		<title>UCVM shakeout2 velocity model</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=UCVM_shakeout2_velocity_model&amp;diff=31016"/>
		<updated>2026-10-05T18:15:54Z</updated>

		<summary type="html">&lt;p&gt;Mei: Created page with &amp;quot;== Model overview ==  The shakeout2 velocity model for the ShakeOut Scenario 2.0 is based on CVM-S4.26.M01(with embedded GTL layer for basin regions) and GTL Tapering for all...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Model overview ==&lt;br /&gt;
&lt;br /&gt;
The shakeout2 velocity model for the ShakeOut Scenario 2.0 is based on CVM-S4.26.M01(with embedded GTL layer for basin regions) and&lt;br /&gt;
GTL Tapering for all non-basin area.  &lt;br /&gt;
&lt;br /&gt;
Tapering&#039;s z range is from 0m to 700m,  and material property floors used are vs=200m,  vp=500m and density=200m&lt;br /&gt;
a customized z coordinates list is pre-defined&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Creating the mesh ===&lt;br /&gt;
&lt;br /&gt;
UCVM&#039;s ucvm2mesh is used to generate 3 binary mesh data files: vs, vp and density for ROI&lt;br /&gt;
&lt;br /&gt;
In &#039;debug mode&#039;, 3 coordinate lists are created; One for the lats, the lons and the z depths.&lt;br /&gt;
&lt;br /&gt;
With these data files and lists, a simple NetCDF file is created&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=Main_Page&amp;diff=31015</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=Main_Page&amp;diff=31015"/>
		<updated>2026-10-05T17:47:35Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* Recent Activities */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:SCEC_logo-2colors_BlueRed.png|left|150px]][[Image:nsf1.jpg|right|100px]][[Image:usgs-logo-color.jpg|right|150px]]&lt;br /&gt;
&lt;br /&gt;
== Community Modeling Environment (CME) ==&lt;br /&gt;
&lt;br /&gt;
This is a collaborative wiki site for SCEC&#039;s Community Modeling Environment (SCEC/CME). The CME is a collaborative, interdisciplinary research group that applies advanced computer science technology to the problem of seismic hazard analysis. This SCEC community wiki is configured to support our distributed research by providing a collection point for information about SCEC scientific computing research projects.&lt;br /&gt;
&lt;br /&gt;
== Collaborative Project Entries ==&lt;br /&gt;
The following link will take you to an alphabetically sorted list of all SCECpedia pages.&lt;br /&gt;
*[https://strike.scec.org/scecpedia/Special:AllPages List of All SCECpedia Pages]&lt;br /&gt;
&lt;br /&gt;
[[File:pathways.png|256px|thumb|right|Fig 1: SCEC/CME computational pathways provide a scientific framework for improving seismic ground motion forecasts. The SCEC/CME Project began as an NSF information technology research (ITR) project in 2001. (Image Credit: Thomas H. Jordan) ]]&lt;br /&gt;
&lt;br /&gt;
== SCEC Scientific Software  ==&lt;br /&gt;
The following table contains links to SCEC open-source scientific software descriptions and distributions.&lt;br /&gt;
*[[SCEC Scientific Software]]&lt;br /&gt;
&lt;br /&gt;
== Current Activities ==&lt;br /&gt;
* [[ShakeOut 2.0 - Aftershock Sequence]]&lt;br /&gt;
* [[SCEC Event Page Troubleshooting]]&lt;br /&gt;
* [[Research Computing Continuity Plans]]&lt;br /&gt;
* [[CARC Storage Migration]]&lt;br /&gt;
* [[UCVM Release v25.7]]&lt;br /&gt;
* [[UCVM Install Stampede3]]&lt;br /&gt;
* [[Preferred Rupture Directivity in Hazard Curve Computations]]&lt;br /&gt;
* [[U3ETAS Configurations]]&lt;br /&gt;
* [[HPC Troubleshooting]]&lt;br /&gt;
* [[Software Development Practices]]&lt;br /&gt;
* [[Bhatthal Projects and Presentations]]&lt;br /&gt;
*[[Quakeworx]]&lt;br /&gt;
** [[PdfGen]]&lt;br /&gt;
**[[Quakeworx Workshop]]&lt;br /&gt;
**[[Mendocino_Event]]&lt;br /&gt;
**[[CI3144585]]&lt;br /&gt;
*[[CyberShake]]&lt;br /&gt;
**[[CyberShake_Study 24.8]]&lt;br /&gt;
**[[CyberShake Study 22.12]]&lt;br /&gt;
**[[CyberShake FAIR]]&lt;br /&gt;
**[[NorCal CyberShake SW4 Mesh]]&lt;br /&gt;
**[[SW4 Mesh Development]]&lt;br /&gt;
**[[NCAL Study]]&lt;br /&gt;
**[[CyberShake Basin Ground Motions]]&lt;br /&gt;
**[[Broadband CyberShake aggregate comparisons]]&lt;br /&gt;
*[[OpenSHA]]&lt;br /&gt;
**[[Beta Testing]]&lt;br /&gt;
**[[OpenSHA-Jupyter]]&lt;br /&gt;
**[[UCERF3-ETAS Measurements]]&lt;br /&gt;
**[[UCERF3-ETAS Documentation]]&lt;br /&gt;
**[[GetFile]]&lt;br /&gt;
*[[Publishing UCERF3-ETAS Event Reports]]&lt;br /&gt;
*[[SCEC VDO]]&lt;br /&gt;
*[[CXM Website Review]]&lt;br /&gt;
**[http://moho.scec.org/cvm-explorer/explorer.php Prototype CVM Explorer]&lt;br /&gt;
**[http://moho.scec.org/UCVM_web/web/viewer.php CVM]&lt;br /&gt;
**[[CTM]]&lt;br /&gt;
**[[CGM]]&lt;br /&gt;
**[[GFM]]&lt;br /&gt;
**[[CFM]]&lt;br /&gt;
**[[UCVM]]&lt;br /&gt;
**[http://moho.scec.org/egd-viewer/ EGD Earthquake Geology Database]&lt;br /&gt;
**[[UCVM on Frontier]]&lt;br /&gt;
**[[UCVM Basin Query Tests]]&lt;br /&gt;
**[[SCEC_NetCDF_CVMS]]&lt;br /&gt;
**[[CVM_S4_Testing]]&lt;br /&gt;
**[[CRESCENT CVM]]&lt;br /&gt;
**[[CRM_Query]]&lt;br /&gt;
**[[CEM How to generate tiles for leaflet basemap]]&lt;br /&gt;
*[[SCEC Media]]&lt;br /&gt;
*[[CSEP]]&lt;br /&gt;
**[[floatCSEP]]&lt;br /&gt;
**[[CSEP1 Archives]]&lt;br /&gt;
*[[AWP-ODC Distributions]]&lt;br /&gt;
*[[Scenario ShakeMaps]]&lt;br /&gt;
*[[Dockerized Websites]]&lt;br /&gt;
*[[National Cyberinfrastructure]]&lt;br /&gt;
*[[OLCF Summit]]&lt;br /&gt;
*[[Broadband Platform]]&lt;br /&gt;
**[[BBP Strong Ground Motion Project]]&lt;br /&gt;
**[[BBP_Data_Products]]&lt;br /&gt;
**[[BBP on Discovery]]&lt;br /&gt;
**[[CARC BBP Setup]]&lt;br /&gt;
**[[3D Broadband Platform]]&lt;br /&gt;
*[[Southern California Seismic Velocity Model Vertical Profiles]]&lt;br /&gt;
*[[Magnitude_Versus_Intensity]]&lt;br /&gt;
*[[Workplans]]&lt;br /&gt;
*[[Software Sustainability Project]]&lt;br /&gt;
**[[Release Planning]]&lt;br /&gt;
**[[Hypocenter Replacement]]&lt;br /&gt;
**[[Software Testing References]]&lt;br /&gt;
**[[Software Reproducibility]]&lt;br /&gt;
*[[SCEC Server Migration]]&lt;br /&gt;
**[[SCEC CARC Migration]]&lt;br /&gt;
**[[SCEC ACB Migration]]&lt;br /&gt;
*[[Docker Hub]]&lt;br /&gt;
*[[Forecast Data]]&lt;br /&gt;
*[[Adding iVIP Users]]&lt;br /&gt;
*[[SCEC RC Working Group]]&lt;br /&gt;
*[[SDSC Expanse]]&lt;br /&gt;
*[[ALCF ML Workshop]]&lt;br /&gt;
*[[CyberShake_BBP_Validation]]&lt;br /&gt;
*[[Multi-resolution Meshes]]&lt;br /&gt;
*[[SCEC RC Meeting 2021]]&lt;br /&gt;
*[[Staff Meeting Oct 2021]]&lt;br /&gt;
**[[Software Searches]]&lt;br /&gt;
**[[Open Source Software Questions]]&lt;br /&gt;
*[[CIG Workshop]]&lt;br /&gt;
*[[SCEC CyberInfrastructure White Papers (2017-2020)]]&lt;br /&gt;
*[[IRIS_EMC]]&lt;br /&gt;
*[[Software Licenses]]&lt;br /&gt;
*[[CyberShake Distribution]]&lt;br /&gt;
*[[Testing UCVM Vs Values]]&lt;br /&gt;
**[[Albacore CVM]]&lt;br /&gt;
**[[CVM Webviewer Development]]&lt;br /&gt;
**[[CFM Web Development]]&lt;br /&gt;
*[[SCEC Testing Systems]]&lt;br /&gt;
*[[Staff Meeting]]&lt;br /&gt;
*[[High-F]]&lt;br /&gt;
**[[HighF_2018]]&lt;br /&gt;
*[[Stand-up Meetings]]&lt;br /&gt;
*[[Software Projects]]&lt;br /&gt;
*[[Disk Usage]]&lt;br /&gt;
*[[Magnitude Versus Intensity]]&lt;br /&gt;
*[[CyberShake_Study_20.5]]&lt;br /&gt;
*[[UCVM Verification]]&lt;br /&gt;
*[[CSEP_Working_Group]]&lt;br /&gt;
**[[CSEP_Gitlab]]&lt;br /&gt;
**[[CSEP_Training]]&lt;br /&gt;
**[[CSEP_Computers]]&lt;br /&gt;
**[[CSEP_Results]]&lt;br /&gt;
**[[CSEP_Workflows]]&lt;br /&gt;
**[[CSEP Test Results]]&lt;br /&gt;
**[[CSEP]]&lt;br /&gt;
*[[SCEC_EarthScience_DTS_HPC]]&lt;br /&gt;
*[[Cyberinfrastructure Center of Excellence]]&lt;br /&gt;
*[[Dornsife Technology Services (DTS)]]&lt;br /&gt;
*[[SC19]]&lt;br /&gt;
*[[Open Storage Network]]&lt;br /&gt;
*[[Rupture_Variation_Generator_v5.4.2]]&lt;br /&gt;
*[[Cascadia Simulations]]&lt;br /&gt;
*[[Ridgecrest Simulations]]&lt;br /&gt;
*[https://www.scec.org/workshops/2019/computing Research Computing Meeting]&lt;br /&gt;
*[http://www.scec.org/research/cxm SCEC CXM Inventory]&lt;br /&gt;
*[[ShakeMovies]]&lt;br /&gt;
*[[Brawley Seismic Zone Simulations]]&lt;br /&gt;
*[[SVN]]&lt;br /&gt;
*[[Zenodo and GitHub]]&lt;br /&gt;
*[[Callaghan Presentations]]&lt;br /&gt;
*[[Maechling Presentations]]&lt;br /&gt;
*[[Allocation Planning]]&lt;br /&gt;
&lt;br /&gt;
== Recent Activities ==&lt;br /&gt;
*[[Software At SCEC Responses]]&lt;br /&gt;
*[[Research Computing]]&lt;br /&gt;
*[[SSA Velocity Model Workshop 2019]]&lt;br /&gt;
*[[Software Workshop 2018]]&lt;br /&gt;
*[[Validation_Events]]&lt;br /&gt;
*[[Software]]&lt;br /&gt;
**[[Software Terms]]&lt;br /&gt;
*[[Transient Detection]]&lt;br /&gt;
*[[AGU Fall 2018]]&lt;br /&gt;
*[[SC18]]&lt;br /&gt;
*[[LA Vertical Profiles]]&lt;br /&gt;
*[[CVM-H 15.1 Maps]]&lt;br /&gt;
*[[Wills Map]]&lt;br /&gt;
*[[CyberShake Training]]&lt;br /&gt;
*[[CyberShake_Data_Access]]&lt;br /&gt;
*[[CyberShake Study 17.3]]&lt;br /&gt;
*[[Git]]&lt;br /&gt;
**[[Git Basics]]&lt;br /&gt;
**[[github API examples]]&lt;br /&gt;
*[[GMSV Simulation Datasets]]&lt;br /&gt;
*[[Blue_Waters_Project]]&lt;br /&gt;
**[[Blue Waters Symposium 2017]]&lt;br /&gt;
*[[CME_Projects]]&lt;br /&gt;
**[[SEISM2]]&lt;br /&gt;
*[[HPC Software]]&lt;br /&gt;
**[[Exascale Computing]]&lt;br /&gt;
**[[INCITE_Project]]&lt;br /&gt;
**[[NERSC]]&lt;br /&gt;
**[[Slurm]]&lt;br /&gt;
**[[Seismtools]]&lt;br /&gt;
**[[Build_Tools]]&lt;br /&gt;
*[[CME Software Development Group]]&lt;br /&gt;
**[[Scrum]]&lt;br /&gt;
**[[Staff]]&lt;br /&gt;
*[[Machine Learning]]&lt;br /&gt;
**[[tensorflow]]&lt;br /&gt;
&lt;br /&gt;
*[[BBP Flat File Format]]&lt;br /&gt;
*[[BBP Validation Events]]&lt;br /&gt;
*[[BBP Batch Jobs]]&lt;br /&gt;
&lt;br /&gt;
**[[UCVM Release Planning]]&lt;br /&gt;
* UCVM Tutorial Pages&lt;br /&gt;
**[https://github.com/sceccode/ucvm/wiki/testing UCVM Testing]&lt;br /&gt;
**[https://github.com/sceccode/ucvm_plotting/wiki UCVM Plotting]&lt;br /&gt;
**[https://github.com/sceccode/ucvm/wiki/Examples UCVM Examples]&lt;br /&gt;
**[[README.md Template]]&lt;br /&gt;
**[[UCVM Install]]&lt;br /&gt;
**[[Running UCVM on Discovery]]&lt;br /&gt;
**[[UCVM Basin Query]]&lt;br /&gt;
**[[UCVM on Compute Nodes]]&lt;br /&gt;
**[[Export XWindows to Client]]&lt;br /&gt;
**[[UCVM Plotting on Discovery]]&lt;br /&gt;
**[[UCVM Usage Notes]]&lt;br /&gt;
* UCVM Notes&lt;br /&gt;
**[[UCVM FAQ]]&lt;br /&gt;
**[[UCVM shakeout2 velocity model]]&lt;br /&gt;
**[[UCVM muscal]]&lt;br /&gt;
**[[UCVM cvms/cvms5/cvmsi GTL]]&lt;br /&gt;
**[[UCVM v25.7 with external model data directory CVM_LARGEDATA_DIR]]&lt;br /&gt;
**[[UCVM ucvm with sw4 using cvmsi]]&lt;br /&gt;
**[[UCVM create new model with ucvm2mesh]]&lt;br /&gt;
**[[UCVM cvmsi tapering]]&lt;br /&gt;
**[[UCVM sfcvm geomodelgrid]]&lt;br /&gt;
**[[UCVM install on Frontera]]&lt;br /&gt;
**[[UCVM cvmsi tapering for CyberShake Study 22.12]] &lt;br /&gt;
**[[UCVM cvms, cvmsi near-surface comparison]]&lt;br /&gt;
**[[UCVM cca/cvms5 comparing builtin-gtl vs elygtl:ely]]&lt;br /&gt;
**[[UCVM VS30 tree map(Thompson 2018) ]]&lt;br /&gt;
**[[UCVM VS30 etree map (Wills 2015) UCVM&#039;s interpolation]]&lt;br /&gt;
**[[UCVM z1,z2.5 for CCA06 with GTL, CVM-S4.26.M01]]&lt;br /&gt;
**[[UCVM 3D Viz]]&lt;br /&gt;
**[[UCVM svm1d]]&lt;br /&gt;
**[[UCVM svm1d and elygtl]]&lt;br /&gt;
**[[UCVM etree for Garner Valley]]&lt;br /&gt;
**[[UCVM elevation vs depth, model boundary]]&lt;br /&gt;
**[[UCVMC basin depth study, poly tech, Pomona ]]&lt;br /&gt;
**[[UCVMC how to plot cross_section and depth_profile]]&lt;br /&gt;
**[[CVM for CyberShake Study 18.8]]&lt;br /&gt;
**[[UCVMC How to process bin data]]&lt;br /&gt;
**[[UCVMC_CS17.3-H_plots]]&lt;br /&gt;
**[[UCVM Density Formula]]&lt;br /&gt;
**[[UCVM v18.5]]&lt;br /&gt;
**[[UCVM_Vs30]]&lt;br /&gt;
**[[CS173-H]]&lt;br /&gt;
**[[UCVM Review]]&lt;br /&gt;
**[[Registering CS173 into UCVM]]&lt;br /&gt;
**[[CVM Projection Issue Discussion]]&lt;br /&gt;
**[[Mesh Plotting Scripts]]&lt;br /&gt;
**[[ucvm2mesh-mpi]]&lt;br /&gt;
**[[Compare_UCVMC_to_UCVMP]]&lt;br /&gt;
**[[CCA06 Test Points]]&lt;br /&gt;
**[[Bay Area Velocity Model Z2.5 data]]&lt;br /&gt;
&lt;br /&gt;
== CME Outcomes ==&lt;br /&gt;
*[[CME Work Areas]]&lt;br /&gt;
*[[Publications]]&lt;br /&gt;
*[[Press Coverage]]&lt;br /&gt;
&lt;br /&gt;
== Recent Earthquake Information ==&lt;br /&gt;
An important goal of SCEC earthquake research is to develop improved seismic hazard information about future earthquakes by developing physics-based predictive models of earthquake processes and Improved seismic hazard estimates should lead to reduced seismic hazard risks to people and important societal infrastructure.&lt;br /&gt;
*[http://earthquake.usgs.gov/earthquakes/map/ USGS Recent California Earthquakes]&lt;br /&gt;
*[http://earthquake.usgs.gov/earthquakes/map/ USGS Recent Worldwide Earthquakes]&lt;br /&gt;
&lt;br /&gt;
== CME Research Support ==&lt;br /&gt;
[http://www.scec.org Southern California Earthquake Center (SCEC)] and [http://www.scec.org/cme SCEC/CME] research is funded by [http://www.nsf.gov National Science Foundation (NSF)] Cooperative Agreements EAR-0106924 and USGS Cooperative Agreement 02HQAG0008, and NSF awards EAR- 074493, EAR-0949443, OCI-0832698, and OCI-0832698. This research is supported by an allocation of advanced computing resources provided by the National Science Foundation (NSF). Computations are performed at [http://www.sdsc.edu San Diego Supercomputer Center], and the [http://www.tacc.utexas.edu Texas Advanced Computing Center (TACC)] at The University of Texas at Austin, the [http://www.ncsa.illinois.edu National Center for Supercomputer Applications (NCSA)] provide HPC resources. Computations are supported by the [http://www.usc.edu University of Southern California] Center for [http://www.usc.edu/hpc Center for High-Performance Computing (HPC)]. Our research uses HPC resources provided by the [http://www.energy.gov/ U.S. Department of Energy (DOE)] through an [http://www.science.doe.gov/ascr/incite/index.html Innovative and Novel Computational Impact on Theory and Experiment (INCITE)] program allocation award. An award of computer time was provided by the INCITE program. This research uses resources of the [http://www.alcf.anl.gov/ Argonne Leadership Computing Facility] at Argonne National Laboratory, which is supported by the Office of Science of the U.S. Department of Energy under contract DE-AC02- 06CH11357. This research also used resources of the Oak Ridge Leadership Computing Facility, which is a DOE Office of Science User Facility supported under Contract DE-AC05-00OR22725.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
Additional information about SCEC earthquake system science research is available on related SCEC web sites including:&lt;br /&gt;
*[http://www.scec.org/ SCEC Home Page]&lt;br /&gt;
*[http://scec.usc.edu/scecpedia/Special:AllPages List of All SCECpedia Pages]&lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
Except as otherwise noted, the contents of this site are licensed under the [http://creativecommons.org/licenses/by/3.0/deed.en_US Creative Commons Attribution 3.0 Unported License], and software distributions are licensed under the [https://opensource.org/ Open Source Initiative] approved licenses including BSD-3 and [http://www.apache.org/licenses/LICENSE-2.0 Apache 2.0 License]. For details, see our [[Site Policies]].&lt;br /&gt;
[[image:Cc3_88x31.png]] &amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=UCVM_FAQ&amp;diff=31014</id>
		<title>UCVM FAQ</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=UCVM_FAQ&amp;diff=31014"/>
		<updated>2026-10-05T17:45:02Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* Official Version of UCVM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== UCVM Documentation ==&lt;br /&gt;
The current UCVM maintained documentation is posted on github at:&lt;br /&gt;
*[https://github.com/SCECcode/UCVMC/wiki UCVM Wiki]&lt;br /&gt;
&lt;br /&gt;
== Vertical Profiles ==&lt;br /&gt;
*[[LA Vertical Profiles]]&lt;br /&gt;
&lt;br /&gt;
== Official Version of UCVM ==&lt;br /&gt;
The current official release of UCVM is UCVM v25.7.1. The latest development version can be obtained from cloning UCVM&#039;s GitHub repository and the stable release from the GitHub Releases.&lt;br /&gt;
&lt;br /&gt;
== Naming of CVMs == &lt;br /&gt;
Velocity Models that can be accessed through the UCVM interface are identify by &#039;&#039;&#039;a scientific name&#039;&#039;&#039;, and also by &#039;&#039;&#039;an internal UCVM short identifier&#039;&#039;&#039; that is used to identify the velocity model when using UCVM. A description of available velocity models, and their UCVM identifiers is posted here:&lt;br /&gt;
*[https://github.com/SCECcode/UCVMC/wiki/Registered-CVMs UCVM CVMs]&lt;br /&gt;
&lt;br /&gt;
As an example, the scientific name &#039;&#039;&#039;CVM-S4.26&#039;&#039;&#039; refers to a version of CVM-S4 that was developed using full 3D tomography by Po Chen and En-Jui Lee. It has a high min Vs (about 900m/s) and it defines Vp, Vs, and rho on a 500 meter spaced grid. It has no background model, and it is only defined to about 50km. The &#039;&#039;&#039;internal UCVM short identifier&#039;&#039;&#039; for this model is &amp;quot;cvms5&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Velocity models can be selected during installation of UCVM, so not all UCVM installations will have access to all models. &lt;br /&gt;
&lt;br /&gt;
== Interpolation of Models Defined on Regular Grid ==&lt;br /&gt;
For discrete models like CVM-S4.26, which is defined on a 500m grid, UCVM uses trilnear interpolation to determine material properties between grid points.&lt;br /&gt;
&lt;br /&gt;
== UCVM Software Installation Options ==&lt;br /&gt;
Before you can query CVM-S4.26, UCVM must be built and installed on a Linux computer, such as USC HPC research computing center. If you are used to building open-source software on Linux computers, then they may be able to work through the installation process described on the UCVM github wiki.&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/SCECcode/UCVMC/wiki/Installation Installation Instructions]&lt;br /&gt;
&lt;br /&gt;
We created a Virtual Box installation of UCVM which enables users to query common southern California Velocity models (CVM-S4, and CVM-S4.26) on a Mac. This virtual box image is posted it on a SCEC software workshop page [[Software_Workshop_2018]].&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/SCECcode/UCVMC/wiki UCVM Wiki]&lt;br /&gt;
&lt;br /&gt;
== Related Entries ==&lt;br /&gt;
*[[UCVM]]&lt;br /&gt;
*[[Software_Workshop_2018]]&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=MUSCAL&amp;diff=31004</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=MUSCAL&amp;diff=31004"/>
		<updated>2026-09-28T21:25:42Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* TileDB version of MUSCAL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the Multi-Scale CALifornia (MUSCAL) velocity model and its integration into UCVM.&lt;br /&gt;
&lt;br /&gt;
== Model overview ==&lt;br /&gt;
&lt;br /&gt;
The MUSCAL Vp and Vs model was created by Te-Yang Yeh, Kim B. Olsen and Yehuda Ben-Zion in 2025-6 by starting with the CANVAS tomography model as a base and then integrating multiple regional and local high-resolution models.  &lt;br /&gt;
&lt;br /&gt;
=== Model Components ===&lt;br /&gt;
&lt;br /&gt;
The model was built by starting with a base model (the CANVAS (Doody et al., 2023) tomography model).  Next, regional and local models are added where they improve the fit, based on M4 simulations.  These simulations were run to 1 Hz with topography using a minimum Vs of 450 m/s.  Finally, a spatially varying taper following the Ely approach is added.&lt;br /&gt;
&lt;br /&gt;
==== Regional Models ====&lt;br /&gt;
&lt;br /&gt;
Regional models evaluated for inclusion are:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Northern California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Lin et al. (2010)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Furlong et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Guo et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Central California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CCA-06&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-H v15.1.1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-S4.26&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Guo et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Berg et al. (2021)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Southern California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Fang et al. (2022)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-S4.26&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-H v15.1.1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Berg et al. (2021)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Local Models ====&lt;br /&gt;
&lt;br /&gt;
Below is a list of local high-resolution models that were evaluated for inclusion.&lt;br /&gt;
&lt;br /&gt;
Northern and Central California:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ridgecrest regional (Li and Ben-Zion (2024))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ridgecrest fault zone (Zhou et al. (2022))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Joaquin basin (Shaw &amp;amp; Plesch (2016))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SFCVM v21.1 (Hirakawa &amp;amp; Aagaard (2022))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Southern California:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Jacinto fault zone (Fang et al. (2019))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Gabriel-San Bernardino Basin (Li et al. (2023))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Imperial Valley (Persaud et al. (2016))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Coachella Valley (Ajala et al. (2019))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Santa Maria Basin (Plesch et al. (2020))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Taper ====&lt;br /&gt;
&lt;br /&gt;
MUSCAL includes a low-velocity taper using the Ely-Jordan approach.  Vs30 for this method is produced by merging the Thompson (2018) Vs30 map with the [https://earthquake.usgs.gov/data/vs30/ USGS global Vs30 dataset].&lt;br /&gt;
&lt;br /&gt;
The depth of the taper varies depending on the site and ranges from 300m to 1500m.&lt;br /&gt;
&lt;br /&gt;
== Delivered Model ==&lt;br /&gt;
&lt;br /&gt;
The final version of MUSCAL is delivered in netCDF format.  The dimensions of the model in grid points are 1251 (lat) x 1301 (lon) x 210 (depth). Grid points have a spacing of 0.01 degrees in the horizontal; the depth is variable with denser sampling near the surface.  The model is interpolated using trilinear interpolation.&lt;br /&gt;
&lt;br /&gt;
Details about the model creation are provided in the paper ([https://essopenarchive.org/doi/full/10.22541/essoar.15001929/v1 preprint]) and the [https://zenodo.org/records/19243477 Zenodo page].&lt;br /&gt;
&lt;br /&gt;
Below is a plot of the 3D model extent.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:MUSCAL_region_extent.png|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datasets ===&lt;br /&gt;
&lt;br /&gt;
zone: 11&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  command  use:&lt;br /&gt;
     plot_depth_profile.py -n $UCVM_INSTALL_PATH/conf/ucvm.conf -i $UCVM_INSTALL_PATH -d vs -c muscal &lt;br /&gt;
                           -o muscal_small_depth_1000.png -C &#039;Multi-Scale Statewide California Velocity Model&#039;&lt;br /&gt;
                           -v 1000 -b 0 -s 36.5054,-119.0587 -e 30000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== big data in netcdf ====&lt;br /&gt;
  &lt;br /&gt;
  model_MSCAL_CANVAS_dll0.01_dz50_cmpd.nc&lt;br /&gt;
  4.5G&lt;br /&gt;
&lt;br /&gt;
  longitude:1301 from -126 to -113 &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:671      from 0 to 100,000 &lt;br /&gt;
                   50 increments until 30,000&lt;br /&gt;
                   1000 increments til 100000&lt;br /&gt;
&lt;br /&gt;
Plot Depth profile at  36.5054,-119.0587 in different step increments. No interpretation and access data using nc api&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[FILE:muscal_big_deth_50.png|thumb|300px|muscal big 50 vs]]&lt;br /&gt;
| [[FILE:muscal_big_deth_100.png|thumb|300px|muscal big 100 vs]]&lt;br /&gt;
| [[FILE:muscal_big_depth_500.png|thumb|300px|muscal big 500 vs]] &lt;br /&gt;
| [[FILE:muscal_big_deth_1000.png|thumb|300px|muscal big 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_big_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== small data in netcdf ====&lt;br /&gt;
   model_MUSCAL_CANVAS_dll0.01_vardz_cmpd.nc &lt;br /&gt;
   2.1G &lt;br /&gt;
&lt;br /&gt;
  longitdue:1301 from -126 to -113   &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:210      from 0 to 99,000 &lt;br /&gt;
                   50 increments upto 3000 &lt;br /&gt;
                   100 increments upto 5000&lt;br /&gt;
                   250 increments upto 10000&lt;br /&gt;
                   500 increments upto 30000&lt;br /&gt;
                   1000 increments upto 99000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Depth profiles in different steps : 50m,100m,500m,1000m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Direct from netcdf as external file&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_depth_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_depth_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data no interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_no_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_no_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_no_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== Another small dataset in netcdf ====&lt;br /&gt;
&lt;br /&gt;
  model_MUSCAL_CANVAS_dll0.01_vardz_float32_cmpd.nc&lt;br /&gt;
  1.4G&lt;br /&gt;
&lt;br /&gt;
  All longitude, latitude, and depth points are now saved as float32, as well as the vp, vs, and rho. &lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data with interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
=== Validation ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Several steps of pre/post processing are done to original MUSCAL model(netcdf format) in order to &lt;br /&gt;
incorporate it into UCVM and CVM explorer.&lt;br /&gt;
&lt;br /&gt;
   Because of the speed of netcdf-C code is too slow to support in-time nature of the explorer and would &lt;br /&gt;
   like to have interpolation on query,&lt;br /&gt;
&lt;br /&gt;
      * Number of depth layer is reduced with deeper layers merged into fewer layers&lt;br /&gt;
      * preprocessing the netcdf data into binary data files&lt;br /&gt;
      * data are all in float32&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.txt]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Final result from ucvm_query, (with interpolation)&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.final.txt]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.final.txt]]&lt;br /&gt;
&lt;br /&gt;
== Extended Model ==&lt;br /&gt;
&lt;br /&gt;
The 3D MUSCAL model is defined over the same volume as the CANVAS base model.  However, some simulation regions may extend beyond the boundaries, like the blue corners in the example CyberShake volume for USC below: &lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:USC_muscal_horiz_slice_z0.png|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To solve this in a consistent and reproducible way, we will extend the MUSCAL model through UCVM with nearest neighbor extrapolation to generate physically consistent properties beyond defined model boundary .  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Iterate through each layer of MUSCAL dataset and collect the material properties of all edge points&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Compose a surface point dataset from the collected points&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;During UCVM query process, load the surface dataset and create a kdtree structure (k-dimensional tree), which is good for binary tree search&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If the model query returns NaNs (indicating the point is beyond the bounds of the 3D model); Query the Kdtree for the nearest neighbors.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The surface and kdtree code are in SCECcode/muscalnc.git, src directory: muscalnc_surface.c, kdtree_util.c&lt;br /&gt;
&lt;br /&gt;
== NetCDF version of MUSCAL ==&lt;br /&gt;
&lt;br /&gt;
ncdump -h model_MUSCAL_CANVAS_dll0.01_vardz_float32_cmpd.nc&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   netcdf model_MUSCAL_CANVAS_dll0.01_vardz_float32_cmpd {&lt;br /&gt;
   dimensions:&lt;br /&gt;
	depth = 210 ;&lt;br /&gt;
	latitude = 1251 ;&lt;br /&gt;
	longitude = 1301 ;&lt;br /&gt;
   variables:&lt;br /&gt;
	float vp(depth, latitude, longitude) ;&lt;br /&gt;
		vp:_FillValue = NaNf ;&lt;br /&gt;
		vp:units = &amp;quot;m/s&amp;quot; ;&lt;br /&gt;
	float vs(depth, latitude, longitude) ;&lt;br /&gt;
		vs:_FillValue = NaNf ;&lt;br /&gt;
		vs:units = &amp;quot;m/s&amp;quot; ;&lt;br /&gt;
	float rho(depth, latitude, longitude) ;&lt;br /&gt;
		rho:_FillValue = NaNf ;&lt;br /&gt;
		rho:units = &amp;quot;kg/m^3&amp;quot; ;&lt;br /&gt;
	float longitude(longitude) ;&lt;br /&gt;
		longitude:_FillValue = NaNf ;&lt;br /&gt;
		longitude:units = &amp;quot;degrees_east&amp;quot; ;&lt;br /&gt;
	float latitude(latitude) ;&lt;br /&gt;
		latitude:_FillValue = NaNf ;&lt;br /&gt;
		latitude:units = &amp;quot;degrees_north&amp;quot; ;&lt;br /&gt;
	float depth(depth) ;&lt;br /&gt;
		depth:_FillValue = NaNf ;&lt;br /&gt;
		depth:units = &amp;quot;meters&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
   // global attributes:&lt;br /&gt;
		:_NCProperties = &amp;quot;version=2,netcdf=4.9.2,hdf5=1.14.3&amp;quot; ;&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
longitudes, latitudes and depth are array of floats while vp, vp, and rho are 3 dimensional data array&lt;br /&gt;
&lt;br /&gt;
== TileDB version of MUSCAL ==&lt;br /&gt;
&lt;br /&gt;
Prototype TileDB as the base data storage solution, translation and conversion code were implemented and verified with code generate using various AI tools, ie. Gemini Pro, copilot and chapGPT.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tiledb_dump -a model_MUSCAL_CANVAS_dll0.01_vardz_float32_cmpd.tiledb &lt;br /&gt;
python -c &amp;quot;import tiledb; print(tiledb.open(&#039;muscal_canvas_tiledb_array&#039;).schema)&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
code is in SCECcode/muscaltdb.git.&lt;br /&gt;
&lt;br /&gt;
    tools/convert_nc_to_tiledb.c : converting NetCDF data to TileDB dataDimensions:    (depth: 210, latitude: 1251, longitude: 1301)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Coordinates:&lt;br /&gt;
  * longitude  (longitude) float32 -126.0 -126.0 -126.0 ... -113.0 -113.0 -113.0&lt;br /&gt;
  * latitude   (latitude) float32 31.0 31.01 31.02 31.03 ... 43.48 43.49 43.5&lt;br /&gt;
  * depth      (depth) float32 0.0 50.0 100.0 150.0 ... 9.7e+04 9.8e+04 9.9e+04&lt;br /&gt;
Data variables:&lt;br /&gt;
    vp         (depth, latitude, longitude) float32 dask.array&amp;lt;chunksize=(20, 200, 200), meta=np.ndarray&amp;gt;&lt;br /&gt;
    vs         (depth, latitude, longitude) float32 dask.array&amp;lt;chunksize=(20, 200, 200), meta=np.ndarray&amp;gt;&lt;br /&gt;
    rho        (depth, latitude, longitude) float32 dask.array&amp;lt;chunksize=(20, 200, 200), meta=np.ndarray&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import tiledb&lt;br /&gt;
&lt;br /&gt;
with tiledb.open(&amp;quot;model_array&amp;quot;, &amp;quot;r&amp;quot;) as A:&lt;br /&gt;
    res = A[100, 200, 50]   # (i, j, k)&lt;br /&gt;
print(res)&lt;br /&gt;
&lt;br /&gt;
and vp=res[&amp;quot;vp&amp;quot;][l0]&lt;br /&gt;
grab the data point using a offset&lt;br /&gt;
&lt;br /&gt;
or,&lt;br /&gt;
&lt;br /&gt;
with tiledb.open(&amp;quot;model_array&amp;quot;, &amp;quot;r&amp;quot;, attr=&amp;quot;vp&amp;quot;) as A:&lt;br /&gt;
    vp = A[100, 200, 50][0]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=MUSCAL&amp;diff=31003</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=MUSCAL&amp;diff=31003"/>
		<updated>2026-09-28T21:23:43Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* TileDB version of MUSCAL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the Multi-Scale CALifornia (MUSCAL) velocity model and its integration into UCVM.&lt;br /&gt;
&lt;br /&gt;
== Model overview ==&lt;br /&gt;
&lt;br /&gt;
The MUSCAL Vp and Vs model was created by Te-Yang Yeh, Kim B. Olsen and Yehuda Ben-Zion in 2025-6 by starting with the CANVAS tomography model as a base and then integrating multiple regional and local high-resolution models.  &lt;br /&gt;
&lt;br /&gt;
=== Model Components ===&lt;br /&gt;
&lt;br /&gt;
The model was built by starting with a base model (the CANVAS (Doody et al., 2023) tomography model).  Next, regional and local models are added where they improve the fit, based on M4 simulations.  These simulations were run to 1 Hz with topography using a minimum Vs of 450 m/s.  Finally, a spatially varying taper following the Ely approach is added.&lt;br /&gt;
&lt;br /&gt;
==== Regional Models ====&lt;br /&gt;
&lt;br /&gt;
Regional models evaluated for inclusion are:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Northern California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Lin et al. (2010)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Furlong et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Guo et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Central California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CCA-06&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-H v15.1.1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-S4.26&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Guo et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Berg et al. (2021)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Southern California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Fang et al. (2022)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-S4.26&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-H v15.1.1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Berg et al. (2021)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Local Models ====&lt;br /&gt;
&lt;br /&gt;
Below is a list of local high-resolution models that were evaluated for inclusion.&lt;br /&gt;
&lt;br /&gt;
Northern and Central California:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ridgecrest regional (Li and Ben-Zion (2024))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ridgecrest fault zone (Zhou et al. (2022))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Joaquin basin (Shaw &amp;amp; Plesch (2016))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SFCVM v21.1 (Hirakawa &amp;amp; Aagaard (2022))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Southern California:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Jacinto fault zone (Fang et al. (2019))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Gabriel-San Bernardino Basin (Li et al. (2023))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Imperial Valley (Persaud et al. (2016))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Coachella Valley (Ajala et al. (2019))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Santa Maria Basin (Plesch et al. (2020))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Taper ====&lt;br /&gt;
&lt;br /&gt;
MUSCAL includes a low-velocity taper using the Ely-Jordan approach.  Vs30 for this method is produced by merging the Thompson (2018) Vs30 map with the [https://earthquake.usgs.gov/data/vs30/ USGS global Vs30 dataset].&lt;br /&gt;
&lt;br /&gt;
The depth of the taper varies depending on the site and ranges from 300m to 1500m.&lt;br /&gt;
&lt;br /&gt;
== Delivered Model ==&lt;br /&gt;
&lt;br /&gt;
The final version of MUSCAL is delivered in netCDF format.  The dimensions of the model in grid points are 1251 (lat) x 1301 (lon) x 210 (depth). Grid points have a spacing of 0.01 degrees in the horizontal; the depth is variable with denser sampling near the surface.  The model is interpolated using trilinear interpolation.&lt;br /&gt;
&lt;br /&gt;
Details about the model creation are provided in the paper ([https://essopenarchive.org/doi/full/10.22541/essoar.15001929/v1 preprint]) and the [https://zenodo.org/records/19243477 Zenodo page].&lt;br /&gt;
&lt;br /&gt;
Below is a plot of the 3D model extent.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:MUSCAL_region_extent.png|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datasets ===&lt;br /&gt;
&lt;br /&gt;
zone: 11&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  command  use:&lt;br /&gt;
     plot_depth_profile.py -n $UCVM_INSTALL_PATH/conf/ucvm.conf -i $UCVM_INSTALL_PATH -d vs -c muscal &lt;br /&gt;
                           -o muscal_small_depth_1000.png -C &#039;Multi-Scale Statewide California Velocity Model&#039;&lt;br /&gt;
                           -v 1000 -b 0 -s 36.5054,-119.0587 -e 30000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== big data in netcdf ====&lt;br /&gt;
  &lt;br /&gt;
  model_MSCAL_CANVAS_dll0.01_dz50_cmpd.nc&lt;br /&gt;
  4.5G&lt;br /&gt;
&lt;br /&gt;
  longitude:1301 from -126 to -113 &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:671      from 0 to 100,000 &lt;br /&gt;
                   50 increments until 30,000&lt;br /&gt;
                   1000 increments til 100000&lt;br /&gt;
&lt;br /&gt;
Plot Depth profile at  36.5054,-119.0587 in different step increments. No interpretation and access data using nc api&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[FILE:muscal_big_deth_50.png|thumb|300px|muscal big 50 vs]]&lt;br /&gt;
| [[FILE:muscal_big_deth_100.png|thumb|300px|muscal big 100 vs]]&lt;br /&gt;
| [[FILE:muscal_big_depth_500.png|thumb|300px|muscal big 500 vs]] &lt;br /&gt;
| [[FILE:muscal_big_deth_1000.png|thumb|300px|muscal big 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_big_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== small data in netcdf ====&lt;br /&gt;
   model_MUSCAL_CANVAS_dll0.01_vardz_cmpd.nc &lt;br /&gt;
   2.1G &lt;br /&gt;
&lt;br /&gt;
  longitdue:1301 from -126 to -113   &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:210      from 0 to 99,000 &lt;br /&gt;
                   50 increments upto 3000 &lt;br /&gt;
                   100 increments upto 5000&lt;br /&gt;
                   250 increments upto 10000&lt;br /&gt;
                   500 increments upto 30000&lt;br /&gt;
                   1000 increments upto 99000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Depth profiles in different steps : 50m,100m,500m,1000m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Direct from netcdf as external file&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_depth_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_depth_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data no interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_no_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_no_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_no_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== Another small dataset in netcdf ====&lt;br /&gt;
&lt;br /&gt;
  model_MUSCAL_CANVAS_dll0.01_vardz_float32_cmpd.nc&lt;br /&gt;
  1.4G&lt;br /&gt;
&lt;br /&gt;
  All longitude, latitude, and depth points are now saved as float32, as well as the vp, vs, and rho. &lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data with interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
=== Validation ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Several steps of pre/post processing are done to original MUSCAL model(netcdf format) in order to &lt;br /&gt;
incorporate it into UCVM and CVM explorer.&lt;br /&gt;
&lt;br /&gt;
   Because of the speed of netcdf-C code is too slow to support in-time nature of the explorer and would &lt;br /&gt;
   like to have interpolation on query,&lt;br /&gt;
&lt;br /&gt;
      * Number of depth layer is reduced with deeper layers merged into fewer layers&lt;br /&gt;
      * preprocessing the netcdf data into binary data files&lt;br /&gt;
      * data are all in float32&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.txt]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Final result from ucvm_query, (with interpolation)&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.final.txt]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.final.txt]]&lt;br /&gt;
&lt;br /&gt;
== Extended Model ==&lt;br /&gt;
&lt;br /&gt;
The 3D MUSCAL model is defined over the same volume as the CANVAS base model.  However, some simulation regions may extend beyond the boundaries, like the blue corners in the example CyberShake volume for USC below: &lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:USC_muscal_horiz_slice_z0.png|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To solve this in a consistent and reproducible way, we will extend the MUSCAL model through UCVM with nearest neighbor extrapolation to generate physically consistent properties beyond defined model boundary .  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Iterate through each layer of MUSCAL dataset and collect the material properties of all edge points&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Compose a surface point dataset from the collected points&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;During UCVM query process, load the surface dataset and create a kdtree structure (k-dimensional tree), which is good for binary tree search&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If the model query returns NaNs (indicating the point is beyond the bounds of the 3D model); Query the Kdtree for the nearest neighbors.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The surface and kdtree code are in SCECcode/muscalnc.git, src directory: muscalnc_surface.c, kdtree_util.c&lt;br /&gt;
&lt;br /&gt;
== NetCDF version of MUSCAL ==&lt;br /&gt;
&lt;br /&gt;
ncdump -h model_MUSCAL_CANVAS_dll0.01_vardz_float32_cmpd.nc&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   netcdf model_MUSCAL_CANVAS_dll0.01_vardz_float32_cmpd {&lt;br /&gt;
   dimensions:&lt;br /&gt;
	depth = 210 ;&lt;br /&gt;
	latitude = 1251 ;&lt;br /&gt;
	longitude = 1301 ;&lt;br /&gt;
   variables:&lt;br /&gt;
	float vp(depth, latitude, longitude) ;&lt;br /&gt;
		vp:_FillValue = NaNf ;&lt;br /&gt;
		vp:units = &amp;quot;m/s&amp;quot; ;&lt;br /&gt;
	float vs(depth, latitude, longitude) ;&lt;br /&gt;
		vs:_FillValue = NaNf ;&lt;br /&gt;
		vs:units = &amp;quot;m/s&amp;quot; ;&lt;br /&gt;
	float rho(depth, latitude, longitude) ;&lt;br /&gt;
		rho:_FillValue = NaNf ;&lt;br /&gt;
		rho:units = &amp;quot;kg/m^3&amp;quot; ;&lt;br /&gt;
	float longitude(longitude) ;&lt;br /&gt;
		longitude:_FillValue = NaNf ;&lt;br /&gt;
		longitude:units = &amp;quot;degrees_east&amp;quot; ;&lt;br /&gt;
	float latitude(latitude) ;&lt;br /&gt;
		latitude:_FillValue = NaNf ;&lt;br /&gt;
		latitude:units = &amp;quot;degrees_north&amp;quot; ;&lt;br /&gt;
	float depth(depth) ;&lt;br /&gt;
		depth:_FillValue = NaNf ;&lt;br /&gt;
		depth:units = &amp;quot;meters&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
   // global attributes:&lt;br /&gt;
		:_NCProperties = &amp;quot;version=2,netcdf=4.9.2,hdf5=1.14.3&amp;quot; ;&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
longitudes, latitudes and depth are array of floats while vp, vp, and rho are 3 dimensional data array&lt;br /&gt;
&lt;br /&gt;
== TileDB version of MUSCAL ==&lt;br /&gt;
&lt;br /&gt;
Prototype TileDB as the base data storage solution, translation and conversion code were implemented and verified with code generate using various AI tools, ie. Gemini Pro, copilot and chapGPT.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tiledb_dump -a model_MUSCAL_CANVAS_dll0.01_vardz_float32_cmpd.tiledb &lt;br /&gt;
python -c &amp;quot;import tiledb; print(tiledb.open(&#039;muscal_canvas_tiledb_array&#039;).schema)&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
code is in SCECcode/muscaltdb.git.&lt;br /&gt;
&lt;br /&gt;
    tools/convert_nc_to_tiledb.c : converting NetCDF data to TileDB dataDimensions:    (depth: 210, latitude: 1251, longitude: 1301)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Coordinates:&lt;br /&gt;
  * longitude  (longitude) float32 -126.0 -126.0 -126.0 ... -113.0 -113.0 -113.0&lt;br /&gt;
  * latitude   (latitude) float32 31.0 31.01 31.02 31.03 ... 43.48 43.49 43.5&lt;br /&gt;
  * depth      (depth) float32 0.0 50.0 100.0 150.0 ... 9.7e+04 9.8e+04 9.9e+04&lt;br /&gt;
Data variables:&lt;br /&gt;
    vp         (depth, latitude, longitude) float32 dask.array&amp;lt;chunksize=(20, 200, 200), meta=np.ndarray&amp;gt;&lt;br /&gt;
    vs         (depth, latitude, longitude) float32 dask.array&amp;lt;chunksize=(20, 200, 200), meta=np.ndarray&amp;gt;&lt;br /&gt;
    rho        (depth, latitude, longitude) float32 dask.array&amp;lt;chunksize=(20, 200, 200), meta=np.ndarray&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=MUSCAL&amp;diff=31002</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=MUSCAL&amp;diff=31002"/>
		<updated>2026-09-28T20:50:08Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* TileDB version of MUSCAL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the Multi-Scale CALifornia (MUSCAL) velocity model and its integration into UCVM.&lt;br /&gt;
&lt;br /&gt;
== Model overview ==&lt;br /&gt;
&lt;br /&gt;
The MUSCAL Vp and Vs model was created by Te-Yang Yeh, Kim B. Olsen and Yehuda Ben-Zion in 2025-6 by starting with the CANVAS tomography model as a base and then integrating multiple regional and local high-resolution models.  &lt;br /&gt;
&lt;br /&gt;
=== Model Components ===&lt;br /&gt;
&lt;br /&gt;
The model was built by starting with a base model (the CANVAS (Doody et al., 2023) tomography model).  Next, regional and local models are added where they improve the fit, based on M4 simulations.  These simulations were run to 1 Hz with topography using a minimum Vs of 450 m/s.  Finally, a spatially varying taper following the Ely approach is added.&lt;br /&gt;
&lt;br /&gt;
==== Regional Models ====&lt;br /&gt;
&lt;br /&gt;
Regional models evaluated for inclusion are:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Northern California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Lin et al. (2010)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Furlong et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Guo et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Central California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CCA-06&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-H v15.1.1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-S4.26&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Guo et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Berg et al. (2021)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Southern California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Fang et al. (2022)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-S4.26&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-H v15.1.1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Berg et al. (2021)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Local Models ====&lt;br /&gt;
&lt;br /&gt;
Below is a list of local high-resolution models that were evaluated for inclusion.&lt;br /&gt;
&lt;br /&gt;
Northern and Central California:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ridgecrest regional (Li and Ben-Zion (2024))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ridgecrest fault zone (Zhou et al. (2022))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Joaquin basin (Shaw &amp;amp; Plesch (2016))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SFCVM v21.1 (Hirakawa &amp;amp; Aagaard (2022))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Southern California:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Jacinto fault zone (Fang et al. (2019))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Gabriel-San Bernardino Basin (Li et al. (2023))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Imperial Valley (Persaud et al. (2016))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Coachella Valley (Ajala et al. (2019))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Santa Maria Basin (Plesch et al. (2020))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Taper ====&lt;br /&gt;
&lt;br /&gt;
MUSCAL includes a low-velocity taper using the Ely-Jordan approach.  Vs30 for this method is produced by merging the Thompson (2018) Vs30 map with the [https://earthquake.usgs.gov/data/vs30/ USGS global Vs30 dataset].&lt;br /&gt;
&lt;br /&gt;
The depth of the taper varies depending on the site and ranges from 300m to 1500m.&lt;br /&gt;
&lt;br /&gt;
== Delivered Model ==&lt;br /&gt;
&lt;br /&gt;
The final version of MUSCAL is delivered in netCDF format.  The dimensions of the model in grid points are 1251 (lat) x 1301 (lon) x 210 (depth). Grid points have a spacing of 0.01 degrees in the horizontal; the depth is variable with denser sampling near the surface.  The model is interpolated using trilinear interpolation.&lt;br /&gt;
&lt;br /&gt;
Details about the model creation are provided in the paper ([https://essopenarchive.org/doi/full/10.22541/essoar.15001929/v1 preprint]) and the [https://zenodo.org/records/19243477 Zenodo page].&lt;br /&gt;
&lt;br /&gt;
Below is a plot of the 3D model extent.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:MUSCAL_region_extent.png|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datasets ===&lt;br /&gt;
&lt;br /&gt;
zone: 11&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  command  use:&lt;br /&gt;
     plot_depth_profile.py -n $UCVM_INSTALL_PATH/conf/ucvm.conf -i $UCVM_INSTALL_PATH -d vs -c muscal &lt;br /&gt;
                           -o muscal_small_depth_1000.png -C &#039;Multi-Scale Statewide California Velocity Model&#039;&lt;br /&gt;
                           -v 1000 -b 0 -s 36.5054,-119.0587 -e 30000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== big data in netcdf ====&lt;br /&gt;
  &lt;br /&gt;
  model_MSCAL_CANVAS_dll0.01_dz50_cmpd.nc&lt;br /&gt;
  4.5G&lt;br /&gt;
&lt;br /&gt;
  longitude:1301 from -126 to -113 &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:671      from 0 to 100,000 &lt;br /&gt;
                   50 increments until 30,000&lt;br /&gt;
                   1000 increments til 100000&lt;br /&gt;
&lt;br /&gt;
Plot Depth profile at  36.5054,-119.0587 in different step increments. No interpretation and access data using nc api&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[FILE:muscal_big_deth_50.png|thumb|300px|muscal big 50 vs]]&lt;br /&gt;
| [[FILE:muscal_big_deth_100.png|thumb|300px|muscal big 100 vs]]&lt;br /&gt;
| [[FILE:muscal_big_depth_500.png|thumb|300px|muscal big 500 vs]] &lt;br /&gt;
| [[FILE:muscal_big_deth_1000.png|thumb|300px|muscal big 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_big_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== small data in netcdf ====&lt;br /&gt;
   model_MUSCAL_CANVAS_dll0.01_vardz_cmpd.nc &lt;br /&gt;
   2.1G &lt;br /&gt;
&lt;br /&gt;
  longitdue:1301 from -126 to -113   &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:210      from 0 to 99,000 &lt;br /&gt;
                   50 increments upto 3000 &lt;br /&gt;
                   100 increments upto 5000&lt;br /&gt;
                   250 increments upto 10000&lt;br /&gt;
                   500 increments upto 30000&lt;br /&gt;
                   1000 increments upto 99000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Depth profiles in different steps : 50m,100m,500m,1000m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Direct from netcdf as external file&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_depth_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_depth_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data no interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_no_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_no_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_no_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== Another small dataset in netcdf ====&lt;br /&gt;
&lt;br /&gt;
  model_MUSCAL_CANVAS_dll0.01_vardz_float32_cmpd.nc&lt;br /&gt;
  1.4G&lt;br /&gt;
&lt;br /&gt;
  All longitude, latitude, and depth points are now saved as float32, as well as the vp, vs, and rho. &lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data with interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
=== Validation ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Several steps of pre/post processing are done to original MUSCAL model(netcdf format) in order to &lt;br /&gt;
incorporate it into UCVM and CVM explorer.&lt;br /&gt;
&lt;br /&gt;
   Because of the speed of netcdf-C code is too slow to support in-time nature of the explorer and would &lt;br /&gt;
   like to have interpolation on query,&lt;br /&gt;
&lt;br /&gt;
      * Number of depth layer is reduced with deeper layers merged into fewer layers&lt;br /&gt;
      * preprocessing the netcdf data into binary data files&lt;br /&gt;
      * data are all in float32&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.txt]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Final result from ucvm_query, (with interpolation)&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.final.txt]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.final.txt]]&lt;br /&gt;
&lt;br /&gt;
== Extended Model ==&lt;br /&gt;
&lt;br /&gt;
The 3D MUSCAL model is defined over the same volume as the CANVAS base model.  However, some simulation regions may extend beyond the boundaries, like the blue corners in the example CyberShake volume for USC below: &lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:USC_muscal_horiz_slice_z0.png|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To solve this in a consistent and reproducible way, we will extend the MUSCAL model through UCVM with nearest neighbor extrapolation to generate physically consistent properties beyond defined model boundary .  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Iterate through each layer of MUSCAL dataset and collect the material properties of all edge points&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Compose a surface point dataset from the collected points&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;During UCVM query process, load the surface dataset and create a kdtree structure (k-dimensional tree), which is good for binary tree search&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If the model query returns NaNs (indicating the point is beyond the bounds of the 3D model); Query the Kdtree for the nearest neighbors.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The surface and kdtree code are in SCECcode/muscalnc.git, src directory: muscalnc_surface.c, kdtree_util.c&lt;br /&gt;
&lt;br /&gt;
== NetCDF version of MUSCAL ==&lt;br /&gt;
&lt;br /&gt;
ncdump -h model_MUSCAL_CANVAS_dll0.01_vardz_float32_cmpd.nc&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   netcdf model_MUSCAL_CANVAS_dll0.01_vardz_float32_cmpd {&lt;br /&gt;
   dimensions:&lt;br /&gt;
	depth = 210 ;&lt;br /&gt;
	latitude = 1251 ;&lt;br /&gt;
	longitude = 1301 ;&lt;br /&gt;
   variables:&lt;br /&gt;
	float vp(depth, latitude, longitude) ;&lt;br /&gt;
		vp:_FillValue = NaNf ;&lt;br /&gt;
		vp:units = &amp;quot;m/s&amp;quot; ;&lt;br /&gt;
	float vs(depth, latitude, longitude) ;&lt;br /&gt;
		vs:_FillValue = NaNf ;&lt;br /&gt;
		vs:units = &amp;quot;m/s&amp;quot; ;&lt;br /&gt;
	float rho(depth, latitude, longitude) ;&lt;br /&gt;
		rho:_FillValue = NaNf ;&lt;br /&gt;
		rho:units = &amp;quot;kg/m^3&amp;quot; ;&lt;br /&gt;
	float longitude(longitude) ;&lt;br /&gt;
		longitude:_FillValue = NaNf ;&lt;br /&gt;
		longitude:units = &amp;quot;degrees_east&amp;quot; ;&lt;br /&gt;
	float latitude(latitude) ;&lt;br /&gt;
		latitude:_FillValue = NaNf ;&lt;br /&gt;
		latitude:units = &amp;quot;degrees_north&amp;quot; ;&lt;br /&gt;
	float depth(depth) ;&lt;br /&gt;
		depth:_FillValue = NaNf ;&lt;br /&gt;
		depth:units = &amp;quot;meters&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
   // global attributes:&lt;br /&gt;
		:_NCProperties = &amp;quot;version=2,netcdf=4.9.2,hdf5=1.14.3&amp;quot; ;&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
longitudes, latitudes and depth are array of floats while vp, vp, and rho are 3 dimensional data array&lt;br /&gt;
&lt;br /&gt;
== TileDB version of MUSCAL ==&lt;br /&gt;
&lt;br /&gt;
Prototype TileDB as the base data storage solution, translation and conversion code were implemented and verified with code generate using various AI tools, ie. Gemini Pro, copilot and chapGPT.&lt;br /&gt;
&lt;br /&gt;
MUSCALTDB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tiledb_dump -a xx_array&lt;br /&gt;
python -c &amp;quot;import tiledb; print(tiledb.open(&#039;muscal_canvas_tiledb_array&#039;).schema)&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=MUSCAL&amp;diff=31001</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=MUSCAL&amp;diff=31001"/>
		<updated>2026-09-28T20:49:30Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* NetCDF version of MUSCAL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the Multi-Scale CALifornia (MUSCAL) velocity model and its integration into UCVM.&lt;br /&gt;
&lt;br /&gt;
== Model overview ==&lt;br /&gt;
&lt;br /&gt;
The MUSCAL Vp and Vs model was created by Te-Yang Yeh, Kim B. Olsen and Yehuda Ben-Zion in 2025-6 by starting with the CANVAS tomography model as a base and then integrating multiple regional and local high-resolution models.  &lt;br /&gt;
&lt;br /&gt;
=== Model Components ===&lt;br /&gt;
&lt;br /&gt;
The model was built by starting with a base model (the CANVAS (Doody et al., 2023) tomography model).  Next, regional and local models are added where they improve the fit, based on M4 simulations.  These simulations were run to 1 Hz with topography using a minimum Vs of 450 m/s.  Finally, a spatially varying taper following the Ely approach is added.&lt;br /&gt;
&lt;br /&gt;
==== Regional Models ====&lt;br /&gt;
&lt;br /&gt;
Regional models evaluated for inclusion are:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Northern California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Lin et al. (2010)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Furlong et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Guo et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Central California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CCA-06&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-H v15.1.1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-S4.26&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Guo et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Berg et al. (2021)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Southern California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Fang et al. (2022)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-S4.26&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-H v15.1.1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Berg et al. (2021)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Local Models ====&lt;br /&gt;
&lt;br /&gt;
Below is a list of local high-resolution models that were evaluated for inclusion.&lt;br /&gt;
&lt;br /&gt;
Northern and Central California:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ridgecrest regional (Li and Ben-Zion (2024))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ridgecrest fault zone (Zhou et al. (2022))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Joaquin basin (Shaw &amp;amp; Plesch (2016))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SFCVM v21.1 (Hirakawa &amp;amp; Aagaard (2022))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Southern California:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Jacinto fault zone (Fang et al. (2019))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Gabriel-San Bernardino Basin (Li et al. (2023))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Imperial Valley (Persaud et al. (2016))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Coachella Valley (Ajala et al. (2019))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Santa Maria Basin (Plesch et al. (2020))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Taper ====&lt;br /&gt;
&lt;br /&gt;
MUSCAL includes a low-velocity taper using the Ely-Jordan approach.  Vs30 for this method is produced by merging the Thompson (2018) Vs30 map with the [https://earthquake.usgs.gov/data/vs30/ USGS global Vs30 dataset].&lt;br /&gt;
&lt;br /&gt;
The depth of the taper varies depending on the site and ranges from 300m to 1500m.&lt;br /&gt;
&lt;br /&gt;
== Delivered Model ==&lt;br /&gt;
&lt;br /&gt;
The final version of MUSCAL is delivered in netCDF format.  The dimensions of the model in grid points are 1251 (lat) x 1301 (lon) x 210 (depth). Grid points have a spacing of 0.01 degrees in the horizontal; the depth is variable with denser sampling near the surface.  The model is interpolated using trilinear interpolation.&lt;br /&gt;
&lt;br /&gt;
Details about the model creation are provided in the paper ([https://essopenarchive.org/doi/full/10.22541/essoar.15001929/v1 preprint]) and the [https://zenodo.org/records/19243477 Zenodo page].&lt;br /&gt;
&lt;br /&gt;
Below is a plot of the 3D model extent.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:MUSCAL_region_extent.png|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datasets ===&lt;br /&gt;
&lt;br /&gt;
zone: 11&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  command  use:&lt;br /&gt;
     plot_depth_profile.py -n $UCVM_INSTALL_PATH/conf/ucvm.conf -i $UCVM_INSTALL_PATH -d vs -c muscal &lt;br /&gt;
                           -o muscal_small_depth_1000.png -C &#039;Multi-Scale Statewide California Velocity Model&#039;&lt;br /&gt;
                           -v 1000 -b 0 -s 36.5054,-119.0587 -e 30000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== big data in netcdf ====&lt;br /&gt;
  &lt;br /&gt;
  model_MSCAL_CANVAS_dll0.01_dz50_cmpd.nc&lt;br /&gt;
  4.5G&lt;br /&gt;
&lt;br /&gt;
  longitude:1301 from -126 to -113 &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:671      from 0 to 100,000 &lt;br /&gt;
                   50 increments until 30,000&lt;br /&gt;
                   1000 increments til 100000&lt;br /&gt;
&lt;br /&gt;
Plot Depth profile at  36.5054,-119.0587 in different step increments. No interpretation and access data using nc api&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[FILE:muscal_big_deth_50.png|thumb|300px|muscal big 50 vs]]&lt;br /&gt;
| [[FILE:muscal_big_deth_100.png|thumb|300px|muscal big 100 vs]]&lt;br /&gt;
| [[FILE:muscal_big_depth_500.png|thumb|300px|muscal big 500 vs]] &lt;br /&gt;
| [[FILE:muscal_big_deth_1000.png|thumb|300px|muscal big 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_big_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== small data in netcdf ====&lt;br /&gt;
   model_MUSCAL_CANVAS_dll0.01_vardz_cmpd.nc &lt;br /&gt;
   2.1G &lt;br /&gt;
&lt;br /&gt;
  longitdue:1301 from -126 to -113   &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:210      from 0 to 99,000 &lt;br /&gt;
                   50 increments upto 3000 &lt;br /&gt;
                   100 increments upto 5000&lt;br /&gt;
                   250 increments upto 10000&lt;br /&gt;
                   500 increments upto 30000&lt;br /&gt;
                   1000 increments upto 99000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Depth profiles in different steps : 50m,100m,500m,1000m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Direct from netcdf as external file&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_depth_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_depth_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data no interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_no_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_no_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_no_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== Another small dataset in netcdf ====&lt;br /&gt;
&lt;br /&gt;
  model_MUSCAL_CANVAS_dll0.01_vardz_float32_cmpd.nc&lt;br /&gt;
  1.4G&lt;br /&gt;
&lt;br /&gt;
  All longitude, latitude, and depth points are now saved as float32, as well as the vp, vs, and rho. &lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data with interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
=== Validation ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Several steps of pre/post processing are done to original MUSCAL model(netcdf format) in order to &lt;br /&gt;
incorporate it into UCVM and CVM explorer.&lt;br /&gt;
&lt;br /&gt;
   Because of the speed of netcdf-C code is too slow to support in-time nature of the explorer and would &lt;br /&gt;
   like to have interpolation on query,&lt;br /&gt;
&lt;br /&gt;
      * Number of depth layer is reduced with deeper layers merged into fewer layers&lt;br /&gt;
      * preprocessing the netcdf data into binary data files&lt;br /&gt;
      * data are all in float32&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.txt]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Final result from ucvm_query, (with interpolation)&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.final.txt]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.final.txt]]&lt;br /&gt;
&lt;br /&gt;
== Extended Model ==&lt;br /&gt;
&lt;br /&gt;
The 3D MUSCAL model is defined over the same volume as the CANVAS base model.  However, some simulation regions may extend beyond the boundaries, like the blue corners in the example CyberShake volume for USC below: &lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:USC_muscal_horiz_slice_z0.png|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To solve this in a consistent and reproducible way, we will extend the MUSCAL model through UCVM with nearest neighbor extrapolation to generate physically consistent properties beyond defined model boundary .  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Iterate through each layer of MUSCAL dataset and collect the material properties of all edge points&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Compose a surface point dataset from the collected points&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;During UCVM query process, load the surface dataset and create a kdtree structure (k-dimensional tree), which is good for binary tree search&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If the model query returns NaNs (indicating the point is beyond the bounds of the 3D model); Query the Kdtree for the nearest neighbors.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The surface and kdtree code are in SCECcode/muscalnc.git, src directory: muscalnc_surface.c, kdtree_util.c&lt;br /&gt;
&lt;br /&gt;
== NetCDF version of MUSCAL ==&lt;br /&gt;
&lt;br /&gt;
ncdump -h model_MUSCAL_CANVAS_dll0.01_vardz_float32_cmpd.nc&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   netcdf model_MUSCAL_CANVAS_dll0.01_vardz_float32_cmpd {&lt;br /&gt;
   dimensions:&lt;br /&gt;
	depth = 210 ;&lt;br /&gt;
	latitude = 1251 ;&lt;br /&gt;
	longitude = 1301 ;&lt;br /&gt;
   variables:&lt;br /&gt;
	float vp(depth, latitude, longitude) ;&lt;br /&gt;
		vp:_FillValue = NaNf ;&lt;br /&gt;
		vp:units = &amp;quot;m/s&amp;quot; ;&lt;br /&gt;
	float vs(depth, latitude, longitude) ;&lt;br /&gt;
		vs:_FillValue = NaNf ;&lt;br /&gt;
		vs:units = &amp;quot;m/s&amp;quot; ;&lt;br /&gt;
	float rho(depth, latitude, longitude) ;&lt;br /&gt;
		rho:_FillValue = NaNf ;&lt;br /&gt;
		rho:units = &amp;quot;kg/m^3&amp;quot; ;&lt;br /&gt;
	float longitude(longitude) ;&lt;br /&gt;
		longitude:_FillValue = NaNf ;&lt;br /&gt;
		longitude:units = &amp;quot;degrees_east&amp;quot; ;&lt;br /&gt;
	float latitude(latitude) ;&lt;br /&gt;
		latitude:_FillValue = NaNf ;&lt;br /&gt;
		latitude:units = &amp;quot;degrees_north&amp;quot; ;&lt;br /&gt;
	float depth(depth) ;&lt;br /&gt;
		depth:_FillValue = NaNf ;&lt;br /&gt;
		depth:units = &amp;quot;meters&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
   // global attributes:&lt;br /&gt;
		:_NCProperties = &amp;quot;version=2,netcdf=4.9.2,hdf5=1.14.3&amp;quot; ;&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
longitudes, latitudes and depth are array of floats while vp, vp, and rho are 3 dimensional data array&lt;br /&gt;
&lt;br /&gt;
== TileDB version of MUSCAL ==&lt;br /&gt;
&lt;br /&gt;
Prototype TileDB as the base data storage solution, translation and conversion code were implemented and verified with code generate using various AI tools, ie. Gemini Pro, copilot and chapGPT.&lt;br /&gt;
&lt;br /&gt;
MUSCALTDB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tiledb_dump -a xx_array&lt;br /&gt;
python -c &amp;quot;import tiledb; print(tiledb.open(&#039;muscal_canvas_tiledb_array&#039;).schema)&amp;quot;&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=MUSCAL&amp;diff=31000</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=MUSCAL&amp;diff=31000"/>
		<updated>2026-09-28T20:45:34Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* NetCDF version of MUSCAL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the Multi-Scale CALifornia (MUSCAL) velocity model and its integration into UCVM.&lt;br /&gt;
&lt;br /&gt;
== Model overview ==&lt;br /&gt;
&lt;br /&gt;
The MUSCAL Vp and Vs model was created by Te-Yang Yeh, Kim B. Olsen and Yehuda Ben-Zion in 2025-6 by starting with the CANVAS tomography model as a base and then integrating multiple regional and local high-resolution models.  &lt;br /&gt;
&lt;br /&gt;
=== Model Components ===&lt;br /&gt;
&lt;br /&gt;
The model was built by starting with a base model (the CANVAS (Doody et al., 2023) tomography model).  Next, regional and local models are added where they improve the fit, based on M4 simulations.  These simulations were run to 1 Hz with topography using a minimum Vs of 450 m/s.  Finally, a spatially varying taper following the Ely approach is added.&lt;br /&gt;
&lt;br /&gt;
==== Regional Models ====&lt;br /&gt;
&lt;br /&gt;
Regional models evaluated for inclusion are:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Northern California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Lin et al. (2010)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Furlong et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Guo et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Central California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CCA-06&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-H v15.1.1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-S4.26&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Guo et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Berg et al. (2021)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Southern California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Fang et al. (2022)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-S4.26&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-H v15.1.1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Berg et al. (2021)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Local Models ====&lt;br /&gt;
&lt;br /&gt;
Below is a list of local high-resolution models that were evaluated for inclusion.&lt;br /&gt;
&lt;br /&gt;
Northern and Central California:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ridgecrest regional (Li and Ben-Zion (2024))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ridgecrest fault zone (Zhou et al. (2022))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Joaquin basin (Shaw &amp;amp; Plesch (2016))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SFCVM v21.1 (Hirakawa &amp;amp; Aagaard (2022))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Southern California:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Jacinto fault zone (Fang et al. (2019))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Gabriel-San Bernardino Basin (Li et al. (2023))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Imperial Valley (Persaud et al. (2016))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Coachella Valley (Ajala et al. (2019))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Santa Maria Basin (Plesch et al. (2020))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Taper ====&lt;br /&gt;
&lt;br /&gt;
MUSCAL includes a low-velocity taper using the Ely-Jordan approach.  Vs30 for this method is produced by merging the Thompson (2018) Vs30 map with the [https://earthquake.usgs.gov/data/vs30/ USGS global Vs30 dataset].&lt;br /&gt;
&lt;br /&gt;
The depth of the taper varies depending on the site and ranges from 300m to 1500m.&lt;br /&gt;
&lt;br /&gt;
== Delivered Model ==&lt;br /&gt;
&lt;br /&gt;
The final version of MUSCAL is delivered in netCDF format.  The dimensions of the model in grid points are 1251 (lat) x 1301 (lon) x 210 (depth). Grid points have a spacing of 0.01 degrees in the horizontal; the depth is variable with denser sampling near the surface.  The model is interpolated using trilinear interpolation.&lt;br /&gt;
&lt;br /&gt;
Details about the model creation are provided in the paper ([https://essopenarchive.org/doi/full/10.22541/essoar.15001929/v1 preprint]) and the [https://zenodo.org/records/19243477 Zenodo page].&lt;br /&gt;
&lt;br /&gt;
Below is a plot of the 3D model extent.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:MUSCAL_region_extent.png|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datasets ===&lt;br /&gt;
&lt;br /&gt;
zone: 11&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  command  use:&lt;br /&gt;
     plot_depth_profile.py -n $UCVM_INSTALL_PATH/conf/ucvm.conf -i $UCVM_INSTALL_PATH -d vs -c muscal &lt;br /&gt;
                           -o muscal_small_depth_1000.png -C &#039;Multi-Scale Statewide California Velocity Model&#039;&lt;br /&gt;
                           -v 1000 -b 0 -s 36.5054,-119.0587 -e 30000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== big data in netcdf ====&lt;br /&gt;
  &lt;br /&gt;
  model_MSCAL_CANVAS_dll0.01_dz50_cmpd.nc&lt;br /&gt;
  4.5G&lt;br /&gt;
&lt;br /&gt;
  longitude:1301 from -126 to -113 &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:671      from 0 to 100,000 &lt;br /&gt;
                   50 increments until 30,000&lt;br /&gt;
                   1000 increments til 100000&lt;br /&gt;
&lt;br /&gt;
Plot Depth profile at  36.5054,-119.0587 in different step increments. No interpretation and access data using nc api&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[FILE:muscal_big_deth_50.png|thumb|300px|muscal big 50 vs]]&lt;br /&gt;
| [[FILE:muscal_big_deth_100.png|thumb|300px|muscal big 100 vs]]&lt;br /&gt;
| [[FILE:muscal_big_depth_500.png|thumb|300px|muscal big 500 vs]] &lt;br /&gt;
| [[FILE:muscal_big_deth_1000.png|thumb|300px|muscal big 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_big_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== small data in netcdf ====&lt;br /&gt;
   model_MUSCAL_CANVAS_dll0.01_vardz_cmpd.nc &lt;br /&gt;
   2.1G &lt;br /&gt;
&lt;br /&gt;
  longitdue:1301 from -126 to -113   &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:210      from 0 to 99,000 &lt;br /&gt;
                   50 increments upto 3000 &lt;br /&gt;
                   100 increments upto 5000&lt;br /&gt;
                   250 increments upto 10000&lt;br /&gt;
                   500 increments upto 30000&lt;br /&gt;
                   1000 increments upto 99000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Depth profiles in different steps : 50m,100m,500m,1000m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Direct from netcdf as external file&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_depth_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_depth_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data no interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_no_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_no_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_no_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== Another small dataset in netcdf ====&lt;br /&gt;
&lt;br /&gt;
  model_MUSCAL_CANVAS_dll0.01_vardz_float32_cmpd.nc&lt;br /&gt;
  1.4G&lt;br /&gt;
&lt;br /&gt;
  All longitude, latitude, and depth points are now saved as float32, as well as the vp, vs, and rho. &lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data with interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
=== Validation ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Several steps of pre/post processing are done to original MUSCAL model(netcdf format) in order to &lt;br /&gt;
incorporate it into UCVM and CVM explorer.&lt;br /&gt;
&lt;br /&gt;
   Because of the speed of netcdf-C code is too slow to support in-time nature of the explorer and would &lt;br /&gt;
   like to have interpolation on query,&lt;br /&gt;
&lt;br /&gt;
      * Number of depth layer is reduced with deeper layers merged into fewer layers&lt;br /&gt;
      * preprocessing the netcdf data into binary data files&lt;br /&gt;
      * data are all in float32&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.txt]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Final result from ucvm_query, (with interpolation)&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.final.txt]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.final.txt]]&lt;br /&gt;
&lt;br /&gt;
== Extended Model ==&lt;br /&gt;
&lt;br /&gt;
The 3D MUSCAL model is defined over the same volume as the CANVAS base model.  However, some simulation regions may extend beyond the boundaries, like the blue corners in the example CyberShake volume for USC below: &lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:USC_muscal_horiz_slice_z0.png|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To solve this in a consistent and reproducible way, we will extend the MUSCAL model through UCVM with nearest neighbor extrapolation to generate physically consistent properties beyond defined model boundary .  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Iterate through each layer of MUSCAL dataset and collect the material properties of all edge points&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Compose a surface point dataset from the collected points&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;During UCVM query process, load the surface dataset and create a kdtree structure (k-dimensional tree), which is good for binary tree search&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If the model query returns NaNs (indicating the point is beyond the bounds of the 3D model); Query the Kdtree for the nearest neighbors.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The surface and kdtree code are in SCECcode/muscalnc.git, src directory: muscalnc_surface.c, kdtree_util.c&lt;br /&gt;
&lt;br /&gt;
== NetCDF version of MUSCAL ==&lt;br /&gt;
&lt;br /&gt;
ncdump -h model_MUSCAL_CANVAS_dll0.01_vardz_float32_cmpd.nc&lt;br /&gt;
&lt;br /&gt;
   netcdf model_MUSCAL_CANVAS_dll0.01_vardz_float32_cmpd {&lt;br /&gt;
   dimensions:&lt;br /&gt;
	depth = 210 ;&lt;br /&gt;
	latitude = 1251 ;&lt;br /&gt;
	longitude = 1301 ;&lt;br /&gt;
   variables:&lt;br /&gt;
	float vp(depth, latitude, longitude) ;&lt;br /&gt;
		vp:_FillValue = NaNf ;&lt;br /&gt;
		vp:units = &amp;quot;m/s&amp;quot; ;&lt;br /&gt;
	float vs(depth, latitude, longitude) ;&lt;br /&gt;
		vs:_FillValue = NaNf ;&lt;br /&gt;
		vs:units = &amp;quot;m/s&amp;quot; ;&lt;br /&gt;
	float rho(depth, latitude, longitude) ;&lt;br /&gt;
		rho:_FillValue = NaNf ;&lt;br /&gt;
		rho:units = &amp;quot;kg/m^3&amp;quot; ;&lt;br /&gt;
	float longitude(longitude) ;&lt;br /&gt;
		longitude:_FillValue = NaNf ;&lt;br /&gt;
		longitude:units = &amp;quot;degrees_east&amp;quot; ;&lt;br /&gt;
	float latitude(latitude) ;&lt;br /&gt;
		latitude:_FillValue = NaNf ;&lt;br /&gt;
		latitude:units = &amp;quot;degrees_north&amp;quot; ;&lt;br /&gt;
	float depth(depth) ;&lt;br /&gt;
		depth:_FillValue = NaNf ;&lt;br /&gt;
		depth:units = &amp;quot;meters&amp;quot; ;&lt;br /&gt;
&lt;br /&gt;
   // global attributes:&lt;br /&gt;
		:_NCProperties = &amp;quot;version=2,netcdf=4.9.2,hdf5=1.14.3&amp;quot; ;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
== TileDB version of MUSCAL ==&lt;br /&gt;
&lt;br /&gt;
Prototype TileDB as the base data storage solution, translation and conversion code were implemented and verified with code generate using various AI tools, ie. Gemini Pro, copilot and chapGPT.&lt;br /&gt;
&lt;br /&gt;
MUSCALTDB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tiledb_dump -a xx_array&lt;br /&gt;
python -c &amp;quot;import tiledb; print(tiledb.open(&#039;muscal_canvas_tiledb_array&#039;).schema)&amp;quot;&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=MUSCAL&amp;diff=30999</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=MUSCAL&amp;diff=30999"/>
		<updated>2026-09-28T20:34:35Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* NetCDF version of MUSCAL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the Multi-Scale CALifornia (MUSCAL) velocity model and its integration into UCVM.&lt;br /&gt;
&lt;br /&gt;
== Model overview ==&lt;br /&gt;
&lt;br /&gt;
The MUSCAL Vp and Vs model was created by Te-Yang Yeh, Kim B. Olsen and Yehuda Ben-Zion in 2025-6 by starting with the CANVAS tomography model as a base and then integrating multiple regional and local high-resolution models.  &lt;br /&gt;
&lt;br /&gt;
=== Model Components ===&lt;br /&gt;
&lt;br /&gt;
The model was built by starting with a base model (the CANVAS (Doody et al., 2023) tomography model).  Next, regional and local models are added where they improve the fit, based on M4 simulations.  These simulations were run to 1 Hz with topography using a minimum Vs of 450 m/s.  Finally, a spatially varying taper following the Ely approach is added.&lt;br /&gt;
&lt;br /&gt;
==== Regional Models ====&lt;br /&gt;
&lt;br /&gt;
Regional models evaluated for inclusion are:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Northern California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Lin et al. (2010)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Furlong et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Guo et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Central California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CCA-06&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-H v15.1.1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-S4.26&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Guo et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Berg et al. (2021)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Southern California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Fang et al. (2022)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-S4.26&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-H v15.1.1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Berg et al. (2021)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Local Models ====&lt;br /&gt;
&lt;br /&gt;
Below is a list of local high-resolution models that were evaluated for inclusion.&lt;br /&gt;
&lt;br /&gt;
Northern and Central California:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ridgecrest regional (Li and Ben-Zion (2024))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ridgecrest fault zone (Zhou et al. (2022))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Joaquin basin (Shaw &amp;amp; Plesch (2016))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SFCVM v21.1 (Hirakawa &amp;amp; Aagaard (2022))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Southern California:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Jacinto fault zone (Fang et al. (2019))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Gabriel-San Bernardino Basin (Li et al. (2023))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Imperial Valley (Persaud et al. (2016))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Coachella Valley (Ajala et al. (2019))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Santa Maria Basin (Plesch et al. (2020))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Taper ====&lt;br /&gt;
&lt;br /&gt;
MUSCAL includes a low-velocity taper using the Ely-Jordan approach.  Vs30 for this method is produced by merging the Thompson (2018) Vs30 map with the [https://earthquake.usgs.gov/data/vs30/ USGS global Vs30 dataset].&lt;br /&gt;
&lt;br /&gt;
The depth of the taper varies depending on the site and ranges from 300m to 1500m.&lt;br /&gt;
&lt;br /&gt;
== Delivered Model ==&lt;br /&gt;
&lt;br /&gt;
The final version of MUSCAL is delivered in netCDF format.  The dimensions of the model in grid points are 1251 (lat) x 1301 (lon) x 210 (depth). Grid points have a spacing of 0.01 degrees in the horizontal; the depth is variable with denser sampling near the surface.  The model is interpolated using trilinear interpolation.&lt;br /&gt;
&lt;br /&gt;
Details about the model creation are provided in the paper ([https://essopenarchive.org/doi/full/10.22541/essoar.15001929/v1 preprint]) and the [https://zenodo.org/records/19243477 Zenodo page].&lt;br /&gt;
&lt;br /&gt;
Below is a plot of the 3D model extent.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:MUSCAL_region_extent.png|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datasets ===&lt;br /&gt;
&lt;br /&gt;
zone: 11&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  command  use:&lt;br /&gt;
     plot_depth_profile.py -n $UCVM_INSTALL_PATH/conf/ucvm.conf -i $UCVM_INSTALL_PATH -d vs -c muscal &lt;br /&gt;
                           -o muscal_small_depth_1000.png -C &#039;Multi-Scale Statewide California Velocity Model&#039;&lt;br /&gt;
                           -v 1000 -b 0 -s 36.5054,-119.0587 -e 30000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== big data in netcdf ====&lt;br /&gt;
  &lt;br /&gt;
  model_MSCAL_CANVAS_dll0.01_dz50_cmpd.nc&lt;br /&gt;
  4.5G&lt;br /&gt;
&lt;br /&gt;
  longitude:1301 from -126 to -113 &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:671      from 0 to 100,000 &lt;br /&gt;
                   50 increments until 30,000&lt;br /&gt;
                   1000 increments til 100000&lt;br /&gt;
&lt;br /&gt;
Plot Depth profile at  36.5054,-119.0587 in different step increments. No interpretation and access data using nc api&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[FILE:muscal_big_deth_50.png|thumb|300px|muscal big 50 vs]]&lt;br /&gt;
| [[FILE:muscal_big_deth_100.png|thumb|300px|muscal big 100 vs]]&lt;br /&gt;
| [[FILE:muscal_big_depth_500.png|thumb|300px|muscal big 500 vs]] &lt;br /&gt;
| [[FILE:muscal_big_deth_1000.png|thumb|300px|muscal big 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_big_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== small data in netcdf ====&lt;br /&gt;
   model_MUSCAL_CANVAS_dll0.01_vardz_cmpd.nc &lt;br /&gt;
   2.1G &lt;br /&gt;
&lt;br /&gt;
  longitdue:1301 from -126 to -113   &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:210      from 0 to 99,000 &lt;br /&gt;
                   50 increments upto 3000 &lt;br /&gt;
                   100 increments upto 5000&lt;br /&gt;
                   250 increments upto 10000&lt;br /&gt;
                   500 increments upto 30000&lt;br /&gt;
                   1000 increments upto 99000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Depth profiles in different steps : 50m,100m,500m,1000m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Direct from netcdf as external file&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_depth_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_depth_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data no interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_no_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_no_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_no_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== Another small dataset in netcdf ====&lt;br /&gt;
&lt;br /&gt;
  model_MUSCAL_CANVAS_dll0.01_vardz_float32_cmpd.nc&lt;br /&gt;
  1.4G&lt;br /&gt;
&lt;br /&gt;
  All longitude, latitude, and depth points are now saved as float32, as well as the vp, vs, and rho. &lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data with interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
=== Validation ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Several steps of pre/post processing are done to original MUSCAL model(netcdf format) in order to &lt;br /&gt;
incorporate it into UCVM and CVM explorer.&lt;br /&gt;
&lt;br /&gt;
   Because of the speed of netcdf-C code is too slow to support in-time nature of the explorer and would &lt;br /&gt;
   like to have interpolation on query,&lt;br /&gt;
&lt;br /&gt;
      * Number of depth layer is reduced with deeper layers merged into fewer layers&lt;br /&gt;
      * preprocessing the netcdf data into binary data files&lt;br /&gt;
      * data are all in float32&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.txt]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Final result from ucvm_query, (with interpolation)&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.final.txt]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.final.txt]]&lt;br /&gt;
&lt;br /&gt;
== Extended Model ==&lt;br /&gt;
&lt;br /&gt;
The 3D MUSCAL model is defined over the same volume as the CANVAS base model.  However, some simulation regions may extend beyond the boundaries, like the blue corners in the example CyberShake volume for USC below: &lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:USC_muscal_horiz_slice_z0.png|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To solve this in a consistent and reproducible way, we will extend the MUSCAL model through UCVM with nearest neighbor extrapolation to generate physically consistent properties beyond defined model boundary .  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Iterate through each layer of MUSCAL dataset and collect the material properties of all edge points&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Compose a surface point dataset from the collected points&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;During UCVM query process, load the surface dataset and create a kdtree structure (k-dimensional tree), which is good for binary tree search&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If the model query returns NaNs (indicating the point is beyond the bounds of the 3D model); Query the Kdtree for the nearest neighbors.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The surface and kdtree code are in SCECcode/muscalnc.git, src directory: muscalnc_surface.c, kdtree_util.c&lt;br /&gt;
&lt;br /&gt;
== NetCDF version of MUSCAL ==&lt;br /&gt;
&lt;br /&gt;
ncdump -h /var/www/html/CVM_DATASET_DIRECTORY/model/muscal/model_MUSCAL_CANVAS_dll0.01_vardz_float32_cmpd.&lt;br /&gt;
nc&lt;br /&gt;
&lt;br /&gt;
== TileDB version of MUSCAL ==&lt;br /&gt;
&lt;br /&gt;
Prototype TileDB as the base data storage solution, translation and conversion code were implemented and verified with code generate using various AI tools, ie. Gemini Pro, copilot and chapGPT.&lt;br /&gt;
&lt;br /&gt;
MUSCALTDB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tiledb_dump -a xx_array&lt;br /&gt;
python -c &amp;quot;import tiledb; print(tiledb.open(&#039;muscal_canvas_tiledb_array&#039;).schema)&amp;quot;&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=MUSCAL&amp;diff=30998</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=MUSCAL&amp;diff=30998"/>
		<updated>2026-09-28T20:33:13Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* TileDB version of MUSCAL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the Multi-Scale CALifornia (MUSCAL) velocity model and its integration into UCVM.&lt;br /&gt;
&lt;br /&gt;
== Model overview ==&lt;br /&gt;
&lt;br /&gt;
The MUSCAL Vp and Vs model was created by Te-Yang Yeh, Kim B. Olsen and Yehuda Ben-Zion in 2025-6 by starting with the CANVAS tomography model as a base and then integrating multiple regional and local high-resolution models.  &lt;br /&gt;
&lt;br /&gt;
=== Model Components ===&lt;br /&gt;
&lt;br /&gt;
The model was built by starting with a base model (the CANVAS (Doody et al., 2023) tomography model).  Next, regional and local models are added where they improve the fit, based on M4 simulations.  These simulations were run to 1 Hz with topography using a minimum Vs of 450 m/s.  Finally, a spatially varying taper following the Ely approach is added.&lt;br /&gt;
&lt;br /&gt;
==== Regional Models ====&lt;br /&gt;
&lt;br /&gt;
Regional models evaluated for inclusion are:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Northern California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Lin et al. (2010)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Furlong et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Guo et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Central California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CCA-06&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-H v15.1.1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-S4.26&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Guo et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Berg et al. (2021)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Southern California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Fang et al. (2022)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-S4.26&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-H v15.1.1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Berg et al. (2021)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Local Models ====&lt;br /&gt;
&lt;br /&gt;
Below is a list of local high-resolution models that were evaluated for inclusion.&lt;br /&gt;
&lt;br /&gt;
Northern and Central California:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ridgecrest regional (Li and Ben-Zion (2024))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ridgecrest fault zone (Zhou et al. (2022))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Joaquin basin (Shaw &amp;amp; Plesch (2016))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SFCVM v21.1 (Hirakawa &amp;amp; Aagaard (2022))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Southern California:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Jacinto fault zone (Fang et al. (2019))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Gabriel-San Bernardino Basin (Li et al. (2023))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Imperial Valley (Persaud et al. (2016))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Coachella Valley (Ajala et al. (2019))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Santa Maria Basin (Plesch et al. (2020))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Taper ====&lt;br /&gt;
&lt;br /&gt;
MUSCAL includes a low-velocity taper using the Ely-Jordan approach.  Vs30 for this method is produced by merging the Thompson (2018) Vs30 map with the [https://earthquake.usgs.gov/data/vs30/ USGS global Vs30 dataset].&lt;br /&gt;
&lt;br /&gt;
The depth of the taper varies depending on the site and ranges from 300m to 1500m.&lt;br /&gt;
&lt;br /&gt;
== Delivered Model ==&lt;br /&gt;
&lt;br /&gt;
The final version of MUSCAL is delivered in netCDF format.  The dimensions of the model in grid points are 1251 (lat) x 1301 (lon) x 210 (depth). Grid points have a spacing of 0.01 degrees in the horizontal; the depth is variable with denser sampling near the surface.  The model is interpolated using trilinear interpolation.&lt;br /&gt;
&lt;br /&gt;
Details about the model creation are provided in the paper ([https://essopenarchive.org/doi/full/10.22541/essoar.15001929/v1 preprint]) and the [https://zenodo.org/records/19243477 Zenodo page].&lt;br /&gt;
&lt;br /&gt;
Below is a plot of the 3D model extent.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:MUSCAL_region_extent.png|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datasets ===&lt;br /&gt;
&lt;br /&gt;
zone: 11&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  command  use:&lt;br /&gt;
     plot_depth_profile.py -n $UCVM_INSTALL_PATH/conf/ucvm.conf -i $UCVM_INSTALL_PATH -d vs -c muscal &lt;br /&gt;
                           -o muscal_small_depth_1000.png -C &#039;Multi-Scale Statewide California Velocity Model&#039;&lt;br /&gt;
                           -v 1000 -b 0 -s 36.5054,-119.0587 -e 30000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== big data in netcdf ====&lt;br /&gt;
  &lt;br /&gt;
  model_MSCAL_CANVAS_dll0.01_dz50_cmpd.nc&lt;br /&gt;
  4.5G&lt;br /&gt;
&lt;br /&gt;
  longitude:1301 from -126 to -113 &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:671      from 0 to 100,000 &lt;br /&gt;
                   50 increments until 30,000&lt;br /&gt;
                   1000 increments til 100000&lt;br /&gt;
&lt;br /&gt;
Plot Depth profile at  36.5054,-119.0587 in different step increments. No interpretation and access data using nc api&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[FILE:muscal_big_deth_50.png|thumb|300px|muscal big 50 vs]]&lt;br /&gt;
| [[FILE:muscal_big_deth_100.png|thumb|300px|muscal big 100 vs]]&lt;br /&gt;
| [[FILE:muscal_big_depth_500.png|thumb|300px|muscal big 500 vs]] &lt;br /&gt;
| [[FILE:muscal_big_deth_1000.png|thumb|300px|muscal big 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_big_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== small data in netcdf ====&lt;br /&gt;
   model_MUSCAL_CANVAS_dll0.01_vardz_cmpd.nc &lt;br /&gt;
   2.1G &lt;br /&gt;
&lt;br /&gt;
  longitdue:1301 from -126 to -113   &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:210      from 0 to 99,000 &lt;br /&gt;
                   50 increments upto 3000 &lt;br /&gt;
                   100 increments upto 5000&lt;br /&gt;
                   250 increments upto 10000&lt;br /&gt;
                   500 increments upto 30000&lt;br /&gt;
                   1000 increments upto 99000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Depth profiles in different steps : 50m,100m,500m,1000m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Direct from netcdf as external file&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_depth_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_depth_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data no interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_no_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_no_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_no_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== Another small dataset in netcdf ====&lt;br /&gt;
&lt;br /&gt;
  model_MUSCAL_CANVAS_dll0.01_vardz_float32_cmpd.nc&lt;br /&gt;
  1.4G&lt;br /&gt;
&lt;br /&gt;
  All longitude, latitude, and depth points are now saved as float32, as well as the vp, vs, and rho. &lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data with interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
=== Validation ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Several steps of pre/post processing are done to original MUSCAL model(netcdf format) in order to &lt;br /&gt;
incorporate it into UCVM and CVM explorer.&lt;br /&gt;
&lt;br /&gt;
   Because of the speed of netcdf-C code is too slow to support in-time nature of the explorer and would &lt;br /&gt;
   like to have interpolation on query,&lt;br /&gt;
&lt;br /&gt;
      * Number of depth layer is reduced with deeper layers merged into fewer layers&lt;br /&gt;
      * preprocessing the netcdf data into binary data files&lt;br /&gt;
      * data are all in float32&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.txt]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Final result from ucvm_query, (with interpolation)&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.final.txt]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.final.txt]]&lt;br /&gt;
&lt;br /&gt;
== Extended Model ==&lt;br /&gt;
&lt;br /&gt;
The 3D MUSCAL model is defined over the same volume as the CANVAS base model.  However, some simulation regions may extend beyond the boundaries, like the blue corners in the example CyberShake volume for USC below: &lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:USC_muscal_horiz_slice_z0.png|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To solve this in a consistent and reproducible way, we will extend the MUSCAL model through UCVM with nearest neighbor extrapolation to generate physically consistent properties beyond defined model boundary .  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Iterate through each layer of MUSCAL dataset and collect the material properties of all edge points&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Compose a surface point dataset from the collected points&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;During UCVM query process, load the surface dataset and create a kdtree structure (k-dimensional tree), which is good for binary tree search&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If the model query returns NaNs (indicating the point is beyond the bounds of the 3D model); Query the Kdtree for the nearest neighbors.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The surface and kdtree code are in SCECcode/muscalnc.git, src directory: muscalnc_surface.c, kdtree_util.c&lt;br /&gt;
&lt;br /&gt;
== NetCDF version of MUSCAL ==&lt;br /&gt;
&lt;br /&gt;
== TileDB version of MUSCAL ==&lt;br /&gt;
&lt;br /&gt;
Prototype TileDB as the base data storage solution, translation and conversion code were implemented and verified with code generate using various AI tools, ie. Gemini Pro, copilot and chapGPT.&lt;br /&gt;
&lt;br /&gt;
MUSCALTDB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tiledb_dump -a xx_array&lt;br /&gt;
python -c &amp;quot;import tiledb; print(tiledb.open(&#039;muscal_canvas_tiledb_array&#039;).schema)&amp;quot;&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=MUSCAL&amp;diff=30997</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=MUSCAL&amp;diff=30997"/>
		<updated>2026-09-28T20:29:00Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* TileDB version of MUSCAL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the Multi-Scale CALifornia (MUSCAL) velocity model and its integration into UCVM.&lt;br /&gt;
&lt;br /&gt;
== Model overview ==&lt;br /&gt;
&lt;br /&gt;
The MUSCAL Vp and Vs model was created by Te-Yang Yeh, Kim B. Olsen and Yehuda Ben-Zion in 2025-6 by starting with the CANVAS tomography model as a base and then integrating multiple regional and local high-resolution models.  &lt;br /&gt;
&lt;br /&gt;
=== Model Components ===&lt;br /&gt;
&lt;br /&gt;
The model was built by starting with a base model (the CANVAS (Doody et al., 2023) tomography model).  Next, regional and local models are added where they improve the fit, based on M4 simulations.  These simulations were run to 1 Hz with topography using a minimum Vs of 450 m/s.  Finally, a spatially varying taper following the Ely approach is added.&lt;br /&gt;
&lt;br /&gt;
==== Regional Models ====&lt;br /&gt;
&lt;br /&gt;
Regional models evaluated for inclusion are:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Northern California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Lin et al. (2010)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Furlong et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Guo et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Central California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CCA-06&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-H v15.1.1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-S4.26&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Guo et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Berg et al. (2021)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Southern California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Fang et al. (2022)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-S4.26&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-H v15.1.1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Berg et al. (2021)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Local Models ====&lt;br /&gt;
&lt;br /&gt;
Below is a list of local high-resolution models that were evaluated for inclusion.&lt;br /&gt;
&lt;br /&gt;
Northern and Central California:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ridgecrest regional (Li and Ben-Zion (2024))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ridgecrest fault zone (Zhou et al. (2022))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Joaquin basin (Shaw &amp;amp; Plesch (2016))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SFCVM v21.1 (Hirakawa &amp;amp; Aagaard (2022))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Southern California:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Jacinto fault zone (Fang et al. (2019))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Gabriel-San Bernardino Basin (Li et al. (2023))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Imperial Valley (Persaud et al. (2016))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Coachella Valley (Ajala et al. (2019))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Santa Maria Basin (Plesch et al. (2020))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Taper ====&lt;br /&gt;
&lt;br /&gt;
MUSCAL includes a low-velocity taper using the Ely-Jordan approach.  Vs30 for this method is produced by merging the Thompson (2018) Vs30 map with the [https://earthquake.usgs.gov/data/vs30/ USGS global Vs30 dataset].&lt;br /&gt;
&lt;br /&gt;
The depth of the taper varies depending on the site and ranges from 300m to 1500m.&lt;br /&gt;
&lt;br /&gt;
== Delivered Model ==&lt;br /&gt;
&lt;br /&gt;
The final version of MUSCAL is delivered in netCDF format.  The dimensions of the model in grid points are 1251 (lat) x 1301 (lon) x 210 (depth). Grid points have a spacing of 0.01 degrees in the horizontal; the depth is variable with denser sampling near the surface.  The model is interpolated using trilinear interpolation.&lt;br /&gt;
&lt;br /&gt;
Details about the model creation are provided in the paper ([https://essopenarchive.org/doi/full/10.22541/essoar.15001929/v1 preprint]) and the [https://zenodo.org/records/19243477 Zenodo page].&lt;br /&gt;
&lt;br /&gt;
Below is a plot of the 3D model extent.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:MUSCAL_region_extent.png|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datasets ===&lt;br /&gt;
&lt;br /&gt;
zone: 11&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  command  use:&lt;br /&gt;
     plot_depth_profile.py -n $UCVM_INSTALL_PATH/conf/ucvm.conf -i $UCVM_INSTALL_PATH -d vs -c muscal &lt;br /&gt;
                           -o muscal_small_depth_1000.png -C &#039;Multi-Scale Statewide California Velocity Model&#039;&lt;br /&gt;
                           -v 1000 -b 0 -s 36.5054,-119.0587 -e 30000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== big data in netcdf ====&lt;br /&gt;
  &lt;br /&gt;
  model_MSCAL_CANVAS_dll0.01_dz50_cmpd.nc&lt;br /&gt;
  4.5G&lt;br /&gt;
&lt;br /&gt;
  longitude:1301 from -126 to -113 &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:671      from 0 to 100,000 &lt;br /&gt;
                   50 increments until 30,000&lt;br /&gt;
                   1000 increments til 100000&lt;br /&gt;
&lt;br /&gt;
Plot Depth profile at  36.5054,-119.0587 in different step increments. No interpretation and access data using nc api&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[FILE:muscal_big_deth_50.png|thumb|300px|muscal big 50 vs]]&lt;br /&gt;
| [[FILE:muscal_big_deth_100.png|thumb|300px|muscal big 100 vs]]&lt;br /&gt;
| [[FILE:muscal_big_depth_500.png|thumb|300px|muscal big 500 vs]] &lt;br /&gt;
| [[FILE:muscal_big_deth_1000.png|thumb|300px|muscal big 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_big_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== small data in netcdf ====&lt;br /&gt;
   model_MUSCAL_CANVAS_dll0.01_vardz_cmpd.nc &lt;br /&gt;
   2.1G &lt;br /&gt;
&lt;br /&gt;
  longitdue:1301 from -126 to -113   &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:210      from 0 to 99,000 &lt;br /&gt;
                   50 increments upto 3000 &lt;br /&gt;
                   100 increments upto 5000&lt;br /&gt;
                   250 increments upto 10000&lt;br /&gt;
                   500 increments upto 30000&lt;br /&gt;
                   1000 increments upto 99000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Depth profiles in different steps : 50m,100m,500m,1000m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Direct from netcdf as external file&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_depth_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_depth_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data no interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_no_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_no_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_no_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== Another small dataset in netcdf ====&lt;br /&gt;
&lt;br /&gt;
  model_MUSCAL_CANVAS_dll0.01_vardz_float32_cmpd.nc&lt;br /&gt;
  1.4G&lt;br /&gt;
&lt;br /&gt;
  All longitude, latitude, and depth points are now saved as float32, as well as the vp, vs, and rho. &lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data with interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
=== Validation ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Several steps of pre/post processing are done to original MUSCAL model(netcdf format) in order to &lt;br /&gt;
incorporate it into UCVM and CVM explorer.&lt;br /&gt;
&lt;br /&gt;
   Because of the speed of netcdf-C code is too slow to support in-time nature of the explorer and would &lt;br /&gt;
   like to have interpolation on query,&lt;br /&gt;
&lt;br /&gt;
      * Number of depth layer is reduced with deeper layers merged into fewer layers&lt;br /&gt;
      * preprocessing the netcdf data into binary data files&lt;br /&gt;
      * data are all in float32&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.txt]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Final result from ucvm_query, (with interpolation)&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.final.txt]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.final.txt]]&lt;br /&gt;
&lt;br /&gt;
== Extended Model ==&lt;br /&gt;
&lt;br /&gt;
The 3D MUSCAL model is defined over the same volume as the CANVAS base model.  However, some simulation regions may extend beyond the boundaries, like the blue corners in the example CyberShake volume for USC below: &lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:USC_muscal_horiz_slice_z0.png|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To solve this in a consistent and reproducible way, we will extend the MUSCAL model through UCVM with nearest neighbor extrapolation to generate physically consistent properties beyond defined model boundary .  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Iterate through each layer of MUSCAL dataset and collect the material properties of all edge points&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Compose a surface point dataset from the collected points&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;During UCVM query process, load the surface dataset and create a kdtree structure (k-dimensional tree), which is good for binary tree search&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If the model query returns NaNs (indicating the point is beyond the bounds of the 3D model); Query the Kdtree for the nearest neighbors.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The surface and kdtree code are in SCECcode/muscalnc.git, src directory: muscalnc_surface.c, kdtree_util.c&lt;br /&gt;
&lt;br /&gt;
== NetCDF version of MUSCAL ==&lt;br /&gt;
&lt;br /&gt;
== TileDB version of MUSCAL ==&lt;br /&gt;
&lt;br /&gt;
Prototype TileDB as the base data storage solution, translation and conversion code were implemented and verified with code generate using various AI tools, ie. Gemini Pro, copilot and chapGPT.&lt;br /&gt;
&lt;br /&gt;
MUSCALTDB&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=MUSCAL&amp;diff=30996</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=MUSCAL&amp;diff=30996"/>
		<updated>2026-09-28T20:27:46Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* Extended Model */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the Multi-Scale CALifornia (MUSCAL) velocity model and its integration into UCVM.&lt;br /&gt;
&lt;br /&gt;
== Model overview ==&lt;br /&gt;
&lt;br /&gt;
The MUSCAL Vp and Vs model was created by Te-Yang Yeh, Kim B. Olsen and Yehuda Ben-Zion in 2025-6 by starting with the CANVAS tomography model as a base and then integrating multiple regional and local high-resolution models.  &lt;br /&gt;
&lt;br /&gt;
=== Model Components ===&lt;br /&gt;
&lt;br /&gt;
The model was built by starting with a base model (the CANVAS (Doody et al., 2023) tomography model).  Next, regional and local models are added where they improve the fit, based on M4 simulations.  These simulations were run to 1 Hz with topography using a minimum Vs of 450 m/s.  Finally, a spatially varying taper following the Ely approach is added.&lt;br /&gt;
&lt;br /&gt;
==== Regional Models ====&lt;br /&gt;
&lt;br /&gt;
Regional models evaluated for inclusion are:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Northern California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Lin et al. (2010)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Furlong et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Guo et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Central California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CCA-06&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-H v15.1.1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-S4.26&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Guo et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Berg et al. (2021)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Southern California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Fang et al. (2022)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-S4.26&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-H v15.1.1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Berg et al. (2021)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Local Models ====&lt;br /&gt;
&lt;br /&gt;
Below is a list of local high-resolution models that were evaluated for inclusion.&lt;br /&gt;
&lt;br /&gt;
Northern and Central California:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ridgecrest regional (Li and Ben-Zion (2024))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ridgecrest fault zone (Zhou et al. (2022))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Joaquin basin (Shaw &amp;amp; Plesch (2016))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SFCVM v21.1 (Hirakawa &amp;amp; Aagaard (2022))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Southern California:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Jacinto fault zone (Fang et al. (2019))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Gabriel-San Bernardino Basin (Li et al. (2023))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Imperial Valley (Persaud et al. (2016))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Coachella Valley (Ajala et al. (2019))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Santa Maria Basin (Plesch et al. (2020))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Taper ====&lt;br /&gt;
&lt;br /&gt;
MUSCAL includes a low-velocity taper using the Ely-Jordan approach.  Vs30 for this method is produced by merging the Thompson (2018) Vs30 map with the [https://earthquake.usgs.gov/data/vs30/ USGS global Vs30 dataset].&lt;br /&gt;
&lt;br /&gt;
The depth of the taper varies depending on the site and ranges from 300m to 1500m.&lt;br /&gt;
&lt;br /&gt;
== Delivered Model ==&lt;br /&gt;
&lt;br /&gt;
The final version of MUSCAL is delivered in netCDF format.  The dimensions of the model in grid points are 1251 (lat) x 1301 (lon) x 210 (depth). Grid points have a spacing of 0.01 degrees in the horizontal; the depth is variable with denser sampling near the surface.  The model is interpolated using trilinear interpolation.&lt;br /&gt;
&lt;br /&gt;
Details about the model creation are provided in the paper ([https://essopenarchive.org/doi/full/10.22541/essoar.15001929/v1 preprint]) and the [https://zenodo.org/records/19243477 Zenodo page].&lt;br /&gt;
&lt;br /&gt;
Below is a plot of the 3D model extent.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:MUSCAL_region_extent.png|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datasets ===&lt;br /&gt;
&lt;br /&gt;
zone: 11&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  command  use:&lt;br /&gt;
     plot_depth_profile.py -n $UCVM_INSTALL_PATH/conf/ucvm.conf -i $UCVM_INSTALL_PATH -d vs -c muscal &lt;br /&gt;
                           -o muscal_small_depth_1000.png -C &#039;Multi-Scale Statewide California Velocity Model&#039;&lt;br /&gt;
                           -v 1000 -b 0 -s 36.5054,-119.0587 -e 30000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== big data in netcdf ====&lt;br /&gt;
  &lt;br /&gt;
  model_MSCAL_CANVAS_dll0.01_dz50_cmpd.nc&lt;br /&gt;
  4.5G&lt;br /&gt;
&lt;br /&gt;
  longitude:1301 from -126 to -113 &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:671      from 0 to 100,000 &lt;br /&gt;
                   50 increments until 30,000&lt;br /&gt;
                   1000 increments til 100000&lt;br /&gt;
&lt;br /&gt;
Plot Depth profile at  36.5054,-119.0587 in different step increments. No interpretation and access data using nc api&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[FILE:muscal_big_deth_50.png|thumb|300px|muscal big 50 vs]]&lt;br /&gt;
| [[FILE:muscal_big_deth_100.png|thumb|300px|muscal big 100 vs]]&lt;br /&gt;
| [[FILE:muscal_big_depth_500.png|thumb|300px|muscal big 500 vs]] &lt;br /&gt;
| [[FILE:muscal_big_deth_1000.png|thumb|300px|muscal big 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_big_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== small data in netcdf ====&lt;br /&gt;
   model_MUSCAL_CANVAS_dll0.01_vardz_cmpd.nc &lt;br /&gt;
   2.1G &lt;br /&gt;
&lt;br /&gt;
  longitdue:1301 from -126 to -113   &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:210      from 0 to 99,000 &lt;br /&gt;
                   50 increments upto 3000 &lt;br /&gt;
                   100 increments upto 5000&lt;br /&gt;
                   250 increments upto 10000&lt;br /&gt;
                   500 increments upto 30000&lt;br /&gt;
                   1000 increments upto 99000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Depth profiles in different steps : 50m,100m,500m,1000m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Direct from netcdf as external file&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_depth_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_depth_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data no interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_no_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_no_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_no_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== Another small dataset in netcdf ====&lt;br /&gt;
&lt;br /&gt;
  model_MUSCAL_CANVAS_dll0.01_vardz_float32_cmpd.nc&lt;br /&gt;
  1.4G&lt;br /&gt;
&lt;br /&gt;
  All longitude, latitude, and depth points are now saved as float32, as well as the vp, vs, and rho. &lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data with interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
=== Validation ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Several steps of pre/post processing are done to original MUSCAL model(netcdf format) in order to &lt;br /&gt;
incorporate it into UCVM and CVM explorer.&lt;br /&gt;
&lt;br /&gt;
   Because of the speed of netcdf-C code is too slow to support in-time nature of the explorer and would &lt;br /&gt;
   like to have interpolation on query,&lt;br /&gt;
&lt;br /&gt;
      * Number of depth layer is reduced with deeper layers merged into fewer layers&lt;br /&gt;
      * preprocessing the netcdf data into binary data files&lt;br /&gt;
      * data are all in float32&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.txt]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Final result from ucvm_query, (with interpolation)&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.final.txt]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.final.txt]]&lt;br /&gt;
&lt;br /&gt;
== Extended Model ==&lt;br /&gt;
&lt;br /&gt;
The 3D MUSCAL model is defined over the same volume as the CANVAS base model.  However, some simulation regions may extend beyond the boundaries, like the blue corners in the example CyberShake volume for USC below: &lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:USC_muscal_horiz_slice_z0.png|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To solve this in a consistent and reproducible way, we will extend the MUSCAL model through UCVM with nearest neighbor extrapolation to generate physically consistent properties beyond defined model boundary .  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Iterate through each layer of MUSCAL dataset and collect the material properties of all edge points&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Compose a surface point dataset from the collected points&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;During UCVM query process, load the surface dataset and create a kdtree structure (k-dimensional tree), which is good for binary tree search&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If the model query returns NaNs (indicating the point is beyond the bounds of the 3D model); Query the Kdtree for the nearest neighbors.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The surface and kdtree code are in SCECcode/muscalnc.git, src directory: muscalnc_surface.c, kdtree_util.c&lt;br /&gt;
&lt;br /&gt;
== TileDB version of MUSCAL ==&lt;br /&gt;
&lt;br /&gt;
Prototype TileDB as the base data storage solution, translation and conversion code were implemented and verified with code generate using various AI tools, ie. Gemini Pro, copilot and chapGPT.&lt;br /&gt;
&lt;br /&gt;
MUSCALTDB&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=MUSCAL&amp;diff=30995</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=MUSCAL&amp;diff=30995"/>
		<updated>2026-09-28T19:54:11Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* Extended Model */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the Multi-Scale CALifornia (MUSCAL) velocity model and its integration into UCVM.&lt;br /&gt;
&lt;br /&gt;
== Model overview ==&lt;br /&gt;
&lt;br /&gt;
The MUSCAL Vp and Vs model was created by Te-Yang Yeh, Kim B. Olsen and Yehuda Ben-Zion in 2025-6 by starting with the CANVAS tomography model as a base and then integrating multiple regional and local high-resolution models.  &lt;br /&gt;
&lt;br /&gt;
=== Model Components ===&lt;br /&gt;
&lt;br /&gt;
The model was built by starting with a base model (the CANVAS (Doody et al., 2023) tomography model).  Next, regional and local models are added where they improve the fit, based on M4 simulations.  These simulations were run to 1 Hz with topography using a minimum Vs of 450 m/s.  Finally, a spatially varying taper following the Ely approach is added.&lt;br /&gt;
&lt;br /&gt;
==== Regional Models ====&lt;br /&gt;
&lt;br /&gt;
Regional models evaluated for inclusion are:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Northern California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Lin et al. (2010)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Furlong et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Guo et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Central California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CCA-06&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-H v15.1.1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-S4.26&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Guo et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Berg et al. (2021)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Southern California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Fang et al. (2022)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-S4.26&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-H v15.1.1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Berg et al. (2021)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Local Models ====&lt;br /&gt;
&lt;br /&gt;
Below is a list of local high-resolution models that were evaluated for inclusion.&lt;br /&gt;
&lt;br /&gt;
Northern and Central California:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ridgecrest regional (Li and Ben-Zion (2024))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ridgecrest fault zone (Zhou et al. (2022))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Joaquin basin (Shaw &amp;amp; Plesch (2016))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SFCVM v21.1 (Hirakawa &amp;amp; Aagaard (2022))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Southern California:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Jacinto fault zone (Fang et al. (2019))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Gabriel-San Bernardino Basin (Li et al. (2023))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Imperial Valley (Persaud et al. (2016))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Coachella Valley (Ajala et al. (2019))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Santa Maria Basin (Plesch et al. (2020))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Taper ====&lt;br /&gt;
&lt;br /&gt;
MUSCAL includes a low-velocity taper using the Ely-Jordan approach.  Vs30 for this method is produced by merging the Thompson (2018) Vs30 map with the [https://earthquake.usgs.gov/data/vs30/ USGS global Vs30 dataset].&lt;br /&gt;
&lt;br /&gt;
The depth of the taper varies depending on the site and ranges from 300m to 1500m.&lt;br /&gt;
&lt;br /&gt;
== Delivered Model ==&lt;br /&gt;
&lt;br /&gt;
The final version of MUSCAL is delivered in netCDF format.  The dimensions of the model in grid points are 1251 (lat) x 1301 (lon) x 210 (depth). Grid points have a spacing of 0.01 degrees in the horizontal; the depth is variable with denser sampling near the surface.  The model is interpolated using trilinear interpolation.&lt;br /&gt;
&lt;br /&gt;
Details about the model creation are provided in the paper ([https://essopenarchive.org/doi/full/10.22541/essoar.15001929/v1 preprint]) and the [https://zenodo.org/records/19243477 Zenodo page].&lt;br /&gt;
&lt;br /&gt;
Below is a plot of the 3D model extent.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:MUSCAL_region_extent.png|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datasets ===&lt;br /&gt;
&lt;br /&gt;
zone: 11&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  command  use:&lt;br /&gt;
     plot_depth_profile.py -n $UCVM_INSTALL_PATH/conf/ucvm.conf -i $UCVM_INSTALL_PATH -d vs -c muscal &lt;br /&gt;
                           -o muscal_small_depth_1000.png -C &#039;Multi-Scale Statewide California Velocity Model&#039;&lt;br /&gt;
                           -v 1000 -b 0 -s 36.5054,-119.0587 -e 30000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== big data in netcdf ====&lt;br /&gt;
  &lt;br /&gt;
  model_MSCAL_CANVAS_dll0.01_dz50_cmpd.nc&lt;br /&gt;
  4.5G&lt;br /&gt;
&lt;br /&gt;
  longitude:1301 from -126 to -113 &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:671      from 0 to 100,000 &lt;br /&gt;
                   50 increments until 30,000&lt;br /&gt;
                   1000 increments til 100000&lt;br /&gt;
&lt;br /&gt;
Plot Depth profile at  36.5054,-119.0587 in different step increments. No interpretation and access data using nc api&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[FILE:muscal_big_deth_50.png|thumb|300px|muscal big 50 vs]]&lt;br /&gt;
| [[FILE:muscal_big_deth_100.png|thumb|300px|muscal big 100 vs]]&lt;br /&gt;
| [[FILE:muscal_big_depth_500.png|thumb|300px|muscal big 500 vs]] &lt;br /&gt;
| [[FILE:muscal_big_deth_1000.png|thumb|300px|muscal big 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_big_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== small data in netcdf ====&lt;br /&gt;
   model_MUSCAL_CANVAS_dll0.01_vardz_cmpd.nc &lt;br /&gt;
   2.1G &lt;br /&gt;
&lt;br /&gt;
  longitdue:1301 from -126 to -113   &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:210      from 0 to 99,000 &lt;br /&gt;
                   50 increments upto 3000 &lt;br /&gt;
                   100 increments upto 5000&lt;br /&gt;
                   250 increments upto 10000&lt;br /&gt;
                   500 increments upto 30000&lt;br /&gt;
                   1000 increments upto 99000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Depth profiles in different steps : 50m,100m,500m,1000m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Direct from netcdf as external file&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_depth_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_depth_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data no interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_no_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_no_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_no_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== Another small dataset in netcdf ====&lt;br /&gt;
&lt;br /&gt;
  model_MUSCAL_CANVAS_dll0.01_vardz_float32_cmpd.nc&lt;br /&gt;
  1.4G&lt;br /&gt;
&lt;br /&gt;
  All longitude, latitude, and depth points are now saved as float32, as well as the vp, vs, and rho. &lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data with interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
=== Validation ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Several steps of pre/post processing are done to original MUSCAL model(netcdf format) in order to &lt;br /&gt;
incorporate it into UCVM and CVM explorer.&lt;br /&gt;
&lt;br /&gt;
   Because of the speed of netcdf-C code is too slow to support in-time nature of the explorer and would &lt;br /&gt;
   like to have interpolation on query,&lt;br /&gt;
&lt;br /&gt;
      * Number of depth layer is reduced with deeper layers merged into fewer layers&lt;br /&gt;
      * preprocessing the netcdf data into binary data files&lt;br /&gt;
      * data are all in float32&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.txt]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Final result from ucvm_query, (with interpolation)&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.final.txt]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.final.txt]]&lt;br /&gt;
&lt;br /&gt;
== Extended Model ==&lt;br /&gt;
&lt;br /&gt;
The 3D MUSCAL model is defined over the same volume as the CANVAS base model.  However, some simulation regions may extend beyond the boundaries, like the blue corners in the example CyberShake volume for USC below: &lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:USC_muscal_horiz_slice_z0.png|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To solve this in a consistent and reproducible way, we will extend the MUSCAL model through UCVM with nearest neighbor extrapolation to generate physically consistent properties beyond defined model boundary .  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Iterate through each layer of MUSCAL dataset and collect the material properties of all edge points&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Compose a surface point dataset from the collected points&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;During UCVM query process, load the surface dataset and create a kdtree structure (k-dimensional tree), which is good for binary tree search&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If the model query returns NaNs (indicating the point is beyond the bounds of the 3D model); Query the Kdtree for the nearest neighbors.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TileDB version of MUSCAL ==&lt;br /&gt;
&lt;br /&gt;
Prototype TileDB as the base data storage solution, translation and conversion code were implemented and verified with code generate using various AI tools, ie. Gemini Pro, copilot and chapGPT.&lt;br /&gt;
&lt;br /&gt;
MUSCALTDB&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=MUSCAL&amp;diff=30994</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=MUSCAL&amp;diff=30994"/>
		<updated>2026-09-28T19:51:07Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* Extended Model */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the Multi-Scale CALifornia (MUSCAL) velocity model and its integration into UCVM.&lt;br /&gt;
&lt;br /&gt;
== Model overview ==&lt;br /&gt;
&lt;br /&gt;
The MUSCAL Vp and Vs model was created by Te-Yang Yeh, Kim B. Olsen and Yehuda Ben-Zion in 2025-6 by starting with the CANVAS tomography model as a base and then integrating multiple regional and local high-resolution models.  &lt;br /&gt;
&lt;br /&gt;
=== Model Components ===&lt;br /&gt;
&lt;br /&gt;
The model was built by starting with a base model (the CANVAS (Doody et al., 2023) tomography model).  Next, regional and local models are added where they improve the fit, based on M4 simulations.  These simulations were run to 1 Hz with topography using a minimum Vs of 450 m/s.  Finally, a spatially varying taper following the Ely approach is added.&lt;br /&gt;
&lt;br /&gt;
==== Regional Models ====&lt;br /&gt;
&lt;br /&gt;
Regional models evaluated for inclusion are:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Northern California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Lin et al. (2010)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Furlong et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Guo et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Central California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CCA-06&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-H v15.1.1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-S4.26&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Guo et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Berg et al. (2021)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Southern California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Fang et al. (2022)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-S4.26&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-H v15.1.1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Berg et al. (2021)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Local Models ====&lt;br /&gt;
&lt;br /&gt;
Below is a list of local high-resolution models that were evaluated for inclusion.&lt;br /&gt;
&lt;br /&gt;
Northern and Central California:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ridgecrest regional (Li and Ben-Zion (2024))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ridgecrest fault zone (Zhou et al. (2022))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Joaquin basin (Shaw &amp;amp; Plesch (2016))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SFCVM v21.1 (Hirakawa &amp;amp; Aagaard (2022))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Southern California:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Jacinto fault zone (Fang et al. (2019))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Gabriel-San Bernardino Basin (Li et al. (2023))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Imperial Valley (Persaud et al. (2016))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Coachella Valley (Ajala et al. (2019))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Santa Maria Basin (Plesch et al. (2020))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Taper ====&lt;br /&gt;
&lt;br /&gt;
MUSCAL includes a low-velocity taper using the Ely-Jordan approach.  Vs30 for this method is produced by merging the Thompson (2018) Vs30 map with the [https://earthquake.usgs.gov/data/vs30/ USGS global Vs30 dataset].&lt;br /&gt;
&lt;br /&gt;
The depth of the taper varies depending on the site and ranges from 300m to 1500m.&lt;br /&gt;
&lt;br /&gt;
== Delivered Model ==&lt;br /&gt;
&lt;br /&gt;
The final version of MUSCAL is delivered in netCDF format.  The dimensions of the model in grid points are 1251 (lat) x 1301 (lon) x 210 (depth). Grid points have a spacing of 0.01 degrees in the horizontal; the depth is variable with denser sampling near the surface.  The model is interpolated using trilinear interpolation.&lt;br /&gt;
&lt;br /&gt;
Details about the model creation are provided in the paper ([https://essopenarchive.org/doi/full/10.22541/essoar.15001929/v1 preprint]) and the [https://zenodo.org/records/19243477 Zenodo page].&lt;br /&gt;
&lt;br /&gt;
Below is a plot of the 3D model extent.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:MUSCAL_region_extent.png|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datasets ===&lt;br /&gt;
&lt;br /&gt;
zone: 11&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  command  use:&lt;br /&gt;
     plot_depth_profile.py -n $UCVM_INSTALL_PATH/conf/ucvm.conf -i $UCVM_INSTALL_PATH -d vs -c muscal &lt;br /&gt;
                           -o muscal_small_depth_1000.png -C &#039;Multi-Scale Statewide California Velocity Model&#039;&lt;br /&gt;
                           -v 1000 -b 0 -s 36.5054,-119.0587 -e 30000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== big data in netcdf ====&lt;br /&gt;
  &lt;br /&gt;
  model_MSCAL_CANVAS_dll0.01_dz50_cmpd.nc&lt;br /&gt;
  4.5G&lt;br /&gt;
&lt;br /&gt;
  longitude:1301 from -126 to -113 &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:671      from 0 to 100,000 &lt;br /&gt;
                   50 increments until 30,000&lt;br /&gt;
                   1000 increments til 100000&lt;br /&gt;
&lt;br /&gt;
Plot Depth profile at  36.5054,-119.0587 in different step increments. No interpretation and access data using nc api&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[FILE:muscal_big_deth_50.png|thumb|300px|muscal big 50 vs]]&lt;br /&gt;
| [[FILE:muscal_big_deth_100.png|thumb|300px|muscal big 100 vs]]&lt;br /&gt;
| [[FILE:muscal_big_depth_500.png|thumb|300px|muscal big 500 vs]] &lt;br /&gt;
| [[FILE:muscal_big_deth_1000.png|thumb|300px|muscal big 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_big_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== small data in netcdf ====&lt;br /&gt;
   model_MUSCAL_CANVAS_dll0.01_vardz_cmpd.nc &lt;br /&gt;
   2.1G &lt;br /&gt;
&lt;br /&gt;
  longitdue:1301 from -126 to -113   &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:210      from 0 to 99,000 &lt;br /&gt;
                   50 increments upto 3000 &lt;br /&gt;
                   100 increments upto 5000&lt;br /&gt;
                   250 increments upto 10000&lt;br /&gt;
                   500 increments upto 30000&lt;br /&gt;
                   1000 increments upto 99000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Depth profiles in different steps : 50m,100m,500m,1000m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Direct from netcdf as external file&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_depth_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_depth_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data no interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_no_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_no_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_no_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== Another small dataset in netcdf ====&lt;br /&gt;
&lt;br /&gt;
  model_MUSCAL_CANVAS_dll0.01_vardz_float32_cmpd.nc&lt;br /&gt;
  1.4G&lt;br /&gt;
&lt;br /&gt;
  All longitude, latitude, and depth points are now saved as float32, as well as the vp, vs, and rho. &lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data with interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
=== Validation ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Several steps of pre/post processing are done to original MUSCAL model(netcdf format) in order to &lt;br /&gt;
incorporate it into UCVM and CVM explorer.&lt;br /&gt;
&lt;br /&gt;
   Because of the speed of netcdf-C code is too slow to support in-time nature of the explorer and would &lt;br /&gt;
   like to have interpolation on query,&lt;br /&gt;
&lt;br /&gt;
      * Number of depth layer is reduced with deeper layers merged into fewer layers&lt;br /&gt;
      * preprocessing the netcdf data into binary data files&lt;br /&gt;
      * data are all in float32&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.txt]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Final result from ucvm_query, (with interpolation)&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.final.txt]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.final.txt]]&lt;br /&gt;
&lt;br /&gt;
== Extended Model ==&lt;br /&gt;
&lt;br /&gt;
The 3D MUSCAL model is defined over the same volume as the CANVAS base model.  However, some simulation regions may extend beyond the boundaries, like the blue corners in the example CyberShake volume for USC below: &lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:USC_muscal_horiz_slice_z0.png|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To solve this in a consistent and reproducible way, we will extend the MUSCAL model through UCVM with nearest neighbor extrapolation to generate physically consistent properties beyond defined model boundary .  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Iterate through each layer of MUSCAL dataset and collect the material properties of all edge points&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Compose a surface point dataset from the collected points&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;During UCVM query process, load the surface dataset and create a kdtree structure (k-dimensional tree), which is good for binary tree search&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If the model query returns NaNs (indicating the point is beyond the bounds of the 3D model); Query the Kdtree for the nearest neighbors.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=MUSCAL&amp;diff=30993</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=MUSCAL&amp;diff=30993"/>
		<updated>2026-09-28T19:50:18Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* Extended Model */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the Multi-Scale CALifornia (MUSCAL) velocity model and its integration into UCVM.&lt;br /&gt;
&lt;br /&gt;
== Model overview ==&lt;br /&gt;
&lt;br /&gt;
The MUSCAL Vp and Vs model was created by Te-Yang Yeh, Kim B. Olsen and Yehuda Ben-Zion in 2025-6 by starting with the CANVAS tomography model as a base and then integrating multiple regional and local high-resolution models.  &lt;br /&gt;
&lt;br /&gt;
=== Model Components ===&lt;br /&gt;
&lt;br /&gt;
The model was built by starting with a base model (the CANVAS (Doody et al., 2023) tomography model).  Next, regional and local models are added where they improve the fit, based on M4 simulations.  These simulations were run to 1 Hz with topography using a minimum Vs of 450 m/s.  Finally, a spatially varying taper following the Ely approach is added.&lt;br /&gt;
&lt;br /&gt;
==== Regional Models ====&lt;br /&gt;
&lt;br /&gt;
Regional models evaluated for inclusion are:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Northern California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Lin et al. (2010)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Furlong et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Guo et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Central California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CCA-06&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-H v15.1.1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-S4.26&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Guo et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Berg et al. (2021)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Southern California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Fang et al. (2022)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-S4.26&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-H v15.1.1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Berg et al. (2021)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Local Models ====&lt;br /&gt;
&lt;br /&gt;
Below is a list of local high-resolution models that were evaluated for inclusion.&lt;br /&gt;
&lt;br /&gt;
Northern and Central California:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ridgecrest regional (Li and Ben-Zion (2024))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ridgecrest fault zone (Zhou et al. (2022))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Joaquin basin (Shaw &amp;amp; Plesch (2016))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SFCVM v21.1 (Hirakawa &amp;amp; Aagaard (2022))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Southern California:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Jacinto fault zone (Fang et al. (2019))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Gabriel-San Bernardino Basin (Li et al. (2023))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Imperial Valley (Persaud et al. (2016))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Coachella Valley (Ajala et al. (2019))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Santa Maria Basin (Plesch et al. (2020))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Taper ====&lt;br /&gt;
&lt;br /&gt;
MUSCAL includes a low-velocity taper using the Ely-Jordan approach.  Vs30 for this method is produced by merging the Thompson (2018) Vs30 map with the [https://earthquake.usgs.gov/data/vs30/ USGS global Vs30 dataset].&lt;br /&gt;
&lt;br /&gt;
The depth of the taper varies depending on the site and ranges from 300m to 1500m.&lt;br /&gt;
&lt;br /&gt;
== Delivered Model ==&lt;br /&gt;
&lt;br /&gt;
The final version of MUSCAL is delivered in netCDF format.  The dimensions of the model in grid points are 1251 (lat) x 1301 (lon) x 210 (depth). Grid points have a spacing of 0.01 degrees in the horizontal; the depth is variable with denser sampling near the surface.  The model is interpolated using trilinear interpolation.&lt;br /&gt;
&lt;br /&gt;
Details about the model creation are provided in the paper ([https://essopenarchive.org/doi/full/10.22541/essoar.15001929/v1 preprint]) and the [https://zenodo.org/records/19243477 Zenodo page].&lt;br /&gt;
&lt;br /&gt;
Below is a plot of the 3D model extent.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:MUSCAL_region_extent.png|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datasets ===&lt;br /&gt;
&lt;br /&gt;
zone: 11&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  command  use:&lt;br /&gt;
     plot_depth_profile.py -n $UCVM_INSTALL_PATH/conf/ucvm.conf -i $UCVM_INSTALL_PATH -d vs -c muscal &lt;br /&gt;
                           -o muscal_small_depth_1000.png -C &#039;Multi-Scale Statewide California Velocity Model&#039;&lt;br /&gt;
                           -v 1000 -b 0 -s 36.5054,-119.0587 -e 30000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== big data in netcdf ====&lt;br /&gt;
  &lt;br /&gt;
  model_MSCAL_CANVAS_dll0.01_dz50_cmpd.nc&lt;br /&gt;
  4.5G&lt;br /&gt;
&lt;br /&gt;
  longitude:1301 from -126 to -113 &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:671      from 0 to 100,000 &lt;br /&gt;
                   50 increments until 30,000&lt;br /&gt;
                   1000 increments til 100000&lt;br /&gt;
&lt;br /&gt;
Plot Depth profile at  36.5054,-119.0587 in different step increments. No interpretation and access data using nc api&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[FILE:muscal_big_deth_50.png|thumb|300px|muscal big 50 vs]]&lt;br /&gt;
| [[FILE:muscal_big_deth_100.png|thumb|300px|muscal big 100 vs]]&lt;br /&gt;
| [[FILE:muscal_big_depth_500.png|thumb|300px|muscal big 500 vs]] &lt;br /&gt;
| [[FILE:muscal_big_deth_1000.png|thumb|300px|muscal big 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_big_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== small data in netcdf ====&lt;br /&gt;
   model_MUSCAL_CANVAS_dll0.01_vardz_cmpd.nc &lt;br /&gt;
   2.1G &lt;br /&gt;
&lt;br /&gt;
  longitdue:1301 from -126 to -113   &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:210      from 0 to 99,000 &lt;br /&gt;
                   50 increments upto 3000 &lt;br /&gt;
                   100 increments upto 5000&lt;br /&gt;
                   250 increments upto 10000&lt;br /&gt;
                   500 increments upto 30000&lt;br /&gt;
                   1000 increments upto 99000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Depth profiles in different steps : 50m,100m,500m,1000m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Direct from netcdf as external file&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_depth_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_depth_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data no interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_no_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_no_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_no_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== Another small dataset in netcdf ====&lt;br /&gt;
&lt;br /&gt;
  model_MUSCAL_CANVAS_dll0.01_vardz_float32_cmpd.nc&lt;br /&gt;
  1.4G&lt;br /&gt;
&lt;br /&gt;
  All longitude, latitude, and depth points are now saved as float32, as well as the vp, vs, and rho. &lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data with interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
=== Validation ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Several steps of pre/post processing are done to original MUSCAL model(netcdf format) in order to &lt;br /&gt;
incorporate it into UCVM and CVM explorer.&lt;br /&gt;
&lt;br /&gt;
   Because of the speed of netcdf-C code is too slow to support in-time nature of the explorer and would &lt;br /&gt;
   like to have interpolation on query,&lt;br /&gt;
&lt;br /&gt;
      * Number of depth layer is reduced with deeper layers merged into fewer layers&lt;br /&gt;
      * preprocessing the netcdf data into binary data files&lt;br /&gt;
      * data are all in float32&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.txt]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Final result from ucvm_query, (with interpolation)&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.final.txt]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.final.txt]]&lt;br /&gt;
&lt;br /&gt;
== Extended Model ==&lt;br /&gt;
&lt;br /&gt;
The 3D MUSCAL model is defined over the same volume as the CANVAS base model.  However, some simulation regions may extend beyond the boundaries, like the blue corners in the example CyberShake volume for USC below: &lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:USC_muscal_horiz_slice_z0.png|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To solve this in a consistent and reproducible way, we will extend the MUSCAL model through UCVM with nearest neighbor extrapolation to generate physically consistent properties beyond defined model boundary .  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Iterate through each layer of MUSCAL dataset and collect the material properties of all edge points&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Compose a surface point dataset from the collected points&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;During UCVM query process, load the surface dataset and create a kdtree structure (k-dimensional tree) which is good for binary tree search&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If the model query returns NaNs (indicating the point is beyond the bounds of the 3D model): Query the Kdtree for the nearest neighbors.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=MUSCAL&amp;diff=30992</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=MUSCAL&amp;diff=30992"/>
		<updated>2026-09-28T19:49:57Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* Extended Model */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the Multi-Scale CALifornia (MUSCAL) velocity model and its integration into UCVM.&lt;br /&gt;
&lt;br /&gt;
== Model overview ==&lt;br /&gt;
&lt;br /&gt;
The MUSCAL Vp and Vs model was created by Te-Yang Yeh, Kim B. Olsen and Yehuda Ben-Zion in 2025-6 by starting with the CANVAS tomography model as a base and then integrating multiple regional and local high-resolution models.  &lt;br /&gt;
&lt;br /&gt;
=== Model Components ===&lt;br /&gt;
&lt;br /&gt;
The model was built by starting with a base model (the CANVAS (Doody et al., 2023) tomography model).  Next, regional and local models are added where they improve the fit, based on M4 simulations.  These simulations were run to 1 Hz with topography using a minimum Vs of 450 m/s.  Finally, a spatially varying taper following the Ely approach is added.&lt;br /&gt;
&lt;br /&gt;
==== Regional Models ====&lt;br /&gt;
&lt;br /&gt;
Regional models evaluated for inclusion are:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Northern California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Lin et al. (2010)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Furlong et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Guo et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Central California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CCA-06&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-H v15.1.1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-S4.26&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Guo et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Berg et al. (2021)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Southern California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Fang et al. (2022)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-S4.26&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-H v15.1.1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Berg et al. (2021)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Local Models ====&lt;br /&gt;
&lt;br /&gt;
Below is a list of local high-resolution models that were evaluated for inclusion.&lt;br /&gt;
&lt;br /&gt;
Northern and Central California:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ridgecrest regional (Li and Ben-Zion (2024))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ridgecrest fault zone (Zhou et al. (2022))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Joaquin basin (Shaw &amp;amp; Plesch (2016))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SFCVM v21.1 (Hirakawa &amp;amp; Aagaard (2022))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Southern California:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Jacinto fault zone (Fang et al. (2019))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Gabriel-San Bernardino Basin (Li et al. (2023))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Imperial Valley (Persaud et al. (2016))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Coachella Valley (Ajala et al. (2019))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Santa Maria Basin (Plesch et al. (2020))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Taper ====&lt;br /&gt;
&lt;br /&gt;
MUSCAL includes a low-velocity taper using the Ely-Jordan approach.  Vs30 for this method is produced by merging the Thompson (2018) Vs30 map with the [https://earthquake.usgs.gov/data/vs30/ USGS global Vs30 dataset].&lt;br /&gt;
&lt;br /&gt;
The depth of the taper varies depending on the site and ranges from 300m to 1500m.&lt;br /&gt;
&lt;br /&gt;
== Delivered Model ==&lt;br /&gt;
&lt;br /&gt;
The final version of MUSCAL is delivered in netCDF format.  The dimensions of the model in grid points are 1251 (lat) x 1301 (lon) x 210 (depth). Grid points have a spacing of 0.01 degrees in the horizontal; the depth is variable with denser sampling near the surface.  The model is interpolated using trilinear interpolation.&lt;br /&gt;
&lt;br /&gt;
Details about the model creation are provided in the paper ([https://essopenarchive.org/doi/full/10.22541/essoar.15001929/v1 preprint]) and the [https://zenodo.org/records/19243477 Zenodo page].&lt;br /&gt;
&lt;br /&gt;
Below is a plot of the 3D model extent.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:MUSCAL_region_extent.png|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datasets ===&lt;br /&gt;
&lt;br /&gt;
zone: 11&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  command  use:&lt;br /&gt;
     plot_depth_profile.py -n $UCVM_INSTALL_PATH/conf/ucvm.conf -i $UCVM_INSTALL_PATH -d vs -c muscal &lt;br /&gt;
                           -o muscal_small_depth_1000.png -C &#039;Multi-Scale Statewide California Velocity Model&#039;&lt;br /&gt;
                           -v 1000 -b 0 -s 36.5054,-119.0587 -e 30000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== big data in netcdf ====&lt;br /&gt;
  &lt;br /&gt;
  model_MSCAL_CANVAS_dll0.01_dz50_cmpd.nc&lt;br /&gt;
  4.5G&lt;br /&gt;
&lt;br /&gt;
  longitude:1301 from -126 to -113 &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:671      from 0 to 100,000 &lt;br /&gt;
                   50 increments until 30,000&lt;br /&gt;
                   1000 increments til 100000&lt;br /&gt;
&lt;br /&gt;
Plot Depth profile at  36.5054,-119.0587 in different step increments. No interpretation and access data using nc api&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[FILE:muscal_big_deth_50.png|thumb|300px|muscal big 50 vs]]&lt;br /&gt;
| [[FILE:muscal_big_deth_100.png|thumb|300px|muscal big 100 vs]]&lt;br /&gt;
| [[FILE:muscal_big_depth_500.png|thumb|300px|muscal big 500 vs]] &lt;br /&gt;
| [[FILE:muscal_big_deth_1000.png|thumb|300px|muscal big 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_big_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== small data in netcdf ====&lt;br /&gt;
   model_MUSCAL_CANVAS_dll0.01_vardz_cmpd.nc &lt;br /&gt;
   2.1G &lt;br /&gt;
&lt;br /&gt;
  longitdue:1301 from -126 to -113   &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:210      from 0 to 99,000 &lt;br /&gt;
                   50 increments upto 3000 &lt;br /&gt;
                   100 increments upto 5000&lt;br /&gt;
                   250 increments upto 10000&lt;br /&gt;
                   500 increments upto 30000&lt;br /&gt;
                   1000 increments upto 99000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Depth profiles in different steps : 50m,100m,500m,1000m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Direct from netcdf as external file&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_depth_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_depth_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data no interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_no_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_no_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_no_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== Another small dataset in netcdf ====&lt;br /&gt;
&lt;br /&gt;
  model_MUSCAL_CANVAS_dll0.01_vardz_float32_cmpd.nc&lt;br /&gt;
  1.4G&lt;br /&gt;
&lt;br /&gt;
  All longitude, latitude, and depth points are now saved as float32, as well as the vp, vs, and rho. &lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data with interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
=== Validation ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Several steps of pre/post processing are done to original MUSCAL model(netcdf format) in order to &lt;br /&gt;
incorporate it into UCVM and CVM explorer.&lt;br /&gt;
&lt;br /&gt;
   Because of the speed of netcdf-C code is too slow to support in-time nature of the explorer and would &lt;br /&gt;
   like to have interpolation on query,&lt;br /&gt;
&lt;br /&gt;
      * Number of depth layer is reduced with deeper layers merged into fewer layers&lt;br /&gt;
      * preprocessing the netcdf data into binary data files&lt;br /&gt;
      * data are all in float32&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.txt]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Final result from ucvm_query, (with interpolation)&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.final.txt]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.final.txt]]&lt;br /&gt;
&lt;br /&gt;
== Extended Model ==&lt;br /&gt;
&lt;br /&gt;
The 3D MUSCAL model is defined over the same volume as the CANVAS base model.  However, some simulation regions may extend beyond the boundaries, like the blue corners in the example CyberShake volume for USC below: &lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:USC_muscal_horiz_slice_z0.png|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To solve this in a consistent and reproducible way, we will extend the MUSCAL model through UCVM with nearest neighbor extrapolation to generate physically consistent properties beyond defined model boundary .  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Iterate through each layer of MUSCAL dataset and collect the material properties of all edge points&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;compose a surface point dataset from the collected points&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;During UCVM query process, load the surface dataset and create a kdtree structure (k-dimensional tree) which is good for binary tree search&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If the model query returns NaNs (indicating the point is beyond the bounds of the 3D model): Query the Kdtree for the nearest neighbors.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=MUSCAL&amp;diff=30991</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=MUSCAL&amp;diff=30991"/>
		<updated>2026-09-28T19:49:21Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* Extended Model */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the Multi-Scale CALifornia (MUSCAL) velocity model and its integration into UCVM.&lt;br /&gt;
&lt;br /&gt;
== Model overview ==&lt;br /&gt;
&lt;br /&gt;
The MUSCAL Vp and Vs model was created by Te-Yang Yeh, Kim B. Olsen and Yehuda Ben-Zion in 2025-6 by starting with the CANVAS tomography model as a base and then integrating multiple regional and local high-resolution models.  &lt;br /&gt;
&lt;br /&gt;
=== Model Components ===&lt;br /&gt;
&lt;br /&gt;
The model was built by starting with a base model (the CANVAS (Doody et al., 2023) tomography model).  Next, regional and local models are added where they improve the fit, based on M4 simulations.  These simulations were run to 1 Hz with topography using a minimum Vs of 450 m/s.  Finally, a spatially varying taper following the Ely approach is added.&lt;br /&gt;
&lt;br /&gt;
==== Regional Models ====&lt;br /&gt;
&lt;br /&gt;
Regional models evaluated for inclusion are:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Northern California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Lin et al. (2010)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Furlong et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Guo et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Central California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CCA-06&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-H v15.1.1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-S4.26&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Guo et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Berg et al. (2021)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Southern California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Fang et al. (2022)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-S4.26&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-H v15.1.1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Berg et al. (2021)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Local Models ====&lt;br /&gt;
&lt;br /&gt;
Below is a list of local high-resolution models that were evaluated for inclusion.&lt;br /&gt;
&lt;br /&gt;
Northern and Central California:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ridgecrest regional (Li and Ben-Zion (2024))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ridgecrest fault zone (Zhou et al. (2022))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Joaquin basin (Shaw &amp;amp; Plesch (2016))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SFCVM v21.1 (Hirakawa &amp;amp; Aagaard (2022))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Southern California:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Jacinto fault zone (Fang et al. (2019))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Gabriel-San Bernardino Basin (Li et al. (2023))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Imperial Valley (Persaud et al. (2016))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Coachella Valley (Ajala et al. (2019))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Santa Maria Basin (Plesch et al. (2020))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Taper ====&lt;br /&gt;
&lt;br /&gt;
MUSCAL includes a low-velocity taper using the Ely-Jordan approach.  Vs30 for this method is produced by merging the Thompson (2018) Vs30 map with the [https://earthquake.usgs.gov/data/vs30/ USGS global Vs30 dataset].&lt;br /&gt;
&lt;br /&gt;
The depth of the taper varies depending on the site and ranges from 300m to 1500m.&lt;br /&gt;
&lt;br /&gt;
== Delivered Model ==&lt;br /&gt;
&lt;br /&gt;
The final version of MUSCAL is delivered in netCDF format.  The dimensions of the model in grid points are 1251 (lat) x 1301 (lon) x 210 (depth). Grid points have a spacing of 0.01 degrees in the horizontal; the depth is variable with denser sampling near the surface.  The model is interpolated using trilinear interpolation.&lt;br /&gt;
&lt;br /&gt;
Details about the model creation are provided in the paper ([https://essopenarchive.org/doi/full/10.22541/essoar.15001929/v1 preprint]) and the [https://zenodo.org/records/19243477 Zenodo page].&lt;br /&gt;
&lt;br /&gt;
Below is a plot of the 3D model extent.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:MUSCAL_region_extent.png|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datasets ===&lt;br /&gt;
&lt;br /&gt;
zone: 11&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  command  use:&lt;br /&gt;
     plot_depth_profile.py -n $UCVM_INSTALL_PATH/conf/ucvm.conf -i $UCVM_INSTALL_PATH -d vs -c muscal &lt;br /&gt;
                           -o muscal_small_depth_1000.png -C &#039;Multi-Scale Statewide California Velocity Model&#039;&lt;br /&gt;
                           -v 1000 -b 0 -s 36.5054,-119.0587 -e 30000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== big data in netcdf ====&lt;br /&gt;
  &lt;br /&gt;
  model_MSCAL_CANVAS_dll0.01_dz50_cmpd.nc&lt;br /&gt;
  4.5G&lt;br /&gt;
&lt;br /&gt;
  longitude:1301 from -126 to -113 &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:671      from 0 to 100,000 &lt;br /&gt;
                   50 increments until 30,000&lt;br /&gt;
                   1000 increments til 100000&lt;br /&gt;
&lt;br /&gt;
Plot Depth profile at  36.5054,-119.0587 in different step increments. No interpretation and access data using nc api&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[FILE:muscal_big_deth_50.png|thumb|300px|muscal big 50 vs]]&lt;br /&gt;
| [[FILE:muscal_big_deth_100.png|thumb|300px|muscal big 100 vs]]&lt;br /&gt;
| [[FILE:muscal_big_depth_500.png|thumb|300px|muscal big 500 vs]] &lt;br /&gt;
| [[FILE:muscal_big_deth_1000.png|thumb|300px|muscal big 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_big_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== small data in netcdf ====&lt;br /&gt;
   model_MUSCAL_CANVAS_dll0.01_vardz_cmpd.nc &lt;br /&gt;
   2.1G &lt;br /&gt;
&lt;br /&gt;
  longitdue:1301 from -126 to -113   &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:210      from 0 to 99,000 &lt;br /&gt;
                   50 increments upto 3000 &lt;br /&gt;
                   100 increments upto 5000&lt;br /&gt;
                   250 increments upto 10000&lt;br /&gt;
                   500 increments upto 30000&lt;br /&gt;
                   1000 increments upto 99000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Depth profiles in different steps : 50m,100m,500m,1000m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Direct from netcdf as external file&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_depth_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_depth_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data no interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_no_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_no_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_no_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== Another small dataset in netcdf ====&lt;br /&gt;
&lt;br /&gt;
  model_MUSCAL_CANVAS_dll0.01_vardz_float32_cmpd.nc&lt;br /&gt;
  1.4G&lt;br /&gt;
&lt;br /&gt;
  All longitude, latitude, and depth points are now saved as float32, as well as the vp, vs, and rho. &lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data with interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
=== Validation ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Several steps of pre/post processing are done to original MUSCAL model(netcdf format) in order to &lt;br /&gt;
incorporate it into UCVM and CVM explorer.&lt;br /&gt;
&lt;br /&gt;
   Because of the speed of netcdf-C code is too slow to support in-time nature of the explorer and would &lt;br /&gt;
   like to have interpolation on query,&lt;br /&gt;
&lt;br /&gt;
      * Number of depth layer is reduced with deeper layers merged into fewer layers&lt;br /&gt;
      * preprocessing the netcdf data into binary data files&lt;br /&gt;
      * data are all in float32&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.txt]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Final result from ucvm_query, (with interpolation)&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.final.txt]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.final.txt]]&lt;br /&gt;
&lt;br /&gt;
== Extended Model ==&lt;br /&gt;
&lt;br /&gt;
The 3D MUSCAL model is defined over the same volume as the CANVAS base model.  However, some simulation regions may extend beyond the boundaries, like the blue corners in the example CyberShake volume for USC below: &lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:USC_muscal_horiz_slice_z0.png|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To solve this in a consistent and reproducible way, we will extend the MUSCAL model through UCVM with nearest neighbor extrapolation to generate physically consistent properties beyond defined model boundary .  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Iterate through each layer of MUSCAL dataset and collect the material properties of all edge points&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;compose a surface point dataset from the collected points&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;During UCVM query process, load the surface dataset and create a kdtree structure (k-dimensional tree) which is good for binary tree search&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol?&lt;br /&gt;
&amp;lt;li&amp;gt;If the model returns NaNs (indicating the point is beyond the bounds of the 3D model): Query the Kdtree for the nearest neighbors.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=MUSCAL&amp;diff=30990</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=MUSCAL&amp;diff=30990"/>
		<updated>2026-09-28T19:47:19Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* Extended Model */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the Multi-Scale CALifornia (MUSCAL) velocity model and its integration into UCVM.&lt;br /&gt;
&lt;br /&gt;
== Model overview ==&lt;br /&gt;
&lt;br /&gt;
The MUSCAL Vp and Vs model was created by Te-Yang Yeh, Kim B. Olsen and Yehuda Ben-Zion in 2025-6 by starting with the CANVAS tomography model as a base and then integrating multiple regional and local high-resolution models.  &lt;br /&gt;
&lt;br /&gt;
=== Model Components ===&lt;br /&gt;
&lt;br /&gt;
The model was built by starting with a base model (the CANVAS (Doody et al., 2023) tomography model).  Next, regional and local models are added where they improve the fit, based on M4 simulations.  These simulations were run to 1 Hz with topography using a minimum Vs of 450 m/s.  Finally, a spatially varying taper following the Ely approach is added.&lt;br /&gt;
&lt;br /&gt;
==== Regional Models ====&lt;br /&gt;
&lt;br /&gt;
Regional models evaluated for inclusion are:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Northern California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Lin et al. (2010)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Furlong et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Guo et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Central California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CCA-06&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-H v15.1.1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-S4.26&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Guo et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Berg et al. (2021)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Southern California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Fang et al. (2022)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-S4.26&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-H v15.1.1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Berg et al. (2021)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Local Models ====&lt;br /&gt;
&lt;br /&gt;
Below is a list of local high-resolution models that were evaluated for inclusion.&lt;br /&gt;
&lt;br /&gt;
Northern and Central California:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ridgecrest regional (Li and Ben-Zion (2024))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ridgecrest fault zone (Zhou et al. (2022))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Joaquin basin (Shaw &amp;amp; Plesch (2016))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SFCVM v21.1 (Hirakawa &amp;amp; Aagaard (2022))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Southern California:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Jacinto fault zone (Fang et al. (2019))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Gabriel-San Bernardino Basin (Li et al. (2023))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Imperial Valley (Persaud et al. (2016))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Coachella Valley (Ajala et al. (2019))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Santa Maria Basin (Plesch et al. (2020))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Taper ====&lt;br /&gt;
&lt;br /&gt;
MUSCAL includes a low-velocity taper using the Ely-Jordan approach.  Vs30 for this method is produced by merging the Thompson (2018) Vs30 map with the [https://earthquake.usgs.gov/data/vs30/ USGS global Vs30 dataset].&lt;br /&gt;
&lt;br /&gt;
The depth of the taper varies depending on the site and ranges from 300m to 1500m.&lt;br /&gt;
&lt;br /&gt;
== Delivered Model ==&lt;br /&gt;
&lt;br /&gt;
The final version of MUSCAL is delivered in netCDF format.  The dimensions of the model in grid points are 1251 (lat) x 1301 (lon) x 210 (depth). Grid points have a spacing of 0.01 degrees in the horizontal; the depth is variable with denser sampling near the surface.  The model is interpolated using trilinear interpolation.&lt;br /&gt;
&lt;br /&gt;
Details about the model creation are provided in the paper ([https://essopenarchive.org/doi/full/10.22541/essoar.15001929/v1 preprint]) and the [https://zenodo.org/records/19243477 Zenodo page].&lt;br /&gt;
&lt;br /&gt;
Below is a plot of the 3D model extent.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:MUSCAL_region_extent.png|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datasets ===&lt;br /&gt;
&lt;br /&gt;
zone: 11&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  command  use:&lt;br /&gt;
     plot_depth_profile.py -n $UCVM_INSTALL_PATH/conf/ucvm.conf -i $UCVM_INSTALL_PATH -d vs -c muscal &lt;br /&gt;
                           -o muscal_small_depth_1000.png -C &#039;Multi-Scale Statewide California Velocity Model&#039;&lt;br /&gt;
                           -v 1000 -b 0 -s 36.5054,-119.0587 -e 30000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== big data in netcdf ====&lt;br /&gt;
  &lt;br /&gt;
  model_MSCAL_CANVAS_dll0.01_dz50_cmpd.nc&lt;br /&gt;
  4.5G&lt;br /&gt;
&lt;br /&gt;
  longitude:1301 from -126 to -113 &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:671      from 0 to 100,000 &lt;br /&gt;
                   50 increments until 30,000&lt;br /&gt;
                   1000 increments til 100000&lt;br /&gt;
&lt;br /&gt;
Plot Depth profile at  36.5054,-119.0587 in different step increments. No interpretation and access data using nc api&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[FILE:muscal_big_deth_50.png|thumb|300px|muscal big 50 vs]]&lt;br /&gt;
| [[FILE:muscal_big_deth_100.png|thumb|300px|muscal big 100 vs]]&lt;br /&gt;
| [[FILE:muscal_big_depth_500.png|thumb|300px|muscal big 500 vs]] &lt;br /&gt;
| [[FILE:muscal_big_deth_1000.png|thumb|300px|muscal big 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_big_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== small data in netcdf ====&lt;br /&gt;
   model_MUSCAL_CANVAS_dll0.01_vardz_cmpd.nc &lt;br /&gt;
   2.1G &lt;br /&gt;
&lt;br /&gt;
  longitdue:1301 from -126 to -113   &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:210      from 0 to 99,000 &lt;br /&gt;
                   50 increments upto 3000 &lt;br /&gt;
                   100 increments upto 5000&lt;br /&gt;
                   250 increments upto 10000&lt;br /&gt;
                   500 increments upto 30000&lt;br /&gt;
                   1000 increments upto 99000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Depth profiles in different steps : 50m,100m,500m,1000m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Direct from netcdf as external file&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_depth_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_depth_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data no interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_no_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_no_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_no_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== Another small dataset in netcdf ====&lt;br /&gt;
&lt;br /&gt;
  model_MUSCAL_CANVAS_dll0.01_vardz_float32_cmpd.nc&lt;br /&gt;
  1.4G&lt;br /&gt;
&lt;br /&gt;
  All longitude, latitude, and depth points are now saved as float32, as well as the vp, vs, and rho. &lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data with interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
=== Validation ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Several steps of pre/post processing are done to original MUSCAL model(netcdf format) in order to &lt;br /&gt;
incorporate it into UCVM and CVM explorer.&lt;br /&gt;
&lt;br /&gt;
   Because of the speed of netcdf-C code is too slow to support in-time nature of the explorer and would &lt;br /&gt;
   like to have interpolation on query,&lt;br /&gt;
&lt;br /&gt;
      * Number of depth layer is reduced with deeper layers merged into fewer layers&lt;br /&gt;
      * preprocessing the netcdf data into binary data files&lt;br /&gt;
      * data are all in float32&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.txt]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Final result from ucvm_query, (with interpolation)&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.final.txt]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.final.txt]]&lt;br /&gt;
&lt;br /&gt;
== Extended Model ==&lt;br /&gt;
&lt;br /&gt;
The 3D MUSCAL model is defined over the same volume as the CANVAS base model.  However, some simulation regions may extend beyond the boundaries, like the blue corners in the example CyberShake volume for USC below: &lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:USC_muscal_horiz_slice_z0.png|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To solve this in a consistent and reproducible way, we will extend the MUSCAL model through UCVM with nearest neighbor extrapolation to generate physically consistent properties beyond defined model boundary .  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Iterate through each layer of MUSCAL dataset and collect the material properties of all edge points&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;compose a surface point dataset from the collected points&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;During UCVM query process, load the surface dataset and create a kdtree structure (k-dimensional tree) which is good for binary tree search&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If the model returns NaNs (indicating the point is beyond the bounds of the 3D model):&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Query the Kdtree for the nearest neighbors.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=MUSCAL&amp;diff=30989</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=MUSCAL&amp;diff=30989"/>
		<updated>2026-09-28T19:36:28Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* Model overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes the Multi-Scale CALifornia (MUSCAL) velocity model and its integration into UCVM.&lt;br /&gt;
&lt;br /&gt;
== Model overview ==&lt;br /&gt;
&lt;br /&gt;
The MUSCAL Vp and Vs model was created by Te-Yang Yeh, Kim B. Olsen and Yehuda Ben-Zion in 2025-6 by starting with the CANVAS tomography model as a base and then integrating multiple regional and local high-resolution models.  &lt;br /&gt;
&lt;br /&gt;
=== Model Components ===&lt;br /&gt;
&lt;br /&gt;
The model was built by starting with a base model (the CANVAS (Doody et al., 2023) tomography model).  Next, regional and local models are added where they improve the fit, based on M4 simulations.  These simulations were run to 1 Hz with topography using a minimum Vs of 450 m/s.  Finally, a spatially varying taper following the Ely approach is added.&lt;br /&gt;
&lt;br /&gt;
==== Regional Models ====&lt;br /&gt;
&lt;br /&gt;
Regional models evaluated for inclusion are:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Northern California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Lin et al. (2010)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Furlong et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Guo et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Central California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CCA-06&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-H v15.1.1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-S4.26&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Guo et al. (2024)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Berg et al. (2021)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Southern California&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Fang et al. (2022)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-S4.26&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CVM-H v15.1.1&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Berg et al. (2021)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Local Models ====&lt;br /&gt;
&lt;br /&gt;
Below is a list of local high-resolution models that were evaluated for inclusion.&lt;br /&gt;
&lt;br /&gt;
Northern and Central California:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ridgecrest regional (Li and Ben-Zion (2024))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ridgecrest fault zone (Zhou et al. (2022))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Joaquin basin (Shaw &amp;amp; Plesch (2016))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SFCVM v21.1 (Hirakawa &amp;amp; Aagaard (2022))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Southern California:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Jacinto fault zone (Fang et al. (2019))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;San Gabriel-San Bernardino Basin (Li et al. (2023))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Imperial Valley (Persaud et al. (2016))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Coachella Valley (Ajala et al. (2019))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Santa Maria Basin (Plesch et al. (2020))&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Taper ====&lt;br /&gt;
&lt;br /&gt;
MUSCAL includes a low-velocity taper using the Ely-Jordan approach.  Vs30 for this method is produced by merging the Thompson (2018) Vs30 map with the [https://earthquake.usgs.gov/data/vs30/ USGS global Vs30 dataset].&lt;br /&gt;
&lt;br /&gt;
The depth of the taper varies depending on the site and ranges from 300m to 1500m.&lt;br /&gt;
&lt;br /&gt;
== Delivered Model ==&lt;br /&gt;
&lt;br /&gt;
The final version of MUSCAL is delivered in netCDF format.  The dimensions of the model in grid points are 1251 (lat) x 1301 (lon) x 210 (depth). Grid points have a spacing of 0.01 degrees in the horizontal; the depth is variable with denser sampling near the surface.  The model is interpolated using trilinear interpolation.&lt;br /&gt;
&lt;br /&gt;
Details about the model creation are provided in the paper ([https://essopenarchive.org/doi/full/10.22541/essoar.15001929/v1 preprint]) and the [https://zenodo.org/records/19243477 Zenodo page].&lt;br /&gt;
&lt;br /&gt;
Below is a plot of the 3D model extent.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:MUSCAL_region_extent.png|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datasets ===&lt;br /&gt;
&lt;br /&gt;
zone: 11&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  command  use:&lt;br /&gt;
     plot_depth_profile.py -n $UCVM_INSTALL_PATH/conf/ucvm.conf -i $UCVM_INSTALL_PATH -d vs -c muscal &lt;br /&gt;
                           -o muscal_small_depth_1000.png -C &#039;Multi-Scale Statewide California Velocity Model&#039;&lt;br /&gt;
                           -v 1000 -b 0 -s 36.5054,-119.0587 -e 30000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== big data in netcdf ====&lt;br /&gt;
  &lt;br /&gt;
  model_MSCAL_CANVAS_dll0.01_dz50_cmpd.nc&lt;br /&gt;
  4.5G&lt;br /&gt;
&lt;br /&gt;
  longitude:1301 from -126 to -113 &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:671      from 0 to 100,000 &lt;br /&gt;
                   50 increments until 30,000&lt;br /&gt;
                   1000 increments til 100000&lt;br /&gt;
&lt;br /&gt;
Plot Depth profile at  36.5054,-119.0587 in different step increments. No interpretation and access data using nc api&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[FILE:muscal_big_deth_50.png|thumb|300px|muscal big 50 vs]]&lt;br /&gt;
| [[FILE:muscal_big_deth_100.png|thumb|300px|muscal big 100 vs]]&lt;br /&gt;
| [[FILE:muscal_big_depth_500.png|thumb|300px|muscal big 500 vs]] &lt;br /&gt;
| [[FILE:muscal_big_deth_1000.png|thumb|300px|muscal big 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_big_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== small data in netcdf ====&lt;br /&gt;
   model_MUSCAL_CANVAS_dll0.01_vardz_cmpd.nc &lt;br /&gt;
   2.1G &lt;br /&gt;
&lt;br /&gt;
  longitdue:1301 from -126 to -113   &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:210      from 0 to 99,000 &lt;br /&gt;
                   50 increments upto 3000 &lt;br /&gt;
                   100 increments upto 5000&lt;br /&gt;
                   250 increments upto 10000&lt;br /&gt;
                   500 increments upto 30000&lt;br /&gt;
                   1000 increments upto 99000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Depth profiles in different steps : 50m,100m,500m,1000m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Direct from netcdf as external file&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_depth_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_depth_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data no interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_no_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_no_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_no_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== Another small dataset in netcdf ====&lt;br /&gt;
&lt;br /&gt;
  model_MUSCAL_CANVAS_dll0.01_vardz_float32_cmpd.nc&lt;br /&gt;
  1.4G&lt;br /&gt;
&lt;br /&gt;
  All longitude, latitude, and depth points are now saved as float32, as well as the vp, vs, and rho. &lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data with interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
=== Validation ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Several steps of pre/post processing are done to original MUSCAL model(netcdf format) in order to &lt;br /&gt;
incorporate it into UCVM and CVM explorer.&lt;br /&gt;
&lt;br /&gt;
   Because of the speed of netcdf-C code is too slow to support in-time nature of the explorer and would &lt;br /&gt;
   like to have interpolation on query,&lt;br /&gt;
&lt;br /&gt;
      * Number of depth layer is reduced with deeper layers merged into fewer layers&lt;br /&gt;
      * preprocessing the netcdf data into binary data files&lt;br /&gt;
      * data are all in float32&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.txt]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Final result from ucvm_query, (with interpolation)&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.final.txt]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.final.txt]]&lt;br /&gt;
&lt;br /&gt;
== Extended Model ==&lt;br /&gt;
&lt;br /&gt;
The 3D MUSCAL model is defined over the same volume as the CANVAS base model.  However, some simulation regions may extend beyond the boundaries, like the blue corners in the example CyberShake volume for USC below: &lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:USC_muscal_horiz_slice_z0.png|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To solve this in a consistent and reproducible way, we will extend the MUSCAL model through UCVM.  The initial plan is to use the following algorithm:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Query 3D MUSCAL model at a given point.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If the model returns NaNs (indicating the point is beyond the bounds of the 3D model):&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Query the 1D MUSCAL model (Te-Yang to provide this).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Determine Vs30 from the USGS Global Vs30 model.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Apply the Ely taper (LVT) to the top 300m.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=File:MUSCAL_test_points_shallow.final.txt&amp;diff=30735</id>
		<title>File:MUSCAL test points shallow.final.txt</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=File:MUSCAL_test_points_shallow.final.txt&amp;diff=30735"/>
		<updated>2026-04-01T23:08:50Z</updated>

		<summary type="html">&lt;p&gt;Mei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=File:MUSCAL_test_points_deep.final.txt&amp;diff=30734</id>
		<title>File:MUSCAL test points deep.final.txt</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=File:MUSCAL_test_points_deep.final.txt&amp;diff=30734"/>
		<updated>2026-04-01T23:08:28Z</updated>

		<summary type="html">&lt;p&gt;Mei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=MUSCAL&amp;diff=30733</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=MUSCAL&amp;diff=30733"/>
		<updated>2026-04-01T23:08:08Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* Validation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== about MUSCAL ==&lt;br /&gt;
&lt;br /&gt;
From Te-Yang Yeh and  Yehuda Ben-Zion&lt;br /&gt;
&lt;br /&gt;
The Multi-Scale CALifornia (MUSCAL) statewide Vp and Vs velocity models provide high-quality integrated description of seismic structures across the state. Starting with the CANVAS base model (Doody et al., 2023), MUSCAL incorporates multiple regional and local velocity datasets into a unified structure, capturing features ranging from broad crustal-mantle structures to fine-scale local anomalies such as sedimentary basins.&lt;br /&gt;
&lt;br /&gt;
To ensure quality, the merged multi-scale models underwent a data-informed refinement process guided by simulations of small validation events. A key feature of MUSCAL is the inclusion of a locally optimized near-surface low-velocity taper (LVT), specifically designed to better represent under-resolved shallow structures and improve the accuracy of ground-motion predictions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datasets ===&lt;br /&gt;
&lt;br /&gt;
zone: 11&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  command  use:&lt;br /&gt;
     plot_depth_profile.py -n $UCVM_INSTALL_PATH/conf/ucvm.conf -i $UCVM_INSTALL_PATH -d vs -c muscal &lt;br /&gt;
                           -o muscal_small_depth_1000.png -C &#039;Multi-Scale Statewide California Velocity Model&#039;&lt;br /&gt;
                           -v 1000 -b 0 -s 36.5054,-119.0587 -e 30000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== big data in netcdf ====&lt;br /&gt;
  &lt;br /&gt;
  model_MSCAL_CANVAS_dll0.01_dz50_cmpd.nc&lt;br /&gt;
  4.5G&lt;br /&gt;
&lt;br /&gt;
  longitdue:1301 from -126 to -113 &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:671      from 0 to 100,000 &lt;br /&gt;
                   50 increments until 30,000&lt;br /&gt;
                   1000 increments til 100000&lt;br /&gt;
&lt;br /&gt;
Plot Depth profile at  36.5054,-119.0587 in different step increments. No interpretation and access data using nc api&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[FILE:muscal_big_deth_50.png|thumb|300px|muscal big 50 vs]]&lt;br /&gt;
| [[FILE:muscal_big_deth_100.png|thumb|300px|muscal big 100 vs]]&lt;br /&gt;
| [[FILE:muscal_big_depth_500.png|thumb|300px|muscal big 500 vs]] &lt;br /&gt;
| [[FILE:muscal_big_deth_1000.png|thumb|300px|muscal big 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_big_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== small data in netcdf ====&lt;br /&gt;
   model_MUSCAL_CANVAS_dll0.01_vardz_cmpd.nc &lt;br /&gt;
   2.1G &lt;br /&gt;
&lt;br /&gt;
  longitdue:1301 from -126 to -113   &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:210      from 0 to 99,000 &lt;br /&gt;
                   50 increments upto 3000 &lt;br /&gt;
                   100 increments upto 5000&lt;br /&gt;
                   250 increments upto 10000&lt;br /&gt;
                   500 increments upto 30000&lt;br /&gt;
                   1000 increments upto 99000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Depth profiles in different steps : 50m,100m,500m,1000m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Direct from netcdf as external file&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_depth_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_depth_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data no interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_no_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_no_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_no_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== Another small dataset in netcdf ====&lt;br /&gt;
&lt;br /&gt;
  model_MUSCAL_CANVAS_dll0.01_vardz_float32_cmpd.nc&lt;br /&gt;
  1.4G&lt;br /&gt;
&lt;br /&gt;
  All longitude, latitude, and depth points are now saved as float32, as well as the vp, vs, and rho. &lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data with interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
=== Validation ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Several steps of pre/post processing are done to original MUSCAL model(netcdf format) in order to &lt;br /&gt;
incorporate it into UCVM and CVM explorer.&lt;br /&gt;
&lt;br /&gt;
   Because of the speed of netcdf-C code is too slow to support in-time nature of the explorer and would &lt;br /&gt;
   like to have interpolation on query,&lt;br /&gt;
&lt;br /&gt;
      * Number of depth layer is reduced with deeper layers merged into fewer layers&lt;br /&gt;
      * preprocessing the netcdf data into binary data files&lt;br /&gt;
      * data are all in float32&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.txt]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Final result from ucvm_query, (with interpolation)&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.final.txt]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.final.txt]]&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=MUSCAL&amp;diff=30732</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=MUSCAL&amp;diff=30732"/>
		<updated>2026-04-01T23:05:32Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* Validation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== about MUSCAL ==&lt;br /&gt;
&lt;br /&gt;
From Te-Yang Yeh and  Yehuda Ben-Zion&lt;br /&gt;
&lt;br /&gt;
The Multi-Scale CALifornia (MUSCAL) statewide Vp and Vs velocity models provide high-quality integrated description of seismic structures across the state. Starting with the CANVAS base model (Doody et al., 2023), MUSCAL incorporates multiple regional and local velocity datasets into a unified structure, capturing features ranging from broad crustal-mantle structures to fine-scale local anomalies such as sedimentary basins.&lt;br /&gt;
&lt;br /&gt;
To ensure quality, the merged multi-scale models underwent a data-informed refinement process guided by simulations of small validation events. A key feature of MUSCAL is the inclusion of a locally optimized near-surface low-velocity taper (LVT), specifically designed to better represent under-resolved shallow structures and improve the accuracy of ground-motion predictions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datasets ===&lt;br /&gt;
&lt;br /&gt;
zone: 11&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  command  use:&lt;br /&gt;
     plot_depth_profile.py -n $UCVM_INSTALL_PATH/conf/ucvm.conf -i $UCVM_INSTALL_PATH -d vs -c muscal &lt;br /&gt;
                           -o muscal_small_depth_1000.png -C &#039;Multi-Scale Statewide California Velocity Model&#039;&lt;br /&gt;
                           -v 1000 -b 0 -s 36.5054,-119.0587 -e 30000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== big data in netcdf ====&lt;br /&gt;
  &lt;br /&gt;
  model_MSCAL_CANVAS_dll0.01_dz50_cmpd.nc&lt;br /&gt;
  4.5G&lt;br /&gt;
&lt;br /&gt;
  longitdue:1301 from -126 to -113 &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:671      from 0 to 100,000 &lt;br /&gt;
                   50 increments until 30,000&lt;br /&gt;
                   1000 increments til 100000&lt;br /&gt;
&lt;br /&gt;
Plot Depth profile at  36.5054,-119.0587 in different step increments. No interpretation and access data using nc api&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[FILE:muscal_big_deth_50.png|thumb|300px|muscal big 50 vs]]&lt;br /&gt;
| [[FILE:muscal_big_deth_100.png|thumb|300px|muscal big 100 vs]]&lt;br /&gt;
| [[FILE:muscal_big_depth_500.png|thumb|300px|muscal big 500 vs]] &lt;br /&gt;
| [[FILE:muscal_big_deth_1000.png|thumb|300px|muscal big 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_big_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== small data in netcdf ====&lt;br /&gt;
   model_MUSCAL_CANVAS_dll0.01_vardz_cmpd.nc &lt;br /&gt;
   2.1G &lt;br /&gt;
&lt;br /&gt;
  longitdue:1301 from -126 to -113   &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:210      from 0 to 99,000 &lt;br /&gt;
                   50 increments upto 3000 &lt;br /&gt;
                   100 increments upto 5000&lt;br /&gt;
                   250 increments upto 10000&lt;br /&gt;
                   500 increments upto 30000&lt;br /&gt;
                   1000 increments upto 99000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Depth profiles in different steps : 50m,100m,500m,1000m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Direct from netcdf as external file&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_depth_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_depth_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data no interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_no_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_no_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_no_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== Another small dataset in netcdf ====&lt;br /&gt;
&lt;br /&gt;
  model_MUSCAL_CANVAS_dll0.01_vardz_float32_cmpd.nc&lt;br /&gt;
  1.4G&lt;br /&gt;
&lt;br /&gt;
  All longitude, latitude, and depth points are now saved as float32, as well as the vp, vs, and rho. &lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data with interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
=== Validation ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Several steps of pre/post processing are done to original MUSCAL model(netcdf format) in order to &lt;br /&gt;
incorporate it into UCVM and CVM explorer.&lt;br /&gt;
&lt;br /&gt;
   Because of the speed of netcdf-C code is too slow to support in-time nature of the explorer and would &lt;br /&gt;
   like to have interpolation on query,&lt;br /&gt;
&lt;br /&gt;
      * Number of depth layer is reduced with deeper layers merged into fewer layers&lt;br /&gt;
      * preprocessing the netcdf data into binary data files&lt;br /&gt;
      * data are all in float32&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.txt]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Final result from ucvm_query, (with interpolation)&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.final]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.final]]&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=File:MUSCAL_test_points_shallow.txt&amp;diff=30731</id>
		<title>File:MUSCAL test points shallow.txt</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=File:MUSCAL_test_points_shallow.txt&amp;diff=30731"/>
		<updated>2026-04-01T23:03:32Z</updated>

		<summary type="html">&lt;p&gt;Mei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=File:MUSCAL_test_points_deep.txt&amp;diff=30730</id>
		<title>File:MUSCAL test points deep.txt</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=File:MUSCAL_test_points_deep.txt&amp;diff=30730"/>
		<updated>2026-04-01T23:02:43Z</updated>

		<summary type="html">&lt;p&gt;Mei: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=MUSCAL&amp;diff=30729</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=MUSCAL&amp;diff=30729"/>
		<updated>2026-04-01T23:01:15Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* Validation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== about MUSCAL ==&lt;br /&gt;
&lt;br /&gt;
From Te-Yang Yeh and  Yehuda Ben-Zion&lt;br /&gt;
&lt;br /&gt;
The Multi-Scale CALifornia (MUSCAL) statewide Vp and Vs velocity models provide high-quality integrated description of seismic structures across the state. Starting with the CANVAS base model (Doody et al., 2023), MUSCAL incorporates multiple regional and local velocity datasets into a unified structure, capturing features ranging from broad crustal-mantle structures to fine-scale local anomalies such as sedimentary basins.&lt;br /&gt;
&lt;br /&gt;
To ensure quality, the merged multi-scale models underwent a data-informed refinement process guided by simulations of small validation events. A key feature of MUSCAL is the inclusion of a locally optimized near-surface low-velocity taper (LVT), specifically designed to better represent under-resolved shallow structures and improve the accuracy of ground-motion predictions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datasets ===&lt;br /&gt;
&lt;br /&gt;
zone: 11&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  command  use:&lt;br /&gt;
     plot_depth_profile.py -n $UCVM_INSTALL_PATH/conf/ucvm.conf -i $UCVM_INSTALL_PATH -d vs -c muscal &lt;br /&gt;
                           -o muscal_small_depth_1000.png -C &#039;Multi-Scale Statewide California Velocity Model&#039;&lt;br /&gt;
                           -v 1000 -b 0 -s 36.5054,-119.0587 -e 30000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== big data in netcdf ====&lt;br /&gt;
  &lt;br /&gt;
  model_MSCAL_CANVAS_dll0.01_dz50_cmpd.nc&lt;br /&gt;
  4.5G&lt;br /&gt;
&lt;br /&gt;
  longitdue:1301 from -126 to -113 &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:671      from 0 to 100,000 &lt;br /&gt;
                   50 increments until 30,000&lt;br /&gt;
                   1000 increments til 100000&lt;br /&gt;
&lt;br /&gt;
Plot Depth profile at  36.5054,-119.0587 in different step increments. No interpretation and access data using nc api&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[FILE:muscal_big_deth_50.png|thumb|300px|muscal big 50 vs]]&lt;br /&gt;
| [[FILE:muscal_big_deth_100.png|thumb|300px|muscal big 100 vs]]&lt;br /&gt;
| [[FILE:muscal_big_depth_500.png|thumb|300px|muscal big 500 vs]] &lt;br /&gt;
| [[FILE:muscal_big_deth_1000.png|thumb|300px|muscal big 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_big_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== small data in netcdf ====&lt;br /&gt;
   model_MUSCAL_CANVAS_dll0.01_vardz_cmpd.nc &lt;br /&gt;
   2.1G &lt;br /&gt;
&lt;br /&gt;
  longitdue:1301 from -126 to -113   &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:210      from 0 to 99,000 &lt;br /&gt;
                   50 increments upto 3000 &lt;br /&gt;
                   100 increments upto 5000&lt;br /&gt;
                   250 increments upto 10000&lt;br /&gt;
                   500 increments upto 30000&lt;br /&gt;
                   1000 increments upto 99000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Depth profiles in different steps : 50m,100m,500m,1000m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Direct from netcdf as external file&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_depth_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_depth_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data no interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_no_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_no_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_no_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== Another small dataset in netcdf ====&lt;br /&gt;
&lt;br /&gt;
  model_MUSCAL_CANVAS_dll0.01_vardz_float32_cmpd.nc&lt;br /&gt;
  1.4G&lt;br /&gt;
&lt;br /&gt;
  All longitude, latitude, and depth points are now saved as float32, as well as the vp, vs, and rho. &lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data with interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
=== Validation ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Several steps of pre/post processing are done to original MUSCAL model(netcdf format) in order to &lt;br /&gt;
incorporate it into UCVM and CVM explorer.&lt;br /&gt;
&lt;br /&gt;
   Because of the speed of netcdf-C code is too slow to support in-time nature of the explorer and would &lt;br /&gt;
   like to have interpolation on query,&lt;br /&gt;
&lt;br /&gt;
      * Number of depth layer is reduced with deeper layers merged into fewer layers&lt;br /&gt;
      * preprocessing the netcdf data into binary data files&lt;br /&gt;
      * data are all in float32&lt;br /&gt;
&lt;br /&gt;
 [[FILE:MUSCAL_test_points_deep.txt]]&lt;br /&gt;
 [[FILE:MUSCAL_test_points_shallow.txt]]&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=MUSCAL&amp;diff=30728</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=MUSCAL&amp;diff=30728"/>
		<updated>2026-04-01T23:00:29Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* Validation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== about MUSCAL ==&lt;br /&gt;
&lt;br /&gt;
From Te-Yang Yeh and  Yehuda Ben-Zion&lt;br /&gt;
&lt;br /&gt;
The Multi-Scale CALifornia (MUSCAL) statewide Vp and Vs velocity models provide high-quality integrated description of seismic structures across the state. Starting with the CANVAS base model (Doody et al., 2023), MUSCAL incorporates multiple regional and local velocity datasets into a unified structure, capturing features ranging from broad crustal-mantle structures to fine-scale local anomalies such as sedimentary basins.&lt;br /&gt;
&lt;br /&gt;
To ensure quality, the merged multi-scale models underwent a data-informed refinement process guided by simulations of small validation events. A key feature of MUSCAL is the inclusion of a locally optimized near-surface low-velocity taper (LVT), specifically designed to better represent under-resolved shallow structures and improve the accuracy of ground-motion predictions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datasets ===&lt;br /&gt;
&lt;br /&gt;
zone: 11&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  command  use:&lt;br /&gt;
     plot_depth_profile.py -n $UCVM_INSTALL_PATH/conf/ucvm.conf -i $UCVM_INSTALL_PATH -d vs -c muscal &lt;br /&gt;
                           -o muscal_small_depth_1000.png -C &#039;Multi-Scale Statewide California Velocity Model&#039;&lt;br /&gt;
                           -v 1000 -b 0 -s 36.5054,-119.0587 -e 30000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== big data in netcdf ====&lt;br /&gt;
  &lt;br /&gt;
  model_MSCAL_CANVAS_dll0.01_dz50_cmpd.nc&lt;br /&gt;
  4.5G&lt;br /&gt;
&lt;br /&gt;
  longitdue:1301 from -126 to -113 &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:671      from 0 to 100,000 &lt;br /&gt;
                   50 increments until 30,000&lt;br /&gt;
                   1000 increments til 100000&lt;br /&gt;
&lt;br /&gt;
Plot Depth profile at  36.5054,-119.0587 in different step increments. No interpretation and access data using nc api&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[FILE:muscal_big_deth_50.png|thumb|300px|muscal big 50 vs]]&lt;br /&gt;
| [[FILE:muscal_big_deth_100.png|thumb|300px|muscal big 100 vs]]&lt;br /&gt;
| [[FILE:muscal_big_depth_500.png|thumb|300px|muscal big 500 vs]] &lt;br /&gt;
| [[FILE:muscal_big_deth_1000.png|thumb|300px|muscal big 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_big_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== small data in netcdf ====&lt;br /&gt;
   model_MUSCAL_CANVAS_dll0.01_vardz_cmpd.nc &lt;br /&gt;
   2.1G &lt;br /&gt;
&lt;br /&gt;
  longitdue:1301 from -126 to -113   &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:210      from 0 to 99,000 &lt;br /&gt;
                   50 increments upto 3000 &lt;br /&gt;
                   100 increments upto 5000&lt;br /&gt;
                   250 increments upto 10000&lt;br /&gt;
                   500 increments upto 30000&lt;br /&gt;
                   1000 increments upto 99000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Depth profiles in different steps : 50m,100m,500m,1000m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Direct from netcdf as external file&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_depth_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_depth_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data no interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_no_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_no_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_no_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== Another small dataset in netcdf ====&lt;br /&gt;
&lt;br /&gt;
  model_MUSCAL_CANVAS_dll0.01_vardz_float32_cmpd.nc&lt;br /&gt;
  1.4G&lt;br /&gt;
&lt;br /&gt;
  All longitude, latitude, and depth points are now saved as float32, as well as the vp, vs, and rho. &lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data with interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
=== Validation ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Several steps of pre/post processing are done to original MUSCAL model(netcdf format) in order to &lt;br /&gt;
incorporate it into UCVM and CVM explorer.&lt;br /&gt;
&lt;br /&gt;
   Because of the speed of netcdf-C code is too slow to support in-time nature of the explorer and would &lt;br /&gt;
   like to have interpolation on query,&lt;br /&gt;
&lt;br /&gt;
      * Number of depth layer is reduced with deeper layers merged into fewer layers&lt;br /&gt;
      * preprocessing the netcdf data into binary data files&lt;br /&gt;
      * data are all in float32&lt;br /&gt;
&lt;br /&gt;
[[FILE:MUSCAL_test_points_deep.txt]]&lt;br /&gt;
[[FILE:MUSCAL_test_points_shallow.txt]]&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=MUSCAL&amp;diff=30727</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=MUSCAL&amp;diff=30727"/>
		<updated>2026-04-01T22:58:53Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* ... */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== about MUSCAL ==&lt;br /&gt;
&lt;br /&gt;
From Te-Yang Yeh and  Yehuda Ben-Zion&lt;br /&gt;
&lt;br /&gt;
The Multi-Scale CALifornia (MUSCAL) statewide Vp and Vs velocity models provide high-quality integrated description of seismic structures across the state. Starting with the CANVAS base model (Doody et al., 2023), MUSCAL incorporates multiple regional and local velocity datasets into a unified structure, capturing features ranging from broad crustal-mantle structures to fine-scale local anomalies such as sedimentary basins.&lt;br /&gt;
&lt;br /&gt;
To ensure quality, the merged multi-scale models underwent a data-informed refinement process guided by simulations of small validation events. A key feature of MUSCAL is the inclusion of a locally optimized near-surface low-velocity taper (LVT), specifically designed to better represent under-resolved shallow structures and improve the accuracy of ground-motion predictions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datasets ===&lt;br /&gt;
&lt;br /&gt;
zone: 11&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  command  use:&lt;br /&gt;
     plot_depth_profile.py -n $UCVM_INSTALL_PATH/conf/ucvm.conf -i $UCVM_INSTALL_PATH -d vs -c muscal &lt;br /&gt;
                           -o muscal_small_depth_1000.png -C &#039;Multi-Scale Statewide California Velocity Model&#039;&lt;br /&gt;
                           -v 1000 -b 0 -s 36.5054,-119.0587 -e 30000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== big data in netcdf ====&lt;br /&gt;
  &lt;br /&gt;
  model_MSCAL_CANVAS_dll0.01_dz50_cmpd.nc&lt;br /&gt;
  4.5G&lt;br /&gt;
&lt;br /&gt;
  longitdue:1301 from -126 to -113 &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:671      from 0 to 100,000 &lt;br /&gt;
                   50 increments until 30,000&lt;br /&gt;
                   1000 increments til 100000&lt;br /&gt;
&lt;br /&gt;
Plot Depth profile at  36.5054,-119.0587 in different step increments. No interpretation and access data using nc api&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[FILE:muscal_big_deth_50.png|thumb|300px|muscal big 50 vs]]&lt;br /&gt;
| [[FILE:muscal_big_deth_100.png|thumb|300px|muscal big 100 vs]]&lt;br /&gt;
| [[FILE:muscal_big_depth_500.png|thumb|300px|muscal big 500 vs]] &lt;br /&gt;
| [[FILE:muscal_big_deth_1000.png|thumb|300px|muscal big 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_big_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_big_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== small data in netcdf ====&lt;br /&gt;
   model_MUSCAL_CANVAS_dll0.01_vardz_cmpd.nc &lt;br /&gt;
   2.1G &lt;br /&gt;
&lt;br /&gt;
  longitdue:1301 from -126 to -113   &lt;br /&gt;
  latitude:1251  from 31 to 43.5&lt;br /&gt;
  depth:210      from 0 to 99,000 &lt;br /&gt;
                   50 increments upto 3000 &lt;br /&gt;
                   100 increments upto 5000&lt;br /&gt;
                   250 increments upto 10000&lt;br /&gt;
                   500 increments upto 30000&lt;br /&gt;
                   1000 increments upto 99000&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Depth profiles in different steps : 50m,100m,500m,1000m&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Direct from netcdf as external file&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_depth_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_depth_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_deth_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_depth-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_depth-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data no interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_no_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_no_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_no_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_no_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_no_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
==== Another small dataset in netcdf ====&lt;br /&gt;
&lt;br /&gt;
  model_MUSCAL_CANVAS_dll0.01_vardz_float32_cmpd.nc&lt;br /&gt;
  1.4G&lt;br /&gt;
&lt;br /&gt;
  All longitude, latitude, and depth points are now saved as float32, as well as the vp, vs, and rho. &lt;br /&gt;
&lt;br /&gt;
Loaded in-memory as binary data with interpolation&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[FILE:muscal_small_interp_50.png|thumb|300px|muscal small 50 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_100.png|thumb|300px|muscal small 100 vs]]&lt;br /&gt;
|[[FILE:muscal_small_interp_500.png|thumb|300px|muscal small 500 vs]] &lt;br /&gt;
|[[FILE:muscal_small_interp_1000.png|thumb|300px|muscal small 1000 vs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 [[FILE:muscal_small_interp-50_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-100_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-500_matprops.json.txt]]&lt;br /&gt;
 [[FILE:muscal_small_interp-1000_matprops.json.txt]]&lt;br /&gt;
&lt;br /&gt;
=== Validation ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Several steps of pre/post processing are done to original MUSCAL model(netcdf format) in order to &lt;br /&gt;
incorporate it into UCVM and CVM explorer.&lt;br /&gt;
&lt;br /&gt;
   Because of the speed of netcdf-C code is too slow to support in-time nature of the explorer and would &lt;br /&gt;
   like to have interpolation on query,&lt;br /&gt;
&lt;br /&gt;
      * Number of depth layer is reduced with deeper layers merged into fewer layers&lt;br /&gt;
      * preprocessing the netcdf data into binary data files&lt;br /&gt;
      * data are all in float32&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=File:Muscal_small_interp-1000_matprops.json.txt&amp;diff=30726</id>
		<title>File:Muscal small interp-1000 matprops.json.txt</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=File:Muscal_small_interp-1000_matprops.json.txt&amp;diff=30726"/>
		<updated>2026-04-01T22:41:55Z</updated>

		<summary type="html">&lt;p&gt;Mei: Mei uploaded a new version of File:Muscal small interp-1000 matprops.json.txt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
	<entry>
		<id>https://strike.scec.org/index.php?title=File:Muscal_small_interp-500_matprops.json.txt&amp;diff=30725</id>
		<title>File:Muscal small interp-500 matprops.json.txt</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/index.php?title=File:Muscal_small_interp-500_matprops.json.txt&amp;diff=30725"/>
		<updated>2026-04-01T22:41:36Z</updated>

		<summary type="html">&lt;p&gt;Mei: Mei uploaded a new version of File:Muscal small interp-500 matprops.json.txt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
	</entry>
</feed>