Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Parameter Documentation for Subducting Plate Feature #768

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm

## [Unreleased]
### Added
- Added documentation for the subducting plate feature in the parameter documentation section of the manual. \[Daniel Douglas; 2024-11-19; [#768](https://github.com/GeodynamicWorldBuilder/WorldBuilder/pull/768)\]
- Added a velocities system where each feature can define a velocity field and the gwb can return the resulting velocity field. \[Menno Fraters; 2024-10-20; [#761](https://github.com/GeodynamicWorldBuilder/WorldBuilder/pull/761)\]
- There is now a CMake variable to automatically update the reference files for failed tests (gdb-dat and gwb-grid tests) \[Menno Fraters; 2024-10-20; [#761](https://github.com/GeodynamicWorldBuilder/WorldBuilder/pull/761)\]
- There is now a properties_output_size function, which returns the size of the output vector/array returned by the properties functions for a given properties input vector \[Menno Fraters; 2024-10-27; [#765](https://github.com/GeodynamicWorldBuilder/WorldBuilder/pull/765)\]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,6 @@ oceanic_plate.md
continental_plate.md
mantle_layer.md
fault.md
subducting_plate.md
subducting_plate/subducting_plate.md
plume/plume.md
```

This file was deleted.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
(part:dev_manual:chap:parameter_documentation:sec:features:subsec:subducting_plate)=
Subducting plate
==========

The subducting plate feature provides the user with the ability to add a subducting slab to the GWB world. To define a slab, the user must specify the `coordinates` where the slab intersects with the surface of the world, which for a subducting plate represents the location of the trench. In the Cartesian coordinate system, `coordinates` are represented by `[x, y]` points (in meters), and in the spherical coordinate system `coordinates` are represented by `[longitude, latitude]` points (in degrees). Additionally, because the trench is simply a line on the surface, the user must also specify the direction that the subducting plate dips from the trench via the `dip point`. The dip point is also represented as a surface point (`[x, y]` in Cartesian, `[longitude, latitude]` in spherical).

```{figure} ./map_view.png
:name: view_of_coordinates
:alt: view of coordinates.
:align: center

Map-view of a world where a trench is defined with three `coordinates` (black points), and contains a slab dipping to the left towards the user-specified `dip point` (white point). The slab is coloured by the depth.
```

To create a slab that does not change along-strike, the user can simply specify a number of `segments`. Segments are defined through a `length`, a `thickness`, and an `angle`. When the `angle` and the `thickness` are input as single values and not as arrays, the resulting segment is defined by a straight line segment, and dips away from the trench towards the `dip point` at the specified `angle`, with a uniform `thickness`. However, the segment can vary in `thickness` if the user specifies `thickness` as an array of two values, in which case the segment will still be represented as a straight line segment, but will linearly vary from the first thickness to the second thickness across the `length` of the segment. If the user also inputs `angle` as an array of two values, the segment will be represented as a piece of a circle, where the dip of the segment varies linearly from the first angle to the second angle across the `length` of the segment. Any given segment can vary in `thickness` and in `angle`, and when multiple segments are defined the termination point of a given segment acts as the starting point of the following segment. Combining segments in this way enables a user to define extremely complicated slab geometries down-dip of the trench `coordinates`.

```{figure} ./2D_cross_section.png
:name: view_of_segments
:alt: view of segments.
:align: center

Cross section of a subducting plate feature showing how `segments` can create complicated slab geometries down-dip of the trench. Black region represents where the slab is located. The starting point of "Segment 0" is the trench, defined by the user-specified `coordinates`. The starting point of "Segment 1" is the end point of "Segment 0", and so on.
```

Additional complexity can be introduced by specifying `sections`, which allow the user to vary the shape of the slab along-strike of the trench. If the trench is defined by _N_ surface `coordinates`, then _N_ `sections` can be specified, where each `section` is mapped to the corresponding `coordinates` of the trench. The `sections` are made up of _M_ `segments` (_M_ does not need to be equal to _N_, but each section MUST be composed of _M_ segments), thereby creating _N_ unique curves along-strike of the trench, and these `sections` are interpolated along strike using a Bezier interpolation to form a complex 3-dimensional slab that varies along-strike and down-dip.

```{figure} ./downdip_sections.png
:name: view_of_sections
:alt: view of sections.
:align: center

View of the subducting plate feature showing how `sections` can be used to add along-strike complexity to the slab. Each of the `sections` are made up of unique `segments`, which are then interpolated along-strike using a Bezier interpolation. The slab is coloured by the depth.
```
Loading