eqtk.solveNK¶
- eqtk.solveNK(x0, N, logK, tol=1e-07, tol_zero=1e-12, max_iters=1000, delta_bar=1000.0, eta=0.125, min_delta=1e-12, max_trials=100, perturb_scale=100.0)¶
Solve for equilibrium concentrations of all species in a dilute solution.
- Parameters
x0 (Contiguous Numpy array in C order, shape (n_points, n_compounds)) – Array containing the total “initial” dimensionless concentration of all compounds in solution.
N (Contiguous Numpy array in C order, shape (n_reactions, n_compounds)) – N[r, j] = the stoichiometric coefficient of compound j in chemical reaction r.
logK (Contiguous Numpy array in C order, shape (n_reactions,)) – logK[r] is the natural logarithm of the dimensionless equilibrium constant for reaction r.
tol (float, default 1e-7) – Tolerance for convergence. The absolute tolerance for a given initial concentration c0 (a one-dimensional array) for the conservation conditions are tol * np.dot(A, c0) except when an entry in np.dot(A, c0) is zero. If that is the case for entry i, then the absolute tolerance is tol * np.max(A[i] * c0). If all entries in A[i] * c0 are zero, which only happens with c0 = 0, the absolute tolerance is tol_zero.
tol_zero (float, default 1e-12) – Absolute tolerance for convergence when the initial concentrations are all zero. This cannot really be set a priori; it depends on the scale of the dimensionless concentrations. By default, assume an absolute tolerance consistent with tol and millimolar mole fractions.
max_iters (int, default 1000) – Maximum number of iterations allowed in trust region method.
delta_bar (float, default 1000.0) – Maximum step size allowed in the trust region method.
eta (float, default 0.125) – Value for eta in the trust region method. eta must satisfy 0 < eta < 0.25.
min_delta (float, default 1e-12) – Minimal allowed radius of the trust region. When the trust region radius gets below min_delta, the trust region iterations stop, and a final set of Newton steps is attempted.
max_trials (int, default 100) – In the event that an attempt to solve does not converge, the solver tries again with different initial guesses. This continues until max_trials failures.
perturb_scale (float, default 100.0) – Multiplier on random perturbations to the initial guesses as new ones are generated.
- Returns
logx – logx[i, j] = natural log of the dimensionless equilibrium concentration of compound j for calculation i.
- Return type
Numpy array, shape (n_points, n_compounds)
Notes
N must have full row rank, i.e., all rows must be linearly independent.
All values in x0 must be non-negative and finite.