master
John Lauer Publish thermal bottleneck planner, accepted candidate, analysis and native recording scripts 0049da5 29d ago
import sys,json,numpy as np
from pathlib import Path
P=Path(__file__).resolve().parent;sys.path.insert(0,str(P.parent/'thermal-expansion'))
from analyze import regions,copper
from thermal_model import ground,mesh,solve
out=P/(sys.argv[1] if len(sys.argv)>1 else 'candidate-01');result={}
for label,file in [('before',P.parent/'thermal-expansion/recording/bq25792-expanded-thermal.brd'),('after',out/'filled.brd')]:
 rs=regions(file);rs['PGND']=ground(file);result[label]={}
 for n,r in rs.items():
  q,T=solve(mesh(r['geometry'],r['sources'],.1),5,.8)
  result[label][n]={'areaMm2':r['areaMm2'],**q}
  np.savez_compressed(out/f'{label}-{n}.npz',temperatureRiseC=T,extent=r['geometry'].bounds)
  print(label,n,round(r['areaMm2'],2),round(q['bottomHeatW'],5),flush=True)
(out/'comparison.json').write_text(json.dumps(result,indent=2))