10#if defined(_WIN32) && !defined(_WIN64) 
   11#define dec_directives_win32 
   31#ifdef dec_directives_win32 
   42   INTEGER, 
Dimension(:), 
Pointer :: cntvect
 
   55   real*8 :: memused, memini
 
   68   coi_error = max( coi_error, 
coidef_numnz( cntvect, 2*nr ) ) 
 
   72   coi_error = max( coi_error, 
coidef_optfile( cntvect, 
'rosex.opt'  ) )
 
   83#if defined(CONOPT_LICENSE_INT_1) && defined(CONOPT_LICENSE_INT_2) && defined(CONOPT_LICENSE_INT_3) && defined(CONOPT_LICENSE_TEXT) 
   84   coi_error = max( coi_error, 
coidef_license( cntvect, conopt_license_int_1, conopt_license_int_2, conopt_license_int_3, conopt_license_text) )
 
   87   If ( coi_error .ne. 0 ) 
THEN 
   89      write(*,*) 
'**** Fatal Error while loading CONOPT Callback routines.' 
   91      call flog( 
"Skipping Solve due to setup errors", 1 )
 
   97   If ( coi_error /= 0 ) 
then 
   98      call flog( 
"Solve 1: Errors encountered during solution", 1 )
 
  100      call flog( 
"Solve 1: Status or Solution routine was not called", 1 )
 
  102      call flog( 
"Solve 1: Solver and Model Status was not as expected (1,2)", 1 )
 
  103   elseif ( abs( 
obj-0.0d0 ) > 0.000001d0 ) 
then 
  104      call flog( 
"Solve 1: Incorrect objective returned", 1 )
 
  112   write(*,*) 
'Solve 1 used',memini,
' MBytes of memory and',miter_ini,
' iterations.' 
  113   write(10,*) 
'Solve 1 used',memini,
' MBytes of memory and',miter_ini,
' iterations.' 
  118   coi_error = max( coi_error, 
coidef_maxheap( cntvect, memini-8.d2/1024.d0**2  ) ) 
 
  121   write(*,*) 
'Solve 2 used',memused,
' MBytes of memory and',
miter,
' iterations. Return code=',coi_error
 
  122   write(10,*) 
'Solve 2 used',memused,
' MBytes of memory and',
miter,
' iterations. Return code=',coi_error
 
  134   coi_error = max( coi_error, 
coidef_numnz( cntvect, 2*nr ) ) 
 
  138   write(*,*) 
'Solve 3 used',memused,
' MBytes of memory and',
miter,
' iterations. Return code=',coi_error
 
  139   write(10,*) 
'Solve 3 used',memused,
' MBytes of memory and',
miter,
' iterations. Return code=',coi_error
 
  151   write(*,*) 
'Solve 4 used',memused,
' MBytes of memory. Return code=',coi_error
 
  152   write(10,*) 
'Solve 4 used',memused,
' MBytes of memory. Return code=',coi_error
 
  153   If ( coi_error /= 0 ) 
then 
  154      call flog( 
"Solve 4: Errors encountered during solution", 1 )
 
  156      call flog( 
"Solve 4: Status or Solution routine was not called", 1 )
 
  158      call flog( 
"Solve 4: Solver and Model Status was not as expected (1,2)", 1 )
 
  159   elseif ( abs( 
obj-0.0d0 ) > 0.000001d0 ) 
then 
  160      call flog( 
"Solve 4: Incorrect objective returned", 1 )
 
  163   write(*,*) 
'End of Extended Rosenbrock Function example. Return code=',coi_error
 
  165   if ( 
coi_free(cntvect) /= 0 ) 
call flog( 
"Error while freeing control vector",1)
 
  167   call flog( 
"Successful Solve", 0 )
 
  178Integer Function ros_readmatrix( lower, curr, upper, vsta, type, rhs, esta,      &
 
  179                                 colsta, rowno, value, nlflag, n, m, nz,  &
 
  181#ifdef dec_directives_win32 
  185   integer, 
intent (in)                      :: n      
 
  186   integer, 
intent (in)                      :: m      
 
  187   integer, 
intent (in)                      :: nz     
 
  188   real*8,  
intent (in out), 
dimension(n)    :: lower  
 
  189   real*8,  
intent (in out), 
dimension(n)    :: curr   
 
  190   real*8,  
intent (in out), 
dimension(n)    :: upper  
 
  191   integer, 
intent (in out), 
dimension(n)    :: vsta   
 
  193   integer, 
intent (out),    
dimension(m)    :: 
type    
  194   integer, 
intent (in out), 
dimension(m)    :: esta   
 
  196   real*8,  
intent (in out), 
dimension(m)    :: rhs    
 
  197   integer, 
intent (in out), 
dimension(n+1)  :: colsta 
 
  198   integer, 
intent (out),    
dimension(nz)   :: rowno  
 
  199   integer, 
intent (in out), 
dimension(nz)   :: nlflag 
 
  200   real*8,  
intent (in out), 
dimension(nz)   :: 
value   
 
  271Integer Function ros_fdeval( x, g, jac, rowno, jcnm, mode, ignerr, errcnt, &
 
  272                             n, nz, thread, usrmem )
 
  273#ifdef dec_directives_win32 
  277   integer, 
intent (in)                      :: n      
 
  278   integer, 
intent (in)                      :: rowno  
 
  279   integer, 
intent (in)                      :: nz     
 
  280   real*8,  
intent (in),     
dimension(n)    :: x      
 
  281   real*8,  
intent (in out)                  :: g      
 
  282   real*8,  
intent (in out), 
dimension(n)    :: jac    
 
  283   integer, 
intent (in),     
dimension(nz)   :: jcnm   
 
  285   integer, 
intent (in)                      :: mode   
 
  287   integer, 
intent (in)                      :: ignerr 
 
  289   integer, 
intent (in out)                  :: errcnt 
 
  291   integer, 
intent (in)                      :: thread
 
  301   if ( rowno .eq. 1 ) 
then 
  305      if ( mode .eq. 1 .or. mode .eq. 3 ) 
then 
 
  308            g = g + (x(2*i-1)-1.d0)**2 + 1.d2*(x(2*i)-x(2*i-1)**2)**2
 
  314      if ( mode .eq. 2 .or. mode .eq. 3 ) 
then 
  316            jac(2*i-1) = 2.d0*(x(2*i-1)-1.d0) - 4.d2*(x(2*i)-x(2*i-1)**2)*x(2*i-1)
 
  317            jac(2*i  ) = 2.d2*(x(2*i)-x(2*i-1)**2)
 
integer function std_solution(xval, xmar, xbas, xsta, yval, ymar, ybas, ysta, n, m, usrmem)
integer function std_status(modsta, solsta, iter, objval, usrmem)
integer function std_message(smsg, dmsg, nmsg, llen, usrmem, msgv)
integer function std_errmsg(rowno, colno, posno, msglen, usrmem, msg)
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_optfile(cntvect, optfile)
define callback routine for defining an options file.
integer(c_int) function coidef_license(cntvect, licint1, licint2, licint3, licstring)
define the License Information.
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_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 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.
subroutine flog(msg, code)
integer function ros_readmatrix(lower, curr, upper, vsta, type, rhs, esta, colsta, rowno, value, nlflag, n, m, nz, usrmem)
Define information about the model.
integer function ros_fdeval(x, g, jac, rowno, jcnm, mode, ignerr, errcnt, n, nz, thread, usrmem)
Compute nonlinear terms and non-constant Jacobian elements.
program rosex
Main program. A simple setup and call of CONOPT.