Compute flexural deformation of 2-D loads, forces, and bending moments


gmt flexure -Drm/rl[/ri]/rw -ETe[k]|D|file -Qargs [ -A[l|r]bc[/args] ] [ -Cp|yvalue ] [ -Fforce ] [ -L ] [ -M[x][z] ] [ -S ] [ -Twfile] [ -V[level] ] [ -Wwd[k]] [ -Zzm[k]] [ -bibinary ] [ -bobinary ] [ -dnodata[+ccol] ] [ -eregexp ] [ -hheaders ] [ -iflags ] [ -oflags ] [ --PAR=value ]

Note: No space is allowed between the option flag and the associated arguments.


flexure computes the flexural response to 2-D loads using a range of user-selectable options, such as boundary conditions, pre-existing deformations, variable rigidity and restoring force, and more. The solutions are obtained using finite difference approximations to the differential equations [Bodine,1980].

Required Arguments


Sets density for mantle, load, infill (optionally, otherwise it is assumed to equal the load density), and water. If ri is not given then it defaults to rl.


Sets the elastic plate thickness (in meter); append k for km. If the elastic thickness exceeds 1e10 it will be interpreted as a flexural rigidity D instead (by default D is computed from Te, Young’s modulus, and Poisson’s ratio; see -C to change these values). Alternatively, supply a file with variable plate thicknesses or rigidities. The file must be co-registered with any file given via -Q.


Sets the vertical load specification. Choose among these three options: -Qn means there is no input load file and that any deformation is simply driven by the boundary conditions set via -A. If no rigidity or elastic thickness file is given via -E then you must also append arguments to create the locations used for the calculations; for details on array creation, see `Generate 1D Array`_. -Qq[loadfile] is a file (or standard input if not given) with (x,load in Pa) for all equidistant data locations. Finally, -Qt[topofile] is a file (or standard input if not given) with (x,load in m or km, positive up); see -M for topography unit used [m].

Optional Arguments


Sets the boundary conditions at the left and right boundary. The bc can be one of four codes: 0 selects the infinity condition, were both the deflection and its slope are set to zero. 1 selects the periodic condition where both the first and third derivatives of the deflection are set to zero. 2 selects the clamped condition where args (if given) sets the deflection value [0] (and its first derivative is set to zero), while 3 selects the free condition where args is given as moment/force which specify the end bending moment and vertical shear force [0/0]. Use SI units for any optional arguments.


Append p or y to change the current value of Poisson’s ratio [0.25] or Young’s modulus [7.0e10 N/m2], respectively.


Set a constant horizontal in-plane force, in Pa m [0].


Use a variable restoring force that depends on sign of the flexure [constant].


Optionally append one or both of x and z: Use x to indicated that all x-distances are in km [meters] and z to indicate that all z-deflections are in km [meters].


Compute the curvature along with the deflections and report them via the third output column [none].


Supply a file with pre-existing deformations [undeformed surface].


Select verbosity level [w]. (See full description) (See cookbook information).


Specify water depth in m; append k for km. Must be positive [0]. Any subaerial topography will be scaled via the densities set in -D to compensate for the larger density contrast with air.


Specify reference depth to flexed surface in m; append k for km. Must be positive [0]. We add this value to the flexed surface before output.

-birecord[+b|l] (more …)

Select native binary format for primary table input.

-borecord[+b|l] (more …)

Select native binary format for table output.

-d[i|o][+ccol]nodata (more …)

Replace input columns that equal nodata with NaN and do the reverse on output.

-e[~]“pattern” | -e[~]/regexp/[i] (more …)

Only accept data records that match the given pattern.

-h[i|o][n][+c][+d][+msegheader][+rremark][+ttitle] (more …)

Skip or produce header record(s).

-icols[+l][+ddivisor][+sscale|d|k][+ooffset][,][,t[word]] (more …)

Select input columns and transformations (0 is first column, t is trailing text, append word to read one word only).

-ocols[,…][,t[word]] (more …)

Select output columns (0 is first column; t is trailing text, append word to write one word only).

-^ or just -

Print a short message about the syntax of the command, then exit (Note: on Windows just use -).

-+ or just +

Print an extensive usage (help) message, including the explanation of any module-specific option (but not the GMT common options), then exit.

-? or no arguments

Print a complete usage (help) message, including the explanation of all options, then exit.


Temporarily override a GMT default setting; repeatable. See gmt.conf for parameters.

Generate 1-D Array

We will demonstrate the use of options for creating 1-D arrays via gmtmath. Make an evenly spaced coordinate array from min to max in steps of inc, e.g.:

gmt math -o0 -T3.1/4.2/0.1 T =

Append +b if we should take \(\log_2\) of min and max, get their nearest integers, build an equidistant \(\log_2\)-array using inc integer increments in \(\log_2\), then undo the \(\log_2\) conversion. E.g., -T3/20/1+b will produce this sequence:

gmt math -o0 -T3/20/1+b T =

Append +l if we should take \(\log_{10}\) of min and max and build an array where inc can be 1 (every magnitude), 2, (1, 2, 5 times magnitude) or 3 (1-9 times magnitude). E.g., -T7/135/2+l will produce this sequence:

gmt math -o0 -T7/135/2+l T =

For output values less frequently than every magnitude, use a negative integer inc:

gmt math -o0 -T1e-4/1e4/-2+l T =

Append +i if inc is a fractional number and it is cleaner to give its reciprocal value instead. To set up times for a 24-frames per second animation lasting 1 minute, run:

gmt math -o0 -T0/60/24+i T =

Append +n if inc is meant to indicate the number of equidistant coordinates instead. To have exactly 5 equidistant values from 3.44 and 7.82, run:

gmt math -o0 -T3.44/7.82/5+n T =

Alternatively, let inc be a file with output coordinates in the first column, or provide a comma-separated list of specific coordinates, such as the first 6 Fibonacci numbers:

gmt math -o0 -T0,1,1,2,3,5 T =

Notes: (1) If you need to pass the list nodes via a dataset file yet be understood as a list (i.e., no interpolation), then you must set the file header to contain the string “LIST”. (2) Should you need to ensure that the coordinates are unique and sorted (in case the file or list are not sorted or have duplicates) then supply the +u modifier.

If you only want a single value then you must append a comma to distinguish the list from the setting of an increment.

If the module allows you to set up an absolute time series, append a valid time unit from the list year, month, day, hour, minute, and second to the given increment; add +t to ensure time column (or use -f). Note: The internal time unit is still controlled independently by TIME_UNIT. The first 7 days of March 2020:

gmt math -o0 -T2020-03-01T/2020-03-07T/1d T =

A few modules allow for +a which will paste the coordinate array to the output table.

Likewise, if the module allows you to set up a spatial distance series (with distances computed from the first two data columns), specify a new increment as inc with a geospatial distance unit from the list degree (arc), minute (arc), second (arc), meter, foot, kilometer, Miles (statute), nautical miles, or survey foot; see -j for calculation mode. To interpolate Cartesian distances instead, you must use the special unit c.

Finally, if you are only providing an increment and will obtain min and max from the data, then it is possible (max - min)/inc is not an integer, as required. If so, then inc will be adjusted to fit the range. Alternatively, append +e to keep inc exact and adjust max instead (keeping min fixed).

Note on Units

The -M option controls the units used in all input and output files. However, this option does not control values given on the command line to the -E, -W, and -Z options. These are assumed to be in meters unless an optional k for km is appended.

Plate Flexure Notes

We solve for plate flexure using a finite difference approach. This method can accommodate situations such as variable rigidity, restoring force that depends on the deflection being positive or negative, pre-existing deformation, and different boundary conditions.


To compute elastic plate flexure from the topography load in topo.txt, for a 10 km thick plate with typical densities, try

gmt flexure -Qttopo.txt -E10k -D2700/3300/1035 > flex.txt


Bodine, J. H., 1980, Numerical computation of plate flexure in marine geophysics, Tech. Rep. CU-1-80, Columbia University.

See Also

gmt, gravfft, grdflexure, grdmath