예제 #1
0
  
  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()

  pl.plot(r, g, label = 'RDF obtained by iterating over densities' );
  pl.plot(r, g_direct, label = 'RDF obtained directly' );