source: codes/icosagcm/devel/Python/dynamico/kessler.py @ 615

Last change on this file since 615 was 615, checked in by dubos, 6 years ago

devel/unstructured : import Python layer from HEAT

File size: 832 bytes
Line 
1#------------- import and wrap Kessler routines and variables -------------#
2
3from ctypes import *
4lib = cdll.LoadLibrary("Kessler/libkessler.so")
5
6libvars={}
7def addvars(ctype,names):
8    for name in names:
9        libvars[name]=ctype.in_dll(lib, name)
10def getvar(name):
11    return libvars[name].value
12def setvar(name,val):
13    libvars[name].value=val
14def setvars(names,vals):
15    for name,val in zip(names,vals):
16        libvars[name].value=val
17
18addvars(c_int,('nx','nz','nz1'))
19addvars(c_double,('g', 'p0', 'dt', 'cp', 'r', 'dt', 'time', 'tsfc', 'qc'))
20
21ptr_arg = POINTER(c_int)
22def loc(array): return array.ctypes.data_as(ptr_arg)
23def locs(arrays): return [loc(v) for v in arrays]
24def wrap(routine): return lambda *args : routine(*locs(args))
25
26create_moist_sounding = wrap(lib.create_moist_sounding)
27kessler = wrap(lib.kessler)
Note: See TracBrowser for help on using the repository browser.