field over irreg3d grid

I'm back trying to take some more baby steps on my simple single-cell
application -- trying to define a scalar field over the single-cell grid.
Any help would be appreciated...

thanks,
Randy
---------------------
// import needed classes
import visad.*;
import visad.java3d.DisplayImplJ3D;
import visad.util.VisADSlider;
//import visad.data.netcdf.Plain;
import java.rmi.RemoteException;
import java.io.IOException;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class hex {


  public static void main(String args[])
         throws VisADException, RemoteException, IOException {

    // Define vertices
    float vtx[][] = new float[3][8];
    int k=0;
    // front face
    vtx[0][k]= -0.7f; vtx[1][k]= -0.3f; vtx[2][k]= -0.5f; k++;
    vtx[0][k]=  0.7f; vtx[1][k]= -0.3f; vtx[2][k]= -0.5f; k++;
    vtx[0][k]=  0.7f; vtx[1][k]=  0.3f; vtx[2][k]= -0.5f; k++;
    vtx[0][k]= -0.7f; vtx[1][k]=  0.3f; vtx[2][k]= -0.5f; k++;

    // back face
    vtx[0][k]= -0.7f; vtx[1][k]= -0.3f; vtx[2][k]=  0.5f;  k++;
    vtx[0][k]=  0.7f; vtx[1][k]= -0.3f; vtx[2][k]=  0.5f;  k++;
    vtx[0][k]=  0.7f; vtx[1][k]=  0.3f; vtx[2][k]=  0.5f;  k++;
    vtx[0][k]= -0.7f; vtx[1][k]=  0.3f; vtx[2][k]=  0.5f;  k++;

    // Define tetrahedra (5 per hex cell)
    int numTetra = 5;
    int tetra[][] = new int[numTetra][4];
    k=0;
    tetra[k][0]=0; tetra[k][1]=2; tetra[k][2]=7; tetra[k][3]=3;  k++;
    tetra[k][0]=0; tetra[k][1]=2; tetra[k][2]=5; tetra[k][3]=7;  k++;
    tetra[k][0]=0; tetra[k][1]=5; tetra[k][2]=1; tetra[k][3]=2;  k++;
    tetra[k][0]=0; tetra[k][1]=5; tetra[k][2]=4; tetra[k][3]=7;  k++;
    tetra[k][0]=7; tetra[k][1]=2; tetra[k][2]=6; tetra[k][3]=5;  k++;

    Irregular3DSet grid = new Irregular3DSet(
                           MathType.stringToType("Set(x, y, z)"),
                           vtx,
                           null, // CoordinateSystem
                           null, // Unit[]
                           null, // ErrorEstimate[]
                           new DelaunayCustom(vtx, tetra) );



    DataReferenceImpl gridRef = new DataReferenceImpl("grid");
    gridRef.setData(grid); // link set to ref

    // create a Display using Java3D
    DisplayImplJ3D display = new DisplayImplJ3D("grid display");
    RealTupleType tuple = ((SetType) grid.getType()).getDomain();
    RealType x = (RealType) tuple.getComponent(0);
    RealType y = (RealType) tuple.getComponent(1);
    RealType z = (RealType) tuple.getComponent(2);
//    display.addMap(new ScalarMap(x, Display.XAxis));
//    display.addMap(new ScalarMap(y, Display.YAxis));
//    display.addMap(new ScalarMap(z, Display.ZAxis));
    ScalarMap xm = new ScalarMap(x, Display.XAxis);
    ScalarMap ym = new ScalarMap(y, Display.YAxis);
    ScalarMap zm = new ScalarMap(z, Display.ZAxis);
    xm.setRange(-1.0, 1.0);
    ym.setRange(-1.0, 1.0);
    zm.setRange(-1.0, 1.0);
    display.addMap(xm);
    display.addMap(ym);
    display.addMap(zm);


    // ------------------------------------------------------
    // Define a scalar field over the domain (the irreg3D grid)
        // args: (FuncType type, Set domain_set)
    MathType rangeTemp = (MathType) new RealType("Temp");
    FunctionType fnType = new FunctionType(MathType.stringToType("Set(x, y,
z)"),
                                           rangeTemp);
    FlatField fld = new FlatField(fnType, grid);

    DataReferenceImpl fldRef = new DataReferenceImpl("fld");
    fldRef.setData(fld);


    // ------------------------------------------------------
    // Define a slicing plane (2D grid, Z=const) on which we will
    // resample the field
//    Set xyPlane = (Set) new Gridded2DSet(grid,


    // ------------------------------------------------------
    // Add objs to display
    display.addReference(gridRef);
    display.addReference(fldRef);


    GraphicsModeControl mode = display.getGraphicsModeControl();
    mode.setPointSize(5.0f);



    // create JFrame (i.e., a window) for display and slider
    JFrame frame = new JFrame("Hex Cell");
    frame.addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {System.exit(0);}
    });

    // create JPanel in JFrame
    JPanel panel = new JPanel();
    panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
    panel.setAlignmentY(JPanel.TOP_ALIGNMENT);
    panel.setAlignmentX(JPanel.LEFT_ALIGNMENT);
    frame.getContentPane().add(panel);

    // add slider and display to JPanel
//    panel.add(slider);
    panel.add(display.getComponent());

    // set size of JFrame and make it visible
    frame.setSize(400, 400);
    frame.setVisible(true);
  }
}

  • 1999 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the visad archives: