Пример #1
0
def pce_deg1(V, T, P, aerosol):

    brackets = {'mu': ('uniform_n', 0.01, 0.25), 'sigma': ('uniform_n', 1.2, 3.0), 'V': ('weibull_n', 2.0, 1.0), 'kappa': ('uniform_n', 0.1, 1.2), 'N': ('uniform_n', 100.0, 10000.0)}

    As = array([ 0.00022826, -0.00051625, -0.00020289, -0.00039829, -0.0001025 ,
       -0.0001638 ])

    def map_to_norm(x, param):
        prior, args = brackets[param][0], brackets[param][1:]
        if prior == "lognormal_n": args = map(np.log, args)
        inv_func = inv_funcs[prior]
        return inv_func(x, *args)

    mu = map_to_norm(aerosol.mu, 'mu')
    N = map_to_norm(aerosol.N, 'N')
    V = map_to_norm(V, 'V')
    sigma = map_to_norm(aerosol.sigma, 'sigma')
    kappa = map_to_norm(aerosol.kappa, 'kappa')

    V_1 = eval_hermite(1, V)
    N_1 = eval_hermite(1, N)
    kappa_1 = eval_hermite(1, kappa)
    mu_1 = eval_hermite(1, mu)
    sigma_1 = eval_hermite(1, sigma)

    Smax = As.dot(np.array([1.0, mu_1, N_1, V_1, kappa_1, sigma_1, ]))

    _, S_mode_crit = kohler_crit(T, aerosol.mu*1e-6, aerosol.kappa)
    ui = 2.*np.log(S_mode_crit/Smax)/(3.*np.sqrt(2.)*np.log(aerosol.sigma))
    N_act = 0.5*aerosol.N*erfc(ui)
    act_frac = N_act/aerosol.N

    return Smax, act_frac
Пример #2
0
def pce_deg3(V, T, P, aerosol):

    brackets = {'mu': ('uniform_n', 0.01, 0.25), 'sigma': ('uniform_n', 1.2, 3.0), 'V': ('weibull_n', 2.0, 1.0), 'kappa': ('uniform_n', 0.1, 1.2), 'N': ('uniform_n', 100.0, 10000.0)}

    As = array([  9.14798604e-04,  -9.22633928e-04,  -8.06844177e-04,
        -1.43940090e-03,  -1.77269894e-04,  -2.30463363e-04,
         2.65464696e-04,   1.51795190e-04,   3.10878234e-04,
         2.59723751e-05,   3.18675085e-05,  -8.25970041e-05,
        -6.73965549e-05,  -2.32713884e-04,  -3.38946258e-07,
         9.64888514e-06,   1.70653952e-04,   4.44587400e-04,
         7.76929961e-05,   1.90554293e-04,   4.03803792e-04,
         6.04459159e-05,   9.44462548e-05,   1.07125979e-04,
         1.13169278e-04,   5.70518250e-05,  -9.24557555e-05,
        -3.11843201e-04,  -2.00457356e-05,  -2.11958800e-05,
        -5.27092388e-05,  -4.79579441e-04,  -1.51607324e-05,
        -9.92390215e-06,  -2.32074053e-04,  -2.72153026e-04,
        -1.84122185e-05,   1.02236473e-05,  -2.28193188e-05,
        -2.92921954e-05,  -5.24197442e-05,  -8.52954010e-07,
        -6.09448717e-05,  -4.54888486e-05,   7.46022148e-07,
        -3.49603741e-06,  -2.27098230e-04,  -1.80186021e-05,
         1.12536358e-05,  -3.05864945e-05,   3.41873606e-05,
         2.45392802e-05,  -8.72265689e-05,  -4.30851978e-05,
         1.24256190e-06,   1.07910264e-04])

    def map_to_norm(x, param):
        prior, args = brackets[param][0], brackets[param][1:]
        if prior == "lognormal_n": args = map(np.log, args)
        inv_func = inv_funcs[prior]
        return inv_func(x, *args)

    mu = map_to_norm(aerosol.mu, 'mu')
    N = map_to_norm(aerosol.N, 'N')
    V = map_to_norm(V, 'V')
    sigma = map_to_norm(aerosol.sigma, 'sigma')
    kappa = map_to_norm(aerosol.kappa, 'kappa')

    V_1 = eval_hermite(1, V)
    kappa_3 = eval_hermite(3, kappa)
    V_2 = eval_hermite(2, V)
    N_1 = eval_hermite(1, N)
    kappa_2 = eval_hermite(2, kappa)
    N_2 = eval_hermite(2, N)
    sigma_2 = eval_hermite(2, sigma)
    mu_2 = eval_hermite(2, mu)
    N_3 = eval_hermite(3, N)
    kappa_1 = eval_hermite(1, kappa)
    mu_3 = eval_hermite(3, mu)
    mu_1 = eval_hermite(1, mu)
    sigma_3 = eval_hermite(3, sigma)
    V_3 = eval_hermite(3, V)
    sigma_1 = eval_hermite(1, sigma)

    Smax = As.dot(np.array([1.0, mu_1, N_1, V_1, kappa_1, sigma_1, mu_2, N_2, V_2, kappa_2, sigma_2, mu_3, N_3, V_3, kappa_3, sigma_3, mu_1*N_1, mu_1*V_1, mu_1*kappa_1, mu_1*sigma_1, N_1*V_1, N_1*kappa_1, N_1*sigma_1, V_1*kappa_1, V_1*sigma_1, kappa_1*sigma_1, mu_1*N_2, mu_1*V_2, mu_1*kappa_2, mu_1*sigma_2, N_1*mu_2, N_1*V_2, N_1*kappa_2, N_1*sigma_2, V_1*mu_2, V_1*N_2, V_1*kappa_2, V_1*sigma_2, kappa_1*mu_2, kappa_1*N_2, kappa_1*V_2, kappa_1*sigma_2, sigma_1*mu_2, sigma_1*N_2, sigma_1*V_2, sigma_1*kappa_2, mu_1*N_1*V_1, mu_1*N_1*kappa_1, mu_1*N_1*sigma_1, mu_1*V_1*kappa_1, mu_1*V_1*sigma_1, mu_1*kappa_1*sigma_1, N_1*V_1*kappa_1, N_1*V_1*sigma_1, N_1*kappa_1*sigma_1, V_1*kappa_1*sigma_1]))

    _, S_mode_crit = kohler_crit(T, aerosol.mu*1e-6, aerosol.kappa)
    ui = 2.*np.log(S_mode_crit/Smax)/(3.*np.sqrt(2.)*np.log(aerosol.sigma))
    N_act = 0.5*aerosol.N*erfc(ui)
    act_frac = N_act/aerosol.N

    return Smax, act_frac
