Changeset 630
- Timestamp:
- 12/12/17 16:03:39 (6 years ago)
- Location:
- codes/icosagcm/devel/Python/src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/devel/Python/src/functions.h
r618 r630 12 12 void cxios_context_finalize(void); 13 13 void cxios_finalize(void); 14 15 void cxios_write_data_k81(char*, int, double*, int); 16 void cxios_write_data_k82(char*, int, double*, int, int); 17 void cxios_write_data_k83(char*, int, double*, int, int, int); -
codes/icosagcm/devel/Python/src/xios.pyx
r615 r630 8 8 9 9 cdef extern from "functions.h": 10 cpdef void context_close_definition "cxios_context_close_definition"() 11 cpdef void context_finalize "cxios_context_finalize"() 12 cpdef void finalize "cxios_finalize"() 10 cdef void cxios_context_close_definition() 11 cdef void cxios_context_finalize() 12 cdef void cxios_finalize() 13 cdef void cxios_write_data_k81(char*, int, double*, int) 14 cdef void cxios_write_data_k82(char*, int, double*, int,int) 15 cdef void cxios_write_data_k83(char*, int, double*, int,int,int) 16 17 def context_close_definition(): cxios_context_close_definition() 18 def context_finalize(): cxios_context_finalize() 19 def finalize(): cxios_finalize() 20 21 cdef send_field1(char* id, int idlen, double[:] data): cxios_write_data_k81(id, idlen, &data[0], data.shape[0]) 22 cdef send_field2(char* id, int idlen, double[:,:] data): cxios_write_data_k82(id, idlen, &data[0,0], data.shape[0],data.shape[1]) 23 cdef send_field3(char* id, int idlen, double[:,:,:] data): cxios_write_data_k83(id, idlen, &data[0,0,0], data.shape[0],data.shape[1],data.shape[2]) 24 25 def send_field(bytes id, data): 26 cdef char* idptr = id 27 cdef int idlen = len(id) 28 print 'cxios.write_data', id, data.shape 29 ndim=data.ndim 30 if ndim==1: send_field1(idptr,idlen,data) 31 if ndim==2: send_field2(idptr,idlen,data) 32 if ndim==3: send_field3(idptr,idlen,data) 13 33 14 34 # -------------------------------------------------------- # … … 75 95 cats=['axis','domain','domaingroup','field','fieldgroup'] # XIOS categories 76 96 cxios.import_funs([ 77 # ['finalize','context_finalize','context_close_definition', None],78 97 [cat+'_handle_create' for cat in cats]+[c_void_pp,c_char_p,c_int], 79 98 ['get_current_'+'calendar_wrapper',c_void_pp], … … 87 106 import_set_attr(['calendar_wrapper'], [Duration,'timestep']) 88 107 89 cxios.import_funs([['write_data_k80', c_char_p, c_int, c_void_p],90 ['write_data_k81', c_char_p, c_int, c_void_p, c_int],91 ['write_data_k82', c_char_p, c_int, c_void_p, c_int, c_int],92 ['write_data_k83', c_char_p, c_int, c_void_p, c_int, c_int, c_int]])93 94 def send_field(id, data):95 if type(data) is np.ndarray:96 shp=data.shape97 print 'cxios.write_data', id, shp98 ndim=len(shp)99 if ndim==1:100 lib.write_data_k81(id, c_int(len(id)), data, shp[0])101 if ndim==2:102 lib.write_data_k82(id, c_int(len(id)), data, shp[0], shp[1]) # reverse order of dimensions ??103 if ndim==3:104 lib.write_data_k83(id, c_int(len(id)), data, shp[0], shp[1], shp[2])105 else:106 print id, type(data)107 raise(TypeError)108 109 108 import_cxios_functions()
Note: See TracChangeset
for help on using the changeset viewer.