1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169
|
#include <stdlib.h>
#include "f2c.h"
#include "autlim.h"
/* Hooks to xpp RHS */
extern (*rhs)();
extern double constants[],last_ic[];
extern int Auto_index_to_array[5];
extern int NewPeriodFlag;
extern int AutoTwoParam,NAutoPar;
extern int Homo_n;
extern int METHOD,NJMP;
extern double outperiod[];
extern int UzrPar[],NAutoUzr;
struct {
integer ndim, ips, irs, ilp, icp[20];
doublereal par[20];
} blbcn_;
#define blbcn_1 blbcn_
struct {
integer ntst, ncol, iad, isp, isw, iplt, nbc, nint;
} blcde_;
#define blcde_1 blcde_
struct {
doublereal ds, dsmin, dsmax;
integer iads;
} bldls_;
#define bldls_1 bldls_
struct {
integer nmx, nuzr;
doublereal rl0, rl1, a0, a1;
} bllim_;
#define bllim_1 bllim_
struct {
integer npr, mxbf, iid, itmx, itnw, nwtn, jac;
} blmax_;
#define blmax_1 blmax_
int func_(ndim, u, icp, par, ijac, f, dfdu, dfdp)
int *ndim,*icp,*ijac;
double *u,*par,*f,*dfdu,*dfdp;
{
int i,j;
double zz[NAUTO];
for(i=0;i<NAutoPar;i++){
constants[Auto_index_to_array[i]]=par[i];
}
evaluate_derived();
rhs(0.0,u,f,*ndim);
if(METHOD>0||NJMP==1)return 0;
for(i=1;i<NJMP;i++){
for(j=0;j<*ndim;j++)
zz[j]=f[j];
rhs(0.0,zz,f,*ndim);
}
return 0;
} /* func_ */
int stpnt_(ndim,u,par,t)
integer *ndim;
doublereal *u, *par,*t;
{
int i;
int in;
double p;
for(i=0;i<NAutoPar;i++)
par[i] = constants[Auto_index_to_array[i]];
if(NewPeriodFlag==0){
for(i=0;i<*ndim;i++)
u[i]=last_ic[i];
return 0;
}
get_start_period(&p);
par[10]=p;
get_start_orbit(u,*t,p,*ndim);
return 0;
} /* stpnt_ */
doublereal uszr_(i, nuzr, par)
integer *i;
integer *nuzr;
doublereal *par;
{
doublereal ret_val;
int i0=*i-1;
if(i0<0||i0>=NAutoUzr)return(1.0);
return(par[UzrPar[i0]]-outperiod[i0]);
}
/* Subroutine */ int bcnd_(ndim, par, icp, nbc, u0, u1, fb, ijac, dbc)
integer *ndim;
double *par;
integer *icp, *nbc;
double *u0, *u1, *fb;
integer *ijac;
double *dbc;
{
int i;
/* Hooks to the XPP bc parser!! */
for(i=0;i<NAutoPar;i++){
constants[Auto_index_to_array[i]]=par[i];
}
evaluate_derived();
do_bc(u0,0.0,u1,1.0,fb,*nbc);
return 0;
} /* bcnd_ */
/* Subroutine */ int icnd_(ndim, par, icp, nint, u, uold, udot, upold, fi,
ijac, dint)
integer *ndim;
double *par;
integer *icp, *nint;
double *u, *uold, *udot, *upold, *fi;
integer *ijac;
double *dint;
{
int i;
double dum=0.0;
for(i=0;i<Homo_n;i++)
dum+=upold[i]*(u[i]-uold[i]);
fi[0]=dum;
return 0;
} /* icnd_ */
/* Subroutine */ int fopt_(ndim, u, icp, par, ijac, fs, dfdu, dfdp)
integer *ndim;
double *u;
integer *icp;
double *par;
integer *ijac;
double *fs, *dfdu, *dfdp;
{
/* ---------- ---- */
return 0;
} /* fopt_ */
|