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()
예제 #2
0
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]
예제 #3
0
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()
예제 #5
0
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