

<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://strike.scec.org/scecwiki/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/scecwiki/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-03T22:02:22Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>https://strike.scec.org/scecwiki/index.php?title=MUSCAL&amp;diff=31004</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/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 'Multi-Scale Statewide California Velocity Model'&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('muscal_canvas_tiledb_array').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/scecwiki/index.php?title=MUSCAL&amp;diff=31003</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/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 'Multi-Scale Statewide California Velocity Model'&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('muscal_canvas_tiledb_array').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/scecwiki/index.php?title=MUSCAL&amp;diff=31002</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/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 'Multi-Scale Statewide California Velocity Model'&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('muscal_canvas_tiledb_array').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/scecwiki/index.php?title=MUSCAL&amp;diff=31001</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/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 'Multi-Scale Statewide California Velocity Model'&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('muscal_canvas_tiledb_array').schema)&amp;quot;&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
		
	</entry>
	<entry>
		<id>https://strike.scec.org/scecwiki/index.php?title=MUSCAL&amp;diff=31000</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/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 'Multi-Scale Statewide California Velocity Model'&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('muscal_canvas_tiledb_array').schema)&amp;quot;&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
		
	</entry>
	<entry>
		<id>https://strike.scec.org/scecwiki/index.php?title=MUSCAL&amp;diff=30999</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/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 'Multi-Scale Statewide California Velocity Model'&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('muscal_canvas_tiledb_array').schema)&amp;quot;&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
		
	</entry>
	<entry>
		<id>https://strike.scec.org/scecwiki/index.php?title=MUSCAL&amp;diff=30998</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/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 'Multi-Scale Statewide California Velocity Model'&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('muscal_canvas_tiledb_array').schema)&amp;quot;&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
		
	</entry>
	<entry>
		<id>https://strike.scec.org/scecwiki/index.php?title=MUSCAL&amp;diff=30997</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/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 'Multi-Scale Statewide California Velocity Model'&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/scecwiki/index.php?title=MUSCAL&amp;diff=30996</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/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 'Multi-Scale Statewide California Velocity Model'&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/scecwiki/index.php?title=MUSCAL&amp;diff=30995</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/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 'Multi-Scale Statewide California Velocity Model'&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/scecwiki/index.php?title=MUSCAL&amp;diff=30994</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/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 'Multi-Scale Statewide California Velocity Model'&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/scecwiki/index.php?title=MUSCAL&amp;diff=30993</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/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 'Multi-Scale Statewide California Velocity Model'&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/scecwiki/index.php?title=MUSCAL&amp;diff=30992</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/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 'Multi-Scale Statewide California Velocity Model'&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/scecwiki/index.php?title=MUSCAL&amp;diff=30991</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/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 'Multi-Scale Statewide California Velocity Model'&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/scecwiki/index.php?title=MUSCAL&amp;diff=30990</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/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 'Multi-Scale Statewide California Velocity Model'&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/scecwiki/index.php?title=MUSCAL&amp;diff=30989</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/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 'Multi-Scale Statewide California Velocity Model'&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/scecwiki/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/scecwiki/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/scecwiki/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/scecwiki/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/scecwiki/index.php?title=MUSCAL&amp;diff=30733</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/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 'Multi-Scale Statewide California Velocity Model'&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/scecwiki/index.php?title=MUSCAL&amp;diff=30732</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/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 'Multi-Scale Statewide California Velocity Model'&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/scecwiki/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/scecwiki/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/scecwiki/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/scecwiki/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/scecwiki/index.php?title=MUSCAL&amp;diff=30729</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/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 'Multi-Scale Statewide California Velocity Model'&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/scecwiki/index.php?title=MUSCAL&amp;diff=30728</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/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 'Multi-Scale Statewide California Velocity Model'&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/scecwiki/index.php?title=MUSCAL&amp;diff=30727</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/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 'Multi-Scale Statewide California Velocity Model'&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/scecwiki/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/scecwiki/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/scecwiki/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/scecwiki/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>
	<entry>
		<id>https://strike.scec.org/scecwiki/index.php?title=File:Muscal_small_interp-100_matprops.json.txt&amp;diff=30724</id>
		<title>File:Muscal small interp-100 matprops.json.txt</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/index.php?title=File:Muscal_small_interp-100_matprops.json.txt&amp;diff=30724"/>
		<updated>2026-04-01T22:40:13Z</updated>

		<summary type="html">&lt;p&gt;Mei: Mei uploaded a new version of File:Muscal small interp-100 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/scecwiki/index.php?title=File:Muscal_small_interp-50_matprops.json.txt&amp;diff=30723</id>
		<title>File:Muscal small interp-50 matprops.json.txt</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/index.php?title=File:Muscal_small_interp-50_matprops.json.txt&amp;diff=30723"/>
		<updated>2026-04-01T22:39:50Z</updated>

		<summary type="html">&lt;p&gt;Mei: Mei uploaded a new version of File:Muscal small interp-50 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/scecwiki/index.php?title=File:Muscal_small_interp_1000.png&amp;diff=30722</id>
		<title>File:Muscal small interp 1000.png</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/index.php?title=File:Muscal_small_interp_1000.png&amp;diff=30722"/>
		<updated>2026-04-01T22:39:29Z</updated>

		<summary type="html">&lt;p&gt;Mei: Mei uploaded a new version of File:Muscal small interp 1000.png&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/scecwiki/index.php?title=File:Muscal_small_interp_500.png&amp;diff=30721</id>
		<title>File:Muscal small interp 500.png</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/index.php?title=File:Muscal_small_interp_500.png&amp;diff=30721"/>
		<updated>2026-04-01T22:39:04Z</updated>

		<summary type="html">&lt;p&gt;Mei: Mei uploaded a new version of File:Muscal small interp 500.png&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/scecwiki/index.php?title=File:Muscal_small_interp_100.png&amp;diff=30720</id>
		<title>File:Muscal small interp 100.png</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/index.php?title=File:Muscal_small_interp_100.png&amp;diff=30720"/>
		<updated>2026-04-01T22:38:35Z</updated>

		<summary type="html">&lt;p&gt;Mei: Mei uploaded a new version of File:Muscal small interp 100.png&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/scecwiki/index.php?title=File:Muscal_small_interp_50.png&amp;diff=30719</id>
		<title>File:Muscal small interp 50.png</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/index.php?title=File:Muscal_small_interp_50.png&amp;diff=30719"/>
		<updated>2026-04-01T22:37:50Z</updated>

		<summary type="html">&lt;p&gt;Mei: Mei uploaded a new version of File:Muscal small interp 50.png&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/scecwiki/index.php?title=MUSCAL&amp;diff=30718</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/index.php?title=MUSCAL&amp;diff=30718"/>
		<updated>2026-04-01T22:37:17Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* another small dataset in netcdf */&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 'Multi-Scale Statewide California Velocity Model'&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;
