Class FlashGradients
java.lang.Object
neqsim.thermo.util.derivatives.FlashGradients
- All Implemented Interfaces:
Serializable
Container for gradients of flash calculation results with respect to input parameters.
Stores sensitivities of flash outputs (K-values, phase fraction, phase compositions) with respect to:
- Temperature (T)
- Pressure (P)
- Feed composition (z)
These gradients are computed using the implicit function theorem, which provides exact derivatives without differentiating through the iterative flash solver.
Mathematical Background
At phase equilibrium, the residual equations F(y; θ) = 0 are satisfied, where y represents the solution variables (K-values, β) and θ represents parameters (T, P, z).
By the implicit function theorem:
dy/dθ = -(∂F/∂y)^(-1) * (∂F/∂θ)
- Since:
- 3.0
- Author:
- ESOL
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final doubleCurrent vapor phase fraction (β).private final String[]Component names.private final doubleDerivative of vapor fraction w.r.t. pressure: dβ/dP [1/bar].private final doubleDerivative of vapor fraction w.r.t. temperature: dβ/dT [1/K].private final double[]Derivatives of vapor fraction w.r.t. feed composition: dβ/dz_i.private final double[]Derivatives of K-values w.r.t. pressure: dK_i/dP [1/bar].private final double[]Derivatives of K-values w.r.t. temperature: dK_i/dT [1/K].private final double[][]Derivatives of K-values w.r.t. feed composition: dK_i/dz_j.private final StringError message if gradient computation failed.private final double[]Current K-values (y_i/x_i).private final intNumber of components.private final intNumber of phases.private static final longprivate final booleanWhether gradients were successfully computed. -
Constructor Summary
ConstructorsConstructorDescriptionFlashGradients(double[] kValues, double beta, double[] dKdT, double[] dKdP, double[][] dKdz, double dBetadT, double dBetadP, double[] dBetadz, String[] componentNames) Constructor for successful gradient computation.FlashGradients(int numberOfComponents, String errorMessage) Constructor for failed gradient computation. -
Method Summary
Modifier and TypeMethodDescriptiondoublegetBeta()Get current vapor phase fraction.String[]Get component names.doubleGet derivative of vapor fraction w.r.t. pressure.doubleGet derivative of vapor fraction w.r.t. temperature.double[]Get derivatives of vapor fraction w.r.t. feed composition.doublegetDBetadz(int componentIndex) Get derivative of vapor fraction w.r.t. specific component in feed.double[]getDKdP()Get all K-value pressure derivatives.doublegetDKdP(int componentIndex) Get derivative of K-value w.r.t. pressure.double[]getDKdT()Get all K-value temperature derivatives.doublegetDKdT(int componentIndex) Get derivative of K-value w.r.t. temperature.double[][]getDKdz()Get full K-value composition Jacobian.doublegetDKdz(int i, int j) Get derivative of K-value w.r.t. feed composition.double[]getDKdzRow(int componentIndex) Get K-value composition derivatives for a component.doublegetDxdT(int componentIndex, double[] z) Compute derivative of liquid phase composition x_i w.r.t. temperature.doublegetDydT(int componentIndex, double[] z) Compute derivative of vapor phase composition y_i w.r.t. temperature.Get error message if computation failed.doublegetKValue(int componentIndex) Get K-value for a component.double[]Get current K-values.intGet number of components.intGet number of phases.booleanisValid()Check if gradients are valid.double[]Get all gradients as a flat array for ML frameworks.toString()
-
Field Details
-
serialVersionUID
private static final long serialVersionUID- See Also:
-
numberOfComponents
private final int numberOfComponentsNumber of components. -
numberOfPhases
private final int numberOfPhasesNumber of phases. -
kValues
private final double[] kValuesCurrent K-values (y_i/x_i). -
beta
private final double betaCurrent vapor phase fraction (β). -
dKdT
private final double[] dKdTDerivatives of K-values w.r.t. temperature: dK_i/dT [1/K]. -
dKdP
private final double[] dKdPDerivatives of K-values w.r.t. pressure: dK_i/dP [1/bar]. -
dKdz
private final double[][] dKdzDerivatives of K-values w.r.t. feed composition: dK_i/dz_j. -
dBetadT
private final double dBetadTDerivative of vapor fraction w.r.t. temperature: dβ/dT [1/K]. -
dBetadP
private final double dBetadPDerivative of vapor fraction w.r.t. pressure: dβ/dP [1/bar]. -
dBetadz
private final double[] dBetadzDerivatives of vapor fraction w.r.t. feed composition: dβ/dz_i. -
componentNames
Component names. -
valid
private final boolean validWhether gradients were successfully computed. -
errorMessage
Error message if gradient computation failed.
-
-
Constructor Details
-
FlashGradients
public FlashGradients(double[] kValues, double beta, double[] dKdT, double[] dKdP, double[][] dKdz, double dBetadT, double dBetadP, double[] dBetadz, String[] componentNames) Constructor for successful gradient computation.- Parameters:
kValues- current K-valuesbeta- current vapor fractiondKdT- K-value temperature derivativesdKdP- K-value pressure derivativesdKdz- K-value composition derivativesdBetadT- vapor fraction temperature derivativedBetadP- vapor fraction pressure derivativedBetadz- vapor fraction composition derivativescomponentNames- component names
-
FlashGradients
Constructor for failed gradient computation.- Parameters:
numberOfComponents- number of componentserrorMessage- error description
-
-
Method Details
-
isValid
public boolean isValid()Check if gradients are valid.- Returns:
- true if gradients were successfully computed
-
getErrorMessage
Get error message if computation failed.- Returns:
- error message or null if successful
-
getNumberOfComponents
public int getNumberOfComponents()Get number of components.- Returns:
- number of components
-
getNumberOfPhases
public int getNumberOfPhases()Get number of phases.- Returns:
- number of phases
-
getKValues
public double[] getKValues()Get current K-values.- Returns:
- array of K_i = y_i/x_i
-
getKValue
public double getKValue(int componentIndex) Get K-value for a component.- Parameters:
componentIndex- component index- Returns:
- K_i
-
getBeta
public double getBeta()Get current vapor phase fraction.- Returns:
- β (vapor mole fraction)
-
getDKdT
public double getDKdT(int componentIndex) Get derivative of K-value w.r.t. temperature.- Parameters:
componentIndex- component index- Returns:
- dK_i/dT [1/K]
-
getDKdT
public double[] getDKdT()Get all K-value temperature derivatives.- Returns:
- array of dK_i/dT
-
getDKdP
public double getDKdP(int componentIndex) Get derivative of K-value w.r.t. pressure.- Parameters:
componentIndex- component index- Returns:
- dK_i/dP [1/bar]
-
getDKdP
public double[] getDKdP()Get all K-value pressure derivatives.- Returns:
- array of dK_i/dP
-
getDKdz
public double getDKdz(int i, int j) Get derivative of K-value w.r.t. feed composition.- Parameters:
i- K-value component indexj- feed composition component index- Returns:
- dK_i/dz_j
-
getDKdzRow
public double[] getDKdzRow(int componentIndex) Get K-value composition derivatives for a component.- Parameters:
componentIndex- component index- Returns:
- array of dK_i/dz_j for all j
-
getDKdz
public double[][] getDKdz()Get full K-value composition Jacobian.- Returns:
- matrix [i][j] = dK_i/dz_j
-
getDBetadT
public double getDBetadT()Get derivative of vapor fraction w.r.t. temperature.- Returns:
- dβ/dT [1/K]
-
getDBetadP
public double getDBetadP()Get derivative of vapor fraction w.r.t. pressure.- Returns:
- dβ/dP [1/bar]
-
getDBetadz
public double[] getDBetadz()Get derivatives of vapor fraction w.r.t. feed composition.- Returns:
- array of dβ/dz_i
-
getDBetadz
public double getDBetadz(int componentIndex) Get derivative of vapor fraction w.r.t. specific component in feed.- Parameters:
componentIndex- component index- Returns:
- dβ/dz_i
-
getComponentNames
-
getDxdT
public double getDxdT(int componentIndex, double[] z) Compute derivative of liquid phase composition x_i w.r.t. temperature.Using: x_i = z_i / (1 + β*(K_i - 1))
- Parameters:
componentIndex- component indexz- feed composition- Returns:
- dx_i/dT
-
getDydT
public double getDydT(int componentIndex, double[] z) Compute derivative of vapor phase composition y_i w.r.t. temperature.Using: y_i = K_i * x_i
- Parameters:
componentIndex- component indexz- feed composition- Returns:
- dy_i/dT
-
toFlatArray
public double[] toFlatArray()Get all gradients as a flat array for ML frameworks.Layout: [dK_0/dT, ..., dK_n/dT, dK_0/dP, ..., dK_n/dP, dβ/dT, dβ/dP, dK_0/dz_0, ...]
- Returns:
- flattened gradient array
-
toString
-