10#if defined(_WIN32) && !defined(_WIN64)
11#define dec_directives_win32
26 function coidef_size( )
bind(c, name = "COIDEF_Size")
27#if defined (dec_directives_win32)
30 use,
intrinsic :: iso_c_binding
32 integer(c_int) :: COIDEF_Size
33 end function coidef_size
51 function coidef_ini( CntVect )
bind(c, name = "COIDEF_Ini")
52#if defined (dec_directives_win32)
55 use,
intrinsic :: iso_c_binding
57 integer(c_int),
dimension(*),
intent(inout) :: cntvect
70 function coidef_inifort( CntVect )
bind(c, name = "COIDEF_IniFort")
71#if defined (dec_directives_win32)
74 use,
intrinsic :: iso_c_binding
76 integer(c_int),
dimension(*),
intent(inout) :: cntvect
77 integer(c_int) :: coidef_inifort
78 end function coidef_inifort
94 function coidef_numvar( CntVect, NumVar )
bind(c, name = "COIDEF_NumVar")
95#if defined (dec_directives_win32)
98 use,
intrinsic :: iso_c_binding
100 integer(c_int),
dimension(*),
intent(inout) :: cntvect
101 integer(c_int),
value :: numvar
118 function coidef_numcon( CntVect, NumCon )
bind(c, name = "COIDEF_NumCon")
119#if defined (dec_directives_win32)
122 use,
intrinsic :: iso_c_binding
124 integer(c_int),
dimension(*),
intent(inout) :: cntvect
125 integer(c_int),
value :: numcon
141 function coidef_numnz( CntVect, NumNz )
bind(c, name = "COIDEF_NumNz")
142#if defined (dec_directives_win32)
145 use,
intrinsic :: iso_c_binding
147 integer(c_int),
dimension(*),
intent(inout) :: cntvect
148 integer(c_int),
value :: numnz
164 function coidef_numnlnz( CntVect, NumNlNz )
bind(c, name = "COIDEF_NumNlNz")
165#if defined (dec_directives_win32)
168 use,
intrinsic :: iso_c_binding
170 integer(c_int),
dimension(*),
intent(inout) :: cntvect
171 integer(c_int),
value :: numnlnz
185 function coidef_numhess( CntVect, NumHess )
bind(c, name = "COIDEF_NumHess")
186#if defined (dec_directives_win32)
189 use,
intrinsic :: iso_c_binding
191 integer(c_int),
dimension(*),
intent(inout) :: cntvect
192 integer(c_int),
value :: numhess
210 function coidef_optdir( CntVect, OptDir )
bind(c, name = "COIDEF_OptDir")
211#if defined (dec_directives_win32)
214 use,
intrinsic :: iso_c_binding
216 integer(c_int),
dimension(*),
intent(inout) :: cntvect
217 integer(c_int),
value :: optdir
236 function coidef_objcon( CntVect, ObjCon )
bind(c, name = "COIDEF_ObjCon")
237#if defined (dec_directives_win32)
240 use,
intrinsic :: iso_c_binding
242 integer(c_int),
dimension(*),
intent(inout) :: cntvect
243 integer(c_int),
value :: objcon
254 function coidef_objvar( CntVect, ObjVar )
bind(c, name = "COIDEF_ObjVar")
255#if defined (dec_directives_win32)
258 use,
intrinsic :: iso_c_binding
260 integer(c_int),
dimension(*),
intent(inout) :: cntvect
261 integer(c_int),
value :: objvar
290 function coidef_license( CntVect, LicInt1, LicInt2, LicInt3, Licstring )
291#if defined (dec_directives_win32)
295 use,
intrinsic :: iso_c_binding
297 integer(c_int),
dimension(*),
intent(inout) :: cntvect
298 character(len=*,kind=c_char),
intent(in) :: licstring
299 integer(c_int),
intent(in) :: licint1, licint2, licint3
320 function coidef_itlim( CntVect, ItLim )
bind(c, name = "COIDEF_ItLim")
321#if defined (dec_directives_win32)
324 use,
intrinsic :: iso_c_binding
326 integer(c_int),
dimension(*),
intent(inout) :: cntvect
327 integer(c_int),
value :: itlim
349 function coidef_errlim( CntVect, ErrLim )
bind(c, name = "COIDEF_ErrLim")
350#if defined (dec_directives_win32)
353 use,
intrinsic :: iso_c_binding
355 integer(c_int),
dimension(*),
intent(inout) :: cntvect
356 integer(c_int),
value :: errlim
384 function coidef_debugfv( CntVect, DebugFV )
bind(c, name = "COIDEF_DebugFV")
385#if defined (dec_directives_win32)
388 use,
intrinsic :: iso_c_binding
390 integer(c_int),
dimension(*),
intent(inout) :: cntvect
391 integer(c_int),
value :: debugfv
420 function coidef_maxsup( CntVect, MaxSup )
bind(c, name = "COIDEF_MaxSup")
421#if defined (dec_directives_win32)
424 use,
intrinsic :: iso_c_binding
426 integer(c_int),
dimension(*),
intent(inout) :: cntvect
427 integer(c_int),
value :: maxsup
444 function coidef_square( CntVect, Square )
bind(c, name = "COIDEF_Square")
445#if defined (dec_directives_win32)
448 use,
intrinsic :: iso_c_binding
450 integer(c_int),
dimension(*),
intent(inout) :: cntvect
451 integer(c_int),
value ::
square
469 function coidef_emptyrow( CntVect, EmptyRow )
bind(c, name = "COIDEF_EmptyRow")
470#if defined (dec_directives_win32)
473 use,
intrinsic :: iso_c_binding
475 integer(c_int),
dimension(*),
intent(inout) :: cntvect
476 integer(c_int),
value :: emptyrow
496 function coidef_emptycol( CntVect, EmptyCol )
bind(c, name = "COIDEF_EmptyCol")
497#if defined (dec_directives_win32)
500 use,
intrinsic :: iso_c_binding
502 integer(c_int),
dimension(*),
intent(inout) :: cntvect
503 integer(c_int),
value :: emptycol
531 function coidef_debug2d( CntVect, Debug2D )
bind(c, name = "COIDEF_Debug2D")
532#if defined (dec_directives_win32)
535 use,
intrinsic :: iso_c_binding
537 integer(c_int),
dimension(*),
intent(inout) :: cntvect
538 integer(c_int),
value :: debug2d
560 function coidef_optorder( CntVect, OptOrder )
bind(c, name = "COIDEF_OptOrder")
561#if defined (dec_directives_win32)
564 use,
intrinsic :: iso_c_binding
566 integer(c_int),
dimension(*),
intent(inout) :: cntvect
567 integer(c_int),
value :: optorder
589 function coidef_discont( CntVect, DisCont )
bind(c, name = "COIDEF_DisCont")
590#if defined (dec_directives_win32)
593 use,
intrinsic :: iso_c_binding
595 integer(c_int),
dimension(*),
intent(inout) :: cntvect
596 integer(c_int),
value :: discont
624 function coidef_threads( CntVect, ThreadS )
bind(c, name = "COIDEF_ThreadS")
625#if defined (dec_directives_win32)
628 use,
intrinsic :: iso_c_binding
630 integer(c_int),
dimension(*),
intent(inout) :: cntvect
631 integer(c_int),
value :: threads
655 function coidef_threadf( CntVect, ThreadF )
bind(c, name = "COIDEF_ThreadF")
656#if defined (dec_directives_win32)
659 use,
intrinsic :: iso_c_binding
661 integer(c_int),
dimension(*),
intent(inout) :: cntvect
662 integer(c_int),
value :: threadf
687 function coidef_thread2d( CntVect, Thread2D )
bind(c, name = "COIDEF_Thread2D")
688#if defined (dec_directives_win32)
691 use,
intrinsic :: iso_c_binding
693 integer(c_int),
dimension(*),
intent(inout) :: cntvect
694 integer(c_int),
value :: thread2d
724 function coidef_threadc( CntVect, ThreadC )
bind(c, name = "COIDEF_ThreadC")
725#if defined (dec_directives_win32)
728 use,
intrinsic :: iso_c_binding
730 integer(c_int),
dimension(*),
intent(inout) :: cntvect
731 integer(c_int),
value :: threadc
748 function coidef_stdout( CntVect, ToStdOut )
bind(c, name = "COIDEF_StdOut")
749#if defined (dec_directives_win32)
752 use,
intrinsic :: iso_c_binding
754 integer(c_int),
dimension(*),
intent(inout) :: cntvect
755 integer(c_int),
value :: tostdout
769 function coidef_clearm( CntVect, ClearM )
bind(c, name = "COIDEF_ClearM")
770#if defined (dec_directives_win32)
773 use,
intrinsic :: iso_c_binding
775 integer(c_int),
dimension(*),
intent(inout) :: cntvect
776 integer(c_int),
value :: clearm
803 function coidef_zeronoise( CntVect, ZeroNoise )
bind(c, name = "COIDEF_ZeroNoise")
804#if defined (dec_directives_win32)
807 use,
intrinsic :: iso_c_binding
809 integer(c_int),
dimension(*),
intent(inout) :: cntvect
810 integer(c_int),
value :: zeronoise
829 function coidef_reslim( CntVect, ResLim )
bind(c, name = "COIDEF_ResLim")
830#if defined (dec_directives_win32)
833 use,
intrinsic :: iso_c_binding
835 integer(c_int),
dimension(*),
intent(inout) :: cntvect
836 real(c_double),
value :: reslim
855 function coidef_hessfac( CntVect, HessFac )
bind(c, name = "COIDEF_HessFac")
856#if defined (dec_directives_win32)
859 use,
intrinsic :: iso_c_binding
861 integer(c_int),
dimension(*),
intent(inout) :: cntvect
862 real(c_double),
value :: hessfac
895 function coidef_maxheap( CntVect, MaxHeap )
bind(c, name = "COIDEF_MaxHeap")
896#if defined (dec_directives_win32)
899 use,
intrinsic :: iso_c_binding
901 integer(c_int),
dimension(*),
intent(inout) :: cntvect
902 real(c_double),
value :: maxheap
926#if defined (dec_directives_win32)
930 use,
intrinsic :: iso_c_binding
932 integer(c_int),
dimension(*),
intent(inout) :: cntvect
933 character(len=*,kind=c_char) :: optfile
953 function coidef_base( CntVect, Base )
bind(c, name = "COIDEF_Base")
954#if defined (dec_directives_win32)
957 use,
intrinsic :: iso_c_binding
959 integer(c_int),
dimension(*),
intent(inout) :: cntvect
960 integer(c_int),
value :: base
961 integer(c_int) :: coidef_base
962 end function coidef_base
973 function coidef_fortran( CntVect )
bind(c, name = "COIDEF_Fortran")
974#if defined (dec_directives_win32)
977 use,
intrinsic :: iso_c_binding
979 integer(c_int),
dimension(*),
intent(inout) :: cntvect
980 integer(c_int) :: coidef_fortran
981 end function coidef_fortran
992 function coidef_c( CntVect )
bind(c, name = "COIDEF_C")
993#if defined (dec_directives_win32)
996 use,
intrinsic :: iso_c_binding
998 integer(c_int),
dimension(*),
intent(inout) :: cntvect
999 integer(c_int) :: coidef_c
1000 end function coidef_c
1020 function coidef_inistat( CntVect, IniStat )
bind(c, name = "COIDEF_IniStat")
1021#if defined (dec_directives_win32)
1024 use,
intrinsic :: iso_c_binding
1026 integer(c_int),
dimension(*),
intent(inout) :: cntvect
1027 integer(c_int),
value :: inistat
1050 function coidef_fvinclin( CntVect, FVIncLin )
bind(c, name = "COIDEF_FVincLin")
1051#if defined (dec_directives_win32)
1054 use,
intrinsic :: iso_c_binding
1056 integer(c_int),
dimension(*),
intent(inout) :: cntvect
1080 function coidef_fvforall( CntVect, FVforAll )
bind(c, name = "COIDEF_FVforAll")
1081#if defined (dec_directives_win32)
1084 use,
intrinsic :: iso_c_binding
1086 integer(c_int),
dimension(*),
intent(inout) :: cntvect
1109#if defined (dec_directives_win32)
1113 use,
intrinsic :: iso_c_binding
1115 integer(c_int),
dimension(*),
intent(inout) :: cntvect
1116 integer(c_int),
external :: coi_readmatrix
1133#if defined (dec_directives_win32)
1137 use,
intrinsic :: iso_c_binding
1139 integer(c_int),
dimension(*),
intent(inout) :: cntvect
1140 integer(c_int),
external :: coi_fdeval
1159#if defined (dec_directives_win32)
1163 use,
intrinsic :: iso_c_binding
1165 integer(c_int),
dimension(*),
intent(inout) :: cntvect
1166 integer(c_int),
external :: coi_fdevalini
1184#if defined (dec_directives_win32)
1188 use,
intrinsic :: iso_c_binding
1190 integer(c_int),
dimension(*),
intent(inout) :: cntvect
1191 integer(c_int),
external :: coi_fdevalend
1210#if defined (dec_directives_win32)
1214 use,
intrinsic :: iso_c_binding
1216 integer(c_int),
dimension(*),
intent(inout) :: cntvect
1217 integer(c_int),
external :: coi_status
1236#if defined (dec_directives_win32)
1240 use,
intrinsic :: iso_c_binding
1242 integer(c_int),
dimension(*),
intent(inout) :: cntvect
1243 integer(c_int),
external :: coi_solution
1263#if defined (dec_directives_win32)
1267 use,
intrinsic :: iso_c_binding
1269 integer(c_int),
dimension(*),
intent(inout) :: cntvect
1270 integer(c_int),
external :: coi_message
1289#if defined (dec_directives_win32)
1293 use,
intrinsic :: iso_c_binding
1295 integer(c_int),
dimension(*),
intent(inout) :: cntvect
1296 integer(c_int),
external :: coi_errmsg
1315#if defined (dec_directives_win32)
1319 use,
intrinsic :: iso_c_binding
1321 integer(c_int),
dimension(*),
intent(inout) :: cntvect
1322 integer(c_int),
external :: coi_progress
1344#if defined (dec_directives_win32)
1348 use,
intrinsic :: iso_c_binding
1350 integer(c_int),
dimension(*),
intent(inout) :: cntvect
1351 integer(c_int),
external :: coi_option
1369#if defined (dec_directives_win32)
1373 use,
intrinsic :: iso_c_binding
1375 integer(c_int),
dimension(*),
intent(inout) :: cntvect
1376 integer(c_int),
external :: coi_triord
1394#if defined (dec_directives_win32)
1398 use,
intrinsic :: iso_c_binding
1400 integer(c_int),
dimension(*),
intent(inout) :: cntvect
1401 integer(c_int),
external :: coi_fdinterval
1419#if defined (dec_directives_win32)
1423 use,
intrinsic :: iso_c_binding
1425 integer(c_int),
dimension(*),
intent(inout) :: cntvect
1426 integer(c_int),
external :: coi_2ddir
1451#if defined (dec_directives_win32)
1455 use,
intrinsic :: iso_c_binding
1457 integer(c_int),
dimension(*),
intent(inout) :: cntvect
1458 integer(c_int),
external :: coi_2ddirini
1482#if defined (dec_directives_win32)
1486 use,
intrinsic :: iso_c_binding
1488 integer(c_int),
dimension(*),
intent(inout) :: cntvect
1489 integer(c_int),
external :: coi_2ddirend
1507#if defined (dec_directives_win32)
1511 use,
intrinsic :: iso_c_binding
1513 integer(c_int),
dimension(*),
intent(inout) :: cntvect
1514 integer(c_int),
external :: coi_2ddirlagr
1519#if defined (dec_directives_win32)
1523 use,
intrinsic :: iso_c_binding
1525 integer(c_int),
dimension(*),
intent(inout) :: cntvect
1526 integer(c_int),
external :: coi_2dlagrsize
1545#if defined (dec_directives_win32)
1549 use,
intrinsic :: iso_c_binding
1551 integer(c_int),
dimension(*),
intent(inout) :: cntvect
1552 integer(c_int),
external :: coi_2dlagrstr
1571#if defined (dec_directives_win32)
1575 use,
intrinsic :: iso_c_binding
1577 integer(c_int),
dimension(*),
intent(inout) :: cntvect
1578 integer(c_int),
external :: coi_2dlagrval
1599#if defined (dec_directives_win32)
1603 use,
intrinsic :: iso_c_binding
1605 integer(c_int),
dimension(*),
intent(inout) :: cntvect
1622 function coi_solve( CntVect )
bind(c, name = "COI_Solve")
1623#if defined (dec_directives_win32)
1626 use,
intrinsic :: iso_c_binding
1628 integer(c_int),
dimension(*),
intent(inout) :: cntvect
1642 Subroutine coiget_version( major, minor, patch )
bind(c, name = "COIGET_Version")
1643#if defined (dec_directives_win32)
1646 use,
intrinsic :: iso_c_binding
1648 integer(c_int),
intent(inout) :: major, minor, patch
1657#if defined (dec_directives_win32)
1660 use,
intrinsic :: iso_c_binding
1662 integer(c_int),
dimension(*),
intent(inout) :: cntvect
1677#if defined (dec_directives_win32)
1680 use,
intrinsic :: iso_c_binding
1682 integer(c_int),
dimension(*),
intent(inout) :: cntvect
1692#if defined (dec_directives_win32)
1695 use,
intrinsic :: iso_c_binding
1697 integer(c_int),
dimension(*),
intent(inout) :: cntvect
1724 use,
intrinsic :: iso_c_binding
1726 integer(c_int),
dimension(:),
pointer :: cntvect
1729 integer(c_int) :: numcallback, alloc_stat
1731 numcallback = coidef_size()
1732 allocate( cntvect(numcallback), stat = alloc_stat )
1733 if ( alloc_stat /= 0 )
then
1747 use,
intrinsic :: iso_c_binding
1749 integer(c_int),
dimension(:),
pointer :: cntvect
1752 integer(c_int) :: alloc_stat
1754 if (
associated( cntvect ) )
then
1755 deallocate( cntvect, stat = alloc_stat )
1756 if ( alloc_stat /= 0 )
then
program fvforall
Main program. A simple setup and call of CONOPT.
program fvinclin
Main program. A simple setup and call of CONOPT.
integer(c_int) function coidef_message(cntvect, coi_message)
define callback routine for handling messages returned during the solution process.
integer(c_int) function coidef_solution(cntvect, coi_solution)
define callback routine for returning the final solution values.
integer(c_int) function coidef_status(cntvect, coi_status)
define callback routine for returning the completion status.
integer(c_int) function coidef_readmatrix(cntvect, coi_readmatrix)
define callback routine for providing the matrix data to CONOPT.
integer(c_int) function coidef_errmsg(cntvect, coi_errmsg)
define callback routine for returning error messages for row, column or Jacobian elements.
integer(c_int) function coidef_fdeval(cntvect, coi_fdeval)
define callback routine for performing function and derivative evaluations.
integer(c_int) function coidef_2ddirini(cntvect, coi_2ddirini)
define callback routine for initializing the computation of second derivatives for a constraint in a ...
integer(c_int) function coidef_progress(cntvect, coi_progress)
define callback routine for monitoring the algorithmic progress.
integer(c_int) function coidef_2dlagrstr(cntvect, coi_2dlagrstr)
define callback routine for providing the structure of the second derivatives of the Lagrangian.
integer(c_int) function coidef_2ddirend(cntvect, coi_2ddirend)
define callback routine for termination the computation of second derivatives for a constraint in a d...
integer(c_int) function coidef_fdevalend(cntvect, coi_fdevalend)
define callback routine for the termination of the function and derivative evaluation.
integer(c_int) function coidef_optfile(cntvect, optfile)
define callback routine for defining an options file.
integer(c_int) function coidef_fdinterval(cntvect, coi_fdinterval)
define callback routine for performing function and derivative evaluations on intervals.
integer(c_int) function coidef_option(cntvect, coi_option)
define callback routine for defining runtime options.
integer(c_int) function coidef_2ddir(cntvect, coi_2ddir)
define callback routine for computing the second derivative for a constraint in a direction.
integer(c_int) function coidef_usrmem(cntvect, usrmem)
provides a pointer to user memory that is available in all callback functions. NOTE: this is not a ca...
integer(c_int) function coidef_fdevalini(cntvect, coi_fdevalini)
define callback routine to perform initialization tasks for the function and derivative evaluation.
integer(c_int) function coidef_2dlagrval(cntvect, coi_2dlagrval)
define callback routine for computing the values of the second derivatives of the Lagrangian.
integer(c_int) function coidef_triord(cntvect, coi_triord)
define callback routine for providing the triangular order information.
integer(c_int) function coidef_2ddirlagr(cntvect, coi_2ddirlagr)
define callback routine for computing the second derivative of the Lagrangian in a direction.
integer(c_int) function coidef_inistat(cntvect, inistat)
handling of the initial status values.
integer(c_int) function coidef_optorder(cntvect, optorder)
define Optfile / Option order.
integer(c_int) function coidef_emptyrow(cntvect, emptyrow)
allow empty rows.
integer(c_int) function coidef_reslim(cntvect, reslim)
define resource limit.
integer(c_int) function coidef_zeronoise(cntvect, zeronoise)
define zero noise level.
integer(c_int) function coidef_fvforall(cntvect, fvforall)
call the FDEval for all constraints, including linear constraints.
integer(c_int) function coidef_license(cntvect, licint1, licint2, licint3, licstring)
define the License Information.
integer(c_int) function coidef_stdout(cntvect, tostdout)
allow output to StdOut.
integer(c_int) function coidef_itlim(cntvect, itlim)
define the Iteration Limit.
integer(c_int) function coidef_threadc(cntvect, threadc)
check for thread compatibility.
integer(c_int) function coidef_clearm(cntvect, clearm)
ClearM.
integer(c_int) function coidef_thread2d(cntvect, thread2d)
number of threads allowed for simultaneous 2DDir calls.
integer(c_int) function coidef_square(cntvect, square)
square models.
integer(c_int) function coidef_emptycol(cntvect, emptycol)
allow empty columns.
integer(c_int) function coidef_threadf(cntvect, threadf)
number of threads allowed for simultaneous FDEval calls.
integer(c_int) function coidef_discont(cntvect, discont)
allow discontinuous functions and derivatives.
integer(c_int) function coidef_debugfv(cntvect, debugfv)
turn Debugging of FDEval on and off.
integer(c_int) function coidef_debug2d(cntvect, debug2d)
turn debugging of 2nd derivatives on and off.
integer(c_int) function coidef_fvinclin(cntvect, fvinclin)
include the linear terms in function evaluations.
integer(c_int) function coidef_hessfac(cntvect, hessfac)
factor for Hessian density relative to Jacobian density HessFac.
integer(c_int) function coidef_errlim(cntvect, errlim)
define the Error Limit.
integer(c_int) function coidef_maxsup(cntvect, maxsup)
limit on superbasics.
integer(c_int) function coidef_threads(cntvect, threads)
number of threads allowed internally in CONOPT.
integer(c_int) function coidef_maxheap(cntvect, maxheap)
define Limit on Heap Memory. ""
integer(c_int) function coidef_numvar(cntvect, numvar)
defines the number of variables in the model.
integer(c_int) function coidef_numcon(cntvect, numcon)
defines the number of constraints in the model.
integer(c_int) function coidef_numnlnz(cntvect, numnlnz)
defines the Number of Nonlinear Nonzeros.
integer(c_int) function coidef_optdir(cntvect, optdir)
defines the Optimization Direction.
integer(c_int) function coidef_numnz(cntvect, numnz)
defines the number of nonzero elements in the Jacobian.
integer(c_int) function coidef_numhess(cntvect, numhess)
defines the Number of Hessian Nonzeros.
integer(c_int) function coidef_objvar(cntvect, objvar)
defines the Objective Variable.
integer(c_int) function coidef_objcon(cntvect, objcon)
defines the Objective Constraint.
integer(c_int) function coi_create(cntvect)
initializes CONOPT and creates the control vector.
integer(c_int) function coi_free(cntvect)
frees the control vector.
integer(c_int) function coidef_ini(cntvect)
initializes the Control Vector by placing default values in the various positions.
subroutine coiget_version(major, minor, patch)
returns the version number. It can be used to ensure that the modeler is linked to the correct versio...
integer(c_int) function coiget_rangeerrors(cntvect)
returns the range errors that were encountered.
integer(c_int) function coi_solve(cntvect)
method for starting the solving process of CONOPT.
real(c_double) function coiget_maxheapused(cntvect)
After a model has been solved this method will return the amount of heap memory used.
integer(c_int) function coiget_maxthreads(cntvect)
returns the maximum number of threads that can be used by CONOPT.
integer(c_int) function coidef_2dlagrsize(cntvect, coi_2dlagrsize)
program square
Main program. A simple setup and call of CONOPT.