# 5. Input files¶

*Mandyoc* accepts ASCII files to use as initial conditions for the simulation, such as an initial temperature file `input_temperature_0.txt`

, a file containing the initial interfaces geometry `interfaces.txt`

and a file containing the initial velocity field at the faces of the model `input_velocity_0.txt`

. The next subsections will help you creating each one of these files.

## 5.1. ASCII temperature file¶

For a 2-D grid, the initial temperature configuration can be provided as an ASCII file called `input_temperature_0.txt`

. Considering \(x\) to be the longitudinal direction and \(y\) the vertical direction, the next subsections will guide you through the understanding of the initial temperature file structure.

### 5.1.1. 2-D temperature grid¶

Consider a 2-D grid where the number of nodes in the \(x\) and \(y\) directions are \(nx\geq 2\) and \(ny\geq 2\), respectively, with \((nx-1)\) elements in the \(x\) direction and \((ny-1)\) elements in the \(y\) direction. Each node in the grid can be identified with a coordinates pair \((x_n, y_m)\), where \(n\) and \(m\) are natural numbers, and \(x_n\) and \(y_m\) are the \(x\) and \(y\) positions (in meters) of any grid node. Fig. 5.1 shows a scheme for a 2-D grid, where the red dots represent the grid nodes and every node is labeled with a \((x_n, y_m)\) pair. The dotted lines represent any number of intermediate nodes.

Note

Because of the way *Mandyoc* deals with the coordinates in 2-D, the node at \((x_0,y_0)\) is always at the origin \((0,0)\).

The example below shows how the `input_temperature_0.txt`

file must be written for the 2-D grid in Fig. 5.1: after writing four lines of comments, the file must include the temperature \(T(x_n, y_m)\) at each node starting at the bottom left of the model and going up in the \(y\) direction. Intuitively, the temperature is given in horizontal layers for every \(x_n\).

```
1# Header line 0
2# Header line 1
3# Header line 2
4# Header line 3
5T(x_0, y_0)
6T(x_1, y_0)
7T(x_2, y_0)
8T(x_3, y_0)
9[...]
10T(x_{nx-1}, y_0)
11T(x_0, y_1)
12T(x_1, y_1)
13T(x_2, y_1)
14T(x_3, y_1)
15[...]
16T(x_{nx-1}, y_1)
17T(x_0, y_2)
18T(x_1, y_2)
19T(x_2, y_2)
20T(x_3, y_2)
21[...]
22T(x_{nx-1}, y_2)
23T(x_0, y_3)
24T(x_1, y_3)
25T(x_2, y_3)
26T(x_3, y_3)
27[...]
28T(x_{nx-1}, y_3)
29[...]
30T(x_0, y_{ny-1})
31T(x_1, y_{ny-1})
32T(x_2, y_{ny-1})
33T(x_3, y_{ny-1})
34[...]
35T(x_{nx-1}, y_{ny-1})
```

Tip

It is always helpful to use the four comment lines to write down any useful information for later. Because these lines are simply skipped, there is no rule to write them, the ‘#’ symbol is used only by convention.

## 5.2. ASCII interfaces file¶

The `interfaces.txt`

file, for a 2-D grid, starts with seven lines of variables that are used by the rheology models. The variables that are in the interfaces are those that might be used in Eq. 2.32 or Eq. 2.31: \(C\), \(\rho_r\), \(H\), \(A\), \(n\), \(Q\), and \(V\). Each one of these variables possesses a number of values (columns) that are assigned to each lithological unit in the model. Every interface is a boundary between two lithological units, therefore the number of columns is 1 plus the number of interfaces set in the `param.txt`

file (see the parameter file section), such that if there are \(i\) interfaces, \(i+1\) values for each variable **must** be provided in the `interfaces.txt`

file. More will be discussed about the order of these values shortly.

### 5.2.1. 2-D Initial interfaces¶

Below, the example corresponds to a 2-D grid with two interfaces and, therefore, three lithological units. The first column contains the vertical positions **in meters** of every grid node \(y_m\) that corresponds to the **deepest** interface boundary, starting at \(x=x_0\) on line 8, and ending at \(x=x_{nx-1}\) on line \(nx+7\). The second column contains the vertical position of every \(y_m\) that corresponds to the second interface boundary. When defining the interfaces, it is rather common for them to “touch”. Because of that, all the interfaces must be provided in a “tetris” manner, where interfaces that are collinear in parts fit the interface below.

Note

Because the interfaces are defined linearly between the nodes, it is important to define them properly, so every point inside the grid can be attributed to a lithological unit.

```
1C 1.0 1.0 1.0
2rho 3000.0 3000.0 3000.0
3H 0.0 0.0 0.0
4A 0.0 0.0 0.0
5n 0.0 0.0 0.0
6Q 0.0 0.0 0.0
7V 0.0 0.0 0.0
8y_1(x_0) y_2(x_0)
9y_1(x_1) y_2(x_1)
10y_1(x_2) y_2(x_2)
11y_1(x_3) y_2(x_3)
12y_1(x_4) y_2(x_4)
13y_1(x_5) y_2(x_5)
14y_1(x_6) y_2(x_6)
```

The values of the variables in the first seven lines are the values of the lithological units bound by the interfaces. For the 2-D grid with two interfaces, the first values of each variable refers to the lithological unit below the first interface, the second value of each variable refers to the lithological unit between the first and second interfaces, and the third value of each variable refers to the lithological unit above the second interface. If more interfaces are added, there will be more units bounded by an upper and a lower interface.

To consider different values of internal cohesion \(c_0\) and internal angle of friction \(\varphi\) for each layer, the interface file can be written as the file below, where *weakening_seed*, *cohesion_min*, *cohesion_max*, *friction_angle_min*, and *friction_angle_max* are given.

