ASPECT
|
Public Member Functions | |
GPlatesLookup (const Tensor< 1, 2 > &surface_point_one, const Tensor< 1, 2 > &surface_point_two) | |
std::string | screen_output (const Tensor< 1, 2 > &surface_point_one, const Tensor< 1, 2 > &surface_point_two) const |
void | load_file (const std::string &filename, const MPI_Comm comm) |
Tensor< 1, dim > | surface_velocity (const Point< dim > &position) const |
Private Member Functions | |
std::array< double, 3 > | angles_from_matrix (const Tensor< 2, 3 > &rotation_matrix) const |
double | rotation_axis_from_matrix (Tensor< 1, 3 > &rotation_axis, const Tensor< 2, 3 > &rotation_matrix) const |
template<int in, int out> | |
Tensor< 1, out > | convert_tensor (const Tensor< 1, in > &old_tensor) const |
Tensor< 1, 3 > | cartesian_surface_coordinates (const Tensor< 1, 3 > &sposition) const |
Tensor< 1, dim > | cartesian_velocity_at_surface_point (const std::array< double, 3 > &spherical_point) const |
Tensor< 1, 3 > | sphere_to_cart_velocity (const Tensor< 1, 2 > &s_velocities, const std::array< double, 3 > &s_position) const |
bool | gplates_1_4_or_higher (const boost::property_tree::ptree &pt) const |
Private Attributes | |
std::array< std::unique_ptr< Functions::InterpolatedUniformGridData< 2 > >, 2 > | velocities |
double | delta_phi |
double | delta_theta |
Tensor< 2, 3 > | rotation_matrix |
GPlatesLookup handles all kinds of tasks around looking up a certain velocity boundary condition from a gplates .gpml file.
aspect::BoundaryVelocity::internal::GPlatesLookup< dim >::GPlatesLookup | ( | const Tensor< 1, 2 > & | surface_point_one, |
const Tensor< 1, 2 > & | surface_point_two | ||
) |
Initialize all members and calculates any necessary rotation parameters for a 2D model.
std::string aspect::BoundaryVelocity::internal::GPlatesLookup< dim >::screen_output | ( | const Tensor< 1, 2 > & | surface_point_one, |
const Tensor< 1, 2 > & | surface_point_two | ||
) | const |
Outputs the GPlates module information at model start.
void aspect::BoundaryVelocity::internal::GPlatesLookup< dim >::load_file | ( | const std::string & | filename, |
const MPI_Comm | comm | ||
) |
Loads a gplates .gpml velocity file. Throws an exception if the file does not exist.
Tensor<1,dim> aspect::BoundaryVelocity::internal::GPlatesLookup< dim >::surface_velocity | ( | const Point< dim > & | position | ) | const |
Returns the computed surface velocity in cartesian coordinates. Takes as input the position. Actual velocity interpolation is performed in spherical coordinates.
position | The current position to compute velocity |
|
private |
A function that returns the corresponding paraview angles for a rotation described by a rotation matrix. These differ from the usually used euler angles by assuming a rotation around the coordinate axes in the order y-x-z (instead of the often used z-x-z)
|
private |
A function that returns the corresponding rotation axis/angle for a rotation described by a rotation matrix.
|
private |
Convert a tensor of rank 1 and dimension in to rank 1 and dimension out. If \(out < in\) the last elements will be discarded, if \(out > in\) zeroes will be appended to fill the tensor.
|
private |
Return the cartesian coordinates of a spherical surface position defined by theta (polar angle, not geographical latitude) and phi.
|
private |
This function looks up the north- and east-velocities at a given position and converts them to cartesian velocities.
|
private |
Returns cartesian velocities calculated from surface velocities and position in spherical coordinates
s_velocities | Surface velocities in spherical coordinates (theta, phi) |
s_position | Position in spherical coordinates (radius,phi,theta) |
|
private |
Check whether the gpml file was created by GPlates1.4 or later. We need to know this, because the mesh has changed its longitude origin from 0 to -180 degrees and we need to correct for this.
|
private |
|
private |
|
private |
|
private |