Exemple #1
0
def compose_block(Slist, dims, Nseg):
   '''
   Compose block of size Nseg from segments stored in Slist.
   '''
   
   comp = np.empty((Nseg,), dtype="int")
   if (Nseg > 1):
      seg_ind = np.random.randint(low=0, high=Nseg)
      Seg = Slist[seg_ind] # choose a segment from list as starting point
      comp[0] = seg_ind+1
   else:
      Seg = Slist[0]
      comp[0] = 1
      
   for seg in range(Nseg-1):

      t, _ = trans.calc_t(Seg, dims, 1)
      tp, _ = trans.calc_tp(Seg, dims, 1)
      r, _ = trans.calc_r(Seg, dims, 1)
      rp, _ = trans.calc_rp(Seg, dims, 1)
         
      flip = np.random.choice([True,False]) # flip segment or not

      if (Nseg > 1):
         seg_ind = np.random.randint(low=0, high=Nseg)
         SA = Slist[seg_ind] # choose a segment to add
         if(not flip): comp[seg+1] = seg_ind+1
         if(flip): comp[seg+1] = -(seg_ind+1)
      else:
         SA = Slist[0]
         if(not flip): comp[seg+1] = 1
         if(flip): comp[seg+1] = -1
         
      if (not flip):
         tA, _ = trans.calc_t(SA, dims, 1)
         tpA, _ = trans.calc_tp(SA, dims, 1)
         rA, _ = trans.calc_r(SA, dims, 1)
         rpA, _ = trans.calc_rp(SA, dims, 1)
      elif (flip):
         tA, _ = trans.calc_tp(SA, dims, 1)
         tpA, _ = trans.calc_t(SA, dims, 1)
         rA, _ = trans.calc_rp(SA, dims, 1)
         rpA, _ = trans.calc_r(SA, dims, 1)

      Seg = [] # new S matrix for old + new at each frequency
      Nw = len(dims)
      for w in range(Nw):

         tN = np.dot(tA[w], np.dot(np.linalg.inv(np.eye(dims[w]/2) - np.dot(rp[w], rA[w])), t[w]))
         tpN = np.dot(tp[w], np.dot(np.linalg.inv(np.eye(dims[w]/2) - np.dot(rA[w], rp[w])), tpA[w]))
         rN = r[w] + np.dot(tp[w], np.dot(np.linalg.inv(np.eye(dims[w]/2) - np.dot(rA[w], rp[w])), np.dot(rA[w], t[w])))
         rpN =  rpA[w] + np.dot(tA[w], np.dot(np.linalg.inv(np.eye(dims[w]/2) - np.dot(rp[w], rA[w])), np.dot(rp[w], tpA[w])))
         
         s = np.zeros((dims[w], dims[w]), dtype="complex")
         s[:dims[w]/2,:dims[w]/2] = rN
         s[:dims[w]/2,dims[w]/2:] = tpN
         s[dims[w]/2:,:dims[w]/2] = tN
         s[dims[w]/2:,dims[w]/2:] = rpN
      
         Seg.append(s)

   return Seg, comp
                 "VSC/Fibres-20130819/" + pic_filen + "/")
elif machine ==2:
    data_direc = ("/home/ambichl/Universitaet/Scattering-Data/"
                  "VSC2/Fibres-20130802/" + filen + "/")
    pic_direc = ("/home/ambichl/Universitaet/Scattering-Data/"
                 "VSC2/Fibres-20130802/" + pic_filen + "/")
else:
    print "specify machine (VSC: 1, VSC2: 2)"
plot_direc = data_direc


S, dims = scat.read_S(data_direc, filen+".1E-%i"%expo, old_ver=1)
modes = int(max(dims)/2)


t , t_q = trans.calc_t(S, dims, refmodes)

tp = (t[2] - t[0]) / (2*dk)

ShiftPhase = -I * (t[1]/np.absolute(t[1])).conj() * (t[2]/np.absolute(t[2]) - t[0]/np.absolute(t[0])) / (2*dk)

#ShiftPhase = 0.001*np.ones((3,3), dtype="complex")

ShiftFacsP = np.exp( I * ShiftPhase * dk)
ShiftFacsM = np.exp(-I * ShiftPhase * dk)

#print np.absolute(ShiftFacsM)

tpShift = (t[2]*ShiftFacsM - t[0]*ShiftFacsP) / (2*dk) + I * t[1]*ShiftPhase

# print np.absolute(t[1]) * (t[2]/np.absolute(t[2]) - t[0]/np.absolute(t[0])) / (2*dk)\
Exemple #3
0
   else:
      S, dims, energs = np.load(data_direc + "scatter." + file_i + ".dat.npy")
   
   Slist.append(S)


for i in range(max(0,Nseg-Nfile)):
   el = np.random.randint(low=0, high=len(Slist))
   Slist.append(Slist[el]) # if Nseg > Nfile append randomly chosen S-matrices


Slist = np.array(Slist)
Nw = len(dims)
dw = np.sqrt(2.0*energs[2]) - np.sqrt(2.0*energs[1])

tsafe = trans.calc_t(Slist[0], dims, 1)[0]


def compose_block(Slist, dims, Nseg):
   '''
   Compose block of size Nseg from segments stored in Slist.
   '''
   
   comp = np.empty((Nseg,), dtype="int")
   if (Nseg > 1):
      seg_ind = np.random.randint(low=0, high=Nseg)
      Seg = Slist[seg_ind] # choose a segment from list as starting point
      comp[0] = seg_ind+1
   else:
      Seg = Slist[0]
      comp[0] = 1