CONOPT
Loading...
Searching...
No Matches
coiheader.h
Go to the documentation of this file.
1
7
9#if defined(_WIN32)
10# define COI_CALLCONV __stdcall
11#else
12# define COI_CALLCONV
13#endif
14
15#if defined(__cplusplus)
16extern "C" {
17#endif
18
19struct coiRec;
20typedef struct coiRec *coiHandle_t;
21
22typedef int (*coiErrorCallback_t) (int ErrCount, const char *msg);
23extern int coiAPIErrorCount;
24
25/* function typedefs and pointer definitions */
26
27typedef int (COI_CALLCONV *COI_READMATRIX_t) (double LOWER[], double CURR[], double UPPER[], int VSTA[], int TYPEX[], double RHS[], int ESTA[], int COLSTA[], int ROWNO[], double VALUE[], int NLFLAG[], int NUMVAR, int NUMCON, int NUMNZ, void *USRMEM);
28typedef int (COI_CALLCONV *COI_FDEVAL_t) (const double X[], double *G, double JAC[], int ROWNO, const int JACNUM[], int MODE, int IGNERR, int *ERRCNT, int NUMVAR, int NUMJAC, int THREAD, void *USRMEM);
29typedef int (COI_CALLCONV *COI_FDEVALINI_t) (const double X[], const int ROWLIST[], int MODE, int LISTSIZE, int NUMTHREAD, int IGNERR, int *ERRCNT, int NUMVAR, void *USRMEM);
30typedef int (COI_CALLCONV *COI_FDEVALEND_t) (int IGNERR, int *ERRCNT, void *USRMEM);
31typedef int (COI_CALLCONV *COI_STATUS_t) (int MODSTA, int SOLSTA, int ITER, double OBJVAL, void *USRMEM);
32typedef int (COI_CALLCONV *COI_SOLUTION_t) (const double XVAL[], const double XMAR[], const int XBAS[], const int XSTA[], const double YVAL[], const double YMAR[], const int YBAS[], const int YSTA[], int NUMVAR, int NUMCON, void *USRMEM);
33typedef int (COI_CALLCONV *COI_MESSAGE_t) (int SMSG, int DMSG, int NMSG, char *MSGV[], void *USRMEM);
34typedef int (COI_CALLCONV *COI_ERRMSG_t) (int ROWNO, int COLNO, int POSNO, const char *MSG, void *USRMEM);
35typedef int (COI_CALLCONV *COI_PROGRESS_t) (int LEN_INT, const int INTX[], int LEN_RL, const double RL[], const double X[], void *USRMEM);
36typedef int (COI_CALLCONV *COI_OPTION_t) (int NCALL, double *RVAL, int *IVAL, int *LVAL, char *NAME, void *USRMEM);
37typedef int (COI_CALLCONV *COI_TRIORD_t) (int MODE, int TYPEX, int STATUS, int ROWNO, int COLNO, int INF, double VALUE, double RESID, void *USRMEM);
38typedef int (COI_CALLCONV *COI_FDINTERVAL_t) (const double XMIN[], const double XMAX[], double *GMIN, double *GMAX, double JMIN[], double JMAX[], int ROWNO, const int JACNUM[], int MODE, double PINF, int NUMVAR, int NUMJAC, void *USRMEM);
39typedef int (COI_CALLCONV *COI_2DDIR_t) (const double X[], const double DX[], double D2G[], int ROWNO, const int JACNUM[], int *NODRV, int NUMVAR, int NUMJAC, int THREAD, void *USRMEM);
40typedef int (COI_CALLCONV *COI_2DDIRINI_t) (const double X[], const double DX[], const int ROWLIST[], int LISTSIZE, int NUMTHREAD, int NEWPT, int *NODRV, int NUMVAR, void *USRMEM);
41typedef int (COI_CALLCONV *COI_2DDIREND_t) (int *NODRV, void *USRMEM);
42typedef int (COI_CALLCONV *COI_2DDIRLAGR_t) (const double X[], const double DX[], const double U[], double D2G[], int NEWPT, int *NODRV, int NUMVAR, int NUMCON, void *USRMEM);
43typedef int (COI_CALLCONV *COI_2DLAGRSIZE_t) (int *NODRV, int NUMVAR, int NUMCON, int *NHESS, int MAXHESS, void *USRMEM);
44typedef int (COI_CALLCONV *COI_2DLAGRSTR_t) (int HSRW[], int HSCL[], int *NODRV, int NUMVAR, int NUMCON, int NHESS, void *USRMEM);
45typedef int (COI_CALLCONV *COI_2DLAGRVAL_t) (const double X[], const double U[], const int HSRW[], const int HSCL[], double HSVL[], int *NODRV, int NUMVAR, int NUMCON, int NHESS, void *USRMEM);
46
47#define COIGET_Version C__COIGET_Version
48#define COIDEF_NumVar C__COIDEF_NumVar
49#define COIDEF_NumCon C__COIDEF_NumCon
50#define COIDEF_NumNz C__COIDEF_NumNz
51#define COIDEF_NumNlNz C__COIDEF_NumNlNz
52#define COIDEF_NumHess C__COIDEF_NumHess
53#define COIDEF_Base C__COIDEF_Base
54#define COIDEF_Fortran C__COIDEF_Fortran
55#define COIDEF_C C__COIDEF_C
56#define COIDEF_OptDir C__COIDEF_OptDir
57#define COIDEF_ObjVar C__COIDEF_ObjVar
58#define COIDEF_ObjCon C__COIDEF_ObjCon
59#define COIDEF_DebugFV C__COIDEF_DebugFV
60#define COIDEF_StdOut C__COIDEF_StdOut
61#define COIDEF_Square C__COIDEF_Square
62#define COIDEF_License C__COIDEF_License
63#define COIDEF_ItLim C__COIDEF_ItLim
64#define COIDEF_ErrLim C__COIDEF_ErrLim
65#define COIDEF_IniStat C__COIDEF_IniStat
66#define COIDEF_FVincLin C__COIDEF_FVincLin
67#define COIDEF_FVforAll C__COIDEF_FVforAll
68#define COIDEF_MaxSup C__COIDEF_MaxSup
69#define COIDEF_EmptyRow C__COIDEF_EmptyRow
70#define COIDEF_EmptyCol C__COIDEF_EmptyCol
71#define COIDEF_Debug2D C__COIDEF_Debug2D
72#define COIDEF_DisCont C__COIDEF_DisCont
73#define COIDEF_ClearM C__COIDEF_ClearM
74#define COIDEF_ResLim C__COIDEF_ResLim
75#define COIDEF_HessFac C__COIDEF_HessFac
76#define COIDEF_MaxHeap C__COIDEF_MaxHeap
77#define COIDEF_ThreadS C__COIDEF_ThreadS
78#define COIDEF_ThreadF C__COIDEF_ThreadF
79#define COIDEF_Thread2D C__COIDEF_Thread2D
80#define COIDEF_ThreadC C__COIDEF_ThreadC
81#define COIDEF_Optfile C__COIDEF_Optfile
82#define COIDEF_ReadMatrix C__COIDEF_ReadMatrix
83#define COIDEF_FDEval C__COIDEF_FDEval
84#define COIDEF_FDEvalIni C__COIDEF_FDEvalIni
85#define COIDEF_FDEvalEnd C__COIDEF_FDEvalEnd
86#define COIDEF_Status C__COIDEF_Status
87#define COIDEF_Solution C__COIDEF_Solution
88#define COIDEF_Message C__COIDEF_Message
89#define COIDEF_ErrMsg C__COIDEF_ErrMsg
90#define COIDEF_Progress C__COIDEF_Progress
91#define COIDEF_Option C__COIDEF_Option
92#define COIDEF_TriOrd C__COIDEF_TriOrd
93#define COIDEF_FDInterval C__COIDEF_FDInterval
94#define COIDEF_2DDir C__COIDEF_2DDir
95#define COIDEF_2DDirIni C__COIDEF_2DDirIni
96#define COIDEF_2DDirEnd C__COIDEF_2DDirEnd
97#define COIDEF_2DDirLagr C__COIDEF_2DDirLagr
98#define COIDEF_2DLagrSize C__COIDEF_2DLagrSize
99#define COIDEF_2DLagrStr C__COIDEF_2DLagrStr
100#define COIDEF_2DLagrVal C__COIDEF_2DLagrVal
101#define COIDEF_UsrMem C__COIDEF_UsrMem
102#define COIGET_MaxThreads C__COIGET_MaxThreads
103#define COIGET_MaxHeapUsed C__COIGET_MaxHeapUsed
104#define COIGET_RangeErrors C__COIGET_RangeErrors
105#define COI_Solve C__COI_Solve
107
112int COI_CALLCONV COI_Solve (coiHandle_t cntvect);
113
118void COI_CALLCONV COIGET_Version (int* major, int* minor, int* patch);
119
124int COI_CALLCONV COIGET_MaxThreads (coiHandle_t cntvect);
125
130double COI_CALLCONV COIGET_MaxHeapUsed (coiHandle_t cntvect);
131
136int COI_CALLCONV COIGET_RangeErrors (coiHandle_t cntvect);
137
144int COI_CALLCONV coiCreate(
145 coiHandle_t *cntvect
146 );
147
154int COI_CALLCONV coiFree(coiHandle_t *cntvect);
155
161void COI_CALLCONV coiFinalize(void);
162
167int COI_CALLCONV COIDEF_NumVar (coiHandle_t cntvect, int numvar);
168
173int COI_CALLCONV COIDEF_NumCon (coiHandle_t cntvect, int numcon);
174
175
180int COI_CALLCONV COIDEF_NumNz (coiHandle_t cntvect, int numnz);
181
186int COI_CALLCONV COIDEF_NumNlNz (coiHandle_t cntvect, int numnlnz);
187
192int COI_CALLCONV COIDEF_NumHess (coiHandle_t cntvect, int numhess);
193
198int COI_CALLCONV COIDEF_OptDir (coiHandle_t cntvect, int optdir);
199
204int COI_CALLCONV COIDEF_ObjVar (coiHandle_t cntvect, int objvar);
205
210int COI_CALLCONV COIDEF_ObjCon (coiHandle_t cntvect, int objcon);
211
216int COI_CALLCONV COIDEF_License (coiHandle_t cntvect, int licint1, int licint2, int licint3, const char *licstring);
217
222int COI_CALLCONV COIDEF_Base (coiHandle_t cntvect, int base);
223
228int COI_CALLCONV COIDEF_Fortran (coiHandle_t cntvect);
229
234int COI_CALLCONV COIDEF_C (coiHandle_t cntvect);
235
240int COI_CALLCONV COIDEF_ItLim (coiHandle_t cntvect, int itlim);
241
246int COI_CALLCONV COIDEF_ErrLim (coiHandle_t cntvect, int errlim);
247
252int COI_CALLCONV COIDEF_ResLim (coiHandle_t cntvect, double reslim);
253
258int COI_CALLCONV COIDEF_MaxHeap (coiHandle_t cntvect, double maxheap);
259
264int COI_CALLCONV COIDEF_IniStat (coiHandle_t cntvect, int inistat);
265
270int COI_CALLCONV COIDEF_FVincLin (coiHandle_t cntvect, int fvinclin);
271
276int COI_CALLCONV COIDEF_FVforAll (coiHandle_t cntvect, int fvforall);
277
282int COI_CALLCONV COIDEF_MaxSup (coiHandle_t cntvect, int maxsup);
283
288int COI_CALLCONV COIDEF_Square (coiHandle_t cntvect, int square);
289
294int COI_CALLCONV COIDEF_EmptyRow (coiHandle_t cntvect, int emptyrow);
295
300int COI_CALLCONV COIDEF_EmptyCol (coiHandle_t cntvect, int emptycol);
301
306int COI_CALLCONV COIDEF_DisCont (coiHandle_t cntvect, int discont);
307
312int COI_CALLCONV COIDEF_HessFac (coiHandle_t cntvect, double hessfac);
313
318int COI_CALLCONV COIDEF_DebugFV (coiHandle_t cntvect, int debugfv);
319
324int COI_CALLCONV COIDEF_Debug2D (coiHandle_t cntvect, int debug2d);
325
326
331int COI_CALLCONV COIDEF_ClearM (coiHandle_t cntvect, int clearm);
332
337int COI_CALLCONV COIDEF_ThreadS (coiHandle_t cntvect, int threads);
338
343int COI_CALLCONV COIDEF_ThreadF (coiHandle_t cntvect, int threadf);
344
349int COI_CALLCONV COIDEF_Thread2D (coiHandle_t cntvect, int thread2d);
350
355int COI_CALLCONV COIDEF_ThreadC (coiHandle_t cntvect, int threadc);
356
361int COI_CALLCONV COIDEF_StdOut (coiHandle_t cntvect, int tostdout);
362
367int COI_CALLCONV COIDEF_Optfile (coiHandle_t cntvect, const char *optfile);
368
373int COI_CALLCONV COIDEF_ReadMatrix (coiHandle_t cntvect, COI_READMATRIX_t coi_readmatrix);
374
379int COI_CALLCONV COIDEF_FDEval (coiHandle_t cntvect, COI_FDEVAL_t coi_fdeval);
380
385int COI_CALLCONV COIDEF_FDEvalIni (coiHandle_t cntvect, COI_FDEVALINI_t coi_fdevalini);
386
391int COI_CALLCONV COIDEF_FDEvalEnd (coiHandle_t cntvect, COI_FDEVALEND_t coi_fdevalend);
392
397int COI_CALLCONV COIDEF_Status (coiHandle_t cntvect, COI_STATUS_t coi_status);
398
403int COI_CALLCONV COIDEF_Solution (coiHandle_t cntvect, COI_SOLUTION_t coi_solution);
404
409int COI_CALLCONV COIDEF_Message (coiHandle_t cntvect, COI_MESSAGE_t coi_message);
410
415int COI_CALLCONV COIDEF_ErrMsg (coiHandle_t cntvect, COI_ERRMSG_t coi_errmsg);
416
421int COI_CALLCONV COIDEF_Progress (coiHandle_t cntvect, COI_PROGRESS_t coi_progress);
422
427int COI_CALLCONV COIDEF_Option (coiHandle_t cntvect, COI_OPTION_t coi_option);
428
433int COI_CALLCONV COIDEF_TriOrd (coiHandle_t cntvect, COI_TRIORD_t coi_triord);
434
439int COI_CALLCONV COIDEF_FDInterval (coiHandle_t cntvect, COI_FDINTERVAL_t coi_fdinterval);
440
445int COI_CALLCONV COIDEF_2DDir (coiHandle_t cntvect, COI_2DDIR_t coi_2ddir);
446
451int COI_CALLCONV COIDEF_2DDirIni (coiHandle_t cntvect, COI_2DDIRINI_t coi_2ddirini);
452
457int COI_CALLCONV COIDEF_2DDirEnd (coiHandle_t cntvect, COI_2DDIREND_t coi_2ddirend);
458
463int COI_CALLCONV COIDEF_2DDirLagr (coiHandle_t cntvect, COI_2DDIRLAGR_t coi_2ddirlagr);
464
465int COI_CALLCONV COIDEF_2DLagrSize (coiHandle_t cntvect, COI_2DLAGRSIZE_t coi_2dlagrsize);
466
471int COI_CALLCONV COIDEF_2DLagrStr (coiHandle_t cntvect, COI_2DLAGRSTR_t coi_2dlagrstr);
472
477int COI_CALLCONV COIDEF_2DLagrVal (coiHandle_t cntvect, COI_2DLAGRVAL_t coi_2dlagrval);
478
483int COI_CALLCONV COIDEF_UsrMem (coiHandle_t cntvect, void *usrmem);
484
485#if defined(__cplusplus)
486}
487#endif
int COI_CALLCONV COIDEF_2DLagrSize(coiHandle_t cntvect, COI_2DLAGRSIZE_t coi_2dlagrsize)
program fvforall
Main program. A simple setup and call of CONOPT.
Definition fvforall.f90:14
program fvinclin
Main program. A simple setup and call of CONOPT.
Definition fvinclin.f90:14
int COI_CALLCONV COIDEF_ReadMatrix(coiHandle_t cntvect, COI_READMATRIX_t coi_readmatrix)
define callback routine for providing the matrix data to CONOPT.
int COI_CALLCONV COIDEF_Message(coiHandle_t cntvect, COI_MESSAGE_t coi_message)
define callback routine for handling messages returned during the solution process.
int COI_CALLCONV COIDEF_Solution(coiHandle_t cntvect, COI_SOLUTION_t coi_solution)
define callback routine for returning the final solution values.
int COI_CALLCONV COIDEF_Status(coiHandle_t cntvect, COI_STATUS_t coi_status)
define callback routine for returning the completion status.
int COI_CALLCONV COIDEF_ErrMsg(coiHandle_t cntvect, COI_ERRMSG_t coi_errmsg)
define callback routine for returning error messages for row, column or Jacobian elements.
int COI_CALLCONV COIDEF_FDEval(coiHandle_t cntvect, COI_FDEVAL_t coi_fdeval)
define callback routine for performing function and derivative evaluations.
int COI_CALLCONV COIDEF_2DDirEnd(coiHandle_t cntvect, COI_2DDIREND_t coi_2ddirend)
define callback routine for termination the computation of second derivatives for a constraint in a d...
int COI_CALLCONV COIDEF_2DDirLagr(coiHandle_t cntvect, COI_2DDIRLAGR_t coi_2ddirlagr)
define callback routine for computing the second derivative of the Lagrangian in a direction.
int COI_CALLCONV COIDEF_2DDirIni(coiHandle_t cntvect, COI_2DDIRINI_t coi_2ddirini)
define callback routine for initializing the computation of second derivatives for a constraint in a ...
int COI_CALLCONV COIDEF_Progress(coiHandle_t cntvect, COI_PROGRESS_t coi_progress)
define callback routine for monitoring the algorithmic progress.
int COI_CALLCONV COIDEF_FDInterval(coiHandle_t cntvect, COI_FDINTERVAL_t coi_fdinterval)
define callback routine for performing function and derivative evaluations on intervals.
int COI_CALLCONV COIDEF_Option(coiHandle_t cntvect, COI_OPTION_t coi_option)
define callback routine for defining runtime options.
int COI_CALLCONV COIDEF_2DLagrVal(coiHandle_t cntvect, COI_2DLAGRVAL_t coi_2dlagrval)
define callback routine for computing the values of the second derivatives of the Lagrangian.
int COI_CALLCONV COIDEF_UsrMem(coiHandle_t cntvect, void *usrmem)
provides a pointer to user memory that is available in all callback functions. NOTE: this is not a ca...
int COI_CALLCONV COIDEF_2DDir(coiHandle_t cntvect, COI_2DDIR_t coi_2ddir)
define callback routine for computing the second derivative for a constraint in a direction.
int COI_CALLCONV COIDEF_2DLagrStr(coiHandle_t cntvect, COI_2DLAGRSTR_t coi_2dlagrstr)
define callback routine for providing the structure of the second derivatives of the Lagrangian.
int COI_CALLCONV COIDEF_FDEvalIni(coiHandle_t cntvect, COI_FDEVALINI_t coi_fdevalini)
define callback routine to perform initialization tasks for the function and derivative evaluation.
int COI_CALLCONV COIDEF_TriOrd(coiHandle_t cntvect, COI_TRIORD_t coi_triord)
define callback routine for providing the triangular order information.
int COI_CALLCONV COIDEF_Optfile(coiHandle_t cntvect, const char *optfile)
define callback routine for defining an options file.
int COI_CALLCONV COIDEF_FDEvalEnd(coiHandle_t cntvect, COI_FDEVALEND_t coi_fdevalend)
define callback routine for the termination of the function and derivative evaluation.
int COI_CALLCONV COIDEF_ThreadC(coiHandle_t cntvect, int threadc)
check for thread compatibility.
int COI_CALLCONV COIDEF_DebugFV(coiHandle_t cntvect, int debugfv)
turn Debugging of FDEval on and off.
int COI_CALLCONV COIDEF_License(coiHandle_t cntvect, int licint1, int licint2, int licint3, const char *licstring)
define the License Information.
int COI_CALLCONV COIDEF_FVincLin(coiHandle_t cntvect, int fvinclin)
include the linear terms in function evaluations.
int COI_CALLCONV COIDEF_ThreadF(coiHandle_t cntvect, int threadf)
number of threads allowed for simultaneous FDEval calls.
int COI_CALLCONV COIDEF_EmptyCol(coiHandle_t cntvect, int emptycol)
allow empty columns.
int COI_CALLCONV COIDEF_ErrLim(coiHandle_t cntvect, int errlim)
define the Error Limit.
int COI_CALLCONV COIDEF_Base(coiHandle_t cntvect, int base)
define the Base index for vectors.
int COI_CALLCONV COIDEF_C(coiHandle_t cntvect)
define C Conventions for Argument Passing.
int COI_CALLCONV COIDEF_Debug2D(coiHandle_t cntvect, int debug2d)
turn debugging of 2nd derivatives on and off.
int COI_CALLCONV COIDEF_IniStat(coiHandle_t cntvect, int inistat)
handling of the initial status values.
int COI_CALLCONV COIDEF_ResLim(coiHandle_t cntvect, double reslim)
define resource limit.
int COI_CALLCONV COIDEF_Fortran(coiHandle_t cntvect)
define Fortran Conventions for Argument Passing.
int COI_CALLCONV COIDEF_MaxHeap(coiHandle_t cntvect, double maxheap)
define Limit on Heap Memory. ""
int COI_CALLCONV COIDEF_DisCont(coiHandle_t cntvect, int discont)
allow discontinuous functions and derivatives.
int COI_CALLCONV COIDEF_StdOut(coiHandle_t cntvect, int tostdout)
allow output to StdOut.
int COI_CALLCONV COIDEF_ClearM(coiHandle_t cntvect, int clearm)
ClearM.
int COI_CALLCONV COIDEF_HessFac(coiHandle_t cntvect, double hessfac)
factor for Hessian density relative to Jacobian density HessFac.
int COI_CALLCONV COIDEF_ThreadS(coiHandle_t cntvect, int threads)
number of threads allowed internally in CONOPT.
int COI_CALLCONV COIDEF_Thread2D(coiHandle_t cntvect, int thread2d)
number of threads allowed for simultaneous 2DDir calls.
int COI_CALLCONV COIDEF_FVforAll(coiHandle_t cntvect, int fvforall)
call the FDEval for all constraints, including linear constraints.
int COI_CALLCONV COIDEF_Square(coiHandle_t cntvect, int square)
square models.
int COI_CALLCONV COIDEF_ItLim(coiHandle_t cntvect, int itlim)
define the Iteration Limit.
int COI_CALLCONV COIDEF_MaxSup(coiHandle_t cntvect, int maxsup)
limit on superbasics.
int COI_CALLCONV COIDEF_EmptyRow(coiHandle_t cntvect, int emptyrow)
allow empty rows.
int COI_CALLCONV COIDEF_NumHess(coiHandle_t cntvect, int numhess)
defines the Number of Hessian Nonzeros.
int COI_CALLCONV COIDEF_ObjVar(coiHandle_t cntvect, int objvar)
defines the Objective Variable.
int COI_CALLCONV COIDEF_ObjCon(coiHandle_t cntvect, int objcon)
defines the Objective Constraint.
int COI_CALLCONV COIDEF_NumVar(coiHandle_t cntvect, int numvar)
defines the number of variables in the model.
int COI_CALLCONV COIDEF_NumNz(coiHandle_t cntvect, int numnz)
defines the number of nonzero elements in the Jacobian.
int COI_CALLCONV COIDEF_NumCon(coiHandle_t cntvect, int numcon)
defines the number of constraints in the model.
int COI_CALLCONV COIDEF_OptDir(coiHandle_t cntvect, int optdir)
defines the Optimization Direction.
int COI_CALLCONV COIDEF_NumNlNz(coiHandle_t cntvect, int numnlnz)
defines the Number of Nonlinear Nonzeros.
void COI_CALLCONV coiFinalize(void)
finializes the solving process for CONOPT. This must be called when using OpenMP. It will terminate t...
int COI_CALLCONV coiCreate(coiHandle_t *cntvect)
initialises and create the control vector.
int COI_CALLCONV coiFree(coiHandle_t *cntvect)
frees the control vector.
int COI_CALLCONV COI_Solve(coiHandle_t cntvect)
method for starting the solving process of CONOPT.
int COI_CALLCONV COIGET_MaxThreads(coiHandle_t cntvect)
returns the maximum number of threads that can be used by CONOPT.
double COI_CALLCONV COIGET_MaxHeapUsed(coiHandle_t cntvect)
After a model has been solved this method will return the amount of heap memory used.
int COI_CALLCONV COIGET_RangeErrors(coiHandle_t cntvect)
returns the range errors that were encountered.
void COI_CALLCONV COIGET_Version(int *major, int *minor, int *patch)
returns the version number. It can be used to ensure that the modeler is linked to the correct versio...
program square
Main program. A simple setup and call of CONOPT.
Definition square.f90:17