Battery cobalt recovery: leach, neutralize, D2EHPA Mn SX, Cyanex 272 Co SX, electrowinning — a BRINE process flowsheet
Spent NMC111 black mass is leached in sulfuric acid with the acid consumption tracked (lithium as Li₂SO₄, each transition metal as its sulfate), so the pregnant leach solution carries the residual free acid a real leach leaves. A neutralizer then titrates that liquor with 20 wt% caustic to pH 4.0 on the aqueous speciation: the caustic dose is solved, not assumed, and the heat of neutralization (55.8 kJ per mole of acid neutralized) warms the liquor; the caustic header is the supply, and what the titration does not take is returned. Two solvent-extraction circuits on the pH-isotherm chemistry follow, the common NMC arrangement: D2EHPA at pH 4.0 takes manganese into the organic while cobalt and nickel stay behind, and Cyanex 272 at pH 5.0 then takes cobalt and rejects nickel and lithium to the raffinate. The Cyanex 272 isotherms are one published measurement (Liu et al., Metals 11 (2021) 401: 0.4 M in ShellSol D70, 40 C, sulfate; pH50 cobalt 4.15, nickel 6.06), and the 1.9 pH-unit gap between them is why the cobalt organic carries about 0.6% of the nickel, against about 3% with D2EHPA at the same cobalt recovery. The loaded cobalt organic is stripped into a dilute sulfuric strip liquor, and that advance electrolyte goes to cobalt electrowinning: Faraday's law at a 90% current efficiency, 90% of the cobalt plated as cathode cobalt, the anode's oxygen and the 10% of the charge that evolves hydrogen reported as cell gas, and one mole of sulfuric acid regenerated per mole of cobalt plated.
Modeling assumptions & limitations
- 1The leach yield and sulfate stoichiometry are screening inputs, and the hydrogen-peroxide reductant a real NMC leach needs to bring cobalt from Co(III) to Co(II) is not modelled
- 2The D2EHPA pH50 values used for manganese are representative literature-order values, not one cited plant isotherm; the Cyanex 272 table carries only zinc, cobalt and nickel (the metals the cited study measured), so the trace of manganese that passes the D2EHPA circuit is shown in the nickel raffinate although Cyanex 272 would extract it with the cobalt: on the Cytec brochure's single-metal sulfate isotherms (0.6 M, 50 C), which do carry manganese, cobalt and nickel together, manganese's pH50 sits 0.34 below cobalt's and the whole trace follows the cobalt into the organic. That basis is offered as an alternative extractant setting but not used here, because it is measured one metal at a time and so rejects nickel some 80 times better than the mixed-liquor Liu measurement (0.008% against 0.6%); the trace is about 3e-8 mol/s either way. The isotherms have no loading term, so they overstate the cobalt/nickel separation factor by up to about 3x at high cobalt loading, and there are no scrub stages
- 3The extraction stages hold pH as an operator setpoint, so the acid D2EHPA releases on loading and the acid stripping consumes are not balanced (a real circuit saponifies the organic with more caustic)
- 4The strip liquor, the regenerated organic and the spent electrolyte are not recycled (open loop), where a tankhouse returns the spent electrolyte to the strip
- 5The cell voltage of 4.0 V and the 333 K bath are illustrative inputs to replace with the tankhouse's own measurements; and
- 6The manganese organic, the nickel-lithium raffinate and the leach residue leave as products, their own recovery circuits not drawn.
5 views 0 forks
- Rigorous BRINE thermodynamics, solved by the same engine every simulation runs on.
- 4 unit operations modeled: Leach, Neutralizer, 3× Strip, EW CO.
- Focus areas: Battery recycling, Hydrometallurgy, Electrowinning, Neutralization, Solvent extraction, Cobalt.
- Thermodynamics
- BRINE
- Components
- water, h2so4, naoh, black_mass, li, co, ni, mn, leach_residue, kerosene, o2, h2
- Unit operations
- LeachNeutralizer3× StripEW CO
Opens in a new tab, loaded straight into the app — no setup.
Read the step-by-step guideReproduce this exact result from Python — the real client.get_example() → run_and_wait() path, not a mockup.
from flowsim.sdk import FlowSimClient
client = FlowSimClient()
example = client.get_example("battery-cobalt-recovery")
sim = client.create_simulation(example["title"], example["flowsheet"])
result = client.run_and_wait(sim["id"])
print(result["status"]) # "converged"
streams = client.streams(sim["id"])Related models
Cobalt/nickel solvent extraction (D2EHPA)
A laterite leach liquor (Co/Ni/Mg in dilute sulfate solution) meets a D2EHPA-in-kerosene organic phase across a 20-stage countercurrent extraction circuit run at pH 5.2 — the real industrial operating window (e.g. Bulong, Murrin Murrin, Western Australia) that exploits the ~1 pH-unit gap between Co and Ni's D2EHPA extraction isotherms: Co extracts into the organic while Ni (and Mg gangue) are rejected to the raffinate. The loaded organic then meets fresh dilute-acid strip liquor across a 10-stage strip circuit at pH 1.0 (well below Co's isotherm), reversing the equilibrium to recover a concentrated cobalt strip liquor and regenerate barren organic. Real pH-isotherm chemistry throughout, not a fitted shortcut K_D.
Battery black-mass recycling: leach -> SX -> BPED -> LiOH crystallization
Spent-battery black mass (an NMC111-like LiNi1/3Mn1/3Co1/3O2 lump, sulfuric acid-leached at a screening-level yield/stoichiometry — see the stated scope) dissolves into a pregnant leach solution carrying Li/Co/Ni/Mn. A 15-stage D2EHPA solvent-extraction circuit (the same real pH-isotherm chemistry the co-ni-solvent-extraction example uses, operated at pH 7.5 — above every curated Co/Ni/Mn pH50 — so all three transition metals extract into the kerosene organic phase while Li, which has no curated D2EHPA isotherm, stays in the aqueous raffinate untouched) purifies the liquor before it ever reaches the lithium-recovery chemistry. A Faraday's-law bipolar-membrane electrodialysis (BPED) cell (the same real electrochemistry as the direct-lithium-extraction example, sized up for this liquor's larger Li flow) converts Li+ to LiOH, which an MSMPR crystallizer takes to battery-grade LiOH solid. Every step reuses an already-real, independently-tested unit op (,,,) chained into the one train none of them had been assembled into before.
Acid-mine-drainage neutralization: staged lime precipitation
Acidic, metal-laden mine water (dissolved ferric iron, aluminium, nickel and zinc over a sulfate background) is cleaned in a two-stage lime-neutralization circuit — the classic hydrometallurgy / water-treatment precipitation train. Stage 1 doses to pH 4.5, where ferric iron (Fe(OH)3, pKsp 38.6) and aluminium (Al(OH)3, pKsp 33.0) drop out as a sludge while the base metals stay dissolved; stage 2 raises the liquor to pH 9.5, where nickel (Ni(OH)2) and zinc (Zn(OH)2) precipitate, leaving a clarified effluent. Both stages are the new precipitator unit op wrapping the codebase's CRC-cited metal-hydroxide solubility-product chemistry (thermo/electrolytes.hydroxide_precipitation) — dose to a pH setpoint, read off what drops out — the same selective-precipitation workflow a real neutralization plant runs.
Wet-process phosphoric acid: electrochemical removal of copper and cadmium
Wet-process phosphoric acid (about 42 wt% H₃PO₄, 10 kg/s) carries the metals its phosphate rock brought in: iron, zinc, nickel, copper and the cadmium that limits how the acid may be used in fertilizer. Two flow-through electrochemical cells remove the two noble enough to plate from strong acid. The first holds its cathode at -0.05 V vs SHE: copper's Nernst potential sits far above that, so copper plates at its mass-transfer limit (plug-flow law, 99% removed) while zinc, nickel, iron and cadmium, whose potentials lie below the cathode, stay dissolved. The second cell runs at -0.55 V and is told that only cadmium plates: mass transfer alone would take 99.4% of it, but at that potential and 323 K the Nernst floor holds about 2.6e-5 mol/L in solution, so the solver reports the equilibrium-limited 91% instead. Each cell's current comes from the metal's partial current and the current efficiency you give it; the copper and cadmium currents regenerate phosphoric acid (one proton per dihydrogen-phosphate counter-ion), and the rest of the charge evolves hydrogen beside the anode's oxygen, which the cell gas reports, with a flammability warning.
Ammonia-water neutralization with sulfuric acid to ammonium sulfate
A 2 wt% ammonia water (a scrubber or coke-oven bleed) is neutralized with 20 wt% sulfuric acid to pH 6.0. The neutralizer solves the acid dose (drawn from the acid supply, the rest returned) on the aqueous speciation (NH4+ pKa 9.25), so at pH 6 nearly every ammonia molecule is protonated and the dose lands at half a mole of sulfuric acid per mole of ammonia: the stream leaves as ammonium sulfate solution, reported from the speciation. The heat of neutralization is the ammonium dissociation enthalpy, 52.2 kJ per mole of ammonia protonated (110 kW here), and the outlet is adiabatic, so the liquor warms by about 12 K.
Copper recovery from a leach residue: CCD washing + hydroxide precipitation
A leach residue leaves a heap/tank-leach circuit as a slurry — insoluble gangue solids carrying entrained copper-sulfate pregnant liquor that would be lost to tailings if simply thickened. A counter-current-decantation (CCD) wash train recovers it: the residue is washed with clean water flowing counter-current to the solids across a chain of thickeners, so the dissolved copper is displaced into a pregnant-liquor overflow while the washed solids go to tailings. The new ccd_washer unit op models the whole train in one block via the classic counter-current washing equation f = (R-1)/(R^(N+1)-1) (Perry's §18; Coulson & Richardson Vol. 2): five stages at a wash ratio near 4 recover ~99.9% of the dissolved copper, leaving only ~0.08% with the tailings. The pregnant liquor is then dosed to pH 8, where the copper drops as Cu(OH)2 sludge (the precipitator op on the CRC-cited solubility-product chemistry), leaving a barren raffinate for recycle.