To detect zeros of userfunctions on the curve one must set the option Userfunctions on.
The continuer has stored the handles to the userfunctions cds.curve_userf.
First a call to UserInfo = contget(cds.options, 'UserfunctionsInfo', []) is made to get information on the userfunctions. A call to feval(cds.curve_userf, UserInfo, ids, x, v) then must return the evaluation of all
userfunctions ids, whose information is in the structure UserInfo,
at x (v is the tangent vector at x).
As a second return argument it should return an array of all user function id's which could
not be evaluated. If this array is not empty the stepsize will be decreased.
A special point on a bifurcation curve that is specified by a user function has a structure as
follows:
s.index |
index of the detected singular point defined by the user function. |
s.label |
a string that is in UserInfo.label, label of the singularity. |
s.msg |
a string that is set in UserInfo.name. |
s.data |
an empty tangent vector or values of the user functions in
the singular point. |
When a change of sign of a userfunction is detected, the userfunction i is processed at
x. This is the point where the results (values of the userfunction) can be saved in the
structure s.data which can be reused for further analysis.