Breakup

Header file: <libs/superdrops/collisions/breakup.hpp> [source]

template<NFragments NFrags>
struct DoBreakup

Public Functions

inline explicit DoBreakup(const NFrags nfrags)
bool operator()(Superdrop &drop1, Superdrop &drop2, const double prob, const double phi_coll, const double phi_out) const

Operator used as an adaptor such that DoBreakup satisfies the PairEnactX concept and so can be used as the EnactCollision function-like object in the DoCollisions struct.

This operator calls functions to enact the collision-breakup of two super-droplets.

NOTE: phi_out is not used since outcome of collision is already pre-determined to be breakup.

Parameters:
  • drop1 – First superdroplet.

  • drop2 – Second superdroplet.

  • prob – Probability of collision.

  • phi_coll – Random number in the range [0.0, 1.0] for collision.

  • phi_out – Random number in the range [0.0, 1.0] for outcome of collision (not used).

Returns:

True if the resulting superdroplet is null, otherwise false.

void breakup_superdroplet_pair(Superdrop &drop1, Superdrop &drop2) const

Private Functions

unsigned int breakup_gamma(const double prob, const double phi) const
void twin_superdroplet_breakup(Superdrop &drop1, Superdrop &drop2) const
void different_superdroplet_breakup(Superdrop &drop1, Superdrop &drop2) const

Private Members

NFrags nfrags
template<PairProbability Probability, NFragments NFrags>
inline MicrophysicalProcess auto CollBu(const unsigned int interval, const std::function<double(unsigned int)> int2realtime, const Probability collbuprob, const NFrags nfrags)
template<PairProbability Probability, NFragments NFrags>
inline MicrophysicalProcess auto CollBu(const unsigned int interval, const std::function<double(unsigned int)> int2realtime, const Probability collbuprob, const NFrags nfrags, const uint64_t seed)