I'm trying to use the GridCoordinateSystem class to support
a domain with a time and space varying vertical coordinate.
I have a domain:

(lon, lat, s_rho)

where s_rho is dependent on some other variables.  I wanted
to create a CoordinateSystem which would transform

(lon, lat, s_rho) <-> (Longtitude, Latitude, Altitude).

My idea was to create a new domain with at RealTupleType
of (lon,lat, s_rho) and a GridCoordinateSystem to tranform
to (Longitude, Latitude, Altitude).  To create the
GridCoordinateSystem, I created a new Gridded3DSet, replacing
the s_rho values with the Altitude values at each point:

    GriddedSet defaultSet = createLonLatSRho();
    RealTupleType setType = ((SetType)defaultSet.getType()).getDomain();
    float[][] samples = defaultSet.getSamples();
    samples[2] = getAltitudeValuesAtEachPoint();
    RealType[] types = setType.getRealComponents();
    RealTupleType newDomainType
        new RealTupleType(types[0], types[1], RealType.Altitude)
    int[] lengths = defaultSet.getLengths();
    Unit[] newDomainUnits = newDomainType.getDefaultUnits();
    newDomainUnits[2] = CommonUnit.meters;
    Gridded3DSet newDomain = new Gridded3DSet(
        newDomainType, samples, lengths[0], lengths[1], lengths[2],
                null, newDomainUnits, null, false, false);
    CoordinateSystem gcs = new GridCoordinateSystem(newDomain);
    RealTupleType newSetType
       new RealTupleType(setType.getRealComponents(), gcs, null);
    defaultSet = new Gridded3DSet(newSetType, defaultSet.getSamples(),
                     lengths[0], lengths[1], lengths[2],
                     null, dset.getSetUnits(), oldErrors, false);

(not sure if the above compiles, just more of a guide to what
I'm trying to do).

What I get is an Exception in RealTupleType:

visad.UnitException: RealTupleType: CoordinateSystem Units must be convertable with default Units
        at visad.RealTupleType.<init>(

because in GridCoordinateSystem, the default units are set to
null in the constructor and the DefaultUnits of the set are
(degree, degree, "").

Am I going about this all wrong?  Should I use an EmpericalCS


Don Murray                               UCAR Unidata Program
dmurray@xxxxxxxxxxxxxxxx                        P.O. Box 3000
(303) 497-8628                              Boulder, CO 80307
"There's someone in my head, but it's not me"    Roger Waters