This mode of operation is particularly suited for embedding J-Solver into a larger program. A call to J-Solver follows at least three steps: the first ensures that enough memory is allocated, the second consists in running the core J-Solver and the third ensures that the previously allocated memory is freed.
CALL jsoInit(MN, NDOUB, ISYM) ! initialize and ! allocate memory ! ... (list of optional ``set'' routines) CALL jsoExec( & FACIMP, & GZEROS, & KMAX, NPSIT, & PPRIME_S, AJB, & XBND, ZBND, & PSIBAR0, & X, Z, & IERROR) ! ... (list of optional ``get'' routines) CALL jsoFree ! reclaim memory
where
NTHEP = (ISYM-1)*(2**(MN+NDOUB) + ISYM) + 1 - 2*ISYM
and
NPSI = 2**(MN+NDOUB) + 1.
Neighboring poloidal points are contiguous in memory. (The values of NTHEP and NPSI can be obtained using a ``get'' call, see below.)
Between initialization and memory clean-up, all quantities defined in the f90 common-modules can be accessed and modified through ``get'' and ``set'' routine calls, respectively. The list of admissible ``set'' calls includes all the parameters that are otherwise accessible in the inequ file plus some additional ones. For instance
CALL jsoSetNimax(11)resets the number of inner-loops before the metric is updated.
All these input parameters take default values that need not be changed for most applications. Thus the ``set'' routines allows the users to concentrate on those parameters that are critical to their simulations while ensuring that the default parameters are not inadvertently changed.
Similarly there are ``get'' routines to access internal variables. At present, only a limited set of these calls are implemented; users are encouraged to write their own access routines to suit to their needs. In the following example,
CALL jsoGetPp(PPRIME)the pressure gradient profile