АШИГТ МАЛТМАЛЫН БАЯЖУУЛАЛТЫН ТЕХНИК, ТЕХНОЛОГИ

Ашигт малтмалын баяжуулалтын чиглэлээр сурч буй оюутан сурагчид, залуу инженерүүдэд зориулав.

Friday, January 23, 2026

ХАГАС ӨӨРӨӨ НУНТАГЛАЛТЫН ТЭЭРМИЙН (SAG) ЧАДАЛ СОНГОХ ТООЦОО



ЭНЭХҮҮ ПАЙТОН КОД НЬ ХҮДРИЙН ХАТУУЛГЫН ИНДЕКС A*b АШИГЛАН (JKSIMMET) ХӨН-ЫН ТЭЭРМИЙН ЧАДЛЫГ ТООЦНО.
ПРОГРАММЫН ӨГӨГДӨЛ:
 		
 A*b = 42.5
 Wi = 17.8 kWh/t
 F80 = 304000 micron (304 mm)
 T80 = 1700 micron (1.7 mm)
 Q = 1812 tph
 
#-------------------------------------------------------------------------
# SAG тээрмийн чадлын тооцоог хатуулгын A*b индекс ашиглан тооцох программ
#-------------------------------------------------------------------------

import math
from dataclasses import dataclass

# ----------------- Өгөгдлийн бүтэц ----------------- #

@dataclass
class SagOreData:
    ab: float       # JK A*b
    wi: float       # Bond ball mill Wi, kWh/t
    f80_micron: float  # SAG feed F80, micron
    t80_micron: float  # SAG product T80 (BM feed), micron
    q_tph: float       # Fresh feed rate, t/h


@dataclass
class SagCalcParams:
    ab_ref: float = 40.0    # Reference A*b for "medium" ore
    gamma: float = 0.7      # Exponent in C_Ab = (Ab_ref / Ab)^gamma
    c_oper: float = 1.3     # Operating condition factor (fill, speed, etc.)
    eta_drive: float = 0.97 # Drive efficiency
    eta_motor: float = 0.97 # Motor efficiency
    sf: float = 1.10        # Safety factor for installed power


@dataclass
class SagResult:
    e_bond_sag: float   # Bond reference energy F80->T80, kWh/t
    c_ab: float         # Hardness factor from A*b
    c_oper: float       # Operating factor
    e_sag: float        # Final SAG specific energy, kWh/t
    p_net_kw: float     # Net SAG power, kW
    p_inst_kw: float    # Installed SAG power, kW


# ----------------- Туслах функцууд ----------------- #

def bond_energy_f_to_t(wi: float, f80_micron: float, t80_micron: float) -> float:
    """
    Bond equation for size reduction F80 -> T80.
    E (kWh/t) = 10 * Wi * (1/sqrt(T80) - 1/sqrt(F80))
    F80, T80 in micron.
    """
    f80 = max(f80_micron, 1.0)
    t80 = max(t80_micron, 1.0)

    term = (1.0 / math.sqrt(t80)) - (1.0 / math.sqrt(f80))
    e_bond = 10.0 * wi * term
    return max(e_bond, 0.0)


def hardness_factor_ab(ab: float, ab_ref: float, gamma: float) -> float:
    """
    C_Ab = (Ab_ref / Ab)^gamma
    - Ab < Ab_ref -> C_Ab > 1 (hard ore, more energy)
    - Ab > Ab_ref -> C_Ab < 1 (soft ore, less energy)
    """
    ab_eff = max(ab, 1e-6)
    return (ab_ref / ab_eff) ** gamma


def sag_power_from_ab(ore: SagOreData, params: SagCalcParams) -> SagResult:
    # 1) Bond reference energy for coarse grinding: F80 -> T80
    e_bond_sag = bond_energy_f_to_t(
        wi=ore.wi,
        f80_micron=ore.f80_micron,
        t80_micron=ore.t80_micron
    )

    # 2) Hardness factor from A*b
    c_ab = hardness_factor_ab(
        ab=ore.ab,
        ab_ref=params.ab_ref,
        gamma=params.gamma
    )

    # 3) Final SAG specific energy with operating factor
    e_sag = e_bond_sag * c_ab * params.c_oper  # kWh/t

    # 4) Net power: P_net (kW) = E_sag (kWh/t) * Q (t/h)
    p_net_kw = e_sag * ore.q_tph

    # 5) Installed power (mechanical + electrical losses, safety factor)
    p_inst_kw = p_net_kw / (params.eta_drive * params.eta_motor) * params.sf

    return SagResult(
        e_bond_sag=e_bond_sag,
        c_ab=c_ab,
        c_oper=params.c_oper,
        e_sag=e_sag,
        p_net_kw=p_net_kw,
        p_inst_kw=p_inst_kw
    )


# ----------------- ЖИШЭЭ: Эрдэнэттэй төстэй өгөгдөл ----------------- #

if __name__ == "__main__":
    # Таны өгсөн өгөгдөл:
    # A*b = 42.5, Wi = 17.8 kWh/t,
    # F80 = 304000 micron (304 mm),
    # T80 = 1700 micron (1.7 mm),
    # Q = 1812 tph
    ore_data = SagOreData(
        ab=42.5,
        wi=18,
        f80_micron=304000.0,
        t80_micron=1700.0,
        q_tph=1812
    )

    # Тооцооны параметр (эхний таамаг):
    calc_params = SagCalcParams(
        ab_ref=40.0,   # "дунд" хүдэр
        gamma=0.7,     # A*b-ийн нөлөөний зэргийн үзүүлэлт
        c_oper=1.3,    # ажиллагааны нөхцөл (fill, speed, etc.)
        eta_drive=0.97,
        eta_motor=0.97,
        sf=1.10
    )

    result = sag_power_from_ab(ore_data, calc_params)

    print("======= SAG ТЭЭРМИЙН ЧАДЛЫН ТООЦОО (A*b ашигласан) =======")
    print(f"Бондын томьёогоор (F80->T80): {result.e_bond_sag:6.3f} кВт ц/т")
    print(f"Хатуулгын фактор C_Ab       : {result.c_ab:6.3f} (-)")
    print(f"Vйл ажиллагааны фактор      : {result.c_oper:6.3f} (-)")
    print(f"SAG тээрмийн хувийн энерги  : {result.e_sag:6.3f} кВт ц/т")
    print(f"SAG тээрмийн цэвэр чадал    : {result.p_net_kw/1000:6.2f} МВт")
    print(f"Суулрьлагдсан чадал         : {result.p_inst_kw/1000:6.2f} МВт")
    
    

No comments:

Post a Comment