Index Mapping for VB6

I need some help with doing index mapping in NetCDF v. 3.5.0 using VB 6. I just want to transpose two indices in a NetCDF variable but it won't work. I have spent a whole day of crashing VB and I haven't got anywhere. My netcdf api hasn't failed me until now. I am trying to use the function

Public Declare Function nc_get_varm_double Lib "netcdf.dll" (ByVal ncid As Long, ByVal varid As Long, ByRef startp As Long, ByRef countp As Long, ByRef stridep As Long, ByRef imapp As Long, ByRef ip As Double) As Long

Firstly, I am hoping the above is correct. It is based on all my other netcdf api conversions but to date I have only done read/write of netcdf files with single value, array and subarray functions. I have never tried anything like this before.

My netcdf file has dimensions for lon, lat, and time. I have coordinate variables for each as well. I also have a data variable declared as:
    short water_u(time, lat, lon) ;
       water_u:long_name = "Eastward Water Velocity" ;
       water_u:units = "meters/second" ;
       water_u:_FillValue = -10000s ;
       water_u:scale_factor = 0.01f ;
       water_u:add_offset = 0.f ;

I need to read this into a VB variable declared as:
   Dim WaterU(1 To lNumLat, 1 To lNumLon) As Double

If it wasn't for the fact that the array indices must be in this order I would be fine. I could just transpose after read the NetCDF variable but it very ineligent and rather slow in VB so I prefer using the NetCDF api. This is what I am trying to do now:

Dim dims(1 To 3) As Long, count(1 To 3) As Long, stride(1 To 3) As Long, imap(1 To 3) As Long

dims(1) = lCurrentTime - 1 'VB arrays are base 1 for me so I must subtract 1 to get NetCDF array index
     dims(2) = 0
     dims(3) = 0

     count(1) = 1                           'Only 1 time step
count(2) = lNumLat 'All the latitudes and longitudes please
     count(3) = lNumLon
stride(1) = 1
     stride(2) = 1
     stride(3) = 1

imap(1) = 1 '** I am guessing my problem is here but no combination of numbers has worked for me
     imap(2) = nLon
     imap(3) = CLng(nLat * nLon)
NcErr = nc_get_varm_double(fHandle, var_id, dims(1), count(1), stride(1), imap(1), dblArray(1, 1))
     If NcErr <> 0 Then GoTo NcErrOut

Thanks in advance for any help!
Matthew Hanna


From owner-netcdfgroup@xxxxxxxxxxxxxxxx 17 2004 Sep -0700 15:31:39
Date: 17 Sep 2004 15:31:39 -0700
From: Shulan Liu <shulan@xxxxxxx>
To: netcdfgroup@xxxxxxxxxxxxxxxx
Subject: netcdf in Itanium2/efc7.1
Received: (from majordo@localhost)
        by unidata.ucar.edu (UCAR/Unidata) id i8HMW9ar026518
        for netcdfgroup-out; Fri, 17 Sep 2004 16:32:09 -0600 (MDT)
Keywords: 200409172232.i8HMW5nJ026494
Content-Type: text/plain
Organization: DRI
Message-Id: <1095460299.1908.106.camel@xxxxxxxxxxxxx>
Mime-Version: 1.0
X-Mailer: Ximian Evolution 1.2.2 (1.2.2-5) Content-Transfer-Encoding: 7bit
Sender: owner-netcdfgroup@xxxxxxxxxxxxxxxx
Precedence: bulk
Reply-To: Shulan Liu <shulan@xxxxxxx>

Hi,

I thought I made it last time I compiled netcdf in
our SGI Altix (Itanium2/efc7.1).

But due to an error related to netcdf when running another program, I
found that I still couldn't make the test case --- it prompted error
on testing f90 netcdf lib.

Here is the environment I use:
CC=ecc
FC=efc
F90=efc
CXX=efc
CPP="/usr/bin/cpp -C -P -traditional"
CFLAGS="-O"
F90FLAGS="-O "
CPPFLAGS="-DNDEBUG -DpgiFortran"
FFLAGS="-mp"
FLIBS="/usr/local/intel/compiler70/ia64/lib/libPEPCF90.a"

then I do ./configure,
"make" seems to work without an error.

But at "make test", at testing f90 libs, it gave:

call check(nf90_put_var(ncFileID, lonVarId,     (/ -180, -175, -170 /)
Error 259 at (78:netcdf_test.f90) : This function has the wrong number
of arguments or arguments with the wrong name, type or rank
Any suggestions, many thanks,

Shulan

From owner-netcdfgroup@xxxxxxxxxxxxxxxx 17 2004 Sep -0700 15:59:05
Date: 17 Sep 2004 15:59:05 -0700
From: Shulan Liu <shulan@xxxxxxx>
To: netcdfgroup@xxxxxxxxxxxxxxxx
Subject: netcdf "make test"
Received: (from majordo@localhost)
        by unidata.ucar.edu (UCAR/Unidata) id i8HMxV3C000103
        for netcdfgroup-out; Fri, 17 Sep 2004 16:59:31 -0600 (MDT)
Keywords: 200409172259.i8HMxUnJ000097
Content-Type: text/plain
Organization: DRI
Message-Id: <1095461945.1908.118.camel@xxxxxxxxxxxxx>
Mime-Version: 1.0
X-Mailer: Ximian Evolution 1.2.2 (1.2.2-5) Content-Transfer-Encoding: 7bit
Sender: owner-netcdfgroup@xxxxxxxxxxxxxxxx
Precedence: bulk
Reply-To: Shulan Liu <shulan@xxxxxxx>

Hi, my last email was based on a slightly older version of netcdf than
3.5.1. For the current version, with the same environment variables,

I got following errors at "make test": (also at testing f90)


./netcdf_test
Invalid dimension id or name
Variable not found
Variable not found
Variable not found
Variable not found
Variable not found
Variable not found
example_good.cdl example.cdl differ: char 125, line 8
*** Failure ***

I also attached the whole log file for "make log".

Thanks in advance,

Shulan



  • 2004 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the netcdfgroup archives: