 function fieldConfig(){return {scenario:$('scenario').value,profile:$('profile').value,directionFrom:+$('direction').value,speed:+$('speed').value,inversionHeight:$('scenario').value.startsWith('mixed')?null:+$('cap').value,inversionStrength:$('scenario').value.startsWith('mixed')?1:0.05,upperOpposite:$('upper').value==='opposite',sourceHeightAGL:+$('height').value,elapsedSeconds:+$('time').value*60,releaseSeconds:+$('duration').value*60,removal:$('removal').value};}
 function profileSource(profile){return data.historic.sources.find(s=>s.id===profile);}
 function defaultDuration(profile){return profile==='unit'?30:profileSource(profile).max_hours_per_day*60;}
 function sourceRates(profile){if(profile==='unit')return {PM25:1,NOx:1,CO:1,VOC:1};const s=profileSource(profile);return Object.fromEntries(Object.keys(kinds).map(k=>[k,s[k+'_t_per_day']*1e6/(s.max_hours_per_day*3600)]));}
 function applyProfile(){const minutes=defaultDuration($('profile').value);$('duration').value=minutes;$('time').value=Math.max(60,minutes);markDirty();}
