Skip to content

name: v.flexure description: Lithospheric flexure: gridded deflections from scattered point loads keywords: [ vector, geophysics ]


v.flexure

Lithospheric flexure: gridded deflections from scattered point loads

v.flexure input=name [layer=string] column=name te=float [te_units=string] output=name [w_points=name] [w_column=name] [g=float] [ym=float] [nu=float] [rho_fill=float] [rho_m=float] [--overwrite] [--verbose] [--quiet] [--qq] [--ui]

Example:

v.flexure input=name column=name te=0.0 output=name

grass.tools.Tools.v_flexure(input, layer="1", column, te, te_units="km", output, w_points=None, w_column="w", g=9.8, ym=65E9, nu=0.25, rho_fill=0, rho_m=3300, overwrite=None, verbose=None, quiet=None, superquiet=None)

Example:

tools = Tools()
tools.v_flexure(input="name", column="name", te=0.0, output="name")

This grass.tools API is experimental in version 8.5 and expected to be stable in version 8.6.

grass.script.run_command("v.flexure", input, layer="1", column, te, te_units="km", output, w_points=None, w_column="w", g=9.8, ym=65E9, nu=0.25, rho_fill=0, rho_m=3300, overwrite=None, verbose=None, quiet=None, superquiet=None)

Example:

gs.run_command("v.flexure", input="name", column="name", te=0.0, output="name")

Parameters

input=name [required]
    Name of input vector map
    Vector map of loads (thickness * area * density * g) [N]
layer=string
    Layer number or name
    Layer containing load values
    Default: 1
column=name [required]
    Column containing load values [N]
te=float [required]
    Elastic thickness: scalar; units chosen in "te_units"
te_units=string
    Units for elastic thickness
    Allowed values: m, km
    Default: km
output=name [required]
    Output raster map of vertical deflections [m]
w_points=name
    Name of vector map
    Existing vector points map to receive deflection values
w_column=name
    Column in w_points map to write deflection values [m]
    Default: w
g=float
    gravitational acceleration at surface [m/s^2]
    Default: 9.8
ym=float
    Young's Modulus [Pa]
    Default: 65E9
nu=float
    Poisson's ratio
    Default: 0.25
rho_fill=float
    Density of material that fills flexural depressions [kg/m^3]
    Default: 0
rho_m=float
    Mantle density [kg/m^3]
    Default: 3300
--overwrite
    Allow output files to overwrite existing files
--help
    Print usage summary
--verbose
    Verbose module output
--quiet
    Quiet module output
--qq
    Very quiet module output
--ui
    Force launching GUI dialog

input : str, required
    Name of input vector map
    Vector map of loads (thickness * area * density * g) [N]
    Used as: input, vector, name
layer : str, optional
    Layer number or name
    Layer containing load values
    Used as: input, layer
    Default: 1
column : str, required
    Column containing load values [N]
    Used as: input, dbcolumn, name
te : float, required
    Elastic thickness: scalar; units chosen in "te_units"
te_units : str, optional
    Units for elastic thickness
    Allowed values: m, km
    Default: km
output : str | type(np.ndarray) | type(np.array) | type(gs.array.array), required
    Output raster map of vertical deflections [m]
    Used as: output, raster, name
w_points : str, optional
    Name of vector map
    Existing vector points map to receive deflection values
    Used as: input, vector, name
w_column : str, optional
    Column in w_points map to write deflection values [m]
    Used as: input, dbcolumn, name
    Default: w
g : float, optional
    gravitational acceleration at surface [m/s^2]
    Default: 9.8
ym : float, optional
    Young's Modulus [Pa]
    Default: 65E9
nu : float, optional
    Poisson's ratio
    Default: 0.25
rho_fill : float, optional
    Density of material that fills flexural depressions [kg/m^3]
    Default: 0
rho_m : float, optional
    Mantle density [kg/m^3]
    Default: 3300
overwrite : bool, optional
    Allow output files to overwrite existing files
    Default: None
verbose : bool, optional
    Verbose module output
    Default: None
quiet : bool, optional
    Quiet module output
    Default: None
superquiet : bool, optional
    Very quiet module output
    Default: None

Returns:

result : grass.tools.support.ToolResult | np.ndarray | tuple[np.ndarray] | None
If the tool produces text as standard output, a ToolResult object will be returned. Otherwise, None will be returned. If an array type (e.g., np.ndarray) is used for one of the raster outputs, the result will be an array and will have the shape corresponding to the computational region. If an array type is used for more than one raster output, the result will be a tuple of arrays.

Raises:

grass.tools.ToolError: When the tool ended with an error.

input : str, required
    Name of input vector map
    Vector map of loads (thickness * area * density * g) [N]
    Used as: input, vector, name
layer : str, optional
    Layer number or name
    Layer containing load values
    Used as: input, layer
    Default: 1
