The normal SIDL C function API is available from FORTRAN 90 to create, destroy, and access array elements and meta-data. The function name from FORTRAN 90 has _m appended.
For SIDL types dcomplex, double, fcomplex , float, int, and long, SIDL provides a method to get direct access to the array elements. For the other types, you must use the functional API to access array elements.
For type X, for example, there is a FORTRAN 90 function called SIDL_X__array_access_m to provide a method to get direct access. This is illustrated in the example below. Of course, this will not work if your FORTRAN 90 compiler does array bounds checking.
users_guide/f90/code/SIDL_int__array.F90
To access a two dimensional array, the expression referring to element i, j is
users_guide/f90/code/SIDL_array_2.F90
To access a three dimensional array, the expression referring to element i, j, k is
users_guide/f90/code/SIDL_array_2.F90
You can call things like LINPACK or BLAS if you want, but you should check the stride to make sure the array is packed as needed. You can check stride(i), which indicates the distance between elements in dimension i. A value of 1 means elements are packed densely in dimension i. Negative stride values are possible, and when an array is a slice of another array, there may be no dimension with a stride of 1.
For a dcomplex array, the reference array should be a FORTRAN array of REAL (SELECTED_REAL_KIND(15, 307)) instead of a FORTRAN array of double complex to avoid potential alignment problems. For a fcomplex array, the reference array is a COMPLEX (SELECTED_REAL_KIND(15, 307)) because we don't anticipate an alignment problem in this case.