Example #1
0
def Eng_all(phi_all, HP, phis, u, phi_ori, f_ori):
    phi1 = phi_all[0]
    phi2 = phi_all[1]
    v = (phi2 - phi_ori) / (phi2 - phi1)

    f1 = tt.feng(HP, phi1, phis, u)
    f2 = tt.feng(HP, phi2, phis, u)

    return invT * (v * f1 + (1 - v) * f2 - f_ori)
Example #2
0
def J_Eng_all(phi_all, HP, phis, u, phi_ori, f_ori):

    phi1 = phi_all[0]
    phi2 = phi_all[1]
    v = (phi2 - phi_ori) / (phi2 - phi1)

    f1 = tt.feng(HP, phi1, phis, u)
    f2 = tt.feng(HP, phi2, phis, u)
    df1 = tt.dfeng(HP, phi1, phis, u)
    df2 = tt.dfeng(HP, phi2, phis, u)

    J = np.empty(2)

    J[0] = v * ((f1 - f2) / (phi2 - phi1) + df1)
    J[1] = (1 - v) * ((f1 - f2) / (phi2 - phi1) + df2)

    return invT * J
def ps_bi_solve( HP, phis, u, phi_sps, phi_ori=None):
    err = gv.phi_min_sys
    phi_max = (1-2*phis*gv.r_sal)/(gv.r_res+gv.r_con*HP['pc'])-err
    sps1, sps2 = phi_sps
    
    phi_all_ini = [ phi_sps[0]*0.9, phi_sps[1]*1.1]
    if phi_ori == None:
        phi_ori = (sps1+sps2)/2

    fori = tt.feng(HP, phi_ori, phis, u)

    result = sco.minimize( Eng_all, phi_all_ini, \
                           args = (HP, phis, u, phi_ori, fori), \
                           method = 'L-BFGS-B', \
                           jac = J_Eng_all, \
                           bounds = ((err,sps1-err), (sps2+err,phi_max-err)), \
                           options={'ftol':1e-20, 'gtol':1e-20, 'eps':1e-20} )

    bi1 = min(result.x)
    bi2 = max(result.x)
    return bi1, bi2