def solve(rhoz, rhos): """solve the structure at the given densities""" w.rho[0] = rhoz/2 w.rho[1] = rhoz/2 if args.solvated: w.rho[2] = rhos w.hnc_solve() if w.return_code: exit()
def solve(rhoz, rhos): """solve the structure at the given densities""" w.rho[0] = rhoz / 2 w.rho[1] = rhoz / 2 if args.solvated: w.rho[2] = rhos w.hnc_solve() if w.return_code: exit()
def mu_aex(drho): aex = prev = 0.0 n = int(w.rho[0]/drho + 0.5) w.cold_start = 1 for i in range(n): w.rho[0] = drho * (i + 1.0) w.hnc_solve() aex = aex + 0.5*drho*(prev + w.muex[0]) prev = w.muex[0] return aex
def cr_press(drho): p_xc = prev = 0.0 n = int(w.rho[0]/drho + 0.5) w.cold_start = 1 for i in range(n): w.rho[0] = drho * (i + 1.0) w.hnc_solve() p_xc = p_xc + 0.5*drho*(prev + w.comp_xc) prev = w.comp_xc return w.rho[0] + p_xc
def mu_aex(drho): aex = prev = 0.0 n = int(w.rho[0] / drho + 0.5) w.cold_start = 1 for i in range(n): w.rho[0] = drho * (i + 1.0) w.hnc_solve() aex = aex + 0.5 * drho * (prev + w.muex[0]) prev = w.muex[0] return aex
def cr_press(drho): p_xc = prev = 0.0 n = int(w.rho[0] / drho + 0.5) w.cold_start = 1 for i in range(n): w.rho[0] = drho * (i + 1.0) w.hnc_solve() p_xc = p_xc + 0.5 * drho * (prev + w.comp_xc) prev = w.comp_xc return w.rho[0] + p_xc
def energy_aex(dA): aex_xc = prev = 0.0 n = int(w.arep[0,0]/dA + 0.5) w.cold_start = 1 for i in range(n): w.arep[0,0] = dA * (i + 1.0) w.dpd_potential() w.hnc_solve() curr = w.uex_xc / w.arep[0,0] aex_xc = aex_xc + 0.5*dA*(prev + curr) prev = curr return w.uex_mf + aex_xc
def energy_aex(dA): aex_xc = prev = 0.0 n = int(w.arep[0, 0] / dA + 0.5) w.cold_start = 1 for i in range(n): w.arep[0, 0] = dA * (i + 1.0) w.dpd_potential() w.hnc_solve() curr = w.uex_xc / w.arep[0, 0] aex_xc = aex_xc + 0.5 * dA * (prev + curr) prev = curr return w.uex_mf + aex_xc
w.initialise() w.rho[0] = 3.0 w.rho[1] = 0.0 # zero density (still works!) # Warm up HNC by ramping the repulsion amplitude Amin = 25.0 Amax = 106.5 npt = 50 for i in range(npt): A = Amin + (Amax-Amin)*i/(npt-1.0) w.arep[0,0] = w.arep[0,1] = w.arep[1,1] = A w.dpd_potential(1) w.hnc_solve() print("%f\t%f\t%f\t%g" % (A, w.muex[0], w.muex[1], w.error)) # Now ramp the extra repulsion amplitude dAmin = -5.0 dAmax = 20.0 npt = 11 x = [0.0 for i in range(npt)] y = [0.0 for i in range(npt)] for i in range(npt): x[i] = dA = dAmin + (dAmax-dAmin)*i/(npt-1.0) w.arep[0,1] = A + dA w.dpd_potential(1)
w.sigma = args.sigma w.hs_potential() rho = 6.0 * args.eta / (w.pi * w.sigma**3) for i in range(args.ncomp): w.rho[i] = rho / args.ncomp eps = 1e-20 if args.verbose: w.write_params() w.verbose = True if args.msa: w.msa_solve() else: w.hnc_solve() if w.return_code: exit() if not args.dump: w.write_thermodynamics() if args.dump: for i in range(w.ng-1): print("%g\t%g\tC" % (w.r[i], w.c[i, 0, 0])) for i in range(w.ng-1): print("%g\t%g\tH" % (w.r[i], w.hr[i, 0, 0])) for i in range(w.ng-1): print("%g\t%g\tS" % (w.k[i], w.sk[i, 0, 0]))
w.hs_potential() rho = 6.0 * args.eta / (w.pi * w.sigma**3) for i in range(args.ncomp): w.rho[i] = rho / args.ncomp eps = 1e-20 if args.verbose: w.write_params() w.verbose = True if args.msa: w.msa_solve() else: w.hnc_solve() if w.return_code: exit() if not args.dump: w.write_thermodynamics() if args.dump: for i in range(w.ng - 1): print("%g\t%g\tC" % (w.r[i], w.c[i, 0, 0])) for i in range(w.ng - 1): print("%g\t%g\tH" % (w.r[i], w.hr[i, 0, 0])) for i in range(w.ng - 1): print("%g\t%g\tS" % (w.k[i], w.sk[i, 0, 0]))