User functions

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.