Hi,
Due to a caught yet unhandled Exception, my stack traces were a bit
misleading.
The problem is that the NetCDF stuff seems to create a RealType with the
name "Temperature" although I have no Temperature field in my file.
My class which defines a static Domain4D RealTupleType also defines a
static Temperature RealType also called "Temperature" which is
apparently constructed when Domain4D is referenced by the LinearNDSet
constructor, thus a "visad.TypeException: ScalarType: name already
used".
I suppose a solution to this would be an agreed upon set of static
RealTypes and RealTupleTypes (like Longitude...) for things like
Temperature. Oh, God, not another convention! :-) Any other ideas for
avoiding the "name already used" problem?
Doug
Doug Lindholm wrote:
>
> Hi,
>
> Before I bang my head against the wall any more on this, does anyone
> know why I might be having a problem using a LinearNDSet for one field
> and using visad.data.netcdf.Plain.open to create another?
>
> I have terrain: (Longitude, Latitude) -> Elevation read from a netCDF
> file.
>
> I have model data: (Longitude, Latitude, Altitude, Time) -> Temperature
> for which I construct a LinearNDSet for the 4D domain.
>
> If I make the terrain data first, when I make the Set I get:
>
> java.lang.reflect.InvocationTargetException: visad.TypeException: Set:
> Type must be SetType, RealTupleType or RealType
> at visad.Set.adjustType(Set.java:198)
> at visad.LinearNDSet.get_linear1d_array(LinearNDSet.java:136)
> at visad.LinearNDSet.<init>(LinearNDSet.java:56)
> at vmet.MM5Data.makeData(MM5Data.java:56)
> at java.lang.reflect.Method.invoke(Native Method)
> at vmet.VMETServer.makeData(VMETServer.java:121)
> at vmet.VMETServer.makeData(VMETServer.java:92)
> at vmet.VMETServer.start(VMETServer.java:67)
> at vmet.VMETControl.main(VMETControl.java:50)
>
> If I make the Set first, when I make the terrain I get:
>
> Couldn't initialize class QuantityDBManager
> java.lang.reflect.InvocationTargetException:
> java.lang.NullPointerException
> at visad.data.netcdf.in.Util.<init>(Util.java:122)
> at visad.data.netcdf.in.Util.newUtil(Util.java:146)
> at visad.data.netcdf.in.DefaultView.<init>(DefaultView.java:55)
> at
> visad.data.netcdf.in.NetcdfAdapter.<init>(NetcdfAdapter.java:58)
> at visad.data.netcdf.Plain.open(Plain.java:153)
> at vmet.TerrainData.makeData(TerrainData.java:37)
> at java.lang.reflect.Method.invoke(Native Method)
> at vmet.VMETServer.makeData(VMETServer.java:121)
> at vmet.VMETServer.makeData(VMETServer.java:92)
> at vmet.VMETServer.start(VMETServer.java:67)
> at vmet.VMETControl.main(VMETControl.java:50)
>
> Either one works fine when the other is not around.
>
> Any ideas?
>
> Thanks,
> Doug
>
> --
> *----------------------------------------------------------------------*
> | Doug Lindholm, Software Engineer | E-mail: lind@xxxxxxxx |
> | Research Applications Program | Phone: 303-497-8374 |
> | National Center for Atmospheric Research | |
> | P.O. Box 3000 | There's no place |
> | Boulder, Colorado 80307-3000 | like $HOME |
> *----------------------------------------------------------------------*
--
*----------------------------------------------------------------------*
| Doug Lindholm, Software Engineer | E-mail: lind@xxxxxxxx |
| Research Applications Program | Phone: 303-497-8374 |
| National Center for Atmospheric Research | |
| P.O. Box 3000 | There's no place |
| Boulder, Colorado 80307-3000 | like $HOME |
*----------------------------------------------------------------------*