Module containing callers to the main equation solvers HYBRD and VMCON author: P J Knight, CCFE, Culham Science Centre This module contains the primary numerics variables and the calling routines for the two equation solvers in the code.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | public, | parameter | :: | ipnvars | = | 175 | ipnvars FIX : total number of variables available for iteration |
integer, | public, | parameter | :: | ipeqns | = | 91 | ipeqns FIX : number of constraint equations available |
integer, | public, | parameter | :: | ipnfoms | = | 19 | ipnfoms FIX : number of available figures of merit |
integer, | public, | parameter | :: | ipvlam | = | ipeqns+2*ipnvars+1 | |
integer, | public, | parameter | :: | iptnt | = | (ipeqns*(3*ipeqns+13))/2 | |
integer, | public, | parameter | :: | ipvp1 | = | ipnvars+1 | |
integer, | public | :: | ioptimz | ioptimz /1/ : code operation switch:
minmax /7/ : switch for figure-of-merit (see lablmm for descriptions) negative => maximise, positive => minimise |
|||
integer, | public | :: | minmax | ||||
character(len=22), | public, | dimension(ipnfoms) | :: | lablmm | lablmm(ipnfoms) : labels describing figures of merit:
|
||
integer, | public | :: | ncalls | ncalls : number of function calls during solution |
|||
integer, | public | :: | neqns | neqns /0/ : number of equality constraints to be satisfied |
|||
integer, | public | :: | nfev1 | nfev1 : number of calls to FCNHYB (HYBRD function caller) made |
|||
integer, | public | :: | nfev2 | nfev2 : number of calls to FCNVMC1 (VMCON function caller) made |
|||
integer, | public | :: | nineqns | nineqns /0/ : number of inequality constraints VMCON must satisfy (leave at zero for now) |
|||
integer, | public | :: | nvar | nvar /16/ : number of iteration variables to use |
|||
integer, | public | :: | nviter | nviter : number of VMCON iterations performed icc(ipeqns) /0/ : array defining which constraint equations to activate (see lablcc for descriptions) |
|||
integer, | public, | dimension(ipeqns) | :: | icc | |||
logical, | public, | dimension(ipeqns) | :: | active_constraints | active_constraints(ipeqns) : Logical array showing which constraints are active |
||
character(len=33), | public, | dimension(ipeqns) | :: | lablcc | lablcc(ipeqns) : labels describing constraint equations (corresponding itvs)
|
||
integer, | public, | dimension(ipnvars) | :: | ixc | ixc(ipnvars) /0/ : array defining which iteration variables to activate (see lablxc for descriptions) |
||
character(len=30), | public, | dimension(ipnvars) | :: | lablxc | lablxc(ipnvars) : labels describing iteration variables
|
||
character(len=14), | public, | dimension(:), allocatable | :: | name_xc | |||
real(kind=dp), | public | :: | sqsumsq | sqsumsq : sqrt of the sum of the square of the constraint residuals |
|||
character(len=40), | public | :: | objf_name | Description of the objective function |
|||
real(kind=dp), | public | :: | norm_objf | Normalised objective function (figure of merit) |
|||
real(kind=dp), | public | :: | epsfcn | epsfcn /1.0e-3/ : finite difference step length for HYBRD/VMCON derivatives |
|||
real(kind=dp), | public | :: | epsvmc | epsvmc /1.0e-6/ : error tolerance for VMCON |
|||
real(kind=dp), | public | :: | factor | factor /0.1/ : used in HYBRD for first step size |
|||
real(kind=dp), | public | :: | ftol | ftol /1.0e-4/ : error tolerance for HYBRD |
|||
real(kind=dp), | public, | dimension(ipnvars) | :: | boundl | boundl(ipnvars) /../ : lower bounds used on ixc variables during VMCON optimisation runs |
||
real(kind=dp), | public, | dimension(ipnvars) | :: | boundu | |||
real(kind=dp), | public, | dimension(ipnvars) | :: | bondl | |||
real(kind=dp), | public, | dimension(ipnvars) | :: | bondu | |||
real(kind=dp), | public, | dimension(ipnvars) | :: | rcm | |||
real(kind=dp), | public, | dimension(ipnvars) | :: | resdl | |||
real(kind=dp), | public, | dimension(ipnvars) | :: | scafc | |||
real(kind=dp), | public, | dimension(ipnvars) | :: | scale | |||
real(kind=dp), | public, | dimension(ipnvars) | :: | xcm | |||
real(kind=dp), | public, | dimension(ipnvars) | :: | xcs | |||
real(kind=dp), | public, | dimension(ipvlam) | :: | vlam |