```
1C 1.0 1.0 1.0
2rho 3000.0 3000.0 3000.0
3H 0.0 0.0 0.0
4A 0.0 0.0 0.0
5n 0.0 0.0 0.0
6Q 0.0 0.0 0.0
7V 0.0 0.0 0.0
8weakeing_seed 1.0 -1.0 0.5
9cohesion_min 5.0e6 5.0e6 5.0e6
10cohesion_max 30.0e7 5.0e6 1.0e7
11friction_angle_min 0.0 0.2 10.0
12friction_angle_max 0.0 20.0 10.0
13y_1(x_0) y_2(x_0)
14y_1(x_1) y_2(x_1)
15y_1(x_2) y_2(x_2)
16y_1(x_3) y_2(x_3)
17y_1(x_4) y_2(x_4)
18y_1(x_5) y_2(x_5)
19y_1(x_6) y_2(x_6)
```

The *weakening_seed* value for each layer represents its initial accumulated strain value (seed), and when it is negative, a random seed will be used instead. When *cohesion_min* and *cohesion_max* are different, that corresponding layer will be linearly softened between those values. Notice that a constant cohesion can be set if the values are simply equal. The same logic aplies to *friction_angle_min* and *friction_angle_max*.

The default interval of accumualted strain where strain softening occurs is 0.05 and 1.05, cf. [19]. To use different values, the user must provide them in the `param.txt`

withe the keywords *weakeing_min* and *weakening_max*.

## 5.3. ASCII velocities files¶

An initial velocity file allows an initial velocity field to be established so the simulated fluid presents an initial momentum. Respecting the conservation of mass equation when designing the initial velocity field is fundamental so the simulation can run properly.

Additionally, the velocity boundary conditions defined in the `param.txt`

(see the parameter file section) will be used to define the normal and tangential velocities on the faces of the model during the simulation.

### 5.3.1. 2-D initial velocity¶

When `velocity_from_ascii = True`

is set in the `param.txt`

file, an initial velocity field must be provided in an ASCII file called `input_velocity_0.txt`

.

For a 2-D grid, the `input_velocity_0.txt`

file possesses four lines of headers followed by the velocity data for each node of the model. The velocity must be defined for both \(x\) and \(y\) directions. Taking the example in the file below, the `input_velocity_0.txt`

file must be written in such a way that the values for the velocity in the \(x\) direction \(v_x\) and the velocity in the \(y\) direction \(v_y\) for the node \((x_0,y_0)\) corresponds to lines 5 and 6, respectively, the velocity values for the \((x_1,y_0)\) corresponds to lines 7 and 8, and so on until \((x_{nx-1},y_0)\). Once all the nodes in the \(y_0\) are written, the values for all \(x_n\) are inserted for \(y_1\), and so on until \(y_{ny-1}\).

```
1# Header line 0
2# Header line 1
3# Header line 2
4# Header line 3
5v_x(x_0,y_0)
6v_y(x_0,y_0)
7v_x(x_1,y_0)
8v_y(x_1,y_0)
9v_x(x_2,y_0)
10v_y(x_2,y_0)
11[...]
12v_x(x_{nx-1},y_0)
13v_y(x_{nx-1},y_0)
14v_x(x_0,y_1)
15v_y(x_0,y_1)
16v_x(x_1,y_1)
17v_y(x_1,y_1)
18v_x(x_2,y_1)
19v_y(x_2,y_1)
20[...]
21v_x(x_{nx-1},y_1)
22v_y(x_{nx-1},y_1)
23[...]
24v_x(x_0,y_{ny-1})
25v_y(x_0,y_{ny-1})
26[...]
27v_x(x_{nx-1},y_{ny-1})
28v_y(x_{nx-1},y_{ny-1})
```

### 5.3.2. 2-D multiple initial velocities¶

The user can provide multiple velocity fields to be set in different instants of the simulation. By setting `multi_velocity = True`

in the `param.txt`

file, an ASCII file called `multi_veloc.txt`

must be provided following the structure shown in the example file below. The first line of the file contains the amount of instants where a different velocity field will be used and the other lines contain the time, in millions of years, that each velocity field will be adopted. In the example below, a different velocity field will be used at three instants, the files must follow the structure presented in the last section and should be named in sequence: `input_velocity_1.txt`

, `input_velocity_2.txt`

and `input_velocity_3.txt`

. The names of the files are labeled after the three different instants set in the first line of the `multi_veloc.txt`

file.

```
13
210.0
325.0
450.0
```

Note

The `input_velocity_0.txt`

is used for the beginning of the simulation. The multiple initial velocities that can be set during the simulation start at `input_velocity_1.txt`

and end at `input_velocity_X.txt`

, where \(X\) is the number of different instants that the velocity field will be changed.

### 5.3.3. 2-D re-scalable boundary condition¶

When `variable_bcv = True`

is set in the `param.txt``file, an ASCII file called ``scale_bcv.txt`

is used to define a sequence of re-scaling steps for the velocity boundary conditions. The example file below is an example of how such file can be written. In the example file, the first line corresponds to the number of instants during the simulation that the velocity field will be re-scaled. The first column contains the time, in millions of years, that the velocity field will be changed and the second column contains the scale value. For the example below, in the instant \(10.0\) Myr the velocity field will be multiplied by \(0.5\), effectively halving it; at \(25.0\) Myr the current velocity field will have its direction changed, hence multiplied by \(-1.0\); and finally at \(50\) My the velocity field will have its direction changed again and doubled by multiplying it by \(-2.0\).

```
13
210.0 0.5
325.0 -1.0
450.0 -2.0
```