zhaoyuanjuns/moonbit_extractor/liquid does not have a README file
pub(all) struct CascadeComparison {
constant_result : CountercurrentResult
table_result : NonlinearCountercurrentResult
outlet_difference : Double
recovery_difference : Double
} derive(Eq, ToJson, Debug)pub(all) struct CascadeMetrics {
stage_count : Int
total_feed_solute : Double
extracted_solute : Double
raffinate_solute : Double
recovery : Double
average_stage_recovery : Double
maximum_stage_transfer : Double
minimum_stage_transfer : Double
transfer_uniformity : Double
balance_residual : Double
} derive(Eq, ToJson, Debug)pub(all) struct CascadeProfile {
stages : Array[CascadeProfilePoint]
total_recovery : Double
total_balance_error : Double
minimum_driving_force : Double
bottleneck_stage : Int
monotonic : Bool
} derive(Eq, ToJson, Debug)pub(all) struct CountercurrentResult {
stages : Array[CountercurrentStage]
raffinate_outlet_concentration : Double
extract_outlet_concentration : Double
recovery : Double
balance_residual : Double
extraction_factor : Double
} derive(Eq, ToJson, Debug)pub(all) struct CrosscurrentResult {
stages : Array[CrosscurrentStage]
final_raffinate_concentration : Double
total_extracted_solute : Double
overall_recovery : Double
balance_residual : Double
} derive(Eq, ToJson, Debug)pub(all) struct NonlinearCountercurrentResult {
stages : Array[NonlinearCountercurrentStage]
raffinate_outlet_concentration : Double
extract_outlet_concentration : Double
recovery : Double
balance_residual : Double
iterations : Int
converged : Bool
maximum_local_residual : Double
} derive(Eq, ToJson, Debug)fn build_cascade_profile(raffinate_inlets : ArrayView[Double], raffinate_outlets : ArrayView[Double], extract_inlets : ArrayView[Double], extract_outlets : ArrayView[Double], tolerance : Double) -> CascadeProfile raise ExtractionErrorfn cascade_is_balanced(result : CountercurrentResult, tolerance~ : Double) -> Bool raise ExtractionErrorfn compare_countercurrent_models(carrier_flow~ : Double, feed_concentration~ : Double, solvent_flow~ : Double, distribution~ : Double, equilibrium~ : EquilibriumTable, stage_count~ : Int) -> CascadeComparison raise ExtractionErrorfn countercurrent_constant_k(carrier_flow~ : Double, feed_concentration~ : Double, solvent_flow~ : Double, solvent_inlet_concentration? : Double, distribution~ : Double, stage_count~ : Int) -> CountercurrentResult raise ExtractionErrorfn countercurrent_table(carrier_flow~ : Double, feed_concentration~ : Double, solvent_flow~ : Double, solvent_inlet_concentration? : Double, equilibrium~ : EquilibriumTable, stage_count~ : Int, tolerance? : Double, maximum_iterations? : Int, relaxation? : Double) -> NonlinearCountercurrentResult raise ExtractionErrorfn crosscurrent_constant_k(feed_flow~ : Double, feed_concentration~ : Double, solvent_flows : ArrayView[Double], solvent_concentrations? : Array[Double], distribution~ : Double) -> CrosscurrentResult raise ExtractionErrorfn crosscurrent_equal_solvent(feed_flow~ : Double, feed_concentration~ : Double, total_solvent~ : Double, stage_count~ : Int, distribution~ : Double) -> CrosscurrentResult raise ExtractionErrorfn distribution_coefficient(raffinate_concentration : Double, extract_concentration : Double) -> Double raise ExtractionErrorfn extraction_factor(distribution~ : Double, solvent_flow~ : Double, carrier_flow~ : Double) -> Double raise ExtractionErrorfn minimum_countercurrent_stages(carrier_flow~ : Double, feed_concentration~ : Double, solvent_flow~ : Double, solvent_inlet_concentration? : Double, distribution~ : Double, target_raffinate~ : Double, maximum_stages? : Int) -> CountercurrentResult raise ExtractionErrorfn minimum_table_stages(carrier_flow~ : Double, feed_concentration~ : Double, solvent_flow~ : Double, solvent_inlet_concentration? : Double, equilibrium~ : EquilibriumTable, target_raffinate~ : Double, maximum_stages? : Int) -> NonlinearCountercurrentResult raise ExtractionErrorfn nonlinear_cascade_metrics(result : NonlinearCountercurrentResult) -> CascadeMetrics raise ExtractionErrorfn profile_alerts(profile : CascadeProfile, minimum_force : Double, maximum_error : Double) -> Array[String]fn profile_from_stage_data(feed : Double, stage_recoveries : ArrayView[Double], solvent_flow : Double) -> CascadeProfile raise ExtractionErrorfn profile_is_acceptable(profile : CascadeProfile, minimum_recovery : Double, maximum_error : Double) -> Boolfn profile_is_well_balanced(profile : CascadeProfile, maximum_balance_error : Double, minimum_force : Double) -> Boolfn profile_resample(profile : CascadeProfile, target_stages : Int) -> CascadeProfile raise ExtractionErrorfn profile_sensitivity(baseline : CascadeProfile, perturbed : CascadeProfile, parameter : String) -> CascadeSensitivityPointfn profile_sensitivity_matrix(baseline : CascadeProfile, variants : ArrayView[CascadeProfile], names : ArrayView[String]) -> Array[CascadeSensitivityPoint]fn profile_stage(profile : CascadeProfile, stage : Int) -> CascadeProfilePoint raise ExtractionErrorfn recovery_fraction(inlet_solute : Double, raffinate_solute : Double) -> Double raise ExtractionErrorfn selectivity(solute_a_raffinate~ : Double, solute_a_extract~ : Double, solute_b_raffinate~ : Double, solute_b_extract~ : Double) -> Double raise ExtractionErrorfn single_stage_constant_k(feed_flow~ : Double, feed_concentration~ : Double, solvent_flow~ : Double, solvent_concentration? : Double, distribution~ : Double) -> SingleStageResult raise ExtractionErrorfn single_stage_table(feed_flow~ : Double, feed_concentration~ : Double, solvent_flow~ : Double, solvent_concentration? : Double, equilibrium~ : EquilibriumTable, tolerance? : Double, max_iterations? : Int) -> SingleStageResult raise ExtractionErrorInstall
Download zipExtraction process calculation toolkit for liquid-liquid extraction and solid-liquid leaching