# RE: Plot Earthquake Fault Trace into the earth

```Hi,

Thanks for the leads. I have a couple of followup questions. I'm still
not clear on how my data array should be structured. As you mention my
lat/lon data do have the same number of (lat, lon) locations at each
depth, and they can be placed in one-to-one correspondence with each
other. I assume I should then do:

domain_set = new visad.Gridded3DSet(domain_tuple, loc_vals, 19, 58);

My question is, how to I assemble the domain_tuple. Should this be
flattend out for each dimension. Should my depth values be included in
this? Thanks for your help with this.

Sincerely,
Steven W. Rock
Rock Technologies
516-897-7289

-----Original Message-----
[mailto:owner-visad-list@xxxxxxxxxxxxx] On Behalf Of Bill Hibbard
Sent: Wednesday, May 08, 2002 9:57 PM
To: Steven W. Rock
Subject: Re: Plot Earthquake Fault Trace into the earth

Hi Steven,

Your Gridded2DSet has manifold dimension = 1 since you
only gave one array length (1102). To draw a surface in
3-D, try a Gridded3DSet with manifold dimension = 2 or an
Irregular3DSet with manifold dimension = 2. You'd use the
Gridded3DSet if you have the same number of (lat, lon)
locations at each depth, and if they can be placed in
one-to-one correspondence with each other (then you'd
supply two array lengths: number_levels & n_points_per_level).
That is, use Gridded3DSet if your (lat, lon) locations form
awarped 2-D checkerboard. Otherwise, use an Irregular3DSet
where your (lat, lon) locations are organized into triangles.
It may be complex to define the triangles. Note you'd define
the triangles with a DelaunayCustom that you'd pass to the
Irregular3DSet constructor.

Good luck,
Bill
----------------------------------------------------------
Bill Hibbard, SSEC, 1225 W. Dayton St., Madison, WI  53706
hibbard@xxxxxxxxxxxxxxxxx  608-263-4427  fax: 608-263-6738
http://www.ssec.wisc.edu/~billh/vis.html

On Wed, 8 May 2002, Steven W. Rock wrote:

> Hi All,
>
> I am currently evaluation VisAD to incorporate into a major NSF 5-year
> funded project for earthquake modeling. I am real excited with the
> capabilities I have seen so far. I am having one problem starting out
> with this product though. It is not clear when I should use the
various
> domain sets. Which is appropriate for what?
>
> More specifically, I have a 3D set of data, (lat, lon, depth) that
> represents locations in my fault trace surface. The structure is that
> there are a surface trace of lat / lon locations at depth = 0. Then I
> step a delta distance into the ground and get another trace of lat,
lon
> positions at this depth, then I keep stepping down till I reach the
> bottom of the trace, about 12 km into the ground.
>
> I wish to draw a 3D shaded surface of my earthquake fault trace as it
> dips into the ground. I basically want to see a shape of a "wrinked
> piece of paper" that juts into the ground.
>
> I did get a graph made using the Sierra Madre fault as an example. I
> used a Gridded2DSet for my domain, but this draws a wire mesh
continuous
> line to outline my fault trace.
>
> If I can push this product through my group I would expect some major
> support in the next year. The lead university is U of Southern
> California and the Southern California Earthquake Center (SCEC).
Thanks
>
> Steven W. Rock
> Software Engineer
> Rock Technologies
> 516-897-7289
>
>
> ---------------------------------
> Program snippet
>
>         latitude = new RealType("latitude",SI.meter,null);
>         longitude = new RealType("longitude",SI.meter,null);
>         domain_tuple = new RealTupleType(latitude, longitude);
>
>
>
>         // Create the range tuple ( altitude, temperature )
>         // Use RealTupleType( RealType[] )
>         altitude = new RealType("depth",SI.meter,null);
>
>
>         // Create a FunctionType (domain_tuple -> range_tuple )
>         // Use FunctionType(MathType domain, MathType range)
>         func_domain_range = new FunctionType( domain_tuple, altitude);
>         // int NCOLS = surface.getNumCols();
>         // int NROWS = surface.getNumRows();
>
>         // Create the domain set
>         domain_set = new visad.Gridded2DSet(domain_tuple, loc_vals,
> 1102);
>
>         // Create function mapping
>         func_domain_range = new FunctionType(domain_tuple, altitude);
>
>         // Create a FlatField
>         // Use FlatField(FunctionType type, Set domain_set)
>          vals_ff = new FlatField( func_domain_range, domain_set);
>
>
>         // and put the y values above in it
>         vals_ff.setSamples( depth_vals );
>
> ----------------------------
> Example data - note this is not the full set
>
> static float[][] loc_vals = new float[][]{
>     {34.1231F, 34.12223841F, 34.12526393F, 34.13105451F, 34.13137804F,
> 34.13102671F, 34.13067443F, 34.1311967F, 34.13453044F, 34.13994589F
> },{
> -117.73972F, -117.7505419F, -117.7599031F, -117.7682264F,
-117.7788123F,
> -117.7896769F, -117.8005414F, -117.8113153F, -117.8211464F,
> -117.8298314F}};
>
>
> static float[][] depth_vals = new float[][]{ {
>
>     0F, 0F, 0F, 0F, 0F, 0F, 0F, 0F, 0F, 0F
> }
>
>
>

```