|
ASPECT
|

Static Public Member Functions | |
| static void | declare_parameters (ParameterHandler &prm) |
Static Public Member Functions inherited from aspect::Plugins::InterfaceBase | |
| static void | declare_parameters (ParameterHandler &prm) |
Static Public Member Functions inherited from aspect::SimulatorAccess< dim > | |
| static void | get_composition_values_at_q_point (const std::vector< std::vector< double >> &composition_values, const unsigned int q, std::vector< double > &composition_values_at_q_point) |
Private Member Functions | |
| void | add_topography_to_mesh (typename parallel::distributed::Triangulation< dim > &grid) const |
| Point< dim > | add_topography_to_point (const Point< dim > &x_y_z) const |
| void | set_boundary_indicators (parallel::distributed::Triangulation< dim > &triangulation) const |
Private Attributes | |
| bool | use_merged_grids |
| Point< dim > | extents |
| Point< dim > | lower_extents |
| Point< dim > | lower_box_origin |
| Point< dim > | upper_extents |
| Point< dim > | upper_box_origin |
| bool | periodic [dim+dim-1] |
| std::array< unsigned int, dim > | lower_repetitions |
| std::array< unsigned int, dim > | upper_repetitions |
| double | height_lith |
A class that describes a box geometry of certain width, height, and depth (in 3d) and adds two (four in 3D) additional boundary indicators for the lithospheric part of the vertical boundaries.
Definition at line 38 of file two_merged_boxes.h.
|
overridevirtual |
Initialization function. This function is called once at the beginning of the program after parse_parameters is run and after the SimulatorAccess (if applicable) is initialized.
Reimplemented from aspect::Plugins::InterfaceBase.
|
overridevirtual |
Generate a coarse mesh for the geometry described by this class.
Implements aspect::GeometryModel::Interface< dim >.
| Point<dim> aspect::GeometryModel::TwoMergedBoxes< dim >::get_extents | ( | ) | const |
Return a point that denotes the size of the box in each dimension of the domain.
| const std::array<unsigned int, dim>& aspect::GeometryModel::TwoMergedBoxes< dim >::get_repetitions | ( | ) | const |
Return an integer array that denotes the number of repetitions of the lower box's coarse mesh. The horizontal repetitions are the same in the lower and upper boxes.
| Point<dim> aspect::GeometryModel::TwoMergedBoxes< dim >::get_origin | ( | ) | const |
Return a point that denotes the lower left corner of the box domain.
|
overridevirtual |
Return the typical length scale one would expect of features in this geometry, assuming realistic parameters.
We return 1/100th of the X extent of the box.
Implements aspect::GeometryModel::Interface< dim >.
|
overridevirtual |
Return the depth that corresponds to the given position. The documentation of the base class (see GeometryModel::Interface::depth()) describes in detail how "depth" is interpreted in general.
Computing a depth requires a geometry model to define a "vertical" direction. The current class considers the \((0,1)^T\) vector in 2d (and the \((0,0,1)^T\) vector in 3d) as vertical and considers the "top" boundary as the "surface". In almost all cases one will use a gravity model that also matches these definitions.
Implements aspect::GeometryModel::Interface< dim >.
|
overridevirtual |
Return the height of the given position relative to the initial box height.
Implements aspect::GeometryModel::Interface< dim >.
|
overridevirtual |
Returns a representative point for a given depth. Such a point must lie inside the domain for sure (assuming the given depth is valid), but it is not important where exactly in the domain it is. A good choice would be on a middle axis, for example.
The function is used, for example, in computing an initial adiabatic profile. For this, we need to be able to query the density as a function of (adiabatic) pressure and temperature. However, the functions returning the density from the material model also depend on location. Since we are interested only in computing a depth-dependent adiabatic profile without lateral variation, we need to be able to query the density at "representative points" at given depths, without caring too much where exactly that is – but at points that we know for sure are inside the domain.
Implements aspect::GeometryModel::Interface< dim >.
|
overridevirtual |
Returns the maximal depth of this geometry. For a definition of how "depth" is to be interpreted, see the documentation of the depth() member function. In particular, the maximal depth of a geometry model only represents the depth computed with regard to some reference configuration, ignoring any dynamic or initial topography.
Implements aspect::GeometryModel::Interface< dim >.
|
overridevirtual |
Return the set of boundary indicators that are used by this model. This information is used to determine what boundary indicators can be used in the input file.
This box model uses boundary indicators zero through 2*dim+2*(dim-1)-1, with the first two being the faces perpendicular to the x-axis and the next two perpendicular to the y-axis. In 2D, the next two are perpendicular to the x-axis again. In 3D, two sets of two are added for the boundaries parallel to the z-axis.
Implements aspect::GeometryModel::Interface< dim >.
|
overridevirtual |
Return a mapping from symbolic names of each part of the boundary to the corresponding boundary indicator. This allows users to specify names, not just numbers in their input files when describing which parts of the boundary have to satisfy which boundary conditions.
This geometry returns the map {{"left"->0}, {"right"->1}, {"bottom"->2}, {"top"->3}, {"left lithosphere"->4}, {"right lithosphere"->5}} in 2d, and {{"left"->0}, {"right"->1}, {"front"->2}, {"back"->3}, {"bottom"->4}, {"top"->5}, {"left lithosphere"->6}, {"right lithosphere"->7}, {"front lithosphere"->8}, {"back lithosphere"->9}} in 3d.
Reimplemented from aspect::GeometryModel::Interface< dim >.
|
overridevirtual |
Return the set of periodic boundaries as described in the input file.
Reimplemented from aspect::GeometryModel::Interface< dim >.
|
overridevirtual |
Adjust positions to be inside the domain considering periodic boundary conditions.
This function checks if position is outside the domain and if it could have reasonably crossed a periodic boundary. If so, it will adjust the position as described by the periodic boundary (e.g. a translation in a box, or a rotation in a spherical shell). Afterwards, if it adjusted position, it will also adjust all locations given in connected_positions (if any where given) and all velocities given in connected_velocities in the same way. Adjusting both of these allows to adjust related temporary variables, e.g. the intermediate results of an ordinary differential equation solver that are used to compute differences/directions between points. The reason positions and velocities have to be treated separately is that some geometries have to adjust them differently across a periodic boundary, e.g. a box has to translate positions but not velocities, while a spherical shell has to translate positions (by rotation around the center) and rotate velocities.
This function does not check that the position after the adjustment is inside the domain; to check this is the responsibility of the calling function. A common application of this function are particles that crossed a periodic boundary.
Apply a translation to all points outside of the domain to account for periodicity.
Reimplemented from aspect::GeometryModel::Interface< dim >.
|
overridevirtual |
If true, the geometry contains cells with boundaries that are not straight and have a deal.II boundary object attached to it. If the return value is false, certain operation can be optimized.The default implementation of this function will return true.
A box has only straight boundaries and cells, so return false.
Reimplemented from aspect::GeometryModel::Interface< dim >.
|
overridevirtual |
Return whether the given point lies within the domain specified by the geometry. This function does not take into account initial or dynamic surface topography.
Implements aspect::GeometryModel::Interface< dim >.
|
overridevirtual |
Returns what the natural coordinate system for this geometry model is, which for two merged boxes is Cartesian.
Implements aspect::GeometryModel::Interface< dim >.
|
overridevirtual |
Takes the Cartesian points (x,z or x,y,z) and returns standardized coordinates which are most 'natural' to the geometry model. For a box the results is unchanged and is (x,z) in 2d or (x,y,z) in 3d.
Reimplemented from aspect::GeometryModel::Interface< dim >.
|
overridevirtual |
Undoes the action of cartesian_to_natural_coordinates, and turns the coordinate system which is most 'natural' to the geometry model into Cartesian coordinates.
Reimplemented from aspect::GeometryModel::Interface< dim >.
|
static |
Declare the parameters this class takes through input files.
|
overridevirtual |
Read the parameters this class declares from the parameter file.
Reimplemented from aspect::Plugins::InterfaceBase.
| double aspect::GeometryModel::TwoMergedBoxes< dim >::get_topography_at_point | ( | const Point< dim > & | position | ) | const |
Return the topography at a given point
|
private |
Add initial topography to the mesh.
|
private |
Relocate the vertical coordinate of the given point based on the topography at the surface specified by the initial topography model.
|
private |
Bind boundary indicators to child cells after each mesh refinement round.
|
private |
Whether to make the grid by gluing together two boxes, or just use one chunk to make the grid. Using two grids glued together is a safer option, since it forces the boundary conditions to be always applied to the same depth, but one unified grid allows for a more flexible usage of the adaptive refinement.
This variable is read from the parameter file through a parameter called 'Use merged grids'.
Definition at line 239 of file two_merged_boxes.h.
|
private |
Extent of the whole model domain in x-, y-, and z-direction (in 3d). This variable is read from the parameter file through parameters called 'X extent', 'Y extent', and 'Z extent'.
Definition at line 246 of file two_merged_boxes.h.
|
private |
Extent of the lower box in x-, y-, and z-direction (in 3d).
Definition at line 251 of file two_merged_boxes.h.
|
private |
Origin of the lower box in x, y, and z (in 3d) coordinates. This variable is read from the parameter file through parameters called 'Box origin X coordinate', 'Box origin Y coordinate', and 'Box origin Z coordinate'.
Definition at line 258 of file two_merged_boxes.h.
|
private |
Extent of the upper box in x-, y-, and z-direction (in 3d).
Definition at line 263 of file two_merged_boxes.h.
|
private |
Origin of the upper box in x, y, and z (in 3d) coordinates.
Definition at line 268 of file two_merged_boxes.h.
|
private |
Flag whether the whole domain is periodic in the x-, y-, and z-directions, the x- and y- (in 3d) direction in the lithosphere. This variable is read from the parameter file through parameters called 'X periodic', 'X periodic lithosphere', 'Y periodic', 'Y periodic lithosphere', and 'Z periodic'.
Definition at line 277 of file two_merged_boxes.h.
|
private |
The number of cells in each coordinate direction for the lower box. This variable is read from the parameter file through parameters called 'X repetitions', 'Y repetitions', and 'Z repetitions'.
Definition at line 284 of file two_merged_boxes.h.
|
private |
The number of cells in each coordinate direction for the upper box.
This variable is read from the parameter file through parameters called 'Y repetitions lithosphere' and 'Z repetitions lithosphere'.
Definition at line 292 of file two_merged_boxes.h.
|
private |
The height where the lithospheric part of the vertical boundary begins (so in positive z-direction).
Definition at line 298 of file two_merged_boxes.h.