Пример #3
0
def pce_deg2(V, T, P, aerosol):

    brackets = {'mu': ('uniform_n', 0.01, 0.25), 'sigma': ('uniform_n', 1.2, 3.0), 'V': ('weibull_n', 2.0, 1.0), 'kappa': ('uniform_n', 0.1, 1.2), 'N': ('uniform_n', 100.0, 10000.0)}

    As = array([  1.14326819e-03,  -7.17119470e-04,  -2.87207700e-04,
        -6.49925186e-04,  -1.32394919e-04,  -2.03550833e-04,
         4.19256128e-04,   1.95758520e-04,   4.28430253e-04,
         5.43726035e-05,   4.01075063e-05,   1.78061247e-04,
         6.89565065e-04,   1.06794441e-04,   2.34925303e-04,
         5.96974401e-04,   9.09500909e-05,   7.94986009e-05,
         1.49255164e-04,   1.22341600e-04,   5.20229943e-05])

    def map_to_norm(x, param):
        prior, args = brackets[param][0], brackets[param][1:]
        if prior == "lognormal_n": args = map(np.log, args)
        inv_func = inv_funcs[prior]
        return inv_func(x, *args)

    mu = map_to_norm(aerosol.mu, 'mu')
    N = map_to_norm(aerosol.N, 'N')
    V = map_to_norm(V, 'V')
    sigma = map_to_norm(aerosol.sigma, 'sigma')
    kappa = map_to_norm(aerosol.kappa, 'kappa')

    V_1 = eval_hermite(1, V)
    V_2 = eval_hermite(2, V)
    N_1 = eval_hermite(1, N)
    kappa_2 = eval_hermite(2, kappa)
    N_2 = eval_hermite(2, N)
    sigma_2 = eval_hermite(2, sigma)
    mu_2 = eval_hermite(2, mu)
    kappa_1 = eval_hermite(1, kappa)
    mu_1 = eval_hermite(1, mu)
    sigma_1 = eval_hermite(1, sigma)

    Smax = As.dot(np.array([1.0, mu_1, N_1, V_1, kappa_1, sigma_1, mu_2, N_2, V_2, kappa_2, sigma_2, mu_1*N_1, mu_1*V_1, mu_1*kappa_1, mu_1*sigma_1, N_1*V_1, N_1*kappa_1, N_1*sigma_1, V_1*kappa_1, V_1*sigma_1, kappa_1*sigma_1]))

    _, S_mode_crit = kohler_crit(T, aerosol.mu*1e-6, aerosol.kappa)
    ui = 2.*np.log(S_mode_crit/Smax)/(3.*np.sqrt(2.)*np.log(aerosol.sigma))
    N_act = 0.5*aerosol.N*erfc(ui)
    act_frac = N_act/aerosol.N

    return Smax, act_frac
