/usr/include/arkode/arkode_pcg.h is in libsundials-dev 2.7.0+dfsg-2build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 | /*---------------------------------------------------------------
* Programmer(s): Daniel R. Reynolds @ SMU
*---------------------------------------------------------------
* LLNS/SMU Copyright Start
* Copyright (c) 2015, Southern Methodist University and
* Lawrence Livermore National Security
*
* This work was performed under the auspices of the U.S. Department
* of Energy by Southern Methodist University and Lawrence Livermore
* National Laboratory under Contract DE-AC52-07NA27344.
* Produced at Southern Methodist University and the Lawrence
* Livermore National Laboratory.
*
* All rights reserved.
* For details, see the LICENSE file.
* LLNS/SMU Copyright End
*---------------------------------------------------------------
* This is the header file for the ARKODE scaled preconditioned
* CG linear solver, ARKPCG.
*--------------------------------------------------------------*/
#ifndef _ARKPCG_H
#define _ARKPCG_H
#include <arkode/arkode.h>
#include <arkode/arkode_spils.h>
#include <sundials/sundials_pcg.h>
#ifdef __cplusplus /* wrapper to enable C++ usage */
extern "C" {
#endif
/*---------------------------------------------------------------
ARKPcg:
A call to the ARKPcg function links the main ARKODE integrator
with the ARKPCG linear solver.
arkode_mem is the pointer to the integrator memory returned by
ARKodeCreate.
pretype is the type of user preconditioning to be done.
This must be one of the four enumeration constants
PREC_NONE, PREC_LEFT, PREC_RIGHT, or PREC_BOTH defined
in iterative.h. These correspond to no preconditioning,
left preconditioning only, right preconditioning
only, and both left and right preconditioning,
respectively. However, since PCG requires a symmetric
linear operator, this flag is checked for any one of
PREC_LEFT, PREC_RIGHT and PREC_BOTH -- if any are
found then preconditioning is used. It is assumed
that the preconditioner implements a symmetric linear
operator.
maxl is the maximum Krylov dimension. This is an
optional input to the ARKPCG solver. Pass 0 to
use the default value ARKPCG_MAXL=5.
The return value of ARKPcg is one of:
ARKSPILS_SUCCESS if successful
ARKSPILS_MEM_NULL if the arkode memory was NULL
ARKSPILS_MEM_FAIL if there was a memory allocation failure
ARKSPILS_ILL_INPUT if a required vector operation is missing
The above constants are defined in arkode_spils.h
---------------------------------------------------------------*/
SUNDIALS_EXPORT int ARKPcg(void *arkode_mem, int pretype, int maxl);
/*---------------------------------------------------------------
ARKMassPcg:
A call to the ARKMassPcg function links the mass matrix solve
with the ARKPCG linear solver.
arkode_mem is the pointer to the integrator memory returned by
ARKodeCreate.
pretype is the type of user preconditioning to be done.
This must be one of the four enumeration constants
PREC_NONE, PREC_LEFT, PREC_RIGHT, or PREC_BOTH defined
in iterative.h. These correspond to no preconditioning,
left preconditioning only, right preconditioning
only, and both left and right preconditioning,
respectively. However, since PCG requires a symmetric
linear operator, this flag is checked for any one of
PREC_LEFT, PREC_RIGHT and PREC_BOTH -- if any are
found then preconditioning is used. It is assumed
that the preconditioner implements a symmetric linear
operator.
maxl is the maximum Krylov dimension. This is an
optional input to the ARKPCG solver. Pass 0 to
use the default value ARKPCG_MAXL=5.
mtimes is the user-supplied mass-matrix-vector product
routine.
The return value of ARKMassPcg is one of:
ARKSPILS_SUCCESS if successful
ARKSPILS_MEM_NULL if the arkode memory was NULL
ARKSPILS_MEM_FAIL if there was a memory allocation failure
ARKSPILS_ILL_INPUT if a required vector operation is missing
The above constants are defined in arkode_spils.h
---------------------------------------------------------------*/
SUNDIALS_EXPORT int ARKMassPcg(void *arkode_mem, int pretype, int maxl,
ARKSpilsMassTimesVecFn mtimes,
void *mtimes_data);
#ifdef __cplusplus
}
#endif
#endif
|