# flexure¶

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

## Synopsis¶

**gmt flexure** **-D***rm*/*rl*[/*ri*]/*rw* **-E***Te*[**u**]|*D*|*file*
[ **-A**[**l**|**r**]*bc*[/*args*] ]
[ **-C****p***Poisson* ] [ **-C****y***Young* ]
[ **-F***force* ] [ **-L** ]
[ **-Q***args*] [ **-S** ] [ **-T***wfile*]
[ **-V**[*level*] ]
[ **-W***wd*]
[ **-Z***zm*]
[ **-bi**binary ]
[ **-d**nodata ]
[ **-e**regexp ]
[ **-h**headers ]
[ **-i**flags ]
[ **-o**flags ]
[ **--PAR**=*value* ]

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

## Description¶

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

## Required Arguments¶

**-D***rm*/*rl*[/*ri*]/*rw*- 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*.

**-E***Te*[**u**]|*D*|*file*- 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**.

## Optional Arguments¶

**-A**[**l**|**r**]*bc*[/*args*]- Sets the boundary conditions at the
**l**eft and**r**ight 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.

**-Cp***Poisson*- Change the current value of Poisson’s ratio [0.25].
**-Cy***Young*- Change the current value of Young’s modulus [7.0e10 N/m^2].

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

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

**-Qn**|**q**|**t**[*args*]- 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 stdin if not given) with (x,load in Pa) for all equidistant data locations. Finally,**-Qt**[*topofile*] is a file (or stdin if not given) with (x,load in m or km, positive up); see**-M**for topography unit used [m].

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

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

**-W***wd*- 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.

**-Z***zm*- 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.

**-V**[*level*] (more …)- Select verbosity level [c].

**-bi**[*ncols*][**t**] (more …)- Select native binary format for primary input.

**-d**[**i**|**o**]*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**][**+r***remark*][**+r***title*] (more …)- Skip or produce header record(s).

**-i***cols*[**+l**][**+s***scale*][**+o***offset*][,*…*][,*t*[*word*]] (more …)- Select input columns and transformations (0 is first column,
*t*is trailing text, append*word*to read one word only).

**-o***cols*[,…][*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 exits (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 exits.
**-?**or no arguments- Print a complete usage (help) message, including the explanation of all options, then exits.
**--PAR**=*value*- Temporarily override a GMT default setting; repeatable. See gmt.conf for parameters.

## Generate 1D Array¶

Make an evenly spaced coordinate array from *min* to *max* in steps of *inc*.
Append **+b** if we should take log2 of *min* and *max* and build an equidistant
log2-array using *inc* integer increments in log2.
Append **+l** if we should take log10 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). For less than every magnitude, use a negative integer *inc*.
Append **+n** if *inc* is meant to indicate the number of equidistant coordinates
instead. Alternatively, give a *file* with output coordinates in the first column,
or provide a comma-separated *list* of coordinates. If you only want a *single* value
then you must append a comma to distinguish the list from the setting of *inc*.

If the module allows you to set up an absolute time series, append a valid time unit from the list
**y**ear, m**o**nth, **w**eek, **d**ay, **h**our, **m**inute, and **s**econd
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. Some 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 distance computed
from the first two data columns), specify the increment as *inc*[*unit*] with a
geospatial distance unit from the list
**d**egree (arc), **m**inute (arc), **s**econd (arc), m**e**ter, **f**oot, **k**ilometer,
**M**iles (statute), **n**autical miles, or s**u**rvey foot; see **-j** for calculation mode.
For Cartesian distances, you must use the special unit **c**.

Finally, if you are only providing an increment and 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 accordingly.
Alternatively, append **+e** to keep *inc* exact and adjust *max* instead.

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

## Examples¶

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