#!/usr/bin/env python3
"""Andrade Safe · Engenharia Mecânica · Data center IA, modelo didático.
Balanço de energia em fluido monofásico a propriedades constantes e potência
hidráulica simplificada. Não realiza projeto de CDU, cold plate ou tubulação.
"""
from math import isfinite

def calcular(q_kw=100.0, dt_C=5.0, rho=997.0, cp=4180.0, dp_kPa=100.0, eta=0.60):
    if not all(isinstance(v,(int,float)) and isfinite(v) for v in (q_kw,dt_C,rho,cp,dp_kPa,eta)):
        raise ValueError('Informe valores numéricos finitos')
    if min(q_kw,dt_C,rho,cp,eta)>0 and dp_kPa>=0 and eta<=1:
        mdot = (q_kw*1000)/(cp*dt_C)
        V_m3_s=mdot/rho
        return dict(mass_kg_s=mdot, flow_m3_h=V_m3_s*3600,flow_L_min=V_m3_s*60000,
                    hydraulic_W=dp_kPa*1000*V_m3_s, electric_pump_W=dp_kPa*1000*V_m3_s/eta)
    raise ValueError('Entradas inválidas para o modelo')

if __name__ == '__main__':
    for dt in (3,5,8,10):
        c=calcular(dt_C=dt)
        print(f'100 kW | deltaT={dt} K | {c["mass_kg_s"]:.3f} kg/s | {c["flow_m3_h"]:.3f} m3/h | {c["flow_L_min"]:.1f} L/min')
    base=calcular()
    print('BOMBA hipotética: Δp=100 kPa, eficiência=60% ->',round(base['electric_pump_W']), 'W')
