cdm/src/main/java/ucar/unidata/geoloc/vertical/WRFEta.java
public ArrayDouble.D3 getCoordinateArray(int timeIndex)
      throws IOException {
    ArrayDouble.D3 array;

    Array pertArray = getTimeSlice(pertVar, timeIndex);
    Array baseArray = getTimeSlice(baseVar, timeIndex);

    //ADD: use MAMath?
    //ADD: use IndexIterator from getIndexIteratorFast?
    int[] shape = pertArray.getShape();
    //ADD: assert that rank = 3
    //ADD: assert that both arrays are same shape
    int ni = shape[0];
    int nj = shape[1];
    int nk = shape[2];

    array = new ArrayDouble.D3(ni, nj, nk);
    Index index = array.getIndex();

    for (int i = 0; i < ni; i++) {
      for (int j = 0; j < nj; j++) {
        for (int k = 0; k < nk; k++) {
          index.set(i, j, k);
          double d = pertArray.getDouble(index) + baseArray.getDouble(index);
          if (isZStag) {
            d = d / 9.81;  //convert geopotential to height
          }
          array.setDouble(index, d);
        }
      }
    }

    if (isXStag) {
      array = addStagger(array, 2);  //assuming x dim index is 2
    }
    if (isYStag) {
      array = addStagger(array, 1);  //assuming y dim index is 1
    }

    return array;
  }
public ArrayDouble.D3 getCoordinateArray(int timeIndex)
      throws IOException {
    ArrayDouble.D3 array;

    Array pertArray = getTimeSlice(pertVar, timeIndex);
    Array baseArray = getTimeSlice(baseVar, timeIndex);

    //ADD: use MAMath?
    //ADD: use IndexIterator from getIndexIteratorFast?
    int[] shape = pertArray.getShape();
    //ADD: assert that rank = 3
    //ADD: assert that both arrays are same shape
    int ni = shape[0];
    int nj = shape[1];
    int nk = shape[2];

    array = new ArrayDouble.D3(ni, nj, nk);
    Index index = array.getIndex();

    for (int i = 0; i < ni; i++) {
      for (int j = 0; j < nj; j++) {
        for (int k = 0; k < nk; k++) {
          index.set(i, j, k);
          double d = pertArray.getDouble(index) + baseArray.getDouble(index);
          if (isZStag) {
            d = d / 9.81;  //convert geopotential to height
          }
          array.setDouble(index, d);
        }
      }
    }

    if (isXStag) {
      array = addStagger(array, 2);  //assuming x dim index is 2
    }
    if (isYStag) {
      array = addStagger(array, 1);  //assuming y dim index is 1
    }

    return array;
  }
public ArrayDouble . D3 getCoordinateArray ( int timeIndex ) throws IOException { ArrayDouble . D3 array ; Array pertArray = getTimeSlice ( pertVar , timeIndex ) ; Array baseArray = getTimeSlice ( baseVar , timeIndex ) ; //ADD: use MAMath?
 //ADD: use IndexIterator from getIndexIteratorFast?
 int [ ] shape = pertArray . getShape ( ) ; //ADD: assert that rank = 3
 //ADD: assert that both arrays are same shape
 int ni = shape [ 0 ] ; int nj = shape [ 1 ] ; int nk = shape [ 2 ] ; array = new ArrayDouble . D3 ( ni , nj , nk ) ; Index index = array . getIndex ( ) ; for ( int i = 0 ; i < ni ; i ++ ) { for ( int j = 0 ; j < nj ; j ++ ) { for ( int k = 0 ; k < nk ; k ++ ) { index . set ( i , j , k ) ; double d = pertArray . getDouble ( index ) + baseArray . getDouble ( index ) ; if ( isZStag ) { d = d / 9.81 ; //convert geopotential to height
 } array . setDouble ( index , d ) ; } } } if ( isXStag ) { array = addStagger ( array , 2 ) ; //assuming x dim index is 2
 } if ( isYStag ) { array = addStagger ( array , 1 ) ; //assuming y dim index is 1
 } return array ; }
Get the 3D vertical coordinate array for this time step.

@param timeIndex the time index. Ignored if !isTimeDependent().
@return vertical coordinate array
@throws IOException problem reading data
Get the 3D vertical coordinate array for this time step .