Exemplo n.º 1
0
void updateevent(double *t, double *y, int *istate) {
    int svar, method;
    double value;
    if (tEvent == *t) {
      if (typeevent == 1) {      /* specified in a data.frame */
        do {
          svar = svarevent[iEvent];
          method = methodevent[iEvent];
          value = valueevent[iEvent];
          if (method == 1) 
            y[svar] = value;
          else if (method == 2) 
            y[svar] = y[svar] + value;
          else if (method == 3) 
            y[svar] = y[svar] * value;
          tEvent = timeevent[++iEvent]; 
        } while ((tEvent == *t) && (iEvent < nEvent));
      } else {                  /* a root event or specific times */
        event_func(&n_eq, t, y);
        if (!rootevent)
          tEvent = timeevent[++iEvent];  /* karline: this was toggled off - why?*/
      }  
      *istate = 1;
    }
}
void event_action(void)
{
	event_func();
}