예제 #1
0
def resSatVisc(uOobs,uGobs,xOil,yOil,dOil,dGas,clsBLK) :

    uOcal = BP.calcLBCvisc(xOil,dOil,clsBLK)
    uGcal = BP.calcLBCvisc(yOil,dGas,clsBLK)

    resO = (uOcal - uOobs)/uOobs
    resG = (uGcal - uGobs)/uGobs

    return resO,resG
예제 #2
0
def calcResVISPhase(uObs,xOil,dOil,clsBLK,clsIO) :

    if clsIO.Deb["BLACK"] > 0 : qDeb = True
    else                      : qDeb = False

    nSat = len(uObs)

    resP = NP.zeros(nSat)
    ssQ  = 0.0

    for iSat in range(nSat) :

        uCal = BP.calcLBCvisc(xOil[iSat],dOil[iSat],clsBLK,clsIO)

        resP[iSat] = (uCal - uObs[iSat])/uObs[iSat]

        if qDeb :
            print("iS,uO,uC,rP {:2d} {:10.3e} {:10.3e} {:10.3e}".format(iSat,uObs[iSat],uCal,resP[iSat]))
        
        ssQ = ssQ + resP[iSat]*resP[iSat]

#== Return SSQ and Residuals ==========================================

    ssQ = 0.5*ssQ

    if qDeb : print("ssQ {:10.3e}".format(ssQ))

    return ssQ,resP
예제 #3
0
def calcSatProp(qLiq, RTp, cCon, dSTO, dSTG, Rs, clsBLK):

    if qLiq:
        xO = cCon / (cCon + Rs)
        BoC = dSTO + Rs * dSTG
    else:
        xO = cCon * Rs / (cCon * Rs + 1.0)
        BoC = dSTG + Rs * dSTO

    Bo = BP.calcPhaseFVF(qLiq, RTp, BoC, xO, clsBLK)
    dO = BoC / Bo
    uO = BP.calcLBCvisc(xO, dO, clsBLK)

    #== Return values =====================================================

    return Bo, uO
예제 #4
0
def calcSatProp(qLiq, RTp, cCon, dSTO, dSTG, Rs, clsBLK, clsIO):

    if clsIO.Deb["BLACK"] > 0: qDeb = True
    else: qDeb = False

    if qLiq:
        xO = cCon / (cCon + Rs)
        BoC = dSTO + Rs * dSTG
    else:
        xO = cCon * Rs / (cCon * Rs + 1.0)
        BoC = dSTG + Rs * dSTO

    if qDeb:
        print("xO,BoC {:8.5f} {:10.5f}".format(xO, BoC))

    Bo = BP.calcPhaseFVF(qLiq, RTp, BoC, xO, clsBLK, clsIO)
    dO = BoC / Bo
    uO = BP.calcLBCvisc(xO, dO, clsBLK, clsIO)

    #== Return values =====================================================

    return Bo, uO
예제 #5
0
def calcResVISPhase(sPhs,uObs,xOil,dOil,clsBLK,clsIO) :

    nSat = len(uObs)

    resP = NP.zeros(nSat)
    ssQ  = 0.0

    for iSat in range(nSat) :

        uCal = BP.calcLBCvisc(xOil[iSat],dOil[iSat],clsBLK)

        resP[iSat] = (uCal - uObs[iSat])/uObs[iSat]

        #print("Phase,iS,uO,uC,rP {:3s} {:2d} {:10.3e} {:10.3e} {:10.3e}".format(sPhs,iSat,uObs[iSat],uCal,resP[iSat]))
        
        ssQ = ssQ + resP[iSat]*resP[iSat]

#== Return SSQ and Residuals ==========================================

    ssQ = 0.5*ssQ

    #print("ssQ {:10.3e}".format(ssQ))

    return ssQ,resP