Click on image to enlarge.
Gallery written: Thu Jun 21 13:22:47 2007
fault_plane_no_edges_id_fault_nodes |
fault_plane_no_edges |
fault_plane_w_edges_close |
fault_plane_w_edges_id_fault_nodes |
fault_plane_w_edges |
*
* Build tet meshes
* and insert a fault plane.
*
* Carl Gable
* gable@lanl.gov
*
* Build background mesh.
*
infile build_background_mesh.mlgi
*
* Build a plane to stick inside the box
*
infile build_plane.mlgi
*
* Find where the tet mesh is close to the fault plane.
*
compute / distance_field / CMO_NAME / cmo_tri1 / dfield
*
dump / gmv / dfield.gmv / CMO_NAME
cmo / select / CMO_NAME
pset / prefine / attribute / dfield / 1 0 0 / 3000. / lt
eltset / erefine / inclusive / pset get prefine
refine / eltset / eltset get erefine
rmpoint / compress
eltset / erefine / delete
pset / prefine / delete
dump / gmv / refine1.gmv / CMO_NAME
cmo / DELATT / CMO_NAME / dfield
compute / distance_field / CMO_NAME / cmo_tri1 / dfield
pset / prefine / attribute / dfield / 1 0 0 / 1500. / lt
eltset / erefine / inclusive / pset get prefine
refine / eltset / eltset get erefine
rmpoint / compress
dump / gmv / refine2.gmv / CMO_NAME
intersect_elements / CMO_NAME / cmo_tri1 / in_flt
eltset / e_in_flt / in_flt / gt / 0
rmpoint / element / eltset get e_in_flt
rmpoint / compress
*
* Intersect can leave behind some nodes that are very very close
* to the fault plane. Use an alternative method to delete the
* nodes close to the plane.
*
cmo / copy / cmo_tmp_tri / cmo_tri1
cmo / select / cmo_tmp_tri
refine2d
refine2d
cmo / DELATT / CMO_NAME / dfield
compute / distance_field / CMO_NAME / cmo_tmp_tri / dfield
cmo / delete / cmo_tmp_tri
cmo / status / brief
cmo / select / CMO_NAME
pset / pdel / attribute / dfield / 1 0 0 / 100. / lt
eltset / edel / inclusive / pset get pdel
rmpoint / element / eltset get edel
rmpoint / compress
eltset / edel / delete
dump / gmv / rmpoint.gmv / CMO_NAME
*
* Now put the two point distributions together and connect to form tets.
*
cmo / create / cmo_tet2 / / / tet
copypts / cmo_tet2 / CMO_NAME
copypts / cmo_tet2 / cmo_tri1
cmo / setatt / CMO_NAME / imt / 1 0 0 / 1
cmo / setatt / CMO_NAME / itp / 1 0 0 / 0
connect / noadd
rmpoint / compress
dump / gmv / connect.gmv / cmo_tet2
cmo / DELATT / CMO_NAME / dfield
compute / distance_field / cmo_tet2 / cmo_tri1 / dfield
dump / gmv / tets_w_fault.gmv / cmo_tet2
*
* Identify elements ABOVE and BELOW the fault plane.
* The algorithm tests
*
surface / s_flt1 / reflect / sheet / cmo_tri1
cmo / select / cmo_tet2
region / r_above / ge s_flt1
region / r_below / lt s_flt1
eltset / e_below / region / r_below
cmo / addatt / cmo_tet2 / id_block / vint / scalar / nelements
cmo / setatt / cmo_tet2 / id_block / 1 0 0 / 1
cmo / setatt / cmo_tet2 / id_block / eltset get e_below / 2
quality / aspect / y
dump / gmv / tets_id_flt.gmv / cmo_tet2
finish