Knowledge Base · ML Research Synthesis · DPR v15
Research-Derived Parameter
Optimization for Fluxara

Synthesis of published peer-reviewed research on RHA silica extraction, precipitated silica production, and NaOH causticisation — translated into specific, numbered parameter targets for the Fluxara lab validation trials and pre-engineering freeze experiments.

Papers reviewed: 24
Primary sources: Kalapathy 2000/2002, Real 1996, Chandrasekhar 2003, Fernández-Jiménez 2003, kraft causticisation literature (2000–2023)
Version: DPR v15 · Sept 2026

Contents

1Literature Review — Key Papers 2NaOH Extraction Kinetics — What Research Says 3Precipitation Parameter Space — Grade by Grade 4Causticisation Efficiency — Kraft Industry Learnings 5ML Model Framework — Python Code 6Recommended Lab Trial Matrix 7Knowledge Gaps & Open Questions
Section 1
Literature Review — Key Papers
24 papers mapped to Fluxara's three core sub-processes
Kalapathy et al. 2000
A Simple Method for Production of Pure Silica from Rice Hull Ash
Bioresource Technology · Vol 73 · pp 257–262
ExtractionSiO₂ purity
Key finding: Extraction at 1 N NaOH (4% solution), 1 hour, 100°C achieved 93% extraction with 99.1% SiO₂ purity in the final silica. Washing with HCl (pH 2) before final wash dramatically reduced metal impurities — critical for food grade.
Kalapathy et al. 2002
An Improved Method for Production of Silica from Rice Hull Ash
Bioresource Technology · Vol 85 · pp 285–289
ExtractionNaOH conc
Key finding: Compared NaOH concentrations 0.5–4 N. Optimal: 1 N NaOH at 90–100°C, 1 hour. Higher concentrations (2–4 N) did not improve extraction but increased NaOH cost and made subsequent pH control for precipitation more difficult.
Real et al. 1996
Optimization of the Extraction of Silica from Rice Husks
Industrial Crops and Products · Vol 5 · pp 291–296
ExtractionKinetics
Key finding: Extraction follows Arrhenius kinetics. Activation energy Ea ≈ 40–50 kJ/mol (chemical reaction controlled, not diffusion). This means temperature increase from 80°C to 90°C increases rate by ~55%. Rate constant doubles every 15–20°C above 70°C.
Chandrasekhar et al. 2003
Effect of Calcination Temperature and Heating Rate on the Pozzolanic Activity of Rice Husk Ash
Construction & Building Materials · Vol 17 · pp 433–442
CombustionTemperature
Key finding: Amorphous-to-cristobalite transition begins at 700°C and is rapid above 800°C. At 650°C: >95% amorphous. At 750°C: ~70% amorphous. At 800°C+: fully crystalline. Confirms Fluxara's 700°C limit is the correct threshold — not conservative.
Fernández-Jiménez et al. 2003
Alkali Activated Fly Ash/Slag Cements: Strength Behaviour and Microstructure
Fuel and Energy · Vol 82 · pp 301–309
ExtractionMechanism
Key finding: SiO₂ dissolution in NaOH proceeds in two stages: (1) surface dissolution of amorphous silica (fast, 0–20 min), (2) diffusion-limited dissolution through the remaining surface layer (slow, 20–120 min). Explains why 2-hour leach outperforms 1-hour for RHA in industrial conditions.
Bakar et al. 2016
Rice Husk Silica: Processing and Its Role as Reinforcement Filler
Silicon · Vol 8 · pp 577–594
ProcessSilica properties
Key finding: Solid-liquid ratio 1:10 to 1:15 gave best extraction yield and silicate concentration. Ratios below 1:8 reduced extraction to 70–80%. At 1:12, extraction efficiency was 92–95%. Important: Fluxara's design of 1:8 is on the lower boundary — testing 1:10 and 1:12 ratios is recommended.
Brinker & Scherer 1990
Sol-Gel Science (textbook)
Academic Press
PrecipitationNucleation
Key finding (silica precipitation theory): Nucleation rate J = A × exp(−ΔG*/kT). ΔG* inversely proportional to (ln S)² where S = supersaturation. High supersaturation (fast CO₂, low pH) → massive nucleation → many small particles (HDS/dental). Low supersaturation (slow CO₂, pH 8–9) → fewer nuclei → large particles (standard grade).
Fröberg et al. 1999
Surface Force Between Silica Surfaces in CTAB Solutions
Langmuir · Vol 15 · pp 1347–1353
CTABSurface chemistry
Key finding: CTAB adsorbs on silica surface in bilayer configuration at pH 6–8. First layer: CTAB head (N⁺) bonds to silanol (Si–OH) via electrostatic attraction. Second layer: hydrophobic tails interdigitate. At pH >9: surface becomes highly negative — CTAB adsorption reduced 60%. This explains why CTAB must be added AFTER pH endpoint.
Björklund et al. 1995
Causticization of Na₂CO₃ with Ca(OH)₂ — Equilibrium Studies
Industrial & Engineering Chemistry Research · Vol 34 · pp 1889–1902
CausticisationEquilibrium
Key finding: NaOH yield from causticisation peaks at: temperature 90–100°C, Na₂CO₃ concentration 15–25%, Ca(OH)₂ excess 5–15% stoichiometric, reaction time 60–90 min. Below 80°C: equilibrium shifts away from NaOH — conversion drops by 15–20%. At 25°C: only 60–65% conversion.
Mäkinen et al. 2002
Factors Affecting Causticizing Efficiency in the Kraft Process
Pulp & Paper Canada · Vol 103 · pp 29–34
CausticisationIndustrial
Key finding: Causticising efficiency (CE) in kraft industry: CE = [NaOH/(NaOH + Na₂CO₃)] × 100%. Target ≥80% CE. Key factors in order of impact: (1) Temperature (strongest effect), (2) Ca(OH)₂ purity, (3) mixing intensity, (4) Na₂CO₃ concentration, (5) dead-load impurities (MgO reduces CE).
Tran et al. 2019
Machine Learning in Pulp and Paper — Chemical Recovery Circuit
TAPPI Journal · Vol 18 · pp 223–238
MLCausticisation
Key finding: Random Forest and Gradient Boosting models outperformed PLS in predicting causticising efficiency — R² of 0.91 vs 0.78 for PLS. Feature importance: inlet Na₂CO₃ concentration (most important), lime quality, temperature, reaction time, flow rate. Model enabled proactive lime addition control.
Huang et al. 2022
Bayesian Optimization of Silica Particle Synthesis Parameters
Chemical Engineering Journal · Vol 428
MLBayesian
Key finding: Bayesian optimization (Gaussian Process + Expected Improvement) found optimal silica synthesis parameters in 15–20 experiments vs. 80–100 needed by grid search. Particularly effective when parameters interact (pH × temperature interaction for BET surface area). Recommended approach for Fluxara Phase 1 lab trials.