column : str, required
    Column containing load values [N]
    Used as: input, dbcolumn, name
te : float, required
    Elastic thickness: scalar; units chosen in "te_units"
te_units : str, optional
    Units for elastic thickness
    Allowed values: m, km
    Default: km
output : str, required
    Output raster map of vertical deflections [m]
    Used as: output, raster, name
w_points : str, optional
    Name of vector map
    Existing vector points map to receive deflection values
    Used as: input, vector, name
w_column : str, optional
    Column in w_points map to write deflection values [m]
    Used as: input, dbcolumn, name
    Default: w
g : float, optional
    gravitational acceleration at surface [m/s^2]
    Default: 9.8
ym : float, optional
    Young's Modulus [Pa]
    Default: 65E9
nu : float, optional
    Poisson's ratio
    Default: 0.25
rho_fill : float, optional
    Density of material that fills flexural depressions [kg/m^3]
    Default: 0
rho_m : float, optional
    Mantle density [kg/m^3]
    Default: 3300
overwrite : bool, optional
    Allow output files to overwrite existing files
    Default: None
verbose : bool, optional
    Verbose module output
    Default: None
quiet : bool, optional
    Quiet module output
    Default: None
superquiet : bool, optional
    Very quiet module output
    Default: None

DESCRIPTION

v.flexure computes how the rigid outer shell of a planet deforms elastically in response to surface-normal point loads by solving equations for plate bending. This phenomenon is known as "flexural isostasy" and is relevant to glacier/ice-cap/ice-sheet loading, sedimentary basin filling, mountain belt growth, volcano emplacement, sea-level change, and other geologic processes. v.flexure and r.flexure are the GRASS GIS interfaces to the model gFlex. v.flexure requires gFlex ≥ 2.0.0:

pip install "gflex>=2.0.0"

Full documentation and installation instructions are at https://gflex.readthedocs.io/.

NOTES

v.flexure uses the Superposition of Analytical Solutions for Non-Gridded points (SAS_NG) method in gFlex. Each input point load is treated as a concentrated force, and the far-field deflection is computed analytically as the superposition of Kelvin–Bessel (kei) functions. input is a vector points map. Each point represents a load in units of force [N]. For a distributed load field discretized as points, the user should incorporate the tributary area and load stress into the values stored in the attribute column specified by column.

te, written in standard notation as Te, is the lithospheric elastic thickness (scalar only for v.flexure; use r.flexure for spatially variable Te).

output is a raster map of deflections at the spacing and extent of the current GRASS computational region. Be sure to use g.region to set the region before running the module.

w_points is an optional existing vector points map at which deflection will also be evaluated. This allows deflection to be computed at arbitrary locations such as GPS stations, boreholes, or tide gauges that do not align with the raster grid. The deflection value at each point is written into the column specified by w_column (default: w), which is added to the map's attribute table if it does not already exist. The raster grid and the w_points locations are evaluated in a single gFlex solve, so there is no additional computational cost.

In latitude/longitude coordinates, v.flexure automatically computes great-circle distances between load and output points.

EXAMPLES

Three seamounts along a volcanic chain

Three point loads represent seamounts spaced 500 km apart. Each force (~5 × 1016 N) corresponds roughly to a seamount with a 25 km base radius, 3 km height, and basalt density. Because the flexural parameter α ≈ 41 km for Te = 25 km is much smaller than the 500 km spacing, the three depressions are essentially independent; their deflections add linearly everywhere.

# Domain: 2000 × 1000 km at 20 km resolution (projected CRS required)
g.region n=1000000 s=0 e=2000000 w=0 res=20000

# Three seamounts along the chain (x y, one per line)
echo "500000 500000
1000000 500000
1500000 500000" | v.in.ascii format=point input=- output=seamount_chain

# Add load column and set the same force [N] for all three points
v.db.addtable map=seamount_chain
v.db.addcolumn map=seamount_chain columns="force double precision"
v.db.update map=seamount_chain column=force value=5e16

# SAS_NG deflection; raster output required
v.flexure input=seamount_chain column=force \
    te=25 te_units=km \
    output=w_chain_rast

# Optionally also evaluate at a set of tide-gauge or GPS stations
v.flexure input=seamount_chain column=force \
    te=25 te_units=km \
    output=w_chain_rast \
    w_points=tide_gauges w_column=w_flexure

d.rast w_chain_rast
d.legend w_chain_rast

SEE ALSO

r.flexure, v.surf.bspline

REFERENCES

Wickert, A. D. (2016), Open-source modular solutions for flexural isostasy: gFlex v1.0, Geoscientific Model Development, 9(3), 997–1017, doi:10.5194/gmd-9-997-2016.

AUTHOR

Andrew D. Wickert

SOURCE CODE

Available at: v.flexure source code (history)
Latest change: Wednesday Jun 10 08:28:16 2026 in commit 76a37e7