Multiple Events
Create one DepositionEvent per canonical nuclide ID, such as cs_137 and
sr_90, and keep each event's integrated air activity and wet deposition as
unit-bearing quantities. The public engine runs every event independently,
aligns each trajectory to the absolute output dates, superposes compatible
trajectories, and preserves per-event detail in event_contributions:
from datetime import date
import astropy.units as u
import numpy as np
from ecosys import EcosysEngine
from ecosys.domain.events import DepositionEvent
from ecosys.domain.populations import PopulationCohorts
from ecosys.domain.request import SimulationRequest
events = tuple(
DepositionEvent(
nuclide_id=nuclide_id,
date=np.datetime64(event_date),
integrated_air_activity=1 * u.Bq * u.s / u.m**3,
wet_ground_deposition=1 * u.Bq / u.m**2,
rainfall=0 * u.mm,
)
for nuclide_id, event_date in (("cs_137", "2001-06-01"), ("sr_90", "2001-07-01"))
)
population = PopulationCohorts(
initial_age=np.array([30]) * u.year,
population=np.array([1]) * u.dimensionless_unscaled,
)
request = SimulationRequest(
events,
np.array([0, 30, 365]) * u.day,
population,
output_start_date=date(2001, 6, 1),
)
result = EcosysEngine().run(request)
len(result.event_contributions) # one aligned contribution per event
result.per_capita.interval # superposed batch + time + cohort dose