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.


Fig. 5.1 2-D grid scheme. The red dots represent the grid nodes where the values for the temperature must be defined, the dotted lines represent any number of grid nodes, for simplification, and the labels indicate the \(x\) and \(y\) position of each node.


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)
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)
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)
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)
28T(x_{nx-1}, y_3)
30T(x_0, y_{ny-1})
31T(x_1, y_{ny-1})
32T(x_2, y_{ny-1})
33T(x_3, y_{ny-1})
35T(x_{nx-1}, y_{ny-1})


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.


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

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.



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\).

210.0     0.5 
325.0    -1.0
450.0    -2.0