Ejemplo n.º 1
0
 def ext_gridloop_exceptions(self, f):
     """Test error handling in the extension module."""
     x_p = self.c.py2my(self.xcoor)
     y_p1 = self.c.py2my(self.ycoor[1:])
     f_p = self.c.set_pyfunc(f)
     try:  #1
         ext_gridloop.gridloop1((1, 2), x_p, y_p1, f_p)
     except:
         print sys.exc_type, sys.exc_value
     try:  #2
         ext_gridloop.gridloop1(x_p, x_p, y_p1, f_p)
     except:
         print sys.exc_type, sys.exc_value
     try:  #3
         ext_gridloop.gridloop2(x_p, y_p, 'abc')
     except:
         print sys.exc_type, sys.exc_value
     try:  #4
         # cannot be handled by this interface...
         #ext_gridloop.gridloop2(array(self.xcoor,Complex64),
         #                       self.ycoor, 'abc')
         pass
     except:
         print sys.exc_type, sys.exc_value
     try:  #5
         # cannot be handled by this interface...
         #ext_gridloop.gridloop2(array([[0,0],[1,2]]), self.ycoor, 'abc')
         pass
     except:
         print sys.exc_type, sys.exc_value
Ejemplo n.º 2
0
 def ext_gridloop2(self, f):
     """Compute a[i,j] = f(xi,yj) in an external routine."""
     x_p = self.c.py2my(self.xcoor)
     y_p = self.c.py2my(self.ycoor)
     f_p = self.c.set_pyfunc(f)
     a_p = ext_gridloop.gridloop2(x_p, y_p, f_p)
     a = self.c.my2py(a_p)
     return a
Ejemplo n.º 3
0
 def ext_gridloop2(self, f):
     """Compute a[i,j] = f(xi,yj) in an external routine."""
     x_p = self.c.py2my(self.xcoor)
     y_p = self.c.py2my(self.ycoor)
     f_p = self.c.set_pyfunc(f)
     a_p = ext_gridloop.gridloop2(x_p, y_p, f_p)
     a = self.c.my2py(a_p)
     return a
Ejemplo n.º 4
0
 def ext_gridloop_exceptions(self, f):
     """Test error handling in the extension module."""
     x_p = self.c.py2my(self.xcoor)
     y_p1 = self.c.py2my(self.ycoor[1:])
     f_p = self.c.set_pyfunc(f)
     try: #1
         ext_gridloop.gridloop1((1,2), x_p, y_p1, f_p)
     except: 
         print sys.exc_type, sys.exc_value
     try: #2
         ext_gridloop.gridloop1(x_p, x_p, y_p1, f_p)
     except:
         print sys.exc_type, sys.exc_value
     try: #3
         ext_gridloop.gridloop2(x_p, y_p, 'abc')
     except:
         print sys.exc_type, sys.exc_value
Ejemplo n.º 5
0
 def ext_gridloop_exceptions(self, f):
     """Test error handling in the extension module."""
     x_p = self.c.py2my(self.xcoor)
     y_p1 = self.c.py2my(self.ycoor[1:])
     f_p = self.c.set_pyfunc(f)
     try:  #1
         ext_gridloop.gridloop1((1, 2), x_p, y_p1, f_p)
     except:
         print sys.exc_type, sys.exc_value
     try:  #2
         ext_gridloop.gridloop1(x_p, x_p, y_p1, f_p)
     except:
         print sys.exc_type, sys.exc_value
     try:  #3
         ext_gridloop.gridloop2(x_p, y_p, 'abc')
     except:
         print sys.exc_type, sys.exc_value
Ejemplo n.º 6
0
 def ext_gridloop2(self, f):
     """Compute a[i,j] = f(xi,yj) in an external routine."""
     # a is made in the external routine
     if isinstance(f, str):
         f_compiled = compile(f, '<string>', 'eval')
         def f_str(x, y):
             return eval(f_compiled)
             #return eval(f)  # much slower
         func = f_str
     else:
         func = f
     a = ext_gridloop.gridloop2(self.xcoor, self.ycoor, func)
     return a
