salvus.mesh.layered_meshing.meshing_protocol.coarsening_policy
Inter- and Intralayer coarsening policies.
Classes
InterlayerCoarseningPolicy
InterlayerCoarseningPolicyclass InterlayerCoarseningPolicy(builtins.object):
def __init__(self) -> None: ...Policies for coarsening between model layers. Doubling, tripling, etc.
interlayer_connector()
interlayer_connector()def interlayer_connector(
self,
l0: Tuple[List[int], int],
l1: Tuple[List[int], int],
cs: salvus.geometry.coordinates.coordinates.CoordinateSystem,
layer_bounds: Dict[str, Tuple[float, float]],
) -> Tuple[
List[
Tuple[
int,
Union[
salvus.mesh.layered_meshing.meshing_protocol.coarsening_policy._InterlayerConnectorProtocol2D,
salvus.mesh.layered_meshing.meshing_protocol.coarsening_policy._InterlayerConnectorProtocol3D,
],
]
],
List[
Tuple[
int,
Union[
salvus.mesh.layered_meshing.meshing_protocol.coarsening_policy._InterlayerConnectorProtocol2D,
salvus.mesh.layered_meshing.meshing_protocol.coarsening_policy._InterlayerConnectorProtocol3D,
],
]
],
]: ...Callable which returns a MeshBlock that connects two layers.
A tuple of lists of tuple is returned, the first element of which is
the number of connecting mesh blocks that need to be constructed. For
instance, if the interlayer policy is “doubling”, and the number of
elements between two layers different by a factor 4, the first element
of the returned tuple should be 2. The second element is a partial
function with the n_elem_ arguments already applied, and which can
then subsequently be called with extents.
A tuple is returned, the first element specifying the connectors required for the layer’s top, and the second for the layer’s bottom.
l0Tuple[List[int], int] — Tuple of: (list of number of elements in each horizontal direction, number of vertical elements) in the top layer.l1Tuple[List[int], int] — Tuple of: (list of number of elements in each horizontal direction, number of vertical elements) in the bottom layer.cssalvus.geometry.coordinates.coordinates.CoordinateSystem — The coordinate system.layer_boundsDict[str, Tuple[float, float]] — The bounds of the associated layer.
interlayer_constraint()
interlayer_constraint()def interlayer_constraint(
self,
a: List[ortools.sat.python.cp_model.IntVar],
b: List[ortools.sat.python.cp_model.IntVar],
) -> List[List[ortools.sat.python.cp_model.BoundedLinearExpression]]: ...Constraint on the number of horizontal elements in two adjacent layers.
aList[ortools.sat.python.cp_model.IntVar] — Number of elements in layer a.bList[ortools.sat.python.cp_model.IntVar] — Number of elements in layer b.
IntralayerCoarseningPolicy
IntralayerCoarseningPolicyclass IntralayerCoarseningPolicy(builtins.object):
def __init__(
self,
fixed_horizontal_element_boundaries: Optional[
List[float], List[List[float]]
] = None,
min_layer_thickness: Optional[float] = None,
): ...Policies for coarsening within model layers. Vertical refinements, etc.
Construct a new intralayer coarsening policy.
fixed_horizontal_element_boundariesOptional[List[float], List[List[float]]] — An optional array of horizontal coordinate values where fixed element boundaries should occur. Useful for respecting the mesh of simple vertical structures and the like. For 3-D meshes one can pass a list of lists of values, which correspond to the first and second coordinate axes (i.e x and y) respectively.min_layer_thicknessOptional[float] — If a float is specified here, mask out all elements in this layer where the layer thickness is less than this value. Useful for masking out elements in shallow water layers.
basic_block()
basic_block()def basic_block(
self,
elem_p_wav: Tuple[float, ...],
n_elm_h: List[int],
n_elm_c: int,
i_bot: salvus.mesh.layered_meshing.interface.Interface,
i_top: salvus.mesh.layered_meshing.interface.Interface,
b_flat: float,
t_flat: float,
mw: salvus.material._details.parameter.parameter_types.RealizedParameter,
cs: salvus.geometry.coordinates.coordinates.CoordinateSystem,
) -> List[salvus.mesh.data_structures.mesh_block.mesh_block.MeshBlock]: ...Get the intralayer mesh block.
May return an empty list if it is detected that the connector blocks already span the entire layer.
elem_p_wavTuple[float, ...] — The number of elements per wavelength.n_elm_hList[int] — The number of elements in the horizontal directions.n_elm_cint — The total number of elements in the connectors.i_botsalvus.mesh.layered_meshing.interface.Interface — The bottom bounding interface.i_topsalvus.mesh.layered_meshing.interface.Interface — The top bounding interface.b_flatfloat — The bottom elevation, accounting for connectors.t_flatfloat — The top elevation, accounting for connectors.mwsalvus.material._details.parameter.parameter_types.RealizedParameter — The minimum wavelengths.cssalvus.geometry.coordinates.coordinates.CoordinateSystem — The coordinate system.
Submodules
salvus.mesh.layered_meshing.meshing_protocol.coarsening_policy.detailsalvus.mesh.layered_meshing.meshing_protocol.coarsening_policy.interlayer_constantsalvus.mesh.layered_meshing.meshing_protocol.coarsening_policy.interlayer_doublingsalvus.mesh.layered_meshing.meshing_protocol.coarsening_policy.interlayer_triplingsalvus.mesh.layered_meshing.meshing_protocol.coarsening_policy.intralayer_constantsalvus.mesh.layered_meshing.meshing_protocol.coarsening_policy.intralayer_detailsalvus.mesh.layered_meshing.meshing_protocol.coarsening_policy.intralayer_variablesalvus.mesh.layered_meshing.meshing_protocol.coarsening_policy.intralayer_vertical_refine