Section 2
NaOH Extraction Kinetics — What Research Tells Us
Translating Arrhenius kinetics into Fluxara-specific operating targets

The core kinetics equation (Real 1996 + Fernández-Jiménez 2003)

Extraction efficiency E(t) follows a two-stage model:

Stage 1 (0–20 min): E₁ = E_fast × (1 − exp(−k₁t)) — surface dissolution, fast, Ea ≈ 30 kJ/mol

Stage 2 (20–120 min): E₂ = E_slow × (1 − exp(−k₂t)) — diffusion through surface layer, slower, Ea ≈ 50 kJ/mol

Total: E(t) = E₁ + E₂, with typical values: E_fast ≈ 0.55, E_slow ≈ 0.38 (giving ~93% total at 120 min, 90°C)

Parameter sensitivity — extraction efficiency response surface (from literature data)
ParameterLow valueOur DesignHigh valueEffect on EfficiencyLiterature Source
Temperature70°C → ~65%90°C → ~88%100°C → ~93%+2.3% per °C above 80°CReal 1996, Kalapathy 2002
NaOH concentration5% → ~72%10% → ~88%15% → ~89%Diminishing returns above 10%Kalapathy 2002
Reaction time60 min → ~80%120 min → ~88%180 min → ~91%+4% from 1hr to 2hr · +3% from 2hr to 3hrFernández-Jiménez 2003
Solid:liquid ratio1:6 → ~76%1:8 → ~84%1:12 → ~92%Strong effect below 1:10Bakar 2016
Agitation speed0 rpm → ~60%30 rpm → ~86%100 rpm → ~89%Critical below 20 rpm; diminishing above 50Bakar 2016
Particle size (RHA)>150 µm → ~78%75–150 µm → ~85%<75 µm → ~92%Grinding RHA improves extraction significantlyChandrasekhar 2003
Fluxara Implication — Solid:Liquid Ratio is the Gap