==== ... ====&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
		
	</entry>
	<entry>
		<id>https://strike.scec.org/scecwiki/index.php?title=MUSCAL&amp;diff=30717</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/index.php?title=MUSCAL&amp;diff=30717"/>
		<updated>2026-04-01T22:36:48Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* Another small dataset in netcdf */&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 'Multi-Scale Statewide California Velocity Model'&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;
==== ... ====&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
		
	</entry>
	<entry>
		<id>https://strike.scec.org/scecwiki/index.php?title=MUSCAL&amp;diff=30716</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/index.php?title=MUSCAL&amp;diff=30716"/>
		<updated>2026-04-01T22:36:29Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* another small dataset in netcdf */&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 'Multi-Scale Statewide California Velocity Model'&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;
==== Another small dataset in netcdf ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  m&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
		
	</entry>
	<entry>
		<id>https://strike.scec.org/scecwiki/index.php?title=MUSCAL&amp;diff=30715</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/index.php?title=MUSCAL&amp;diff=30715"/>
		<updated>2026-04-01T22:35:11Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* Another small dataset in netcdf */&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 'Multi-Scale Statewide California Velocity Model'&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;
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;
==== Another small dataset in netcdf ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  m&lt;/div&gt;</summary>
		<author><name>Mei</name></author>
		
	</entry>
	<entry>
		<id>https://strike.scec.org/scecwiki/index.php?title=MUSCAL&amp;diff=30714</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/index.php?title=MUSCAL&amp;diff=30714"/>
		<updated>2026-04-01T22:34:48Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* small data in netcdf */&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 'Multi-Scale Statewide California Velocity Model'&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;
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;
==== Another small dataset in netcdf ====&lt;br /&gt;
&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;/div&gt;</summary>
		<author><name>Mei</name></author>
		
	</entry>
	<entry>
		<id>https://strike.scec.org/scecwiki/index.php?title=MUSCAL&amp;diff=30713</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/index.php?title=MUSCAL&amp;diff=30713"/>
		<updated>2026-04-01T19:23:05Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* Datasets */&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 'Multi-Scale Statewide California Velocity Model'&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;