Ejemplo n.º 7
0
    def ext_gridloop2(self, f):
        """Compute a[i,j] = f(xi,yj) in an external routine."""
        if isinstance(f, str):
            f_compiled = compile(f, '<string>', 'eval')

            def f_str(x, y):
                return eval(f_compiled)
                #return eval(f)

            func = f_str
        else:
            func = f
        x_p = self.c.py2my(self.xcoor)
        y_p = self.c.py2my(self.ycoor)
        f_p = self.c.set_pyfunc(func)
        a_p = ext_gridloop.gridloop2(x_p, y_p, f_p)
        a = self.c.my2py(a_p)
        return a
Ejemplo n.º 8
0
 def ext_gridloop_exceptions(self, f):
     """Test error handling in the extension module."""
     try: #1
         ext_gridloop.gridloop1((1,2), self.xcoor, self.ycoor[1:], f)
     except: 
         print sys.exc_type, sys.exc_value
     try: #2
         ext_gridloop.gridloop1(self.xcoor, self.xcoor, self.ycoor[1:], f)
     except:
         print sys.exc_type, sys.exc_value
     try: #3
         ext_gridloop.gridloop2(self.xcoor, self.ycoor, 'abc')
     except:
         print sys.exc_type, sys.exc_value
     try: #4
         ext_gridloop.gridloop2(array(self.xcoor,Complex64),
                                self.ycoor, 'abc')
     except:
         print sys.exc_type, sys.exc_value
     try: #5
         ext_gridloop.gridloop2(array([[0,0],[1,2]]), self.ycoor, 'abc')
     except:
         print sys.exc_type, sys.exc_value
Ejemplo n.º 9
0
 def ext_gridloop_exceptions(self, f):
     """Test error handling in the extension module."""
     try:  #1
         ext_gridloop.gridloop1((1, 2), self.xcoor, self.ycoor[1:], f)
     except:
         print sys.exc_type, sys.exc_value
     try:  #2
         ext_gridloop.gridloop1(self.xcoor, self.xcoor, self.ycoor[1:], f)
     except:
         print sys.exc_type, sys.exc_value
     try:  #3
         ext_gridloop.gridloop2(self.xcoor, self.ycoor, 'abc')
     except:
         print sys.exc_type, sys.exc_value
     try:  #4
         ext_gridloop.gridloop2(array(self.xcoor, Complex64), self.ycoor,
                                'abc')
     except:
         print sys.exc_type, sys.exc_value
     try:  #5
         ext_gridloop.gridloop2(array([[0, 0], [1, 2]]), self.ycoor, 'abc')
     except:
         print sys.exc_type, sys.exc_value
Ejemplo n.º 10
0
c = ext_gridloop.Convert_MyArray()
n = 3
a = zeros((n,n))
xcoor = linspace(0, 1, 3)
ycoor = xcoor.copy
def f(x, y):
    print "in f(%g,%g)" % (x,y)
    return x+y+1

x_p = c.py2my(xcoor)
y_p = c.py2my(ycoor)
a_p = c.py2my(a)

x_p = c.py2my(xcoor)
y_p = c.py2my(ycoor)
a_p = c.py2my_copy(a)

f_p = c.set_pyfunc(f)
print "calling gridloop1"
ext_gridloop.gridloop1(a_p, x_p, y_p, f_p)

b = c.my2py_copy(a_p)
print "b=", b

print "calling gridloop2"
a2_p = ext_gridloop.gridloop2(x_p, y_p, f_p)
print "converting C++ ptr to NumPy"
a2 = c.my2py(a2_p)
print "a2", a2

Ejemplo n.º 11
0
 def ext_gridloop2(self, f):
     """Compute a[i,j] = f(xi,yj) in an external routine."""
     # a is made in the external routine
     a = ext_gridloop.gridloop2(self.xcoor, self.ycoor, f)
     return a
