34 double step, finaltime;
41 for (i = 0; i < tree->numVars; i++)
53 double step, finaltime;
61 #define V1 p->tranparms[0] 62 #define V2 p->tranparms[1] 63 #define TD p->tranparms[2] 64 #define TR p->tranparms[3] 65 #define TF p->tranparms[4] 66 #define PW p->tranparms[5] 67 #define PER p->tranparms[6] 69 #define SPER p->tranparms[2] 70 #define SDEL p->tranparms[3] 72 #define VO p->tranparms[0] 73 #define VA p->tranparms[1] 74 #define FREQ p->tranparms[2] 75 #define TDL p->tranparms[3] 76 #define THETA p->tranparms[4] 78 #define TD1 p->tranparms[2] 79 #define TAU1 p->tranparms[3] 80 #define TD2 p->tranparms[4] 81 #define TAU2 p->tranparms[5] 83 #define FC p->tranparms[2] 84 #define MDI p->tranparms[3] 85 #define FS p->tranparms[4] 105 while (time < finaltime) {
109 if (time >= finaltime)
115 if (time >= finaltime)
122 if (time >= finaltime)
131 for (i = 7; i < p->numtrancoeffs; i++) {
132 time1 = p->trancoeffs[i];
134 while (time < finaltime) {
138 if (time >= finaltime)
144 if (time >= finaltime)
151 if (time >= finaltime)
164 n = p->numtrancoeffs/2;
165 for (i = 0; i < n; i++)
177 double step, finaltime;
182 switch (p->funcnum) {
186 V2 = *(p->trancoeffs+1);
187 TD = (p->numtrancoeffs >= 3) ?
188 *(p->trancoeffs+2) : 0;
189 TR = (p->numtrancoeffs >= 4) ?
190 *(p->trancoeffs+3) : 0;
191 TF = (p->numtrancoeffs >= 5) ?
192 *(p->trancoeffs+4) : 0;
193 PW = (p->numtrancoeffs >= 6) ?
194 *(p->trancoeffs+5) : 0;
195 PER = (p->numtrancoeffs >= 7) ?
196 *(p->trancoeffs+6) : 0;
197 if (
TR <= 0)
TR = step;
198 if (
TF > 0 &&
PW <= 0)
201 if (
TF <= 0)
TF = step;
202 if (
PW <= 0)
PW = finaltime + step;
204 if (
PER <= 0)
PER = finaltime + step;
207 p->trancache[0] = (
V2 -
V1)/
TR;
208 p->trancache[1] = (
V1 -
V2)/TF;
222 VA = *(p->trancoeffs+1);
223 FREQ = (p->numtrancoeffs >= 3) ?
224 *(p->trancoeffs+2) : 0;
225 TDL = (p->numtrancoeffs >= 4) ?
226 *(p->trancoeffs+3) : 0;
227 THETA = (p->numtrancoeffs >= 5) ?
228 *(p->trancoeffs+4) : 0;
234 V2 = *(p->trancoeffs+1);
235 SPER = (p->numtrancoeffs >= 3) ?
236 *(p->trancoeffs+2) : 0;
237 SDEL = (p->numtrancoeffs >= 4) ?
238 *(p->trancoeffs+3) : 0;
239 THETA = (p->numtrancoeffs >= 5) ?
240 *(p->trancoeffs+4) : 0;
246 V2 = *(p->trancoeffs+1);
247 TD1 = (p->numtrancoeffs >= 3) ?
248 *(p->trancoeffs+2) : 0;
249 TAU1 = (p->numtrancoeffs >= 4) ?
250 *(p->trancoeffs+3) : 0;
251 TD2 = (p->numtrancoeffs >= 5) ?
252 *(p->trancoeffs+4) : 0;
253 TAU2 = (p->numtrancoeffs >= 6) ?
254 *(p->trancoeffs+5) : 0;
263 VA = *(p->trancoeffs+1);
264 FC = (p->numtrancoeffs >= 3) ?
265 *(p->trancoeffs+2) : 0;
266 MDI = (p->numtrancoeffs >= 4) ?
267 *(p->trancoeffs+3) : 0;
268 FS = (p->numtrancoeffs >= 5) ?
269 *(p->trancoeffs+4) : 0;
270 if (!
FC)
FC = 1/finaltime;
271 if (!
FS)
FS = 1/finaltime;
298 if ((err = (*myTree->
tree->
evfunc)(myTree->
tree,result,vals,parms))
302 for (i = 0; i < myTree->
p.
numVars; i++)
304 &derivs[i], vals, parms)) !=
OK)
329 for (i = 0; i < tree->numVars; i++)
331 txfree(tree->vars[i].sValue);
332 txfree((
char*)tree->varTypes);
333 txfree((
char*)tree->vars);
334 for (i = 0; i < tree->numVars; i++)
351 if (p->trancoeffs)
txfree((
char*)p->trancoeffs);
352 if (p->tranparms)
txfree((
char*)p->tranparms);
353 if (p->trancache)
txfree((
char*)p->trancache);
struct INPparseNode ** derivs
void IFfree(IFparseTree *tree)
struct INPparseNode * tree
int IFinit(IFparseTree *tree, double step, double finaltime)
static void PTsetBreaks()
static void free_parsenode()
int IFeval(IFparseTree *tree, double gmin, double *result, double *vals, double *derivs, double *parms)