&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;
&lt;br /&gt;
==== Another small dataset in netcdf ====&lt;br /&gt;
&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;/div&gt;</summary>
		<author><name>Mei</name></author>
		
	</entry>
	<entry>
		<id>https://strike.scec.org/scecwiki/index.php?title=MUSCAL&amp;diff=30712</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/index.php?title=MUSCAL&amp;diff=30712"/>
		<updated>2026-04-01T19:20:56Z</updated>

		<summary type="html">&lt;p&gt;Mei: Undo revision 30707 by Mei (talk)&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;
==== 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;
&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;
&lt;br /&gt;
==== Another small dataset in netcdf ====&lt;br /&gt;
&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;/div&gt;</summary>
		<author><name>Mei</name></author>
		
	</entry>
	<entry>
		<id>https://strike.scec.org/scecwiki/index.php?title=MUSCAL&amp;diff=30711</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/index.php?title=MUSCAL&amp;diff=30711"/>
		<updated>2026-04-01T19:18:33Z</updated>

		<summary type="html">&lt;p&gt;Mei: Undo revision 30710 by Mei (talk)&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 used: &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_depth1000.png -C 'Multi-Scale Statewide California Velocity Model' &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_depth_50.png|thumb|300px|muscal big 50 vs]]&lt;br /&gt;
| [[FILE:muscal_big_depth_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_depth_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;
&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;
 * the interp used has incorrect axis -- ignore&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;
&lt;br /&gt;
==== Another small dataset in netcdf ====&lt;br /&gt;
&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;/div&gt;</summary>
		<author><name>Mei</name></author>
		
	</entry>
	<entry>
		<id>https://strike.scec.org/scecwiki/index.php?title=MUSCAL&amp;diff=30710</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/index.php?title=MUSCAL&amp;diff=30710"/>
		<updated>2026-04-01T19:18:07Z</updated>

		<summary type="html">&lt;p&gt;Mei: Undo revision 30709 by Mei (talk)&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 used: &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_depth1000.png -C 'Multi-Scale Statewide California Velocity Model' &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_depth_100.png|thumb|300px|muscal big 100 vs]]&lt;br /&gt;
| [[FILE:muscal_big_deth_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;
&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;
 * the interp used has incorrect axis -- ignore&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;
&lt;br /&gt;
==== Another small dataset in netcdf ====&lt;br /&gt;
&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;/div&gt;</summary>
		<author><name>Mei</name></author>
		
	</entry>
	<entry>
		<id>https://strike.scec.org/scecwiki/index.php?title=MUSCAL&amp;diff=30709</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/index.php?title=MUSCAL&amp;diff=30709"/>
		<updated>2026-04-01T19:17:50Z</updated>

		<summary type="html">&lt;p&gt;Mei: Undo revision 30708 by Mei (talk)&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 used: &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_depth1000.png -C 'Multi-Scale Statewide California Velocity Model' &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_depth_50.png|thumb|300px|muscal big 50 vs]]&lt;br /&gt;