Пример #4
0
def pce_deg4(V, T, P, aerosol):

    brackets = {'mu': ('uniform_n', 0.01, 0.25), 'sigma': ('uniform_n', 1.2, 3.0), 'V': ('weibull_n', 2.0, 1.0), 'kappa': ('uniform_n', 0.1, 1.2), 'N': ('uniform_n', 100.0, 10000.0)}

    As = array([  7.56052516e-04,  -9.34563322e-04,  -5.60707772e-04,
        -2.81045850e-04,  -8.60005463e-05,  -1.82949921e-04,
         3.64882107e-04,   3.49237541e-04,  -3.86741535e-04,
         9.02462861e-05,   8.08886457e-05,  -1.33596686e-05,
        -3.66592784e-05,   1.84829967e-04,   6.31816281e-06,
         1.43484844e-05,  -2.21552918e-05,   7.80306040e-06,
        -1.63991275e-04,  -3.31969381e-06,  -2.77832570e-06,
         1.31325527e-04,   3.36410592e-04,   1.29343179e-04,
         2.53607557e-04,   4.72821983e-04,   1.10686337e-04,
        -7.76721989e-06,   5.59677016e-05,  -2.03761928e-04,
         1.49402457e-04,  -5.81947331e-05,  -2.87190526e-04,
        -3.32166236e-05,  -3.11984126e-05,  -3.12737856e-05,
        -2.90655230e-04,  -3.87123623e-06,   6.32799902e-06,
        -1.99773540e-04,  -2.14317445e-04,   1.88693178e-06,
         4.01362982e-05,  -2.82253395e-05,  -9.73456375e-06,
         5.36536549e-05,   2.32915895e-06,  -5.70239230e-05,
        -1.01407528e-05,   3.66706996e-05,   1.34141867e-06,
        -2.51711061e-04,  -1.77305074e-05,   1.77902144e-05,
        -1.92713812e-04,  -1.36248503e-04,  -6.39443575e-05,
        -7.64443869e-05,  -7.75791871e-05,   8.91567781e-06,
         7.53736769e-07,   6.30223806e-06,  -1.34681343e-04,
        -4.42559165e-06,  -1.00314540e-05,  -1.41222799e-05,
        -1.02167268e-06,  -1.73354939e-06,  -7.14665553e-06,
        -9.84241564e-06,   6.97345884e-05,   6.02591893e-06,
        -1.40684526e-05,  -6.74866315e-06,   3.57188698e-06,
        -6.56244944e-05,   1.71048935e-06,  -9.80075449e-06,
         4.05502943e-06,  -1.47650326e-04,   4.27525023e-06,
         1.48744812e-05,   8.65829131e-05,   1.58888194e-05,
         1.50391139e-05,   2.04711595e-04,   8.58208991e-06,
         2.56625369e-06,   3.83611977e-05,   4.11932517e-05,
         8.16629817e-06,   7.99776514e-06,  -3.15884420e-06,
        -1.86066573e-05,   3.63951273e-05,   1.75620847e-05,
        -6.68152115e-06,  -1.32085279e-05,   2.22445829e-05,
         1.13519416e-05,  -2.76824182e-05,   6.90459595e-05,
         1.70119847e-05,  -3.14717813e-05,   2.62866496e-05,
        -3.92082853e-05,  -2.89646068e-05,   8.58123514e-05,
        -4.97675282e-06,  -4.48064665e-05,  -1.34016155e-05,
         4.09449969e-06,   3.68871564e-05,   7.32857832e-05,
         3.70926853e-05,  -3.92935660e-06,   2.27675971e-05,
         4.16571690e-05,   5.83095830e-06,   3.52573949e-06,
         1.00259494e-04,  -4.64968600e-05,  -6.63668001e-05,
        -3.33467254e-05,  -4.04622167e-05,   1.43066345e-05])

    def map_to_norm(x, param):
        prior, args = brackets[param][0], brackets[param][1:]
        if prior == "lognormal_n": args = map(np.log, args)
        inv_func = inv_funcs[prior]
        return inv_func(x, *args)

    mu = map_to_norm(aerosol.mu, 'mu')
    N = map_to_norm(aerosol.N, 'N')
    V = map_to_norm(V, 'V')
    sigma = map_to_norm(aerosol.sigma, 'sigma')
    kappa = map_to_norm(aerosol.kappa, 'kappa')

    V_1 = eval_hermite(1, V)
    mu_4 = eval_hermite(4, mu)
    kappa_3 = eval_hermite(3, kappa)
    V_2 = eval_hermite(2, V)
    N_1 = eval_hermite(1, N)
    kappa_2 = eval_hermite(2, kappa)
    N_2 = eval_hermite(2, N)
    sigma_2 = eval_hermite(2, sigma)
    V_4 = eval_hermite(4, V)
    mu_2 = eval_hermite(2, mu)
    N_3 = eval_hermite(3, N)
    kappa_1 = eval_hermite(1, kappa)
    mu_3 = eval_hermite(3, mu)
    N_4 = eval_hermite(4, N)
    mu_1 = eval_hermite(1, mu)
    sigma_3 = eval_hermite(3, sigma)
    V_3 = eval_hermite(3, V)
    sigma_1 = eval_hermite(1, sigma)
    sigma_4 = eval_hermite(4, sigma)
    kappa_4 = eval_hermite(4, kappa)

    Smax = As.dot(np.array([1.0, mu_1, N_1, V_1, kappa_1, sigma_1, mu_2, N_2, V_2, kappa_2, sigma_2, mu_3, N_3, V_3, kappa_3, sigma_3, mu_4, N_4, V_4, kappa_4, sigma_4, mu_1*N_1, mu_1*V_1, mu_1*kappa_1, mu_1*sigma_1, N_1*V_1, N_1*kappa_1, N_1*sigma_1, V_1*kappa_1, V_1*sigma_1, kappa_1*sigma_1, mu_1*N_2, mu_1*V_2, mu_1*kappa_2, mu_1*sigma_2, N_1*mu_2, N_1*V_2, N_1*kappa_2, N_1*sigma_2, V_1*mu_2, V_1*N_2, V_1*kappa_2, V_1*sigma_2, kappa_1*mu_2, kappa_1*N_2, kappa_1*V_2, kappa_1*sigma_2, sigma_1*mu_2, sigma_1*N_2, sigma_1*V_2, sigma_1*kappa_2, mu_1*N_1*V_1, mu_1*N_1*kappa_1, mu_1*N_1*sigma_1, mu_1*V_1*kappa_1, mu_1*V_1*sigma_1, mu_1*kappa_1*sigma_1, N_1*V_1*kappa_1, N_1*V_1*sigma_1, N_1*kappa_1*sigma_1, V_1*kappa_1*sigma_1, mu_1*N_3, mu_1*V_3, mu_1*kappa_3, mu_1*sigma_3, N_1*mu_3, N_1*V_3, N_1*kappa_3, N_1*sigma_3, V_1*mu_3, V_1*N_3, V_1*kappa_3, V_1*sigma_3, kappa_1*mu_3, kappa_1*N_3, kappa_1*V_3, kappa_1*sigma_3, sigma_1*mu_3, sigma_1*N_3, sigma_1*V_3, sigma_1*kappa_3, mu_2*N_2, mu_2*V_2, mu_2*kappa_2, mu_2*sigma_2, N_2*V_2, N_2*kappa_2, N_2*sigma_2, V_2*kappa_2, V_2*sigma_2, kappa_2*sigma_2, mu_1*N_1*V_2, mu_1*N_1*kappa_2, mu_1*N_1*sigma_2, mu_1*V_1*N_2, mu_1*V_1*kappa_2, mu_1*V_1*sigma_2, mu_1*kappa_1*N_2, mu_1*kappa_1*V_2, mu_1*kappa_1*sigma_2, mu_1*sigma_1*N_2, mu_1*sigma_1*V_2, mu_1*sigma_1*kappa_2, N_1*V_1*mu_2, N_1*V_1*kappa_2, N_1*V_1*sigma_2, N_1*kappa_1*mu_2, N_1*kappa_1*V_2, N_1*kappa_1*sigma_2, N_1*sigma_1*mu_2, N_1*sigma_1*V_2, N_1*sigma_1*kappa_2, V_1*kappa_1*mu_2, V_1*kappa_1*N_2, V_1*kappa_1*sigma_2, V_1*sigma_1*mu_2, V_1*sigma_1*N_2, V_1*sigma_1*kappa_2, kappa_1*sigma_1*mu_2, kappa_1*sigma_1*N_2, kappa_1*sigma_1*V_2, mu_1*N_1*V_1*kappa_1, mu_1*N_1*V_1*sigma_1, mu_1*N_1*kappa_1*sigma_1, mu_1*V_1*kappa_1*sigma_1, N_1*V_1*kappa_1*sigma_1]))

    _, S_mode_crit = kohler_crit(T, aerosol.mu*1e-6, aerosol.kappa)
    ui = 2.*np.log(S_mode_crit/Smax)/(3.*np.sqrt(2.)*np.log(aerosol.sigma))
    N_act = 0.5*aerosol.N*erfc(ui)
    act_frac = N_act/aerosol.N

    return Smax, act_frac