salvus.mesh.layered_meshing.meshing_protocol.coarsening_policy.intralayer_vertical_refine
salvus.mesh.layered_meshing.meshing_protocol.coarsening_policy.intralayer_vertical_refine salvus mesh layered_meshing meshing_protocol coarsening_policy intralayer_vertical_refine Allow for vertical refinements in a layer.
Classes
IntralayerVerticalRefine
IntralayerVerticalRefineclass IntralayerVerticalRefine(
salvus.mesh.layered_meshing.meshing_protocol.coarsening_policy.IntralayerCoarseningPolicy
):
def __init__(
self,
fixed_horizontal_element_boundaries: list[list[float]] = default,
min_layer_thickness: float | None = None,
max_vertical_oversampling_factor: int | None = None,
max_aspect_ratio: float = 10.0,
refinement_type: typing.Literal["doubling", "tripling"] = "tripling",
) -> None: ...Construct a coarsening policy that allows for vertical refinements.
Parameters
fixed_horizontal_element_boundarieslist[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_thicknessfloat | None — 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.max_vertical_oversampling_factorint | None — Deprecated and ignored. It used to relax an upper bound on the number of vertical elements per column, but that number is now determined exactly, leaving no bound for it to relax. Will be removed in a future release.max_aspect_ratiofloat — Ensure that the vertical dimension of each element are no more than this many times the horizontal dimensions. Defaults to 10.0refinement_typetyping.Literal['doubling', 'tripling'] — The type of vertical refinements to use. ‘doubling’ usually gives a better time step, but since it changes the number of elements in the horizontal direction it can only be used in the top layer of any layered model.
Methods
basic_block()
basic_block()def basic_block(
self,
elm_p_wav: tuple[float, ...],
n_elm_h: list[int],
n_elm_c: int,
i_bot: Interface,
i_top: Interface,
b_flat: float,
t_flat: float,
mw: realized.RealizedParameter,
cs: CoordinateSystem,
) -> list[MeshBlock]: ...Get the rectangle or cube constructors.
May return an empty list if it is detected that the connector blocks already span the entire layer.
Parameters
elm_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_botInterface — The bottom interface.i_topInterface — The top interface.b_flatfloat — The bottom elevation of the flattened mesh block.t_flatfloat — The top elevation of the flattened mesh block.mwrealized.RealizedParameter — The minimum wavelengths.csCoordinateSystem — The coordinate system.
Returns list[MeshBlock] — The mesh block.