/* define a microphysical process */ template concept MicrophysicalProcess = requires(P p, TeamMember &tm, unsigned int t, view_supers supers, State &state, NullMonitor mo) { { p.next_step(t) } -> std::convertible_to; { p.on_step(t) } -> std::same_as; { p.run_step(tm, t, supers, state, mo) } -> std::same_as; };