Particular numpy.ndarray's which have no (0) dimension have a special treatment: they still have numpy.ndarray type, but their representation and handling is similar to standard Python scalars. SIC scalars are imported in Python as numpy.ndarray scalars through SicVar instances:
>>> Sic.comm('DEF REAL D')
>>> d
0.0
>>> print d.__doc__
A SicVar instance.
|
You have to take care that you cannot modify scalars (and, actually, any SicVar or SicStructure instance) with commands such as d = 1, because this unbounds d to its corresponding SicVar instance (which is lost and deleted if no other variable uses it), and bounds it to integer 1. If it happens, you can get('D') again: SicVar instance is recreated and all the previous changes will not be lost because D have not been deleted in SIC.
>>> Sic.comm('LET D 1.')
>>> d
1.0
>>> d = 2. # ooops... 'd' instance is lost!
>>> type(d)
<type 'float'> # 'd' is bound to a standard float,
>>> Sic.comm('EXA D') # but 'D' remains unchanged in SIC.
D = 1.000000 ! Real GLOBAL
>>> Sic.get('D') # Reincarnates d.
>>> d
1.0
|
Thus, to modify scalars from Python, you have to access its data through its unique element:
>>> d[0] = 2. >>> d 2.0 >>> print d.__doc__ A SicVar instance. |