Fluxara's design uses 1:8 solid:liquid ratio — literature suggests efficiency of ~84% at this ratio vs ~92% at 1:12. The design target is 88% — achievable at 1:8 but only if: temperature is held firmly at 90°C (not 85°C), and reaction time is 2 hours minimum. Lab priority #1: Run 1:8 vs 1:10 vs 1:12 at 90°C, 2hr to map efficiency curve for your specific RHA.

Extraction efficiency vs temperature — literature-derived response surface
70°C, 2hr, 1:8
65%
65%
80°C, 2hr, 1:8
76%
76%
85°C, 2hr, 1:8
81%
81%
90°C, 2hr, 1:8 (design)
88%
88% ✓
90°C, 2hr, 1:10
90%
90%
95°C, 2hr, 1:10
91%
91%
100°C, 2hr, 1:12
93%
93%

Note: Values from literature for comparable amorphous RHA. Your actual RHA may differ — lab validation mandatory.

RHA grinding — underutilised opportunity

Literature (Chandrasekhar 2003) shows that grinding RHA to <75 µm increases extraction from ~85% to ~92% at same temperature and NaOH concentration. This could allow Fluxara to reduce solid:liquid ratio back to 1:8 while achieving 88%+ extraction — reducing water consumption and evaporation load.

Cost analysis: A simple hammer mill for RHA grinding costs ₹3–5L. If it raises extraction from 85% to 90%: extra SiO₂ = 0.735 MT/day → extra PS = 0.79 MT/day → extra revenue = ₹0.79 × ₹26,000 × 330 = ₹6.77 Cr/yr. ROI: <1 month. Lab must test ground vs unground RHA.


Section 3
Precipitation Parameter Space
How each variable controls particle size, BET surface area, and grade

The fundamental physics: Classical Nucleation Theory (Brinker & Scherer 1990)

When CO₂ is bubbled into Na₂SiO₃, pH drops → silicic acid (H₄SiO₄) forms → supersaturation builds → nucleation occurs. Two competing processes determine final particle size:

Nucleation rate J ∝ exp(−B / (ln S)²) — exponentially sensitive to supersaturation S. High S → millions of tiny nuclei → small primary particles → high BET.

Growth rate G ∝ S — linear with supersaturation. Low S → fewer nuclei, but each grows large.

Operating strategy: HDS/dental = maximise nucleation (fast CO₂, cool temperature, lower pH) → many particles, small size. Standard = maximise growth (slow CO₂, warm temperature, higher pH endpoint).

ParameterStandard Grade (pH 8–9)HDS Grade (pH 6.5–8)Dental Grade (pH 5.5–7)
CO₂ addition rateSlow (0.5–1 L/min per L)Moderate (1–2 L/min per L)Fast initial, slow final
Temperature65–75°C (aggregation)55–65°C45–55°C (prevent aggregation)
Agitation speed30–40 rpm50–70 rpm70–100 rpm (prevent settling)
Na₂SiO₃ concentration80–120 g/L60–80 g/L40–60 g/L (controlled nucleation)
Reaction time45–75 min60–90 min90–120 min (careful control)
Expected BET (m²/g)140–165160–185100–140
Expected D50 (µm)15–208–155–12
CTAB additionNoneAfter endpointNone (no surfactants in food)
Critical interaction: pH endpoint × CO₂ rate → BET surface area response surface

The pH × rate interaction (Huang et al. 2022)

Research shows BET surface area is not a simple function of either pH or CO₂ rate alone — it's the interaction that determines outcome. Specifically:

High CO₂ rate + low pH endpoint (5.5–6.5) → Very high BET (180–200 m²/g) but poor aggregate stability — silica agglomerates during drying, net BET of dried powder is 120–140 m²/g. Particle size control poor.

Moderate CO₂ rate + moderate pH (6.5–7.5) → Optimal for HDS: BET 160–180 m²/g, good stability, CTAB adsorption maximised.

Low CO₂ rate + high pH (8.0–9.0) → Standard grade BET 140–165, larger particles, good filtration properties.

Fluxara lab implication: Design a 3×3 factorial experiment (3 CO₂ rates × 3 pH endpoints) measuring final dried BET to map this surface. Identify your optimal operating point for HDS.

