#include "AnT.hpp"

#define L_1   parameters[0]
#define L_2   parameters[1]
#define R_1   parameters[2]
#define R_2   parameters[3]
#define E_1   parameters[4]
#define E_2   parameters[5]
#define C     parameters[6]

#define g(x) (-x+x*x*x/3.0)

#define i_1   currentState[0]
#define i_2   currentState[1]
#define u     currentState[2]

bool BvP_circuit (const Array<real_t>& currentState,
		  const Array<real_t>& parameters,
		  Array<real_t>& rhs)
{
  rhs[0] = (E_1 - R_1 * i_1 - u)/L_1; 
  rhs[1] = (E_2 - R_2 * i_2 - u)/L_2;
  rhs[2] = (i_1 + i_2 - g(u))/C;

  return true;
}


extern "C" {

void connectSystem ()
{
  ODE_Proxy::systemFunction = BvP_circuit;
}

}

