GRASS logo

NAME

v.flexure - Lithospheric flexure: gridded deflections from scattered point loads

KEYWORDS

vector, geophysics

SYNOPSIS

v.flexure
v.flexure --help
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] [--help] [--verbose] [--quiet] [--ui]

Flags:

--overwrite
Allow output files to overwrite existing files
--help
Print usage summary
--verbose
Verbose module output
--quiet
Quiet module output
--ui
Force launching GUI dialog

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

Table of contents

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 17 14:05:16 2026 in commit: 2b69c1e5403d2a3377c287af027fcbad020a088c


Main index | Vector index | Topics index | Keywords index | Graphical index | Full index

© 2003-2026 GRASS Development Team, GRASS 8.5.1dev Reference Manual