/* Data area of __lc starter. Comments with '$' as the first letter describe appearence of parameters on the screen. */ /* Note the user is allowed to access invisible Active field. To support this ActivePar macro is provided. Its parameter is external (i.e. visible to the user) name of parameter of dynamical system. The only problem is that all external names (expanded and explisit) must differ from 'ActivePar' */ #define ActivePar(parname) _ptr->Active[&(parname)-_ptr->P]=1; /*$t Starter*/ typedef struct ___lc_Data { /*$t Initial point*/ double *T; /* Initial mesh points (time). */ /*$ -2 | - n __T | "0" %LCode(Time) */ int lenT; /*$ 1 | - n __lenT | "0" */ /* len in bytes of *T */ double *X; /* Initial phase components */ /*$ -2 | - n __X | "0" %LCode(Phase) */ int lenX; /*$ 1 | - n __lenX | "0" */ /* len in bytes of *X */ double *Xc; /* Phase coords of the first point on cycle */ /*$=h %Phase | + n @Phase { $Phase} | "0" %LCode(Phase) */ /*$=p %Phase | + n @Phase { $Phase} | "0" %LCode(Phase) */ /*$ %Phase | - n @Phase { $Phase} | "0" %LCode(Phase) */ double *P; /* Init point: parameters components */ /*$ %Par | + N @Par { $Par} | "0" %LCode(Par) */ char *Active; /* +1 is for activation of period */ /*$=bpc %Par+1 | - n _ActivePar | "0" 255 */ /*$ %Par+1 | - n _ActivePar | "0" */ double *Period; /* Period of cycle */ /*$=h 1 | - N Period | "1" %LCode(Period) */ /*$=pd 1 | - N Period | "1" %LCode(Period) */ /*$ 1 | + N Period | "1" %LCode(Period) */ char *ActPeriod; /*$ 1 | - n _ActPeriod | "1" */ /*$t Discretization data*/ int ntst; /* Number of mesh intervals */ /*$ 1 | + n ntst | "10" */ int ncol; /* Number of collocation points */ /*$ 1 | + n ncol | "4" */ /*$t Switch data*/ double delta; /* initial cycle amplitude */ /*$=h 1 | + n Amplitude | "0.01" */ /*$=pd 1 | + n Shift | "0.01" */ /*$=bpc 1 | + n Shift | "0.01" */ /*$ 1 | - n Amplitude | "0.01" */ /*$t=p Corrector data*/ int maxit; /* max number of iterations */ /*$ 1 | - n MaxIter | "10" */ int maxnewt; /* max number of Newton iterations */ /*$ 1 | - n MaxNewtonIter | "10" */ double epsx; /* variable tolerance */ /*$ 1 | - n VarTolerance | "0.00001" */ double epsf; /* function tolerance */ /*$ 1 | - n FuncTolerance | "0.0001" */ /*$t Jacobian data*/ double dx; /* differentiation increment */ /*$ 1 | + n Increment | "0.00001" */ /*$t Branch to switch */ int branch; /* Cycle to switch */ /*$=pd 1 | + s original double | Branch | "1" */ /*$=bpc 1 | + s primary secondary | Branch | "1" */ /*$ 1 | - s original double | Branch | "1" */ /*$t Monitor singularities*/ char *ActiveSing; /* */ /*$ 4 | + s no yes | Branching Fold Period-doubling(%Phase-3) Neimark-Sacker(%Phase-3) | "1" */ int *TypeTestFunc; /* 0 - ignore value (locate change of sign only); 1 - full test */ /*$ 4 | - n | "0,1,0,0" */ int *ZeroTestFunc; /*$ 4 | - n | "0" */ /*$t User defined functions*/ char *ActiveUserTest; /*$ %UserFunc | + S ignore detect monitor append | @UserFunc { $UserFunc} | "0" %Code(SPECCL_AUS) */ /*$t Standard functions*/ int L2NormComp; /* compute L2 norm */ /*$ 1 | + s no yes | L2_norm | "0" */ int MinMaxComp; /* compute Min&Max */ /*$ 1 | + s no yes | Min&Max | "0" */ int multcomp; /* compute multipliers */ /*$ 1 | + s no yes | Multipliers | "0" */ /*$t Initial data*/ FuncPar(int,SetInitPoint,(int ip, struct ___lc_Data * _ptr)); /*$=p 1 | + f SetInitPoint | "" */ /*$=h 1 | + f SetInitPoint | "" */ /*$=lc 1 | + f SetInitCycle | "" */ /*$ 1 | - f | "" */ double* time0; /* hidden fields to call SetInitPoint */ /*$ -10-%Time | - n @Time { $Time} | "0" */ double* phase0; /*$ -10-%Phase | - n @Phase { $Phase} | "0" */ } __lc_Data, * __lc_DataPtr;