Пример #1
0
def kapRos(numDeps, numLams, lambdas, logKappa, temp):

    kappaRos = [ [0.0 for i in range(numDeps)] for j in range(2) ]

    #double numerator, denominator, deltaLam, logdBdTau, logNumerator, logDenominator;
    #double logTerm, logDeltaLam, logInvKap, logInvKapRos;

    for iTau in range(numDeps):

        numerator = 0.0 #//initialize accumulator
        denominator = 0.0

        for iLam in range(1, numLams):
          
            deltaLam = lambdas[iLam] - lambdas[iLam-1]  #//lambda in cm
            logDeltaLam = math.log(deltaLam)

            logInvKap = -1.0 * logKappa[iLam][iTau]
            logdBdTau = Planck.dBdT(temp[0][iTau], lambdas[iLam])
            logTerm = logdBdTau + logDeltaLam
            denominator = denominator + math.exp(logTerm) 
            logTerm = logTerm + logInvKap;
            numerator = numerator + math.exp(logTerm)
        
        logNumerator = math.log(numerator)
        logDenominator = math.log(denominator)
        logInvKapRos = logNumerator - logDenominator 
        kappaRos[1][iTau] = -1.0 * logInvKapRos #//logarithmic
        kappaRos[0][iTau] = math.exp(kappaRos[1][iTau])

    return kappaRos

    #} //end method kapRos