// ************************************************************************** //
//                                                                            //
//    eses                   eses                                             //
//   eses                     eses                                            //
//  eses    eseses  esesese    eses   Embedded Systems Group                  //
//  ese    ese  ese ese         ese                                           //
//  ese    eseseses eseseses    ese   Department of Computer Science          //
//  eses   eses          ese   eses                                           //
//   eses   eseses  eseseses  eses    University of Kaiserslautern            //
//    eses                   eses                                             //
//                                                                            //
// ************************************************************************** //
// This example from systems biology is purely continuous. It describes the   //
// growth of predator and prey populations that are governed by the parameters//
// mentioned below.                                                           //
// ************************************************************************** //

macro pred0 = 100.0;    // initial population of predators
macro prey0 = 10000.0;  // initial population of prey
macro a = 0.04;         // natural growth rate of prey
macro b = 0.0005;       // prey death rate per encounter with predator
macro c = 0.2;          // death rate of predator in absence of food
macro e = 0.1;          // efficiency of turning prey into new predators

module Predator() {
    hybrid real pop_pred,pop_prey;
    pop_prey = prey0;
    pop_pred = pred0;
    pause;
    flow{
        drv(pop_prey) <- cont(a * pop_prey - b * pop_pred * pop_prey);
        drv(pop_pred) <- cont(e * b * pop_prey * pop_pred - c * pop_pred);
    } until(false);
}