The OrnsteinZernike Module

OrnsteinZernikeModule

A generic solver package for Ornstein-Zernike equations from liquid state theory

source

Module Index

Detailed API

OrnsteinZernike.OZSolutionType
OZSolution

Holds the solution of an Ornstein Zernike problem.

Fields:

  • r: vector of distances
  • k: vector of wave numbers
  • gr: radial distribution function
  • Sk: static structure factor
  • ck: direct correlation function in k space
  • cr: direct correlation function in real space
  • gamma_r: indirect correlation function in real space
  • gamma_k: indirect correlation function in k space

if the system was a single-component system, gr, Sk, etc, are vectors. If instead the system was a multicomponent one, they are three dimensional vectors, where the first dimension contains the values along r, and the second and third dimension contain the data for the species.

source
OrnsteinZernike.compute_compressibilityMethod
compute_compressibility(sol::OZSolution, system::SimpleFluid)

Computes the isothermal compressibility χ of the system

uses the formula 1/ρkBTχ = 1 - ρ ĉ(k=0) for single component systems and 1/ρkBTχ = 1 - ρ Σᵢⱼ ĉᵢⱼ(k=0) for mixtures. Eq. (3.6.16) in Hansen and McDonald

source
OrnsteinZernike.compute_excess_energyMethod
compute_excess_energy(sol::OZSolution,  system::SimpleUnchargedSystem)

Computes the excess energy per particle Eₓ, such that E = (dims/2kBT + Eₓ)N.

uses the formula Eₓ = 1/2 ρ ∫dr g(r) u(r) for single component systems and Eₓ = 1/2 ρ Σᵢⱼ xᵢxⱼ ∫dr gᵢⱼ(r) uᵢⱼ(r) for mixtures. Here x is the concentration fraction xᵢ=ρᵢ/sum(ρ).

source
OrnsteinZernike.compute_virial_pressureMethod
compute_virial_pressure(sol::OZSolution,  system::SimpleUnchargedSystem)

Computes the pressure via the virial route

uses the formula p = kBTρ - 1/(2d) ρ^2 ∫dr r g(r) u'(r) for single component systems and p = kBT Σᵢρᵢ - 1/(2d) Σᵢⱼ ρᵢρⱼ ∫dr r gᵢⱼ(r) u'ᵢⱼ(r) for mixtures.

It handles discontinuities in the interaction potential analytically if discontinuities(potential) is defined. For additional speed/accuracy define a method of evaluate_potential_derivative(potential, r::Number) that analytically computes du/dr. By default this is done using finite differences.

source
OrnsteinZernike.solveFunction
solve(system::System, closure::Closure, method::Method)

Solves the system system using the closure closure with method method.

solve(system::System, closure::Closure)

Solves the system system using the closure closure with the default method NgIteration().

source