input.tar.gz

output.tar.gz

tesselate% cat run.scr
#
set LAGRIT_X = lagrit_lin_o
rm *outx3dgen
$LAGRIT_X < insert_a_fault_plane.lgi
mv outx3dgen insert_a_fault_plane.outx3dgen
$LAGRIT_X < improve_aspect.lgi
mv outx3dgen improve_aspect.outx3dgen

Image Gallery:

Click on image to enlarge.

Gallery written: Thu Jun 21 13:22:47 2007

fault_plane_no_edges_id_fault_nodes
LaGriT Finite Element Mesh
fault_plane_no_edges
LaGriT Finite Element Mesh
fault_plane_w_edges_close
LaGriT Finite Element Mesh
fault_plane_w_edges_id_fault_nodes
LaGriT Finite Element Mesh
fault_plane_w_edges
LaGriT Finite Element Mesh

*
* 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