import sys, calendar, numpy as np, pickle
from datetime import date, timedelta
from srad_fix import srad_mask, run_year, CAPEX, CRF, OPEX, stack, dem, p_srad, thr
from replica_constant_sec import read_day
y=int(sys.argv[1]); Cs=[float(v) for v in sys.argv[2:]]
nd=366 if calendar.isleap(y) else 365
days=[date(y,1,1)+timedelta(k) for k in range(nd)]
prices={d: read_day(f"omie/marginalpdbc_{d:%Y%m%d}.1") for d in days}
try: BR=np.load(f'band_real_{y}.npy')
except Exception: BR=np.zeros((nd,24))
A=srad_mask(days); kg=dem*nd
out={}
for C in Cs:
    r=run_year(days,prices,BR,A,C,use_band=bool(BR.any()))
    if r is None: print(f"{y} C={C}: INFACTIBLE",flush=True); continue
    out[C]=dict(LCOH=r['LCOH'],ec=r['ec'],br=r['br'],srad=r['srad'],hours=r['hours'])
    print(f"{y} C={C:4.1f} LCOH={r['LCOH']:.4f} ec={r['ec']:10.0f} br={r['br']:7.0f} h={r['hours']}",flush=True)
pickle.dump(out,open(f'my_fix_{y}_{Cs[0]:.0f}.pkl','wb'))
