salvus.mesh.layered_meshing.meshing_protocol.coarsening_policy
Inter- and Intralayer coarsening policies.
Functions
no_filter()
no_filter()def no_filter(
p: salvus.mesh.layered_meshing.material.parameter._GenericParameterType,
) -> salvus.mesh.layered_meshing.material.parameter._GenericParameterType:
...Identity function returning the oracle as-is.
psalvus.mesh.layered_meshing.material.parameter._GenericParameterType — The oracle.
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.project.components.types.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.project.components.types.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.mesh.layered_meshing.material.parameter._RealizedParameter,
cs: salvus.project.components.types.CoordinateSystem,
) -> List[salvus.mesh.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.mesh.layered_meshing.material.parameter._RealizedParameter — The minimum wavelengths.cssalvus.project.components.types.CoordinateSystem — The coordinate system.
LocalRefinementPolicy
LocalRefinementPolicyclass LocalRefinementPolicy(builtins.object):
def __init__(
self,
f: Callable[
[salvus.mesh.unstructured_mesh.UnstructuredMesh], numpy.ndarray
],
refinement_level: int = 1,
refinement_style: str = "unstable",
unique_points_tolerance: int = 8,
) -> None:
...Pass information regarding local refinement to the Layered Mesher.
fCallable[[salvus.mesh.unstructured_mesh.UnstructuredMesh], numpy.ndarray] — A callable returning a boolean mask dictating where to refine. See documentation of__call__below.refinement_levelint — How many times to refine the mesh. See documentation ofunstructured_mesh.refine_locally(...)for more information. IfNone, will be automatically determined fromfac.refinement_stylestr — Which refinement style to use. See documentation ofunstructured_mesh.refine_locally(...)for more information. IfNone, will be automatically determined based on the value ofrefinement_level.unique_points_toleranceint — The number of decimal digits used to determine unique points in the refined mesh.
OracleFilter
OracleFilterclass OracleFilter(typing_extensions.Protocol):
def __init__(self):
...A protocol which wavelength oracle filter callbacks must respect.
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