7. Refine Fault
In step 5, we defined a fault surface (named `s_f`) intersecting the mesh. In
this section, we are going to refine the mesh where the fault intersects it.
The LaGriT command `intersect_elements` takes two meshes and creates an
element-based attribute in mesh1 that contains the number of elements in mesh2
that intersected the respective element in mesh1.
Performing the intersection between the mesh `MONAME` and fault `s_f`, storing
the intersection count in attribute `if_inter`:
```
cmo / select / MONAME
intersect_elements / MONAME / s_f / if_inter
```
The attribute `if_inter` will be non-zero everywhere there is an intersection,
and zero where there was not intersection. Taking advantage of this fact,
we can create an eltset to refine:
```
eltset / e_refine / if_inter / gt / 0
refine / eltset / eltset get e_refine
cmo / DELATT / MONAME / if_inter
```
The element density has now increased where the mesh intersects `s_f`.
We can then run this step *again*, further refining elements along that intersection:
```
intersect_elements / MONAME / s_f / if_inter
eltset / e_refine / if_inter / gt / 0
refine/ eltset / eltset get e_refine
cmo / setatt / MONAME / if_inter / 1 0 0 / 0
```
And finally, remove the attribute `if_inter`, as it is no longer needed:
```
cmo / DELATT / MONAME / if_inter
```
At this point, many different mesh objects and surfaces still exist in memory from previous steps. Let's deallocate them and verify with the `memory` command:
```
cmo / status / brief
cmo / status / MONAME
memory / verify
memory / print
cmo / delete / s_bndry
cmo / delete / mo_fence
cmo / delete / mo_bndry
cmo / delete / s_f
cmo / delete / s_2_fp
cmo / delete / s_1_fp
cmo / delete / s_2_fm
cmo / delete / s_1_fm
cmo / delete / s_2
cmo / delete / s_1
memory / verify
memory / print
```