6. Truncate with Polyline

6.1 Create boundary surface

We now have a mesh with complex stratigraphy encoded in its material ID. However, the domain of this mesh is a rather boring cuboid and doesn’t accurately reflect the geospatial domain that we are trying to model.

By importing a polyline, the exterior boundary of the mesh can be truncated. As in previous steps, we will use a mesh to define a region that will be used for element-wise operations.

However, the boundary is a line object. In order to use it as a surface/region, it must be a surface. A polyline can be turned into a vertical surface by ‘extruding’ it in the vertical (0,0,1) direction:

read / avs / basin_bnd_ply_rescale.inp / mo_bndry
extrude / mo_fence / mo_bndry / const / 3200. / volume / 0. 0. -1.

We will also translate the extrusion so that it covers the vertical extent of the hex mesh:

trans / 1 0 0 / 0. 0. -3200. / 0. 0. 0.

6.2 Truncate mesh

Next, we use the boundary to truncate (remove) cells outside the boundary.

There are three ways to define ‘outside’:

  1. Only remove a cell if ALL vertices are outside
  2. Remove a cell if the centroid (average of all vertices) is outside
  3. Remove a cell if one or more vertices are outside
cmo / select / MONAME
surface / s_bndry / reflect / sheet / mo_fence
cmo / select / MONAME
region / r_bndry / ge s_bndry
pset / p_bndry / region r_bndry

Method 1:

eltset / e_delete1 / exclusive / pset get p_bndry

Method 2:

eltset / e_delete2 / region r_bndry

Method 3:

eltset / e_delete3 / inclusive / pset get p_bndry

Next, add the integer cell attribute id_in_out_bndry:

cmo / addatt / MONAME / id_in_out_bndry / vint / scalar / nelements

and ‘color’ it based on the three element sets created above:

cmo / setatt / MONAME / id_in_out_bndry / 1 0 0 / 4
cmo / setatt / MONAME / id_in_out_bndry / eltset get e_delete3 / 3
cmo / setatt / MONAME / id_in_out_bndry / eltset get e_delete2 / 2
cmo / setatt / MONAME / id_in_out_bndry / eltset get e_delete1 / 1

All elements colored 4 (the default value for id_in_out_bndry) are elements who evaluate false for all of the above eltsets.

Create an element set for all id_in_out_bndry(cell_i) == 4:

eltset / e_delete4 /    id_in_out_bndry / eq / 4
eltset / e_delete3 /    id_in_out_bndry / eq / 3
eltset / e_delete2 /    id_in_out_bndry / eq / 2
eltset / e_delete1 /    id_in_out_bndry / eq / 1

Finally, remove all elements ‘colored’ by method 3 and all elements not colored by any of methods 1, 2, or 3:

rmpoint / element / eltset get e_delete4
rmpoint / element / eltset get e_delete3
rmpoint / compress
resetpts / itp