# SimPEG.utils.unpack_widths#

SimPEG.utils.unpack_widths(value)[source]#

Unpack a condensed representation of cell widths or time steps.

For a list of numbers, if the same value is repeat or expanded by a constant factor, it may be represented in a condensed form using list of floats and/or tuples. unpack_widths takes a list of floats and/or tuples in condensed form, e.g.:

[ float, (cellSize, numCell), (cellSize, numCell, factor) ]

and expands the representation to a list containing all widths in order. That is:

[ w1, w2, w3, …, wn ]

Parameters
value`list` `of` `float` and/or `tuple`

The list of floats and/or tuples that are to be unpacked

Returns
`numpy.ndarray`

The unpacked list with all widths in order

Examples

Time stepping for time-domain codes can be represented in condensed form, e.g.:

```>>> from discretize.utils import unpack_widths
>>> dt = [ (1e-5, 10), (1e-4, 4), 1e-3 ]
```

The above means to take 10 steps at a step width of 1e-5 s and then 4 more at 1e-4 s, and then one step of 1e-3 s. When unpacked, the output is of length 15 and is given by:

```>>> unpack_widths(dt)
array([1.e-05, 1.e-05, 1.e-05, 1.e-05, 1.e-05, 1.e-05, 1.e-05, 1.e-05,
1.e-05, 1.e-05, 1.e-04, 1.e-04, 1.e-04, 1.e-04, 1.e-03])
```

Each axis of a tensor mesh can also be defined as a condensed list of floats and/or tuples. When a third number is defined in any tuple, the width value is successively expanded by that factor, e.g.:

```>>> dt = [ 6., 8., (10.0, 3), (8.0, 4, 2.) ]
>>> unpack_widths(dt)
array([  6.,   8.,  10.,  10.,  10.,  16.,  32.,  64., 128.])
```

## Galleries and Tutorials using `SimPEG.utils.unpack_widths`#

Maps: Mesh2Mesh

Maps: Mesh2Mesh

Heagy et al., 2017 Casing Example

Heagy et al., 2017 Casing Example

EM: Schenkel and Morrison Casing Model

EM: Schenkel and Morrison Casing Model