### SIC arrays

SIC arrays are imported as SicVar instances. Let us define9 a 1D array A in SIC:

    >>> Sic.setgdict(globals())
    Importing all SIC variables into Python...
    ... done.
    >>> Sic.comm('DEFINE INTEGER A[3]')

Defining a variable in SIC automatically imports it in Python __main__. Here A is imported into a SicVar instance with name 'a':

    >>> a
    [0 0 0]
    >>> print a
    <SicVar instance>
    array([0, 0, 0])
    >>> type(a)
    <type 'instance'>
    >>> print a.__doc__
    A SicVar instance.

All of the numpy.ndarray attributes, methods or functions should apply to the SicVar instances, because almost all these instances behaviors are redirected to their numpy.ndarray component. Their elements can be accessed with standard NumPy indexing syntax:

    >>> a[0]
    0
    >>> a[1:] # Elements 1 and subsequents
    [0 0]
    >>> a += 1 # Adds 1 to all elements
    >>> a
    [1 1 1]

    >>> a[:] = 0 # Sets all elements to 0
    >>> a
    [0 0 0]
    >>> len(a) # Length
    3
    >>> a.shape
    (3,)

Remember that data pointed to by SicVar instances is not a copy: if you modify it in Python it will be modified in SIC:

    >>> a[0] = 1
    >>> a
    [1 0 0]
    >>> Sic.comm('EXA A')
    A               is an integer Array      of dimensions      3
                1            0            0

Remember also that derived arrays share their data with the initial array:

    >>> b = a[0:2] # First two elements (upper limit is excluded)
    >>> print b.__doc__
    A SicVar instance.
    >>> b
    [1 0]
    >>> b += 1 # Adds 1 to all elements
    >>> b
    [2 1]
    >>> a
    [2 1 0]

Note that b, as a derived array, is itself a SicVar instance, but is only visible in Python. And remember the different memory arrangement between SIC (Fortran) and C (Python) for multidimensionnal arrays (see subsection 2.1.1):

    >>> Sic.comm('DEFINE INTEGER C[2,3,4]')
    >>> c.shape
    (4, 3, 2)
    >>> c[0,0,0] = 1  # First element
    >>> c[3,2,1] = 2  # Last element
    >>> Sic.comm('EXAMINE C')
    C     is an integer Array    of dimensions      2     3     4
         1          0          0          0          0          0
         0          0          0          0          0          0
         0          0          0          0          0          0
         0          0          0          0          0          2