Exemplo n.º 1
0
def add_temp(data,ltemp=[]):
    set_completer(2)
    try:
      for string in data:
          if "range" in string:
             Ti,Tf,dT = string.split("range(")[1].split(")")[0].split(",")
             Ti,Tf,dT = float(Ti),float(Tf),float(dT)
             nsteps = int(round(1.0*(Tf-Ti)/dT))+1
             ltemp += [Ti+idx*dT for idx in range(nsteps)] 
          else:
             ltemp.append(float(string))
      ltemp = uniquify_flist(ltemp,eps=1e-3)
    except:
        print IBLANK1+"invalid line..."
    return sorted(ltemp)
Exemplo n.º 2
0
 def returnpoints(self, E):
     salpha, Valpha = self.get_first()
     somega, Vomega = self.get_last()
     # add first point
     rtn_points = [salpha]
     # find points
     si, Vi = self.get_first()
     sj = min(si + DS_RPT, somega)
     Vj = self(sj)
     while True:
         # break?
         if abs(sj - somega) < EPS_MEPS: break
         # Energy really close to Vj?
         if abs(Vj - E) < EPS_MEPE:
             rtn_points.append(sj)
             # Energy between? Then get return point
         elif (Vi < E < Vj) or (Vi > E > Vj):
             guess = (si + sj) / 2.0
             rpoint = newton(self.relative, guess, args=(E, ))
             if si < rpoint < sj: rtn_points.append(rpoint)
         # update
         si, Vi = sj, Vj
         sj = min(si + DS_RPT, somega)
         Vj = self(sj)
     # add last point
     rtn_points += [somega]
     # remove repetitions
     rtn_points = uniquify_flist(rtn_points, EPS_MEPS)
     # convert to intervals
     intervals = []
     for idx in range(len(rtn_points) - 1):
         si = rtn_points[idx]
         sj = rtn_points[idx + 1]
         smid = (si + sj) / 2.0
         Vmid = self(smid)
         if Vmid >= E: intervals.append((si, sj))
     return intervals