NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.

To learn about what's going on, see About the Archive Site.

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: