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()
Example #2
0
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()
Example #3
0
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
Example #4
0
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
Example #5
0
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
Example #6
0
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
Example #7
0
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
Example #8
0
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
Example #9
0
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)
Example #10
0
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]))
Example #11
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]))