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