BKHK2023

Numerically calculates the steady-state viscosity and strainrate using the olivine flow law from Breithaupt et al., 2023, Dislocation theory of steady and transient creep of crystalline solids: predictions for olivine, PNAS, 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]

Calling Procedure

% set required state variables
clear
VBR.in.SV.T_K = linspace(800,1200,10)+273; % temperature [K]
VBR.in.SV.P_GPa = 3.3 * ones(size(VBR.in.SV.T_K)); % pressure [GPa]
VBR.in.SV.dg_um = 1000 * 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]


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

% 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.BKHK2023 = Params_Viscous('BKHK2023');
disp(VBR.in.viscous.BKHK2023)

Setting the top-level values within VBR.in.viscous.BKHK2003 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 = 3.3 * ones(size(VBR.in.SV.T_K)); % pressure [GPa]
VBR.in.SV.dg_um = 1000 * 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.rho = 3300 * ones(size(VBR.in.SV.T_K)); %Density [kg/m3]

% add elastic method anharmonic
VBR.in.elastic.methods_list={'anharmonic'}

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

% adjust activation energy
VBR.in.viscous.BKHK2023 = Params_Viscous('BKHK2023');
VBR.in.viscous.BKHK2023.DeltaF = 400000;

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

Output

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

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

{
  [1,1] = gbnp
  [2,1] = sr_tot
  [3,1] = eta_total
  [4,1] = units
}
  • ‘gbnp’ stores the strainrate ‘sr’ and ‘viscosity’ of the backstress model that includes recovery by grain-boundary diffusion and pipe diffusion as well as dynamic recovery at high stresses
  • sr_tot and eta_total are the total strain rate and effective viscosity of the backstress model again, included for consistency with the output of the other viscous mechanisms
  • Alternative versions of the backstress model that include different combinations of recovery mechanisms may be added to this method in the future
>> disp(fieldnames(VBR.out.viscous.BKHK2023.gbnp))

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