Optimisation

Optimisation is a class that contains methods to optimise the free parameters in the plate torques calculations in the PlateTorques class.

class plato.optimisation.Optimisation(plate_torques=None)[source]

Bases: object

A class to optimise the slab pull coefficient and mantle viscosity to match plate motions.

Parameters:

plate_torques (PlateTorques) – plate torques object

minimise_residual_torque(ages=None, cases=None, plateIDs=None, grid_size=500, viscosity_range=[5e+18, 5e+20], weight_by_area=True, minimum_plate_area=None, plot=True, savefig=False, RECALCULATE_SLAB_PULL=True, INCLUDE_SLAB_SUCTION=False)[source]

Function to find optimised coefficients to match plate motions using a grid search. The optimal coefficients are those that minimise the residual torque normalised by the driving torque. If more than one plate is provided, the normalised residual torque is weighted by the plate area.

Parameters:
  • age (int, float) – reconstruction age to optimise

  • case (str) – case to optimise

  • plateIDs (list of integers or None) – plate IDs to include in optimisation

  • grid_size (int) – size of the grid to find optimal viscosity and slab pull coefficient

  • plot (boolean) – whether or not to plot the grid

  • weight_by_area (boolean) – whether or not to weight the residual torque by plate area

Returns:

The optimal slab pull coefficient, optimal viscosity, normalised residual torque, and indices of the optimal coefficients

Return type:

float, float, numpy.ndarray, tuple

NOTE: This is a wrapper function that calls either minimise_residual_torque_v0 or minimise_residual_torque_v1 depending on the value of INCLUDE_SLAB_SUCTION. This could be written more elegantly in the future.

NOTE: Lateral viscosity variations need to be introduced along a third dimension.

minimise_residual_torque_v0(ages=None, cases=None, plateIDs=None, grid_size=500, viscosity_range=[5e+18, 5e+20], weight_by_area=True, minimum_plate_area=None, plot=True, savefig=False, RECALCULATE_SLAB_PULL=True)[source]

Function to find optimised coefficients to match plate motions using a grid search. The optimal coefficients are those that minimise the residual torque normalised by the driving torque. If more than one plate is provided, the normalised residual torque is weighted by the plate area.

Parameters:
  • age (int, float) – reconstruction age to optimise

  • case (str) – case to optimise

  • plateIDs (list of integers or None) – plate IDs to include in optimisation

  • grid_size (int) – size of the grid to find optimal viscosity and slab pull coefficient

  • plot (boolean) – whether or not to plot the grid

  • weight_by_area (boolean) – whether or not to weight the residual torque by plate area

Returns:

The optimal slab pull coefficient, optimal viscosity, normalised residual torque, and indices of the optimal coefficients

Return type:

float, float, numpy.ndarray, tuple

NOTE: Lateral viscosity variations need to be introduced along a third dimension.

minimise_residual_torque_v1(ages=None, cases=None, plateIDs=None, grid_size=500, viscosity_range=[5e+18, 5e+20], weight_by_area=True, minimum_plate_area=None, plot=True, savefig=False)[source]

Function to find optimised coefficients to match plate motions using a grid search. The optimal coefficients are those that minimise the residual torque normalised by the driving torque. If more than one plate is provided, the normalised residual torque is weighted by the plate area.

Parameters:
  • age (int, float) – reconstruction age to optimise

  • case (str) – case to optimise

  • plateIDs (list of integers or None) – plate IDs to include in optimisation

  • grid_size (int) – size of the grid to find optimal viscosity and slab pull coefficient

  • plot (boolean) – whether or not to plot the grid

  • weight_by_area (boolean) – whether or not to weight the residual torque by plate area

Returns:

The optimal slab pull coefficient, optimal viscosity, normalised residual torque, and indices of the optimal coefficients

Return type:

float, float, numpy.ndarray, tuple

NOTE: Lateral viscosity variations need to be introduced along a third dimension.

optimise_slab_pull_constant(ages=None, cases=None, plateIDs=None, grid_size=500, viscosity=None, max_slab_pull_constant=0.9, PLOT=False)[source]

Function to find optimised slab pull coefficient for a given (set of) plates using a grid search.

Parameters:
  • age (int, float) – reconstruction age to optimise

  • case (str) – case to optimise

  • plateIDs (list of integers or None) – plate IDs to include in optimisation

  • grid_size (int) – size of the grid to find optimal slab pull coefficient

  • plot (boolean) – whether or not to plot the grid

Returns:

The optimal slab pull coefficient

Return type:

float

invert_residual_torque(ages=None, cases=None, plateIDs=None, parameter='Slab pull constant', max_slab_pull_constant=0.9, min_slab_pull_constant=0.0, vmin=-14.0, vmax=-6.0, step=0.25, NUM_ITERATIONS=100, PLOT=False)[source]

Function to find optimised slab pull constant by projecting the residual torque onto the subduction zones. The function loops through all the unique combinations of ages and cases and optimises the slab pull coefficient for each plate. The model space for the slab pull constant is explored using an iterative approach with an adaptive step size.

Parameters:
  • age (int, float) – reconstruction age to optimise

  • case (str) – case to optimise

  • plateIDs (list of integers or None) – plate IDs to include in optimisation

  • grid_size (int) – size of the grid to find optimal slab pull coefficient

  • NUM_ITERATIONS (int) – number of iterations to perform

  • PLOT (boolean) – whether or not to plot the grid

Returns:

The optimal slab pull coefficient

Return type:

float

optimise_torques(ages=None, cases=None, plateIDs=None, optimisation_age=None, optimisation_case=None, optimisation_plateID=None)[source]

Function to optimsie the torques in the PlateTorques object.

Parameters:
  • ages (list of int, float) – ages to optimise (default: None)

  • cases (list of str) – cases to optimise (default: None)

  • plateIDs (list of int) – plate IDs to optimise (default: None)

  • optimisation_age (int, float) – age to optimise (default: None)

  • optimisation_case (str) – case to optimise (default: None)

  • optimisation_plateID (int) – plate ID of plate to optimise (default: None)

NOTE: This function is not written in the most efficient way and can be improved.

remove_net_rotation(ages=None, cases=None, plateIDs=None)[source]

Remove net rotation

NOTE: This function is not yet implemented.

remove_net_trench_migration(ages=None, cases=None, plateIDs=None, type=None)[source]

Remove net rotation

NOTE: This function is not yet implemented.

extract_data_through_time(ages=None, cases=None, plateIDs=None, type='plates', var='residual_torque_mag')[source]

Function to extract data through time.

Parameters:
  • ages (float, int, list, numpy.ndarray) – ages of interest (default: None)

  • cases (str, list) – cases of interest (default: None)

  • plateIDs (int, float, list, numpy.ndarray) – plateIDs of interest (default: None)

apply_parameters(parameters, ages=None, cases=None, plateIDs=None)[source]

Function to apply parameters to the data.

Parameters:
  • ages (float, int, list, numpy.ndarray) – ages of interest (default: None)

  • cases (str, list) – cases of interest (default: None)

  • plateIDs (int, float, list, numpy.ndarray) – plateIDs of interest (default: None)

  • parameters (dict) – parameters to apply (default: None)