HZK2011

Steady state olivine flow law from Hansen, Zimmerman and Kohlstedt, 2011, J. Geophys. Res., DOI.

Requires

The following state variable arrays are required:

VBR.in.SV.T_K % temperature [K]
VBR.in.SV.P_GPa % pressure [GPa]
VBR.in.SV.dg_um % grain size [um]
VBR.in.SV.sig_MPa % differential stress [MPa]
VBR.in.SV.phi % melt fraction / porosity

Calling Procedure

% set required state variables
clear
VBR.in.SV.T_K = linspace(800,1200,10)+273; % temperature [K]
VBR.in.SV.P_GPa = 2 * ones(size(VBR.in.SV.T_K)); % pressure [GPa]
VBR.in.SV.dg_um = 4 * ones(size(VBR.in.SV.T_K)); % grain size [um]
VBR.in.SV.sig_MPa = 10 *  ones(size(VBR.in.SV.T_K)); % differential stress [MPa]
VBR.in.SV.phi = 0.01 * ones(size(VBR.in.SV.T_K)); % melt fraction / porosity

% add to viscous methods list
VBR.in.viscous.methods_list={'HZK2011'};

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

Parameters

Parameters, including flow law parameters can be explored by loading them into the workspace with

VBR.in.viscous.HZK2011 = Params_Viscous('HZK2011');
disp(VBR.in.viscous.HZK2011)

Setting the top-level values within VBR.in.viscous.HZK2011 can be done directly before calling VBR_spine, but to overwrite flow law parameters, you must first load the full parameter structure into the workspace and then modify the parameters within the substructure for each deformation mechanism. For example, to change the diffusion creep activation energy:

clear
VBR.in.SV.T_K = linspace(800,1200,10)+273; % temperature [K]
VBR.in.SV.P_GPa = 2 * ones(size(VBR.in.SV.T_K)); % pressure [GPa]
VBR.in.SV.dg_um = 4 * ones(size(VBR.in.SV.T_K)); % grain size [um]
VBR.in.SV.sig_MPa = 10 *  ones(size(VBR.in.SV.T_K)); % differential stress [MPa]
VBR.in.SV.phi = 0.01 * ones(size(VBR.in.SV.T_K)); % melt fraction / porosity

% add to viscous methods list
VBR.in.viscous.methods_list={'HZK2011'};

% adjust activation energy of diffusion creep
VBR.in.viscous.HZK2011 = Params_Viscous('HZK2011');
VBR.in.viscous.HZK2011.diff.Q = 400000;

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

Output

Output is stored in VBR.out.viscous.HZK2011.

>> disp(fieldnames(VBR.out.viscous.HZK2011))

{
  [1,1] = diff
  [2,1] = disl
  [3,1] = gbs
  [4,1] = sr_tot
  [5,1] = eta_total
}
  • sr_tot and eta_total are the total strain rate and effective viscosity for all deformation mechanisms.
  • each deformation mechanism has its own substructure, diff, disl and gbs with the strain rate and effective viscosity calculated just for that mechanism:
>> disp(fieldnames(VBR.out.viscous.HZK2011.diff))

{
  [1,1] = sr
  [2,1] = eta
}

Small-melt effects

See the documentation on the Small Melt Effect for relevant discussion and parameters.