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
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