This example script demonstrates simple shear-wave splitting modelling using the MSAT toolset. It predicts the SKS splitting variation with backazimuth associated with two dipping, partially-aligned olivine layers. The splitting in each layer is calculated using the Christoffel equation (MS_phasvels), and combined using N-layer effective splitting equations (MS_effective_splitting_N; Silver and Savage, GJI, 1994). Straight raypaths through the upper mantle are assumed.
The source code for this example are contained in the file split_model.m in the examples/splitting directory distributed with MSAT.
The first step is to set up the geometrical parameters of the model and calcuate the ray distances in the two layers.
% ** Setup model parameters
S_slow = 4.814 ; % (SKS at 100 degrees from iasp91) ->
aoi = 11.2262 ; % at 100 km depth, angle of incidence
% ** Layer 1 (upper) parameters
L1_depth = 0. ; L1_thick = 100. ; L1_dip = 0.0 ; % layer geometry
L1_aaz = 30.0 ; % a-axis azimuth (rel. to down dip direction)
L1_faln = 0.3 ; % fraction aligned
% ** Layer 2 (lower) parameters
L2_depth = 150. ; L2_thick = 60. ; L2_dip = 30.0 ; % layer geometry
L2_aaz = 0.0 ; % a-axis azimuth (rel. to down dip direction)
L2_faln = 0.3 ; % fraction aligned
report_model(L1_depth, L1_thick, L1_dip, L1_aaz, L1_faln, ...
L2_depth, L2_thick, L2_dip, L2_aaz, L2_faln) ;
% ** imaging parameters
baz = [0:1:360] ; % 0 is down dip direction (perp. to strike)
inc = -ones(size(baz)).*90 + aoi ;
% ** calculate distances
[dist1]=distance_in_dipping_layer(L1_dip,aoi,L1_thick,baz) ;
[dist2]=distance_in_dipping_layer(L2_dip,aoi,L2_thick,baz) ;
The example then builds elasticity matricies for the two layers:
% ** load anisotropy, and generate an isotropic version of it.
[Cani,rh] = MS_elasticDB('olivine') ;
[Ciso] = MS_decomp(MS_axes(Cani)) ;
Cani = MS_rot3(Cani,90,0,0) ; % orientation for dry upper mantle
% ** generate layer elasticities:
% This is a Voigt-Reuss-Hill average of the appropriately rotated olivine
% tensor and its isotropic equivalent.
[L1_C,~] = MS_VRH([L1_faln 1-L1_faln],...
MS_rot3(Cani,0,-L1_dip,L1_aaz,'order',[3 2 1]),rh, Ciso, rh) ;
[L2_C,~] = MS_VRH([L2_faln 2-L2_faln],...
MS_rot3(Cani,0,-L2_dip,L2_aaz,'order',[3 2 1]),rh, Ciso, rh) ;
Finally, the splitting parameters for each layer are calculated, and then combined:
% ** interrogate elasticities to generate splitting parameters for each layer.
[ pol, ~, vs1, vs2, ~, ~, ~ ] = MS_phasevels( L1_C, rh, inc, baz ) ;
fast1 = MS_unwind_pm_90((baz - pol')) ; % geog. reference frame
tlag1 = dist1./vs2' - dist1./vs1' ;
[ pol, ~, vs1, vs2, ~, ~, ~ ] = MS_phasevels( L2_C, rh, inc, baz ) ;
fast2 = MS_unwind_pm_90((baz - pol')) ; % geog. reference frame
tlag2 = dist2./vs2' - dist2./vs1' ;
% ** calculate the effective splitting between 2 layers
fast_eff = zeros(size(baz)) ;
tlag_eff = fast_eff ;
for i = 1:length(baz)
[fast_eff(i),tlag_eff(i)] = ...
MS_effective_splitting_N(0.125,baz(i), ...
[fast2(i) fast1(i)],[tlag2(i) tlag1(i)]) ;
end