Пример #1
0
  targetDensity = 0.63
  totalDeltaDensity = targetDensity - startDensity
  
  density = startDensity
  deltaDensity = totalDeltaDensity
  
  decayFactor = 2.5
  deltaDensity = 0.01
  
  print "start approaching target density", targetDensity
  while density < targetDensity:
    #deltaDensity /= decayFactor
    density += deltaDensity
    print "current density", density
    solver.setVolumeDensity(density)
    solver.solve()
    g = solver.getRDF()
    solver.setStartValue(g)
   
   
  #Direct calculation
  print "Directly calculating RDF for target density", targetDensity
  solver.setStartValue(np.zeros(solver.getNumberOfRadialSamplingPoints()) )
  solver.setVolumeDensity(targetDensity)
  solver.solve()
  g_direct = solver.getRDF()
  
  #Plot results
  r = np.arange(solver.getNumberOfRadialSamplingPoints() ).astype('float') + 1.0
  r *= solver.getDelta_r()/solver.getHardSphereRadius()
Пример #2
0
  s.setPotentialByName('Star', 20)
  
  #Define the density range to scan
  densityRange = np.arange(0.3, 0.4, 0.1)
  #densityRange = np.asarray([0.3])
  #densityRange = np.asarray([0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5])
  

  densityRDFdictionary = {}
  
  #Start loop over densities and measure wall clock time
  t_start = time.time()
  
  for d in densityRange:
      s.setVolumeDensity(float(d))
      s.solve()
      g = s.getRDF()
      densityRDFdictionary[d] = g

  t_stop = time.time()
  
  #Print out benchmark
  print "time used for", densityRange.size, "density parameters:", t_stop - t_start, " sec" 
  print "time used for one OZ run:", (t_stop - t_start)/float(densityRange.size), "seconds"
  
  #Plot results
  r = np.arange(s.getNumberOfRadialSamplingPoints() ).astype('float') + 1.0
  r *= s.getDelta_r()/s.getHardSphereRadius()

  for densityKey in densityRDFdictionary:
      pl.plot(r, densityRDFdictionary[densityKey], label = 'RDF for d=' + str(densityKey));