elementary.py¶
LevelSetElementaryMethods
dataclass
¶
LevelSetElementaryMethods(
Δx: float,
Δt: float = 0,
n_total: int | None = None,
i_step: int | None = None,
t_total: float = 0,
Δt_reinitialize: float = 0.1,
κ_boost: float = 1,
n_slabfailure: int | None = None,
n_pad_pixels: int | None = None,
band_width: float | None = None,
fm_order: int | None = None,
n_pixels_xz0: tuple[int, int] | None = None,
n_pixels_xz: tuple[int, int] | None = None,
do_extend_line: bool = True,
do_φ_everywhere: bool | None = None,
domain: Domain | None = None,
raw_domain: Domain | None = None,
surface: (
StraightLineSurface
| ErrorFunctionSurface
| SemiCircularArcSurface
| QuarterCircularArcSurface
| None
) = None,
substrate: (
OneLayerSubstrate | TwoLayerSubstrate | MultiLayerSubstrate | None
) = None,
model: Isotropic | Step | ExponentialActivation | None = None,
gma: GeometricMechanicsAnalysis | None = None,
)
flowchart TD
erosionfront.levelset.elementary.LevelSetElementaryMethods[LevelSetElementaryMethods]
erosionfront.levelset.data.LevelSetData[LevelSetData]
erosionfront.levelset.data.LevelSetData --> erosionfront.levelset.elementary.LevelSetElementaryMethods
click erosionfront.levelset.elementary.LevelSetElementaryMethods href "" "erosionfront.levelset.elementary.LevelSetElementaryMethods"
click erosionfront.levelset.data.LevelSetData href "" "erosionfront.levelset.data.LevelSetData"
Basic methods for working with gridded domain in level-set solver.
Subclasses LevelSetData.
Attributes¶
points_xz: NDArray Surface point coordinates.
Methods:
-
__post_init__–Complete instantiation by computing domain, pixel size, offset.
-
compute_domain–(Re)build domain after resizing.
-
compute_pixel_dimensions–Calculate numbers of pixels spanning the grid.
-
compute_pixel_origin–Calculate pixel offset of domain x,z position (0,0).
-
get_extent–Get domain (x,z) extent.
-
get_points_xz–Get surface (x,z) coordinates.
-
get_x_limits–Get domain x min, max.
-
get_z_limits–Get domain z min, max.
-
ij_to_xz–Convert pixel indices [i,j] into pixel center coords (x,z).
-
ji_to_xz–Convert reversed pixel indices [j,i] into pixel center coords (x,z).
-
make_line–Convert surface (x,z) coordinates into a Shapely Line geometry.
-
make_polygon–Create a 'bounding' polygon from surface x,z points.
-
pad_domain–Expand the domain vertically by pixel width amounts.
-
pad_grid–Pad grid with specified number of pixels below and above.
-
xz_to_ij–Convert pixel center coords (x,z) into pixel indices [i,j].
__post_init__
¶
Complete instantiation by computing domain, pixel size, offset.
Attributes¶
raw_domain: Domain Model domain instance. n_pixels_xz: tuple[int, int]: Grid pixel size. n_pixels_xz0: tuple[int, int]: Origin location in pixels.
Source code in erosionfront/levelset/elementary.py
compute_domain
staticmethod
¶
(Re)build domain after resizing.
Parameters¶
x: tuple | NDArray Vectors of x coordinates for which a domain geometry needs to be measured. z: tuple | NDArray Vectors of z coordinates for which a domain geometry needs to be measured. resolution: float Grid pixel size.
Returns¶
Domain Domain geometry class instance.
Source code in erosionfront/levelset/elementary.py
compute_pixel_dimensions
staticmethod
¶
Calculate numbers of pixels spanning the grid.
Parameters¶
domain: Domain Grid domain geometry. resolution: float Grid pixel size.
Returns¶
tuple[int, int] Width and height of grid in pixel numbers.
Source code in erosionfront/levelset/elementary.py
compute_pixel_origin
staticmethod
¶
Calculate pixel offset of domain x,z position (0,0).
Parameters¶
domain: Domain Grid domain geometry. resolution: float Grid pixel size.
Returns¶
tuple[int, int] Pixel indexes of bottom-left origin of grid.
Source code in erosionfront/levelset/elementary.py
get_extent
¶
Get domain (x,z) extent.
Returns¶
NDArray: Domain bounds as [x_min, x_max, z_max, z_min].
Source code in erosionfront/levelset/elementary.py
get_points_xz
¶
get_x_limits
¶
get_x_limits() -> tuple
Get domain x min, max.
Returns¶
tuple: x_min, x_max pair.
Source code in erosionfront/levelset/elementary.py
get_z_limits
¶
get_z_limits() -> tuple
Get domain z min, max.
Returns¶
tuple: z_min, z_max pair.
Source code in erosionfront/levelset/elementary.py
ij_to_xz
¶
ij_to_xz(ij: NDArray | tuple) -> NDArray
Convert pixel indices [i,j] into pixel center coords (x,z).
Parameters¶
ij: NDArray | tuple Pixel index pairs [i,j] as numpy array or tuple.
Returns¶
NDArray: Pixel (x,z) coordinate pairs as float64 numpy array.
Source code in erosionfront/levelset/elementary.py
ji_to_xz
¶
ji_to_xz(ji: NDArray | tuple) -> NDArray
Convert reversed pixel indices [j,i] into pixel center coords (x,z).
Parameters¶
ji: NDArray | tuple Pixel (reversed) index pairs [j,i] as numpy array or tuple.
Returns¶
NDArray: Pixel (x,z) coordinate pairs as float64 numpy array.
Source code in erosionfront/levelset/elementary.py
make_line
staticmethod
¶
Convert surface (x,z) coordinates into a Shapely Line geometry.
Parameters¶
points_xz: NDArray Stacked vectors of x and z surface point coordinates.
Returns¶
LineString: Shapely LineString geometry of surface line.
Source code in erosionfront/levelset/elementary.py
make_polygon
staticmethod
¶
Create a 'bounding' polygon from surface x,z points.
This polygon is used to decide whether a point lies within the bedrock or outside it.
BUG: Crudely done. Should be much tighter geometry close to domain.
Parameters¶
points_xz: NDArray Surface coordinates n_pixels_xz: tuple | NDArray Grid dimensions resolution: float Grid pixel size.
Returns¶
Polygon Shapely geometry of bounding polygon.
Source code in erosionfront/levelset/elementary.py
pad_domain
staticmethod
¶
Expand the domain vertically by pixel width amounts.
Parameters¶
domain: Domain (Initial) domain to be padded. resolution: float Grid pixel size. n_pad_pixels: int Number of pixel widths to pad by below the current domain.
Returns¶
New domain instance padded vertically.
Source code in erosionfront/levelset/elementary.py
pad_grid
staticmethod
¶
pad_grid(grid: NDArray, n_pad_pixels: int) -> NDArray
Pad grid with specified number of pixels below and above.
Parameters¶
grid: NDArray Grid to be padded. n_pad_pixels: int Number of pixels to pad below.
Returns¶
NDArray Padded grid.
Source code in erosionfront/levelset/elementary.py
xz_to_ij
¶
xz_to_ij(xz: NDArray | tuple) -> NDArray
Convert pixel center coords (x,z) into pixel indices [i,j].
Parameters¶
xz: NDArray | tuple Pixel (x,z) coordinate pairs as numpy array or tuple.
Returns¶
NDArray: Pixel index pairs [i,j] as int64 numpy array