/* Steven Andrews, 1/28/97 */ /* Header for dynsys.c */ /* See documentation called dynsys doc */ /* Copyright 2003 by Steven Andrews. Permission is granted for non-commercial use of and modifications to the code. */ #ifndef __dynsys_h__ #define __dynsys_h__ typedef struct phpt { int sp; float *sa; int fp; int fs; float *fa; } *phptr; #define MaxIntPar 10 int ODEeuler(void (*eqm)(float *,float *,float *),float *k,int p,float *u,float tf,float dt,int (*trackfn)(float,int,float *)); int ODErk4(void (*eqm)(float *,float *,float *),float *k,int p,float *u,float tf,float dt,int (*trackfn)(float,int,float *)); int ODErkas(void (*eqm)(float *,float *,float *),float *k,int p,float *u,float tf,float dt,int (*trackfn)(float,int,float *)); void EQMsho(float *u,float *k,float *dudt); void EQMlorenz(float *u,float *k,float *dudt); phptr phptalloc(int sp,int fp,int fs); void phptfree(phptr u); int phptsave(phptr u,char *fnames,char *fnamef); phptr phptload(char *fnames,char *fnamef); int ODEFeuler(void (*eqm)(phptr,void *,phptr),void *k,phptr u,float *Dt,float intpar[],int (*trackfn)(float,phptr,void *),void *trackptr); int ODEFrk4(void (*eqm)(phptr,void *,phptr),void *k,phptr u,float *Dt,float intpar[],int (*trackfn)(float,phptr,void *),void *trackptr); int ODEFrkas(void (*eqm)(phptr,void *,phptr),void *k,phptr u,float *Dt,float intpar[],int (*trackfn)(float,phptr,void *),void *trackptr); void EQMFzero(phptr u,void *k,phptr dudt); void EQMFsho(phptr u,void *k,phptr dudt); void EQMFdiff(phptr u,void *k,phptr dudt); void EQMFwave(phptr u,void *k,phptr dudt); int TKFticker(float t,phptr u,void *tkptr); int TKFtimeplot(float t,phptr u,void *tkptr); int TKFshowfield(float t,phptr u,void *tkptr); /* start of 2004 version */ typedef struct odestruct { int dim; int order; float *dtptr; float dtsugg; float dtmax; float eps; void *systemptr; int (*eqm)(void *); float **state0; float **state1; float *scale; float *k1,*k2,*k3,*k4; } *odeptr; odeptr allocodestruct(int dim,int order,float *dtptr,void *systemptr,int (*eqm)(void *)); void freeodestruct(odeptr ode); int runodestruct(odeptr ode); int odestructexample(void); /* end of 2004 version */ #endif