(*These are routines to be used with bbseq/e*) (* FExtract: Extracts a solution from bbseq/e output FResult: result of bbseq/e FPower: the iteration number to extract result from. If bbseq/e was run with stepdata which required n iterations, with reporting every m steps (where m|n) then m <= FResult <= n *) FExtract[FResult_,FPower_] := Module[{r1,r2}, r1=FResult/. u^FPower->B; r2=D[r1,B]; Return[r2];] (*FEvalSoln: Evaluates how good a solution is using fsb. psb00: ps values eps00: eps rules r2: a solution *) FEvalSoln[r2_, psb00_, eps00_] := Module[{r}, ps={bz->psb00[[1]], b3->psb00[[2]], eps00[[1]], eps00[[2]], eps00[[3]]}; prep[]; r = r2//fsb; Return[r]; ] (* IN POGRESS This routine will take a solution, vary bz and compute how the solution diverges. Outputs a 2 dimensional array. r1 is a solution, psb00 and eps00 are the same structures sent to bbseq/e *) bzChange[r2_,psb00_,eps00_,steps_]:=Module[{bz0,bz1,stepsize, r, t1,ct, psb01}, stepsize=1/steps; psb01=psb00; bz1=psb01[[1]]; bz0=bz1-(IntegerPart[bz1*steps]*stepsize); r=Table[Null,{i,steps-1},{j,2}]; ct=1; Label[o1]; bz0=bz0+stepsize; psb01[[1]]=bz0; t1=FEvalSoln[r2,psb01,eps00]; r[[ct]]={bz0,t1}; ct=ct+1; If[bz0<=1-stepsize, Goto[o1]]; Return[r]; ] (* IN POGRESS This routine will take a solution, vary b3 and compute how the solution diverges. Outputs a 2 dimensional array. r1 is a solution, psb00 and eps00 are the same structures sent to bbseq/e *) b3Change[r2_,psb00_,eps00_,steps_]:=Module[{b30,b31,stepsize, r, t1,ct, psb01}, stepsize=1/steps; psb01=psb00; b31=psb01[[2]]; b30=b31-(IntegerPart[b31*steps]*stepsize); If[b30<0,b30=0]; r=Table[Null,{i,steps-1},{j,2}]; ct=1; Label[o1]; b30=b30+stepsize; psb01[[2]]=b30; t1=FEvalSoln[r2,psb01,eps00]; r[[ct]]={b30,t1}; ct=ct+1; If[b30<=1-stepsize, Goto[o1]]; Return[r]; ] (* *) parsePs[psb01_]:=Module[{bz, b3}, bz /. psb01; b3 /. psb01; psb00[[1]] = bz; psb00[[2]] = b3; eps00[[1]]=psb01[[3]]; eps00[[2]]=psb01[[4]]; eps00[[3]]=psb01[[5]]; ] end=lastline