#plot import matplotlib.pyplot as plt if __name__ == '__main__': solver = ScipyAndersonOZsolver(port = 0) solver.setPotentialByName('HardSphere') volumeDensity = 0.5 solver.setVolumeDensity(volumeDensity) solver.setConvergenceCriterion(1.0e-4*solver.getConvergenceCriterion()) #PY is default, so no explicit settings are needed in this regard #so solver is in desired state. solver.solve() #Get reference structure factor Sq_default = solver.getSq() #now GCE limit version solver.doEnforceGrandCanonicalZeroQlimit() #solver is in desired state. solver.solve() #Get GCE structure factor Sq_GCE = solver.getSq() print "reference Sq(0)", Sq_default[0] print "GCE Sq(0)", Sq_GCE[0] print "Analytical Sq(0)", (1.0 - volumeDensity)**4/(1.0 + 2.0*volumeDensity)**2 #Even though the enforcement only affects one point in Fourier space, #the impact will be global, hence we plot the functions. (But real analyis must be done numerically) #Plot results Delta_r = solver.getDelta_r()
from scipyAndersonOZsolver import ScipyAndersonOZsolver #plot import matplotlib.pyplot as plt if __name__ == '__main__': solver = ScipyAndersonOZsolver(port=0) solver.setPotentialByName('HardSphere') volumeDensity = 0.5 solver.setVolumeDensity(volumeDensity) solver.setConvergenceCriterion(1.0e-4 * solver.getConvergenceCriterion()) #PY is default, so no explicit settings are needed in this regard #so solver is in desired state. solver.solve() #Get reference structure factor Sq_default = solver.getSq() #now GCE limit version solver.doEnforceGrandCanonicalZeroQlimit() #solver is in desired state. solver.solve() #Get GCE structure factor Sq_GCE = solver.getSq() print "reference Sq(0)", Sq_default[0] print "GCE Sq(0)", Sq_GCE[0] print "Analytical Sq(0)", (1.0 - volumeDensity)**4 / ( 1.0 + 2.0 * volumeDensity)**2 #Even though the enforcement only affects one point in Fourier space, #the impact will be global, hence we plot the functions. (But real analyis must be done numerically) #Plot results