| [[FILE:muscal_big_depth_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_depth_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;
&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;
 * the interp used has incorrect axis -- ignore&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;
&lt;br /&gt;
==== Another small dataset in netcdf ====&lt;br /&gt;
&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;/div&gt;</summary>
		<author><name>Mei</name></author>
		
	</entry>
	<entry>
		<id>https://strike.scec.org/scecwiki/index.php?title=MUSCAL&amp;diff=30708</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/index.php?title=MUSCAL&amp;diff=30708"/>
		<updated>2026-04-01T19:14:12Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* big data in netcdf */&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 used: &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_depth1000.png -C 'Multi-Scale Statewide California Velocity Model' &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_depth_100.png|thumb|300px|muscal big 100 vs]]&lt;br /&gt;
| [[FILE:muscal_big_deth_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;
&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;
 * the interp used has incorrect axis -- ignore&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;
&lt;br /&gt;
==== Another small dataset in netcdf ====&lt;br /&gt;
&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;/div&gt;</summary>
		<author><name>Mei</name></author>
		
	</entry>
	<entry>
		<id>https://strike.scec.org/scecwiki/index.php?title=MUSCAL&amp;diff=30707</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/index.php?title=MUSCAL&amp;diff=30707"/>
		<updated>2026-04-01T19:13:08Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* Datasets */&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 used: &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_depth1000.png -C 'Multi-Scale Statewide California Velocity Model' &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_depth_50.png|thumb|300px|muscal big 50 vs]]&lt;br /&gt;
| [[FILE:muscal_big_depth_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_depth_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;
&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;
 * the interp used has incorrect axis -- ignore&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;
&lt;br /&gt;
==== Another small dataset in netcdf ====&lt;br /&gt;
&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;/div&gt;</summary>
		<author><name>Mei</name></author>
		
	</entry>
	<entry>
		<id>https://strike.scec.org/scecwiki/index.php?title=MUSCAL&amp;diff=30706</id>
		<title>MUSCAL</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/index.php?title=MUSCAL&amp;diff=30706"/>
		<updated>2026-03-30T20:36:05Z</updated>

		<summary type="html">&lt;p&gt;Mei: /* small data in netcdf */&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;
==== 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;
&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;
&lt;br /&gt;
==== Another small dataset in netcdf ====&lt;br /&gt;
&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;/div&gt;</summary>
		<author><name>Mei</name></author>
		
	</entry>
	<entry>
		<id>https://strike.scec.org/scecwiki/index.php?title=File:Muscal_small_interp-100_matprops.json.txt&amp;diff=30705</id>
		<title>File:Muscal small interp-100 matprops.json.txt</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/index.php?title=File:Muscal_small_interp-100_matprops.json.txt&amp;diff=30705"/>
		<updated>2026-03-30T19:58:20Z</updated>

		<summary type="html">&lt;p&gt;Mei: Mei uploaded a new version of File:Muscal small interp-100 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/scecwiki/index.php?title=File:Muscal_small_interp-50_matprops.json.txt&amp;diff=30704</id>
		<title>File:Muscal small interp-50 matprops.json.txt</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/index.php?title=File:Muscal_small_interp-50_matprops.json.txt&amp;diff=30704"/>
		<updated>2026-03-30T19:57:55Z</updated>

		<summary type="html">&lt;p&gt;Mei: Mei uploaded a new version of File:Muscal small interp-50 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/scecwiki/index.php?title=File:Muscal_small_interp_100.png&amp;diff=30703</id>
		<title>File:Muscal small interp 100.png</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/index.php?title=File:Muscal_small_interp_100.png&amp;diff=30703"/>
		<updated>2026-03-30T19:55:35Z</updated>

		<summary type="html">&lt;p&gt;Mei: Mei uploaded a new version of File:Muscal small interp 100.png&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/scecwiki/index.php?title=File:Muscal_small_interp_50.png&amp;diff=30702</id>
		<title>File:Muscal small interp 50.png</title>
		<link rel="alternate" type="text/html" href="https://strike.scec.org/scecwiki/index.php?title=File:Muscal_small_interp_50.png&amp;diff=30702"/>
		<updated>2026-03-30T19:54:16Z</updated>

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