CB_003_JF10.m

output figures

'CB_003_JF10'

contents

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% CB_003_JF10.m
%
%  Reproduces figures 1a-1d from JF10: moduli and Qinv vs period for
%  a single sample, #6585, using coefficients for the single sample fit
%  in table 1 of JF10.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%% put VBR in the path %%
  clear; close all;
  path_to_top_level_vbr='../../';
  addpath(path_to_top_level_vbr)
  vbr_init

%%  write method list %%
  VBR.in.elastic.methods_list={'anharmonic'};
  VBR.in.anelastic.methods_list={'eburgers_psp';'andrade_psp'};

%%  load anharmonic parameters, adjust Gu_0_ol %%
  % all params in ../vbr/vbrCore/params/ will be loaded in call to VBR spine,
  % but you can load them here and adjust any one of them (rather than changing
  % those parameter files).
  VBR.in.elastic.anharmonic=Params_Elastic('anharmonic'); % unrelaxed elasticity
  VBR.in.anelastic.eburgers_psp=Params_Anelastic('eburgers_psp');

  % use the single sample background only fit:
  VBR.in.anelastic.eburgers_psp.eBurgerMethod='s6585_bg_only'; % 'bg_only' or 'bg_peak' or 's6585_bg_only'

  % JF10 have Gu_0=62.5 GPa, but that's at 900 Kelvin and 0.2 GPa,
  % so set Gu_0_ol s.t. it ends up at 62.5 at those conditions
  dGdT=VBR.in.elastic.anharmonic.dG_dT;
  dGdP=VBR.in.elastic.anharmonic.dG_dP;
  Tref=VBR.in.elastic.anharmonic.T_K_ref;
  Pref=VBR.in.elastic.anharmonic.P_Pa_ref/1e9;
  GUJF10=VBR.in.anelastic.eburgers_psp.s6585_bg_only.G_UR;
  VBR.in.elastic.anharmonic.Gu_0_ol = GUJF10 - (900+273-Tref) * dGdT/1e9 - (0.2-Pref)*dGdP; % olivine reference shear modulus [GPa]

  % frequencies to calculate at
  VBR.in.SV.f = 1./logspace(-2,4,100);

%% Define the Thermodynamic State %%
  VBR.in.SV.T_K=700:50:1200;
  VBR.in.SV.T_K=VBR.in.SV.T_K+273;
  sz=size(VBR.in.SV.T_K); % temperature [K]

  % remaining state variables
  VBR.in.SV.dg_um=3.1*ones(sz);
  VBR.in.SV.P_GPa = 0.2 * ones(sz); % pressure [GPa]
  VBR.in.SV.rho = 3300 * ones(sz); % density [kg m^-3]
  VBR.in.SV.sig_MPa = 10 * ones(sz); % differential stress [MPa]
  VBR.in.SV.phi = 0.0 * ones(sz); % melt fraction

%% call VBR_spine %%
  [VBR] = VBR_spine(VBR) ;

%% adjust VBR input to include dissipation peak in the eburgers method %%
  VBR.in.anelastic.eburgers_psp.eBurgerFit='s6585_bg_peak';

  % this fit has a slightly different ref modulus, adjust it again:
  GUJF10=VBR.in.anelastic.eburgers_psp.s6585_bg_peak.G_UR;
  VBR.in.elastic.anharmonic.Gu_0_ol = GUJF10 - (900+273-Tref) * dGdT/1e9 - (0.2-Pref)*dGdP;

%% Call VBR_spine again %%
  [VBR_with_peak] = VBR_spine(VBR) ;

%% build figure %%
  figure('PaperPosition',[0,0,7,7],'PaperPositionMode','manual');

  for iTemp = 1:numel(VBR.in.SV.T_K)

    M_bg=squeeze(VBR.out.anelastic.eburgers_psp.M(1,iTemp,:)/1e9);
    M_bg_peak=squeeze(VBR_with_peak.out.anelastic.eburgers_psp.M(1,iTemp,:)/1e9);
    Q_bg=squeeze(VBR.out.anelastic.eburgers_psp.Qinv(1,iTemp,:));
    Q_bg_peak=squeeze(VBR_with_peak.out.anelastic.eburgers_psp.Qinv(1,iTemp,:));
    logper=log10(1./VBR.in.SV.f);
    R=(iTemp-1) / (numel(VBR.in.SV.T_K)-1);
    B=1 - (iTemp-1) / (numel(VBR.in.SV.T_K)-1);

    subplot(2,2,1)
    hold on
    plot(logper,M_bg,'color',[R,0,B],'LineWidth',2);
    ylabel('M [GPa] (background only) '); xlabel('period [s]')
    ylim([20,80])

    subplot(2,2,2)
    hold on
    plot(logper,log10(Q_bg),'color',[R,0,B],'LineWidth',2);
    ylabel('Q^-1 (background only)'); xlabel('period [s]')
    ylim([-2.5,0.5])

    subplot(2,2,3)
    hold on
    plot(logper,M_bg_peak,'color',[R,0,B],'LineWidth',2);
    ylabel('M [GPa] (background + peak) '); xlabel('period [s]')
    ylim([20,80])

    subplot(2,2,4)
    hold on
    plot(logper,log10(Q_bg_peak),'color',[R,0,B],'LineWidth',2);
    ylabel('Q^-1 (background + peak)'); xlabel('period [s]')
    ylim([-2.5,0.5])
  end
  for ip = 1:4
    subplot(2,2,ip); box on;
  end
  saveas(gcf,'./figures/CB_003_JF10.png')