public ucar.unidata.geoloc.vertical.VerticalTransform makeMathTransform(NetcdfDataset ds, Dimension timeDim, VerticalCT vCT) { return new OceanSigma(ds, timeDim, vCT.getParameters()); } }
/** * Create a new vertical transform for Ocean S coordinates * * @param ds dataset * @param timeDim time dimension * @param params list of transformation Parameters */ public OceanSigma(NetcdfFile ds, Dimension timeDim, List<Parameter> params) { super(timeDim); String etaName = getParameterStringValue(params, ETA); String sName = getParameterStringValue(params, SIGMA); String depthName = getParameterStringValue(params, DEPTH); etaVar = ds.findVariable(etaName); sVar = ds.findVariable(sName); depthVar = ds.findVariable(depthName); units = ds.findAttValueIgnoreCase(depthVar, CDM.UNITS, "none"); }
/** * Get the 1D vertical coordinate array for this time step and point * * @param timeIndex the time index. Ignored if !isTimeDependent(). * @param xIndex the x index * @param yIndex the y index * @return vertical coordinate array * @throws java.io.IOException problem reading data * @throws ucar.ma2.InvalidRangeException _more_ */ public D1 getCoordinateArray1D(int timeIndex, int xIndex, int yIndex) throws IOException, InvalidRangeException { Array eta = readArray(etaVar, timeIndex); Array sigma = readArray(sVar, timeIndex); Array depth = readArray(depthVar, timeIndex); int nz = (int) sigma.getSize(); Index sIndex = sigma.getIndex(); Index etaIndex = eta.getIndex(); Index depthIndex = depth.getIndex(); ArrayDouble.D1 height = new ArrayDouble.D1(nz); for (int z = 0; z < nz; z++) { double sigmaVal = sigma.getDouble(sIndex.set(z)); double etaVal = eta.getDouble(etaIndex.set(yIndex, xIndex)); double depthVal = depth.getDouble(depthIndex.set(yIndex, xIndex)); height.set(z, etaVal + sigmaVal * (depthVal + etaVal)); } return height; }
/** * Get the 1D vertical coordinate array for this time step and point * * @param timeIndex the time index. Ignored if !isTimeDependent(). * @param xIndex the x index * @param yIndex the y index * @return vertical coordinate array * @throws java.io.IOException problem reading data * @throws ucar.ma2.InvalidRangeException _more_ */ public D1 getCoordinateArray1D(int timeIndex, int xIndex, int yIndex) throws IOException, InvalidRangeException { Array eta = readArray(etaVar, timeIndex); Array sigma = readArray(sVar, timeIndex); Array depth = readArray(depthVar, timeIndex); int nz = (int) sigma.getSize(); Index sIndex = sigma.getIndex(); Index etaIndex = eta.getIndex(); Index depthIndex = depth.getIndex(); ArrayDouble.D1 height = new ArrayDouble.D1(nz); for (int z = 0; z < nz; z++) { double sigmaVal = sigma.getDouble(sIndex.set(z)); double etaVal = eta.getDouble(etaIndex.set(yIndex, xIndex)); double depthVal = depth.getDouble(depthIndex.set(yIndex, xIndex)); height.set(z, etaVal + sigmaVal * (depthVal + etaVal)); } return height; }
/** * Get the 1D vertical coordinate array for this time step and point * * @param timeIndex the time index. Ignored if !isTimeDependent(). * @param xIndex the x index * @param yIndex the y index * @return vertical coordinate array * @throws java.io.IOException problem reading data * @throws ucar.ma2.InvalidRangeException _more_ */ public D1 getCoordinateArray1D(int timeIndex, int xIndex, int yIndex) throws IOException, InvalidRangeException { Array eta = readArray(etaVar, timeIndex); Array sigma = readArray(sVar, timeIndex); Array depth = readArray(depthVar, timeIndex); int nz = (int) sigma.getSize(); Index sIndex = sigma.getIndex(); Index etaIndex = eta.getIndex(); Index depthIndex = depth.getIndex(); ArrayDouble.D1 height = new ArrayDouble.D1(nz); for (int z = 0; z < nz; z++) { double sigmaVal = sigma.getDouble(sIndex.set(z)); double etaVal = eta.getDouble(etaIndex.set(yIndex, xIndex)); double depthVal = depth.getDouble(depthIndex.set(yIndex, xIndex)); height.set(z, etaVal + sigmaVal * (depthVal + etaVal)); } return height; }
public ucar.unidata.geoloc.vertical.VerticalTransform makeMathTransform(NetcdfDataset ds, Dimension timeDim, VerticalCT vCT) { return new OceanSigma(ds, timeDim, vCT.getParameters()); } }
/** * Create a new vertical transform for Ocean S coordinates * * @param ds dataset * @param timeDim time dimension * @param params list of transformation Parameters */ public OceanSigma(NetcdfFile ds, Dimension timeDim, List<Parameter> params) { super(timeDim); String etaName = getParameterStringValue(params, ETA); String sName = getParameterStringValue(params, SIGMA); String depthName = getParameterStringValue(params, DEPTH); etaVar = ds.findVariable(etaName); sVar = ds.findVariable(sName); depthVar = ds.findVariable(depthName); units = ds.findAttValueIgnoreCase(depthVar, CDM.UNITS, "none"); }
public ucar.unidata.geoloc.vertical.VerticalTransform makeMathTransform(NetcdfDataset ds, Dimension timeDim, VerticalCT vCT) { return new OceanSigma(ds, timeDim, vCT.getParameters()); } }
/** * Create a new vertical transform for Ocean S coordinates * * @param ds dataset * @param timeDim time dimension * @param params list of transformation Parameters */ public OceanSigma(NetcdfFile ds, Dimension timeDim, List<Parameter> params) { super(timeDim); String etaName = getParameterStringValue(params, ETA); String sName = getParameterStringValue(params, SIGMA); String depthName = getParameterStringValue(params, DEPTH); etaVar = ds.findVariable(etaName); sVar = ds.findVariable(sName); depthVar = ds.findVariable(depthName); units = ds.findAttValueIgnoreCase(depthVar, CDM.UNITS, "none"); }