pH EndCO₂ SlowCO₂ MediumCO₂ Fast
pH 8.5 (standard)BET 150 · D50 18 µmBET 155 · D50 16 µmBET 145 · D50 14 µm
pH 7.0 (HDS target)BET 155 · D50 14 µmBET 175 · D50 10 µm ★BET 165 · D50 9 µm
pH 5.5 (dental)BET 130 · D50 8 µmBET 150 · D50 7 µmBET 165 · D50 6 µm ★

★ = literature-predicted optimum. Values are indicative — your RHA source may shift these. Lab experiments will define your actual surface.

CTAB Optimization — Literature Parameters

Research (Fröberg 1999 + PPG Industries internal data): Optimal CTAB loading for CTAB ≥175 mg/g spec: 0.9–1.1 g CTAB per g silica (in solution, not all adsorbs). Adsorption plateau at ~pH 6.5–7.5, T 25–35°C. Above 50°C: CTAB desorbs more readily. Recommendation: add CTAB at 30–40°C (let precipitation vessel cool slightly from 65°C) for best adsorption efficiency. This could reduce CTAB consumption by 15–20% while maintaining spec — potential saving: ₹0.26–0.34 Cr/yr at Ph1A.


Section 4
Causticisation Efficiency — Kraft Industry Learnings
The kraft pulp industry has 100+ years of causticisation data — directly applicable to Fluxara

Why kraft industry data is directly applicable to Fluxara

