# gmtflexure¶

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

## Synopsis¶

**gmt flexure** **-D***rm*/*rl*[/*ri*]/*rw*
**-E***Te*[**k**]|*D*|*file*
**-Q***args*
[ **-A**[**l**|**r**]*bc*[/*args*] ]
[ **-C****p**|**y***value* ]
[ **-F***force* ]
[ **-L** ]
[ **-M**[**x**][**z**] ]
[ **-S** ]
[ **-T***wfile*]
[ **-V**[*level*] ]
[ **-W***wd*[**k**]]
[ **-Z***zm*[**k**]]
[ **-bi**binary ]
[ **-bo**binary ]
[ **-d**nodata[**+c***col*] ]
[ **-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 [*Bodine*,1980].

## 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*[**k**]|*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**.

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

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

**-C****p**|**y***value*Append

**p**or**y**to change the current value of Poisson’s ratio [0.25] or Young’s modulus [7.0e10 N/m^{2}], respectively.

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

**-M**[**x**][**z**]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].

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

**-V**[*level*]Select verbosity level [

**w**]. (See full description) (See cookbook information).

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

**-bi***record*[**+b**|**l**] (more …)Select native binary format for primary table input.

**-bo***record*[**+b**|**l**] (more …)Select native binary format for table output.

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

**-i***cols*[**+l**][**+d***divisor*][**+s***scale*|**d**|**k**][**+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 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 argumentsPrint a complete usage (help) message, including the explanation of all options, then exit.

**--PAR**=*value*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 =
3.1
3.2
3.3
3.4
3.5
3.6
3.7
...
```

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., **-T**3/20/1**+b** will produce this sequence:

```
gmt math -o0 -T3/20/1+b T =
4
8
16
```

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., **-T**7/135/2**+l** will produce this sequence:

```
gmt math -o0 -T7/135/2+l T =
10
20
50
100
```

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

```
gmt math -o0 -T1e-4/1e4/-2+l T =
0.0001
0.01
1
100
10000
```

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 =
0
0.0416666666667
0.0833333333333
0.125
0.166666666667
...
```

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 =
3.44
4.535
5.63
6.725
7.82
```

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 =
0
1
1
2
3
5
```

**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
**y**ear, m**o**nth, **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. The first 7 days of March 2020:

```
gmt math -o0 -T2020-03-01T/2020-03-07T/1d T =
2020-03-01T00:00:00
2020-03-02T00:00:00
2020-03-03T00:00:00
2020-03-04T00:00:00
2020-03-05T00:00:00
2020-03-06T00:00:00
2020-03-07T00:00:00
```

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

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

## References¶

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