Output#
Mesher creates a directory with the same name as the configuration file name or a user-defined name as configured by user_output_dir (see Outputs). Within this folder is a subdirectory with the same name as that of the input DEM.
In the primarily output directory are three JSON format files:
- *.ic that contains the initial conditions
- *.mesh that contains the primary mesh
- *.param that contains the per-triangle parameter values
If no parameter or initial conditions are given, then these files are empty.
In the second directory are the reprojected files (`*_projected`), intermediary files, and the triangulation shape file (`*_USM.shp`). A `*.vtu` file is also created for visualizing in 3D in Paraview.
Note
All indicies are 0-indexed!
.mesh#
The primary mesh file’s structure is as follows:
{
"mesh": {
"vertex": [ [double,double,double], [double,double,double], ... ],
"nvertex": int,
"neigh": [ [int,int,int], [int,int,int], ... ],
"elem": [ [int,int,int], [int,int,int], ... ],
},
"is_geographic": int,
"proj4": string,
"UTM_zone": int,
"nelem": int
}
- mesh.vertex#
- Type:
list of [double,double,double]
List of triangle vertexes. Triangles may share a vertex, thus it isn’t stored twice. A vertex has [x,y,z] coordinates in the output coordinate system.
- mesh.nvertex#
- Type:
int
Number of verticies.
- mesh.neigh#
- Type:
list of [int,int,int]
The neighbours to each triangle. Each int is an index into the elem list.
A value of -1 means “missing”.
- mesh.elem#
- Type:
list of [int,int,int]
Verticies are connected via edges to form triangle elements. These indicies are indexes into the vertex array.
For example, consider the flat mesh. It has 2 triangles in the domain. The .mesh file looks like:
{
"mesh": {
"vertex": [
[
488479.5,
6713528.0,
1000.0
],
[
490527.5,
6713528.0,
1000.0
],
[
490527.5,
6711480.0,
1000.0
],
[
488479.5,
6711480.0,
1000.0
]
],
"nvertex": 4,
"neigh": [
[
1,
-1,
-1
],
[
-1,
0,
-1
]
],
"elem": [
[
1,
0,
2
],
[
0,
3,
2
]
],
"is_geographic": 0,
"proj4": "+proj=utm +zone=8 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ",
"UTM_zone": 8,
"nelem": 2
}
}
For example, triangle0 is give by mesh.elem[0]:
[
1,
0,
2
]
This says that to define triangle0, use the 1st, the 0th, and 2nd vertex elements. That is:
triangle0 = [490527.5, 6713528.0, 1000.0], [488479.5, 6713528.0, 1000.0], [490527.5, 6711480.0, 1000.0]
It has a neighbour mesh.neigh[0]
[
1,
-1,
-1
]
which says that edge0 is the only edge with a neighbour, and it is triangle1.
.param#
The parameter file’s schema is:
{
"param1": [
double/int,
double/int,,
...
],
"param2": [
double/int,
double/int,,
...
]
}
- param1#
- Type:
List of length
length(elem)
Each item of the list at index i corresponds to a value for that parameter for triangle_*i*.
For example, that parameter file for ideal is
{
"area": [
2097152.0,
2097152.0
]
}
Thus the area of triangle0 is 2097152 m^2 or (1448m)^2. The latter is more easily used for approximate comparisons against raster cell sizes.
.ic#
The initial conditions file’s schema is:
{
"ic1": [
double/int,
double/int,,
...
],
"ic2": [
double/int,
double/int,,
...
]
}
- ic1#
- Type:
List of length
length(elem)
Each item of the list at index i corresponds to a value for that initial condition for triangle_*i*.
.vtu#
Within the intermediary folder is a .vtu file. This can be opened in Paraview to provide feedback on how the mesh generation went, and if tweaks should be done.
.shp#
Within the intermediary folder is an ESRI .shp file with the _USM.shp suffix. This can be loaded directly into a GIS tool.