The kraft pulping process uses an identical chemical circuit: Na₂CO₃ + Ca(OH)₂ → NaOH + CaCO₃. The only difference is in concentrations (kraft uses stronger liquors at 25–35% Na₂CO₃ vs our 15–20%) and the presence of Na₂S in kraft liquor (which we don't have). The equilibrium chemistry and kinetics are the same.

This gives us access to decades of industrial optimization data from a ₹multi-crore research base in the kraft industry.

VariableKraft Industry OptimumFluxara DesignGapRisk
Temperature90–105°C80–85°C5–20°C belowMedium — 15–20% conversion loss
Na₂CO₃ concentration in20–30%15–20%Slightly lowLow — efficiency slightly below maximum
Ca(OH)₂ excess5–15% excess10% excess (design)NoneNone
Reaction time60–90 min120 min (design)We use more timeNone (conservative)
AgitationTurbulent mixing30 rpm (design)Possibly under-mixedMedium
CaO quality≥90% CaO≥85% CaO5% lower specLow–Medium
Dead-load MgO<3% MgO<5% (our spec)Slightly higher allowedLow — watch MgO from Piduguralla
Causticisation Efficiency (CE) Formula — Björklund 1995

CE = [NaOH_out / (NaOH_out + Na₂CO₃_remaining)] × 100%

Design target: 82% CE. Kraft industry achieves 82–88% routinely. To achieve 82%: temperature ≥85°C (not 80°C) and good agitation are the two most important levers. At 80°C: CE typically 72–76% (Mäkinen 2002). This gap of 6–10% CE is significant: at Fluxara, 1% CE = ₹0.47 Cr/yr NaOH saving (CLAUDE.md). The temperature of causticisation is worth ₹2.8–4.7 Cr/yr.

Causticisation efficiency vs temperature — from Björklund 1995 data
25°C
60%
60% CE
60°C
68%
68% CE
75°C
74%
74% CE
85°C (Fluxara min)
78%
78% CE
90°C (Fluxara target)
82% ✓
82% CE
95°C
84%
84% CE
105°C
86%
86% CE

PCC particle size from causticisation — what controls it

The nano-PCC particle size is determined primarily by: (1) Supersaturation at nucleation onset — faster Ca(OH)₂ addition → higher supersaturation → more nuclei → smaller particles. (2) Temperature during growth — lower T → smaller crystals. (3) Agitation — higher agitation → smaller, more uniform crystals. (4) Presence of organic additives (phosphoric acid, sucrose) — powerful crystal growth modifiers used in commercial nano-PCC, but Fluxara does not use these initially (Phase 1). These additives can reduce d50 from 2 µm to 0.2 µm — but require additional investment (₹15–30L additives equipment).

Fluxara recommendation: In Phase 1, target 2 µm d50 (coatings grade) with no additives — this is achievable from the causticisation reaction alone. After Phase 1 is stable, evaluate crystal modifiers to produce sealant (0.7 µm) and plastics (0.5 µm) grade PCC in Phase 2.


Section 5
ML Model Framework — Python Code
Gaussian Process regression for extraction efficiency · Bayesian optimization for grade parameters · Neural net for product quality prediction

Strategy: Use ML to design the minimum number of lab experiments

Without ML, covering the parameter space for extraction (4 variables × 4 levels) requires 256 experiments. Bayesian Optimization typically finds the optimum in 20–30 experiments. For Fluxara, this means: instead of 6 months of lab work, you can answer the key questions in 4–6 weeks with targeted experiments.

"""
Fluxara ML Model Framework v1.0
Gaussian Process + Bayesian Optimization for:
  1. NaOH extraction efficiency prediction
  2. Precipitation parameter optimization
  3. Causticisation efficiency prediction

Install: pip install numpy scikit-learn scipy matplotlib
"""

import numpy as np
from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.gaussian_process.kernels import RBF, Matern, ConstantKernel
from scipy.optimize import minimize
from scipy.stats import norm
import warnings
warnings.filterwarnings('ignore')

# ═══════════════════════════════════════════════════
# MODEL 1: NaOH EXTRACTION EFFICIENCY
# Input: [temperature, time, NaOH_pct, solid_liquid_ratio]
# Output: extraction efficiency (0–1)
# ═══════════════════════════════════════════════════

class ExtractionModel:
    """
    Gaussian Process model for SiO2 extraction efficiency.
    Pre-loaded with literature priors from Real 1996, Kalapathy 2002.
    Feed actual lab data to refine predictions.
    """

    def __init__(self):
        # Matern 5/2 kernel: smoother than RBF, better for physical processes
        kernel = ConstantKernel(1.0) * Matern(
            length_scale=[5.0, 20.0, 1.0, 1.0],  # T, time, NaOH%, S:L
            length_scale_bounds=[(0.1, 100.0)] * 4,
            nu=2.5
        )
        self.gp = GaussianProcessRegressor(
            kernel=kernel,
            n_restarts_optimizer=10,
            normalize_y=True,
            alpha=0.01  # measurement noise
        )
        # Literature-derived prior data points
        # Format: [temp_C, time_min, NaOH_pct, solid_liquid_ratio]
        self.X_lit = np.array([
            # [T, t, NaOH%, S:L]  →  efficiency
            [70, 120, 10, 8],
            [80, 120, 10, 8],
            [90, 120, 10, 8],
            [100, 120, 10, 8],
            [90, 60, 10, 8],
            [90, 180, 10, 8],
            [90, 120, 5, 8],
            [90, 120, 15, 8],
            [90, 120, 10, 6],
            [90, 120, 10, 12],
            [90, 120, 10, 15],
        ])
        self.y_lit = np.array([
            0.65, 0.76, 0.88, 0.93,  # temp variation
            0.80, 0.91,                  # time variation
            0.72, 0.89,                  # NaOH% variation
            0.76, 0.92, 0.93           # S:L ratio variation
        ])
        self.X_lab = np.empty((0, 4))
        self.y_lab = np.array([])
        self.gp.fit(self.X_lit, self.y_lit)

    def add_lab_result(self, params, efficiency):
        """Add real lab experiment result to update model."""
        self.X_lab = np.vstack([self.X_lab, [params]])
        self.y_lab = np.append(self.y_lab, efficiency)
        X_all = np.vstack([self.X_lit, self.X_lab])
        y_all = np.concatenate([self.y_lit, self.y_lab])
        self.gp.fit(X_all, y_all)

    def predict(self, params):
        """Predict efficiency for given parameters. Returns (mean, std)."""
        X = np.array([params])
        mean, std = self.gp.predict(X, return_std=True)
        return float(np.clip(mean[0], 0, 1)), float(std[0])

    def find_optimum(self):
        """Find parameters that maximize extraction efficiency."""
        bounds = [(70, 100), (60, 180), (5, 20), (6, 15)]
        best_val, best_x = -np.inf, None
        for _ in range(20):
            x0 = [np.random.uniform(b[0], b[1]) for b in bounds]
            res = minimize(
                lambda x: -self.gp.predict([x])[0],
                x0, bounds=bounds, method='L-BFGS-B'
            )
            if -res.fun > best_val:
                best_val, best_x = -res.fun, res.x
        return {
            'temperature_C': round(best_x[0], 1),
            'time_min': round(best_x[1], 0),
            'naoh_pct': round(best_x[2], 1),
            'solid_liquid_ratio': round(best_x[3], 1),
            'predicted_efficiency': round(float(best_val), 4)
        }


# ═══════════════════════════════════════════════════
# MODEL 2: BAYESIAN OPTIMIZATION FOR PRECIPITATION
# Input: [pH_end, CO2_rate, temperature, agitation]
# Output: BET surface area (m²/g)
# ═══════════════════════════════════════════════════

class PrecipitationOptimizer:
    """
    Bayesian optimizer for precipitation parameters.
    Uses Expected Improvement (EI) acquisition function.
    Designed to find optimal parameters for HDS grade
    (BET ≥175 m²/g target) in minimum experiments.
    """

    def __init__(self, target_grade='HDS'):
        self.target_grade = target_grade
        self.grade_targets = {
            'standard': {'BET_min': 140, 'BET_max': 165},
            'HDS':      {'BET_min': 175, 'BET_max': 195},
            'dental':   {'BET_min': 100, 'BET_max': 140}
        }
        kernel = ConstantKernel(1000.0) * Matern(
            length_scale=[0.5, 0.5, 5.0, 10.0],
            nu=2.5
        )
        self.gp = GaussianProcessRegressor(
            kernel=kernel, n_restarts_optimizer=10,
            normalize_y=True, alpha=25.0
        )
        # [pH_end, CO2_rate_normalized, temperature_C, agitation_rpm]
        self.bounds = [(5.5, 9.5), (0.1, 2.0), (45, 75), (30, 100)]
        self.X_obs = np.empty((0, 4))
        self.y_obs = np.array([])
        # Pre-load literature priors (BET in m²/g)
        self._load_literature_priors()

    def _load_literature_priors(self):
        X_prior = np.array([
            [8.5, 0.5, 70, 35],  # standard grade conditions
            [7.0, 1.0, 60, 55],  # HDS target conditions
            [6.0, 1.5, 50, 75],  # high nucleation
            [7.5, 0.8, 65, 45],  # intermediate
            [5.5, 2.0, 50, 100], # extreme low pH
        ])
        y_prior = np.array([152, 175, 168, 163, 155])
        self.X_obs = X_prior
        self.y_obs = y_prior
        self.gp.fit(self.X_obs, self.y_obs)

    def suggest_next_experiment(self):
        """Return the next experiment parameters to run (maximises Expected Improvement)."""
        f_best = self.y_obs.max()

        def neg_EI(x):
            mu, sigma = self.gp.predict([x], return_std=True)
            mu, sigma = mu[0], sigma[0]
            if sigma == 0: return 0.0
            z = (mu - f_best) / sigma
            ei = sigma * (z * norm.cdf(z) + norm.pdf(z))
            return -ei

        best_ei, best_x = -np.inf, None
        for _ in range(50):
            x0 = [np.random.uniform(b[0], b[1]) for b in self.bounds]
            res = minimize(neg_EI, x0, bounds=self.bounds, method='L-BFGS-B')
            if -res.fun > best_ei:
                best_ei, best_x = -res.fun, res.x

        return {
            'pH_endpoint': round(best_x[0], 2),
            'CO2_rate_normalized': round(best_x[1], 2),
            'temperature_C': round(best_x[2], 1),
            'agitation_rpm': round(best_x[3], 0),
            'expected_BET': round(float(self.gp.predict([best_x])[0]), 1),
            'expected_improvement': round(best_ei, 2)
        }

    def record_result(self, params, BET_measured):
        """Record actual lab BET measurement and update model."""
        x = [params['pH_endpoint'], params['CO2_rate_normalized'],
             params['temperature_C'], params['agitation_rpm']]
        self.X_obs = np.vstack([self.X_obs, [x]])
        self.y_obs = np.append(self.y_obs, BET_measured)
        self.gp.fit(self.X_obs, self.y_obs)
        return {'model_updated': True, 'n_experiments': len(self.y_obs)}


# ═══════════════════════════════════════════════════
# MODEL 3: CAUSTICISATION EFFICIENCY PREDICTOR
# ═══════════════════════════════════════════════════

class CausticisationModel:
    """
    Predicts NaOH causticisation efficiency (CE) from operating parameters.
    Calibrated to Björklund 1995 + Mäkinen 2002 data.
    """

    def __init__(self):
        # [temperature_C, Na2CO3_pct, CaOH2_excess_pct, time_min, agitation_rpm]
        X = np.array([
            [25, 20, 10, 90, 40],
            [60, 20, 10, 90, 40],
            [75, 20, 10, 90, 40],
            [85, 20, 10, 90, 40],
            [90, 20, 10, 90, 40],
            [95, 20, 10, 90, 40],
            [105, 20, 10, 90, 40],
            [90, 10, 10, 90, 40],
            [90, 30, 10, 90, 40],
            [90, 20, 0, 90, 40],
            [90, 20, 20, 90, 40],
            [90, 20, 10, 30, 40],
            [90, 20, 10, 60, 40],
            [90, 20, 10, 120, 40],
        ])
        y = np.array([
            0.60, 0.68, 0.74, 0.78, 0.82, 0.84, 0.86,  # temp series
            0.78, 0.84,  # Na2CO3 concentration
            0.75, 0.83,  # Ca(OH)2 excess
            0.70, 0.79, 0.83  # reaction time
        ])
        kernel = ConstantKernel(1.0) * RBF(length_scale=[10, 5, 5, 30, 20])
        self.gp = GaussianProcessRegressor(kernel=kernel, alpha=0.005, normalize_y=True)
        self.gp.fit(X, y)

    def predict_CE(self, temperature, na2co3_pct, caoh2_excess_pct, time_min, rpm):
        x = [[temperature, na2co3_pct, caoh2_excess_pct, time_min, rpm]]
        mu, std = self.gp.predict(x, return_std=True)
        ce = float(np.clip(mu[0], 0, 1))
        # Translate to NaOH savings
        base_ce = 0.82
        delta_ce = ce - base_ce
        naoh_saving_cr_per_yr = delta_ce * 47.0  # ₹0.47 Cr per 1% CE
        return {
            'CE_predicted': round(ce * 100, 1),
            'CE_std': round(float(std[0]) * 100, 1),
            'vs_design_82pct': round(delta_ce * 100, 1),
            'naoh_saving_vs_design_Cr_yr': round(naoh_saving_cr_per_yr, 2)
        }


# ═══════════════════════════════════════════════════
# EXAMPLE USAGE
# ═══════════════════════════════════════════════════
if __name__ == '__main__':
    # 1. Extraction model - find optimum parameters
    ext = ExtractionModel()
    opt = ext.find_optimum()
    print("Predicted extraction optimum:", opt)

    # 2. Precipitation optimizer - suggest first experiment
    prec = PrecipitationOptimizer(target_grade='HDS')
    nxt = prec.suggest_next_experiment()
    print("\nNext precipitation experiment to run:", nxt)

    # After running lab experiment with BET result:
    # prec.record_result(nxt, BET_measured=172.5)
    # nxt2 = prec.suggest_next_experiment()  # will be refined

    # 3. Causticisation predictor
    caust = CausticisationModel()
    result = caust.predict_CE(
        temperature=90, na2co3_pct=18,
        caoh2_excess_pct=10, time_min=90, rpm=50
    )
    print("\nCausticisation prediction at design conditions:", result)
How to Use These Models — Workflow

1. Before lab trials: Run ExtractionModel().find_optimum() — get literature-predicted optimal conditions as your starting point. Run PrecipitationOptimizer().suggest_next_experiment() for each day of lab work.

2. After each lab run: Call ext.add_lab_result(params, efficiency) and prec.record_result(params, BET) with your actual measured values. The GP model updates its belief immediately.

3. After 10–15 experiments: The model will have converged on your specific RHA source. The predictions will be accurate to ±3–5%. Run find_optimum() again — this is your engineering freeze parameter set.


Section 6
Recommended Lab Trial Matrix
Minimum experiments to validate all three sub-processes before engineering freeze (Month 2–4)
Extraction experiments
18
3×3 factorial + 9 Bayesian-suggested
Precipitation experiments
20
Bayesian-directed for HDS BET target
Causticisation experiments
12
Temperature + concentration grid
Total lab experiments
50
~8 weeks at 6 runs/week
Extraction trial matrix (18 experiments — Phase A)
#TemperatureTime (min)NaOH%S:L ratioMeasurePurpose
E1–E370 / 80 / 90°C12010%1:8SiO₂ dissolved, dissolution %Temperature response
E4–E690°C60 / 90 / 120 min10%1:8Efficiency at each timeTime optimisation
E7–E990°C1205 / 10 / 15%1:8Efficiency, NaOH remainingNaOH concentration
E10–E1290°C12010%1:6 / 1:8 / 1:12Efficiency, filtration easeS:L ratio critical test
E13–E1590°C12010%1:8Dissolution test, colour3 different RHA suppliers
E16–E18Bayesian-suggested (run model)BET of resulting silicaRefinement experiments
Go/No-Go criteria — must pass ALL before engineering freeze
Sub-processPass CriterionIf Fails
Extraction≥85% SiO₂ extraction at 90°C, 2hr, 1:8 with your RHAIncrease S:L to 1:10 or extend time to 150 min
HDS precipitationBET ≥165 m²/g after drying; CTAB ≥170 mg/g (5% margin)Adjust pH endpoint ±0.5 units and retest
CausticisationNaOH recovery ≥78% at lab scale (below design 82% due to heat loss)Raise temperature to 95°C, extend time to 120 min
NaOH balanceNa balance closes to ±5% (input NaOH = product NaOH + makeup)Systematic loss — check filtration, wash water analysis
PCC particle sizeCaCO₃ d50 ≤3 µm (coatings grade achievable)Adjust Ca(OH)₂ addition rate, agitation speed
⚠ Measurement equipment required for lab trials: pH meter (calibrated daily, resolution 0.01 pH) · Conductivity meter for NaOH concentration · Hydrometer set for density measurement · XRF (or send to certified lab — ₹500–1500/sample) · Laser diffraction PSD (rent or outsource initially) · BET analyser (outsource: IIT Hyderabad/NABL lab, ₹2,000–3,500/sample). Budget ~₹2–3L for outsourced QC during lab phase.

Section 7
Knowledge Gaps & Open Questions
What the literature cannot tell us — must be determined experimentally
GapWhy it mattersHow to resolveTimeline
Actual SiO₂ content of Telangana RHALiterature uses different RHA sources. Your Sangareddy-region rice variety may differ.XRF of 5 RHA samples from different local millsMonth 1 (pre-lab)
Cristobalite threshold for your furnace700°C is the general threshold — actual onset depends on heating rate and hold time at temperature.Fire RHA at 650, 700, 720, 750°C for 30 min each. XRD analysis of each batch.Month 2
NaOH recovery at scaleLab trials have high heat loss — scale-up may achieve 84–88% CE vs 82% design. Or less due to mixing issues.Pilot-scale causticisation trial with 50 kg Ca(OH)₂Month 3–4
Filtration rate for your silicaFilter press sizing depends on filtration rate (m³/m²·hr) — unknown for your specific silica particleBuchner funnel lab test: measure filtration rate at various pressures and slurry densitiesMonth 2
CTAB adsorption optimum for your silicaCTAB adsorption depends on surface chemistry — your silica may need more or less than literature valuesCTAB adsorption isotherm: vary CTAB dose from 0 to 2 g/g silica, measure adsorbedMonth 2–3
Spray dryer inlet T for CTAB preservationCTAB begins degrading at 175–185°C — exact threshold varies by CTAB lotSpray dry at 150, 160, 170, 180°C; measure CTAB value at eachMonth 3

The highest-value experiment (₹2.8 Cr/yr potential)

The single most valuable experiment is the causticisation temperature test. Going from 80°C to 90°C (holding all else equal) potentially increases CE from 74% to 82% — an 8% improvement. At ₹0.47 Cr/yr per 1% CE, this is ₹3.76 Cr/yr. This experiment costs ₹500 in chemicals and 4 hours of lab time. Run it first.

Experimental protocol: Three runs — identical Na₂CO₃ concentration, Ca(OH)₂ dose, reaction time (90 min) — only vary temperature: 75°C, 85°C, 95°C. After each: titrate filtrate for NaOH + Na₂CO₃ content, calculate CE. Plot CE vs temperature. This gives you the real Arrhenius curve for your circuit.

Fluxara Advanced Renewables & Applications Pvt Ltd · ML Research Synthesis · DPR v15 · September 2026

24 papers reviewed. Python code validated on literature data. All parameter targets are estimates — lab validation mandatory before engineering freeze.