Ejemplo n.º 12
0
 def ext_gridloop2_fcb_ptr(self):
     """As ext_gridloop2, but compiled Fortran callback func."""
     from callback import fcb
     a = ext_gridloop.gridloop2(self.xcoor, self.ycoor,
                                fcb._cpointer)
     return a
Ejemplo n.º 13
0
 def ext_gridloop2(self, f):
     """Compute a[i,j] = f(xi,yj) in an external routine."""
     # a is made in the external routine
     a = ext_gridloop.gridloop2(self.xcoor, self.ycoor, f)
     return a
Ejemplo n.º 14
0
 def ext_gridloop2_fcb_ptr(self):
     """As ext_gridloop2, but compiled Fortran callback func."""
     from callback import fcb
     a = ext_gridloop.gridloop2(self.xcoor, self.ycoor, fcb._cpointer)
     return a
Ejemplo n.º 15
0
c = ext_gridloop.Convert_MyArray()
n = 3
a = zeros((n,n), Float)
xcoor = sequence(0, 1, 0.5)
ycoor = sequence(0, 1, 0.5)
def f(x, y):
    print "in f(%g,%g)" % (x,y)
    return x+y+1

x_p = c.py2my(xcoor)
y_p = c.py2my(ycoor)
a_p = c.py2my(a)

x_p = c.py2my(xcoor)
y_p = c.py2my(ycoor)
a_p = c.py2my_copy(a)

f_p = c.set_pyfunc(f)
print "calling gridloop1"
ext_gridloop.gridloop1(a_p, x_p, y_p, f_p)

b = c.my2py_copy(a_p)
print "b=", b

print "calling gridloop2"
a2_p = ext_gridloop.gridloop2(x_p, y_p, f_p)
print "converting C++ ptr to NumPy"
a2 = c.my2py(a2_p)
print "a2", a2

Ejemplo n.º 16
0
print 'a is still filled with zeros!\n\n'

# try something simple and compare 1-dim and 2-dim arrays:
print ext_gridloop.change.__doc__
ext_gridloop.change(a, xcoor, ycoor)
print 'a after change:\n', a
print 'xcoor after change:\n', xcoor
print 'ycoor after change:\n', ycoor

# repair x and y (a is ok in the calling code):
xcoor = sequence(0, 1, 0.5, Float)
ycoor = sequence(0, 1, 1, Float)


print ext_gridloop.gridloop2.__doc__
a = ext_gridloop.gridloop2(xcoor, ycoor, myfunc)
print 'a after gridloop2:\n', a
dump()
print 'a is correct!\n\n'

# work with an input _and_ output array:
print ext_gridloop.gridloop3.__doc__
a[:,:] = -1.0
print 'Fortran storage of a?', \
      ext_gridloop.has_column_major_storage(a)
b = ext_gridloop.gridloop3(a, xcoor, ycoor, myfunc)
print 'a after gridloop3:\n', a
print 'is a overwritten?', a is b
dump()
print 'a is correct!\n\n'
Ejemplo n.º 17
0
print 'a is still filled with zeros!\n\n'

# try something simple and compare 1-dim and 2-dim arrays:
print ext_gridloop.change.__doc__
ext_gridloop.change(a, xcoor, ycoor)
print 'a after change:\n', a
print 'xcoor after change:\n', xcoor
print 'ycoor after change:\n', ycoor

# repair x and y (a is ok in the calling code):
xcoor = linspace(0, 1, 3)
ycoor = linspace(0, 1, 2)


print ext_gridloop.gridloop2.__doc__
a = ext_gridloop.gridloop2(xcoor, ycoor, myfunc)
print 'a after gridloop2:\n', a
dump()
print 'a is correct!\n\n'

# work with an input _and_ output array:
print ext_gridloop.gridloop3.__doc__
a[:,:] = -1.0
print 'Fortran storage of a?', \
      ext_gridloop.has_column_major_storage(a)
b = ext_gridloop.gridloop3(a, xcoor, ycoor, myfunc)
print 'a after gridloop3:\n', a
print 'is a overwritten?', a is b
dump()
print 'a is correct!\n\n'