def compile_radiators(): import cea.technologies.radiators reload(cea.technologies.radiators) cc = CC('calc_radiator') cc.export('fh', "f8(f8, f8, f8, f8, f8, f8, f8)")(cea.technologies.radiators.fh) cc.export('lmrt', "f8(f8, f8, f8)")(cea.technologies.radiators.lmrt) cc.compile()
import numpy from math import sqrt from numba.pycc import CC cc = CC('ppe') @cc.export('pressure_poisson', 'f8[:,:](f8[:,:], f8[:,:], f8)') def pressure_poisson(p, b, l2_target): pn = p.copy() I, J = b.shape iter_diff = l2_target + 1 n = 0 while iter_diff > l2_target and n <= 500: pn = p.copy() for i in range(1, I - 1): for j in range(1, J - 1): p[i, j] = (.25 * (pn[i, j + 1] + pn[i, j - 1] + pn[i + 1, j] + pn[i - 1, j]) - b[i, j]) for i in range(I): p[i, 0] = p[i, 1] p[i, -1] = 0 for j in range(J): p[0, j] = p[1, j]
import cmath import numpy as np from numba import float32 from numba.pycc import CC, exportmany, export # # New API # cc = CC('pycc_test_simple') cc.use_nrt = False @cc.export('multf', (float32, float32)) @cc.export('multi', 'i4(i4, i4)') def mult(a, b): return a * b # Test imported C globals such as Py_None, PyExc_ZeroDivisionError @cc.export('get_none', 'none()') def get_none(): return None @cc.export('div', 'f8(f8, f8)') def div(x, y): return x / y _two = 2
def compile_sensible_loads(): import cea.demand.sensible_loads reload(cea.demand.sensible_loads) cc = CC('calc_tm') cc.export('calc_tm', "UniTuple(f8, 2)(f8, f8, f8, f8, f8)")(cea.demand.sensible_loads.calc_tm) cc.export('calc_ts', "f8(f8, f8, f8, f8, i4, f8, f8, f8, f8)")(cea.demand.sensible_loads.calc_ts) cc.export('calc_ts_tabs', "f8(f8, f8, f8, f8, i4, f8, f8, f8, f8)")(cea.demand.sensible_loads.calc_ts_tabs) cc.export('calc_ta', "f8(f8, f8, i4, f8, f8, f8)")(cea.demand.sensible_loads.calc_ta) cc.export('calc_ta_tabs', "f8(f8, f8, i4, f8, f8, f8)")(cea.demand.sensible_loads.calc_ta_tabs) cc.export('calc_top', "f8(f8, f8)")(cea.demand.sensible_loads.calc_top) cc.export('calc_Im_tot', "f8(f8, f8, f8, f8, f8, f8, f8, f8, i4, f8, f8)")(cea.demand.sensible_loads.calc_Im_tot) cc.export('calc_Im_tot_tabs', "f8(f8, f8, f8, f8, f8, f8, f8, f8, i4, f8, f8)")(cea.demand.sensible_loads.calc_Im_tot_tabs) cc.compile()
from numba.pycc import CC from numpy import zeros cc = CC('InitSnowYesterday_inner_compiled') @cc.export('InitSnowYesterday_inner', '(int64, int64[:,::1], int64, float64[:,:,::1], float64[:,:,::1])') def InitSnowYesterday_inner(NYrs, DaysMonth, InitSnow_0, Temp, Prec): result_yesterday = zeros((NYrs, 12, 31)) yesterday = InitSnow_0 for Y in range(NYrs): for i in range(12): for j in range(DaysMonth[Y][i]): result_yesterday[Y][i][j] = yesterday if Temp[Y][i][j] <= 0: snow = yesterday + Prec[Y][i][j] else: if yesterday > 0.001: snow = max(yesterday - 0.45 * Temp[Y][i][j], 0) else: snow = yesterday yesterday = snow return result_yesterday