#include "AnT.hpp"

#define tau     parameters[0]
#define eta     parameters[1]
#define Da      parameters[2]
#define gamma   parameters[3]
#define B       parameters[4]
#define beta    parameters[5]
#define theta_c parameters[6]

#define xi      currentState[0]
#define theta   currentState[1]
#define xi_t    delayState[0]
#define theta_t delayState[1]

bool delayed_cstr (const Array<real_t>& currentState,
		   const Array<real_t>& delayState,
		   const Array<real_t>& parameters,
		   Array<real_t>& rhs)
{
  rhs[0] = tau * ( -xi + (1-eta)*xi_t + Da*(1-xi)*exp(theta/(1+theta/gamma) ) );
  rhs[1] = tau * ( -theta + (1-eta)*theta_t +B*Da*(1-xi)*exp(theta/(1+theta/gamma))-beta*(theta-theta_c) );
  return true;
}

#undef tau
#undef eta
#undef Da
#undef gamma
#undef B
#undef beta
#undef theta_c

#undef xi
#undef theta
#undef xi_t
#undef theta_t

extern "C" { void connectSystem () { DDE_Proxy::systemFunction = delayed_cstr; } }


