CONOPT
Loading...
Searching...
No Matches
Computing the second derivative on constraint in a direction

The modeler can tell CONOPT that second order directional derivatives are available by registering a 2DDir or 2DDirLagr callback routine using coidef_2ddir() or coidef_2ddirlagr().

2DDir – Second Derivatives of a Constraint in a Direction

This optional callback routine must be registered with coidef_2ddir(). It computes the directional second derivative for a single constraint as defined in the introduction to this section.

Integer Function 2DDir( X, DX, D2G, ROWNO, JCNM, NODRV, &
N, NJ, THREAD, USRMEM )
INTEGER, Intent(IN) :: ROWNO, N,
INTEGER, Intent(IN) :: NJ, THREAD
INTEGER, Intent(IN OUT) :: NODRV
INTEGER, Dimension(NJ), Intent(IN) :: JCNM
REAL*8, Dimension(N), Intent(IN) :: X
REAL*8, Dimension(N), Intent(IN) :: DX
REAL*8, Dimension(N), Intent(OUT) :: D2G
REAL*8, Intent(IN OUT) :: USRMEM(*)

where:


2DDirIni – Initialization of Second Derivatives of a Constraint in a Direction

This optional callback routine must be registered with coidef_2ddirini(). If it is registered it is called by CONOPT before a sequence of 2DDir calls each time either the point or the direction changes. It can be used to initialize the 2DDir computations, for example to compute common terms.

Integer Function 2DDirIni( X, DX, ROWLIST, LISTSIZE, NUMTHREAD, NEWPT, NODRV, N, USRMEM )
INTEGER, Intent(IN) :: LISTSIZE
INTEGER, Intent(IN) :: NUMTHREAD, NEWPT, N
INTEGER, Intent(IN OUT) :: NODRV
INTEGER, Dimension(ROWLIST), Intent(IN) :: ROWLIST
REAL*8, Dimension(N), Intent(IN) :: X, DX
REAL*8, Intent(IN OUT) :: USRMEM(*)

where:


2DDirEnd – Termination of Second Derivatives of a Constraint in a Direction

The modeler can tell CONOPT that second order directional derivatives are available by registering a 2DDir or 2DDirLagr callback routine using coidef_2ddir() or coidef_2ddirlagr().

This optional callback routine must be registered with coidef_2ddirend(). If it is registered it is called by CONOPT after a sequence of 2DDir calls each time either the point or the direction changes. It can be used to perform cleanup tasks, including to report if anything went wrong.

Integer Function 2DDirEnd( NODRV, USRMEM )
INTEGER, Intent(IN OUT) :: NODRV
REAL*8, Intent(IN OUT) :: USRMEM(*)

where: