! This file was automatically generated by SWIG (http://www.swig.org).
! Version 4.0.0
!
! Do not make changes to this file unless you know what you are doing--modify
! the SWIG interface file instead.

! ---------------------------------------------------------------
! Programmer(s): Auto-generated by swig.
! ---------------------------------------------------------------
! SUNDIALS Copyright Start
! Copyright (c) 2002-2021, Lawrence Livermore National Security
! and Southern Methodist University.
! All rights reserved.
!
! See the top-level LICENSE and NOTICE files for details.
!
! SPDX-License-Identifier: BSD-3-Clause
! SUNDIALS Copyright End
! ---------------------------------------------------------------

module fcvode_mod
 use, intrinsic :: ISO_C_BINDING
 use fsundials_nvector_mod
 use fsundials_types_mod
 use fsundials_matrix_mod
 use fsundials_nvector_mod
 use fsundials_types_mod
 use fsundials_linearsolver_mod
 use fsundials_matrix_mod
 use fsundials_nvector_mod
 use fsundials_types_mod
 use fsundials_nonlinearsolver_mod
 use fsundials_types_mod
 implicit none
 private

 ! DECLARATION CONSTRUCTS
 integer(C_INT), parameter, public :: CV_ADAMS = 1_C_INT
 integer(C_INT), parameter, public :: CV_BDF = 2_C_INT
 integer(C_INT), parameter, public :: CV_NORMAL = 1_C_INT
 integer(C_INT), parameter, public :: CV_ONE_STEP = 2_C_INT
 integer(C_INT), parameter, public :: CV_SUCCESS = 0_C_INT
 integer(C_INT), parameter, public :: CV_TSTOP_RETURN = 1_C_INT
 integer(C_INT), parameter, public :: CV_ROOT_RETURN = 2_C_INT
 integer(C_INT), parameter, public :: CV_WARNING = 99_C_INT
 integer(C_INT), parameter, public :: CV_TOO_MUCH_WORK = -1_C_INT
 integer(C_INT), parameter, public :: CV_TOO_MUCH_ACC = -2_C_INT
 integer(C_INT), parameter, public :: CV_ERR_FAILURE = -3_C_INT
 integer(C_INT), parameter, public :: CV_CONV_FAILURE = -4_C_INT
 integer(C_INT), parameter, public :: CV_LINIT_FAIL = -5_C_INT
 integer(C_INT), parameter, public :: CV_LSETUP_FAIL = -6_C_INT
 integer(C_INT), parameter, public :: CV_LSOLVE_FAIL = -7_C_INT
 integer(C_INT), parameter, public :: CV_RHSFUNC_FAIL = -8_C_INT
 integer(C_INT), parameter, public :: CV_FIRST_RHSFUNC_ERR = -9_C_INT
 integer(C_INT), parameter, public :: CV_REPTD_RHSFUNC_ERR = -10_C_INT
 integer(C_INT), parameter, public :: CV_UNREC_RHSFUNC_ERR = -11_C_INT
 integer(C_INT), parameter, public :: CV_RTFUNC_FAIL = -12_C_INT
 integer(C_INT), parameter, public :: CV_NLS_INIT_FAIL = -13_C_INT
 integer(C_INT), parameter, public :: CV_NLS_SETUP_FAIL = -14_C_INT
 integer(C_INT), parameter, public :: CV_CONSTR_FAIL = -15_C_INT
 integer(C_INT), parameter, public :: CV_NLS_FAIL = -16_C_INT
 integer(C_INT), parameter, public :: CV_MEM_FAIL = -20_C_INT
 integer(C_INT), parameter, public :: CV_MEM_NULL = -21_C_INT
 integer(C_INT), parameter, public :: CV_ILL_INPUT = -22_C_INT
 integer(C_INT), parameter, public :: CV_NO_MALLOC = -23_C_INT
 integer(C_INT), parameter, public :: CV_BAD_K = -24_C_INT
 integer(C_INT), parameter, public :: CV_BAD_T = -25_C_INT
 integer(C_INT), parameter, public :: CV_BAD_DKY = -26_C_INT
 integer(C_INT), parameter, public :: CV_TOO_CLOSE = -27_C_INT
 integer(C_INT), parameter, public :: CV_VECTOROP_ERR = -28_C_INT
 integer(C_INT), parameter, public :: CV_PROJ_MEM_NULL = -29_C_INT
 integer(C_INT), parameter, public :: CV_PROJFUNC_FAIL = -30_C_INT
 integer(C_INT), parameter, public :: CV_REPTD_PROJFUNC_ERR = -31_C_INT
 integer(C_INT), parameter, public :: CV_UNRECOGNIZED_ERR = -99_C_INT
 public :: FCVodeCreate
 public :: FCVodeInit
 public :: FCVodeReInit
 public :: FCVodeSStolerances
 public :: FCVodeSVtolerances
 public :: FCVodeWFtolerances
 public :: FCVodeSetErrHandlerFn
 public :: FCVodeSetErrFile
 public :: FCVodeSetUserData
 public :: FCVodeSetMonitorFn
 public :: FCVodeSetMonitorFrequency
 public :: FCVodeSetMaxOrd
 public :: FCVodeSetMaxNumSteps
 public :: FCVodeSetMaxHnilWarns
 public :: FCVodeSetStabLimDet
 public :: FCVodeSetInitStep
 public :: FCVodeSetMinStep
 public :: FCVodeSetMaxStep
 public :: FCVodeSetStopTime
 public :: FCVodeSetMaxErrTestFails
 public :: FCVodeSetMaxNonlinIters
 public :: FCVodeSetMaxConvFails
 public :: FCVodeSetNonlinConvCoef
 public :: FCVodeSetLSetupFrequency
 public :: FCVodeSetConstraints
 public :: FCVodeSetNonlinearSolver
 public :: FCVodeSetNlsRhsFn
 public :: FCVodeSetUseIntegratorFusedKernels
 public :: FCVodeRootInit
 public :: FCVodeSetRootDirection
 public :: FCVodeSetNoInactiveRootWarn
 public :: FCVode
 public :: FCVodeComputeState
 public :: FCVodeGetDky
 public :: FCVodeGetWorkSpace
 public :: FCVodeGetNumSteps
 public :: FCVodeGetNumRhsEvals
 public :: FCVodeGetNumLinSolvSetups
 public :: FCVodeGetNumErrTestFails
 public :: FCVodeGetLastOrder
 public :: FCVodeGetCurrentOrder
 public :: FCVodeGetCurrentGamma
 public :: FCVodeGetNumStabLimOrderReds
 public :: FCVodeGetActualInitStep
 public :: FCVodeGetLastStep
 public :: FCVodeGetCurrentStep
 public :: FCVodeGetCurrentState
 public :: FCVodeGetCurrentTime
 public :: FCVodeGetTolScaleFactor
 public :: FCVodeGetErrWeights
 public :: FCVodeGetEstLocalErrors
 public :: FCVodeGetNumGEvals
 public :: FCVodeGetRootInfo
 public :: FCVodeGetIntegratorStats
 public :: FCVodeGetNonlinearSystemData
 public :: FCVodeGetNumNonlinSolvIters
 public :: FCVodeGetNumNonlinSolvConvFails
 public :: FCVodeGetNonlinSolvStats
 type, bind(C) :: SwigArrayWrapper
  type(C_PTR), public :: data = C_NULL_PTR
  integer(C_SIZE_T), public :: size = 0
 end type
 public :: FCVodeGetReturnFlagName
 public :: FCVodeFree
 public :: FCVodeSetJacTimesRhsFn
 public :: FCVBandPrecInit
 public :: FCVBandPrecGetWorkSpace
 public :: FCVBandPrecGetNumRhsEvals
 public :: FCVBBDPrecInit
 public :: FCVBBDPrecReInit
 public :: FCVBBDPrecGetWorkSpace
 public :: FCVBBDPrecGetNumGfnEvals
 integer(C_INT), parameter, public :: CVDIAG_SUCCESS = 0_C_INT
 integer(C_INT), parameter, public :: CVDIAG_MEM_NULL = -1_C_INT
 integer(C_INT), parameter, public :: CVDIAG_LMEM_NULL = -2_C_INT
 integer(C_INT), parameter, public :: CVDIAG_ILL_INPUT = -3_C_INT
 integer(C_INT), parameter, public :: CVDIAG_MEM_FAIL = -4_C_INT
 integer(C_INT), parameter, public :: CVDIAG_INV_FAIL = -5_C_INT
 integer(C_INT), parameter, public :: CVDIAG_RHSFUNC_UNRECVR = -6_C_INT
 integer(C_INT), parameter, public :: CVDIAG_RHSFUNC_RECVR = -7_C_INT
 public :: FCVDiag
 public :: FCVDiagGetWorkSpace
 public :: FCVDiagGetNumRhsEvals
 public :: FCVDiagGetLastFlag
 public :: FCVDiagGetReturnFlagName
 integer(C_INT), parameter, public :: CVLS_SUCCESS = 0_C_INT
 integer(C_INT), parameter, public :: CVLS_MEM_NULL = -1_C_INT
 integer(C_INT), parameter, public :: CVLS_LMEM_NULL = -2_C_INT
 integer(C_INT), parameter, public :: CVLS_ILL_INPUT = -3_C_INT
 integer(C_INT), parameter, public :: CVLS_MEM_FAIL = -4_C_INT
 integer(C_INT), parameter, public :: CVLS_PMEM_NULL = -5_C_INT
 integer(C_INT), parameter, public :: CVLS_JACFUNC_UNRECVR = -6_C_INT
 integer(C_INT), parameter, public :: CVLS_JACFUNC_RECVR = -7_C_INT
 integer(C_INT), parameter, public :: CVLS_SUNMAT_FAIL = -8_C_INT
 integer(C_INT), parameter, public :: CVLS_SUNLS_FAIL = -9_C_INT
 public :: FCVodeSetLinearSolver
 public :: FCVodeSetJacFn
 public :: FCVodeSetJacEvalFrequency
 public :: FCVodeSetLinearSolutionScaling
 public :: FCVodeSetEpsLin
 public :: FCVodeSetLSNormFactor
 public :: FCVodeSetPreconditioner
 public :: FCVodeSetJacTimes
 public :: FCVodeSetLinSysFn
 public :: FCVodeGetLinWorkSpace
 public :: FCVodeGetNumJacEvals
 public :: FCVodeGetNumPrecEvals
 public :: FCVodeGetNumPrecSolves
 public :: FCVodeGetNumLinIters
 public :: FCVodeGetNumLinConvFails
 public :: FCVodeGetNumJTSetupEvals
 public :: FCVodeGetNumJtimesEvals
 public :: FCVodeGetNumLinRhsEvals
 public :: FCVodeGetLinSolveStats
 public :: FCVodeGetLastLinFlag
 public :: FCVodeGetLinReturnFlagName
 public :: FCVodeSetMaxStepsBetweenJac
 public :: FCVodeSetProjFn
 public :: FCVodeSetProjErrEst
 public :: FCVodeSetProjFrequency
 public :: FCVodeSetMaxNumProjFails
 public :: FCVodeSetEpsProj
 public :: FCVodeSetProjFailEta
 public :: FCVodeGetNumProjEvals
 public :: FCVodeGetNumProjFails

! WRAPPER DECLARATIONS
interface
function swigc_FCVodeCreate(farg1) &
bind(C, name="_wrap_FCVodeCreate") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
integer(C_INT), intent(in) :: farg1
type(C_PTR) :: fresult
end function

function swigc_FCVodeInit(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FCVodeInit") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_FUNPTR), value :: farg2
real(C_DOUBLE), intent(in) :: farg3
type(C_PTR), value :: farg4
integer(C_INT) :: fresult
end function

function swigc_FCVodeReInit(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeReInit") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FCVodeSStolerances(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeSStolerances") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
real(C_DOUBLE), intent(in) :: farg3
integer(C_INT) :: fresult
end function

function swigc_FCVodeSVtolerances(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeSVtolerances") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FCVodeWFtolerances(farg1, farg2) &
bind(C, name="_wrap_FCVodeWFtolerances") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_FUNPTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetErrHandlerFn(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeSetErrHandlerFn") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_FUNPTR), value :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetErrFile(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetErrFile") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetUserData(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetUserData") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetMonitorFn(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetMonitorFn") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_FUNPTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetMonitorFrequency(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetMonitorFrequency") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_LONG), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetMaxOrd(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetMaxOrd") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetMaxNumSteps(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetMaxNumSteps") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_LONG), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetMaxHnilWarns(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetMaxHnilWarns") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetStabLimDet(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetStabLimDet") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetInitStep(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetInitStep") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetMinStep(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetMinStep") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetMaxStep(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetMaxStep") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetStopTime(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetStopTime") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetMaxErrTestFails(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetMaxErrTestFails") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetMaxNonlinIters(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetMaxNonlinIters") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetMaxConvFails(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetMaxConvFails") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetNonlinConvCoef(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetNonlinConvCoef") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetLSetupFrequency(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetLSetupFrequency") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_LONG), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetConstraints(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetConstraints") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetNonlinearSolver(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetNonlinearSolver") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetNlsRhsFn(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetNlsRhsFn") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_FUNPTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetUseIntegratorFusedKernels(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetUseIntegratorFusedKernels") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeRootInit(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeRootInit") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
type(C_FUNPTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetRootDirection(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetRootDirection") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetNoInactiveRootWarn(farg1) &
bind(C, name="_wrap_FCVodeSetNoInactiveRootWarn") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT) :: fresult
end function

function swigc_FCVode(farg1, farg2, farg3, farg4, farg5) &
bind(C, name="_wrap_FCVode") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
type(C_PTR), value :: farg3
type(C_PTR), value :: farg4
integer(C_INT), intent(in) :: farg5
integer(C_INT) :: fresult
end function

function swigc_FCVodeComputeState(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeComputeState") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetDky(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FCVodeGetDky") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
integer(C_INT), intent(in) :: farg3
type(C_PTR), value :: farg4
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetWorkSpace(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeGetWorkSpace") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetNumSteps(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumSteps") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetNumRhsEvals(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumRhsEvals") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetNumLinSolvSetups(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumLinSolvSetups") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetNumErrTestFails(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumErrTestFails") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetLastOrder(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetLastOrder") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetCurrentOrder(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetCurrentOrder") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetCurrentGamma(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetCurrentGamma") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetNumStabLimOrderReds(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumStabLimOrderReds") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetActualInitStep(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetActualInitStep") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetLastStep(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetLastStep") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetCurrentStep(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetCurrentStep") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetCurrentState(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetCurrentState") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetCurrentTime(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetCurrentTime") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetTolScaleFactor(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetTolScaleFactor") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetErrWeights(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetErrWeights") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetEstLocalErrors(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetEstLocalErrors") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetNumGEvals(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumGEvals") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetRootInfo(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetRootInfo") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetIntegratorStats(farg1, farg2, farg3, farg4, farg5, farg6, farg7, farg8, farg9, farg10, farg11) &
bind(C, name="_wrap_FCVodeGetIntegratorStats") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
type(C_PTR), value :: farg3
type(C_PTR), value :: farg4
type(C_PTR), value :: farg5
type(C_PTR), value :: farg6
type(C_PTR), value :: farg7
type(C_PTR), value :: farg8
type(C_PTR), value :: farg9
type(C_PTR), value :: farg10
type(C_PTR), value :: farg11
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetNonlinearSystemData(farg1, farg2, farg3, farg4, farg5, farg6, farg7, farg8, farg9) &
bind(C, name="_wrap_FCVodeGetNonlinearSystemData") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
type(C_PTR), value :: farg3
type(C_PTR), value :: farg4
type(C_PTR), value :: farg5
type(C_PTR), value :: farg6
type(C_PTR), value :: farg7
type(C_PTR), value :: farg8
type(C_PTR), value :: farg9
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetNumNonlinSolvIters(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumNonlinSolvIters") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetNumNonlinSolvConvFails(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumNonlinSolvConvFails") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetNonlinSolvStats(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeGetNonlinSolvStats") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

 subroutine SWIG_free(cptr) &
  bind(C, name="free")
 use, intrinsic :: ISO_C_BINDING
 type(C_PTR), value :: cptr
end subroutine
function swigc_FCVodeGetReturnFlagName(farg1) &
bind(C, name="_wrap_FCVodeGetReturnFlagName") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
import :: swigarraywrapper
integer(C_LONG), intent(in) :: farg1
type(SwigArrayWrapper) :: fresult
end function

subroutine swigc_FCVodeFree(farg1) &
bind(C, name="_wrap_FCVodeFree")
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
end subroutine

function swigc_FCVodeSetJacTimesRhsFn(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetJacTimesRhsFn") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_FUNPTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVBandPrecInit(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FCVBandPrecInit") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT64_T), intent(in) :: farg2
integer(C_INT64_T), intent(in) :: farg3
integer(C_INT64_T), intent(in) :: farg4
integer(C_INT) :: fresult
end function

function swigc_FCVBandPrecGetWorkSpace(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVBandPrecGetWorkSpace") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FCVBandPrecGetNumRhsEvals(farg1, farg2) &
bind(C, name="_wrap_FCVBandPrecGetNumRhsEvals") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVBBDPrecInit(farg1, farg2, farg3, farg4, farg5, farg6, farg7, farg8, farg9) &
bind(C, name="_wrap_FCVBBDPrecInit") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT64_T), intent(in) :: farg2
integer(C_INT64_T), intent(in) :: farg3
integer(C_INT64_T), intent(in) :: farg4
integer(C_INT64_T), intent(in) :: farg5
integer(C_INT64_T), intent(in) :: farg6
real(C_DOUBLE), intent(in) :: farg7
type(C_FUNPTR), value :: farg8
type(C_FUNPTR), value :: farg9
integer(C_INT) :: fresult
end function

function swigc_FCVBBDPrecReInit(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FCVBBDPrecReInit") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT64_T), intent(in) :: farg2
integer(C_INT64_T), intent(in) :: farg3
real(C_DOUBLE), intent(in) :: farg4
integer(C_INT) :: fresult
end function

function swigc_FCVBBDPrecGetWorkSpace(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVBBDPrecGetWorkSpace") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FCVBBDPrecGetNumGfnEvals(farg1, farg2) &
bind(C, name="_wrap_FCVBBDPrecGetNumGfnEvals") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVDiag(farg1) &
bind(C, name="_wrap_FCVDiag") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT) :: fresult
end function

function swigc_FCVDiagGetWorkSpace(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVDiagGetWorkSpace") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FCVDiagGetNumRhsEvals(farg1, farg2) &
bind(C, name="_wrap_FCVDiagGetNumRhsEvals") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVDiagGetLastFlag(farg1, farg2) &
bind(C, name="_wrap_FCVDiagGetLastFlag") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVDiagGetReturnFlagName(farg1) &
bind(C, name="_wrap_FCVDiagGetReturnFlagName") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
import :: swigarraywrapper
integer(C_LONG), intent(in) :: farg1
type(SwigArrayWrapper) :: fresult
end function

function swigc_FCVodeSetLinearSolver(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeSetLinearSolver") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetJacFn(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetJacFn") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_FUNPTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetJacEvalFrequency(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetJacEvalFrequency") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_LONG), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetLinearSolutionScaling(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetLinearSolutionScaling") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetEpsLin(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetEpsLin") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetLSNormFactor(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetLSNormFactor") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetPreconditioner(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeSetPreconditioner") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_FUNPTR), value :: farg2
type(C_FUNPTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetJacTimes(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeSetJacTimes") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_FUNPTR), value :: farg2
type(C_FUNPTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetLinSysFn(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetLinSysFn") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_FUNPTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetLinWorkSpace(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeGetLinWorkSpace") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetNumJacEvals(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumJacEvals") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetNumPrecEvals(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumPrecEvals") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetNumPrecSolves(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumPrecSolves") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetNumLinIters(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumLinIters") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetNumLinConvFails(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumLinConvFails") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetNumJTSetupEvals(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumJTSetupEvals") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetNumJtimesEvals(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumJtimesEvals") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetNumLinRhsEvals(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumLinRhsEvals") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetLinSolveStats(farg1, farg2, farg3, farg4, farg5, farg6, farg7, farg8, farg9) &
bind(C, name="_wrap_FCVodeGetLinSolveStats") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
type(C_PTR), value :: farg3
type(C_PTR), value :: farg4
type(C_PTR), value :: farg5
type(C_PTR), value :: farg6
type(C_PTR), value :: farg7
type(C_PTR), value :: farg8
type(C_PTR), value :: farg9
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetLastLinFlag(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetLastLinFlag") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetLinReturnFlagName(farg1) &
bind(C, name="_wrap_FCVodeGetLinReturnFlagName") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
import :: swigarraywrapper
integer(C_LONG), intent(in) :: farg1
type(SwigArrayWrapper) :: fresult
end function

function swigc_FCVodeSetMaxStepsBetweenJac(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetMaxStepsBetweenJac") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_LONG), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetProjFn(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetProjFn") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_FUNPTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetProjErrEst(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetProjErrEst") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetProjFrequency(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetProjFrequency") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_LONG), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetMaxNumProjFails(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetMaxNumProjFails") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetEpsProj(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetEpsProj") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetProjFailEta(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetProjFailEta") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetNumProjEvals(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumProjEvals") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetNumProjFails(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumProjFails") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

end interface


contains
 ! MODULE SUBPROGRAMS
function FCVodeCreate(lmm) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
type(C_PTR) :: swig_result
integer(C_INT), intent(in) :: lmm
type(C_PTR) :: fresult 
integer(C_INT) :: farg1 

farg1 = lmm
fresult = swigc_FCVodeCreate(farg1)
swig_result = fresult
end function

function FCVodeInit(cvode_mem, f, t0, y0) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
type(C_FUNPTR), intent(in), value :: f
real(C_DOUBLE), intent(in) :: t0
type(N_Vector), target, intent(inout) :: y0
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_FUNPTR) :: farg2 
real(C_DOUBLE) :: farg3 
type(C_PTR) :: farg4 

farg1 = cvode_mem
farg2 = f
farg3 = t0
farg4 = c_loc(y0)
fresult = swigc_FCVodeInit(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FCVodeReInit(cvode_mem, t0, y0) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), intent(in) :: t0
type(N_Vector), target, intent(inout) :: y0
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 
type(C_PTR) :: farg3 

farg1 = cvode_mem
farg2 = t0
farg3 = c_loc(y0)
fresult = swigc_FCVodeReInit(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeSStolerances(cvode_mem, reltol, abstol) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), intent(in) :: reltol
real(C_DOUBLE), intent(in) :: abstol
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 
real(C_DOUBLE) :: farg3 

farg1 = cvode_mem
farg2 = reltol
farg3 = abstol
fresult = swigc_FCVodeSStolerances(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeSVtolerances(cvode_mem, reltol, abstol) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), intent(in) :: reltol
type(N_Vector), target, intent(inout) :: abstol
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 
type(C_PTR) :: farg3 

farg1 = cvode_mem
farg2 = reltol
farg3 = c_loc(abstol)
fresult = swigc_FCVodeSVtolerances(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeWFtolerances(cvode_mem, efun) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
type(C_FUNPTR), intent(in), value :: efun
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_FUNPTR) :: farg2 

farg1 = cvode_mem
farg2 = efun
fresult = swigc_FCVodeWFtolerances(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetErrHandlerFn(cvode_mem, ehfun, eh_data) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
type(C_FUNPTR), intent(in), value :: ehfun
type(C_PTR) :: eh_data
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_FUNPTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = cvode_mem
farg2 = ehfun
farg3 = eh_data
fresult = swigc_FCVodeSetErrHandlerFn(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeSetErrFile(cvode_mem, errfp) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
type(C_PTR) :: errfp
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = errfp
fresult = swigc_FCVodeSetErrFile(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetUserData(cvode_mem, user_data) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
type(C_PTR) :: user_data
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = user_data
fresult = swigc_FCVodeSetUserData(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetMonitorFn(cvode_mem, fn) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
type(C_FUNPTR), intent(in), value :: fn
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_FUNPTR) :: farg2 

farg1 = cvode_mem
farg2 = fn
fresult = swigc_FCVodeSetMonitorFn(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetMonitorFrequency(cvode_mem, nst) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), intent(in) :: nst
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_LONG) :: farg2 

farg1 = cvode_mem
farg2 = nst
fresult = swigc_FCVodeSetMonitorFrequency(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetMaxOrd(cvode_mem, maxord) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), intent(in) :: maxord
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = cvode_mem
farg2 = maxord
fresult = swigc_FCVodeSetMaxOrd(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetMaxNumSteps(cvode_mem, mxsteps) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), intent(in) :: mxsteps
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_LONG) :: farg2 

farg1 = cvode_mem
farg2 = mxsteps
fresult = swigc_FCVodeSetMaxNumSteps(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetMaxHnilWarns(cvode_mem, mxhnil) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), intent(in) :: mxhnil
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = cvode_mem
farg2 = mxhnil
fresult = swigc_FCVodeSetMaxHnilWarns(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetStabLimDet(cvode_mem, stldet) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), intent(in) :: stldet
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = cvode_mem
farg2 = stldet
fresult = swigc_FCVodeSetStabLimDet(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetInitStep(cvode_mem, hin) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), intent(in) :: hin
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 

farg1 = cvode_mem
farg2 = hin
fresult = swigc_FCVodeSetInitStep(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetMinStep(cvode_mem, hmin) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), intent(in) :: hmin
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 

farg1 = cvode_mem
farg2 = hmin
fresult = swigc_FCVodeSetMinStep(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetMaxStep(cvode_mem, hmax) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), intent(in) :: hmax
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 

farg1 = cvode_mem
farg2 = hmax
fresult = swigc_FCVodeSetMaxStep(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetStopTime(cvode_mem, tstop) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), intent(in) :: tstop
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 

farg1 = cvode_mem
farg2 = tstop
fresult = swigc_FCVodeSetStopTime(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetMaxErrTestFails(cvode_mem, maxnef) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), intent(in) :: maxnef
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = cvode_mem
farg2 = maxnef
fresult = swigc_FCVodeSetMaxErrTestFails(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetMaxNonlinIters(cvode_mem, maxcor) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), intent(in) :: maxcor
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = cvode_mem
farg2 = maxcor
fresult = swigc_FCVodeSetMaxNonlinIters(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetMaxConvFails(cvode_mem, maxncf) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), intent(in) :: maxncf
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = cvode_mem
farg2 = maxncf
fresult = swigc_FCVodeSetMaxConvFails(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetNonlinConvCoef(cvode_mem, nlscoef) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), intent(in) :: nlscoef
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 

farg1 = cvode_mem
farg2 = nlscoef
fresult = swigc_FCVodeSetNonlinConvCoef(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetLSetupFrequency(cvode_mem, msbp) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), intent(in) :: msbp
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_LONG) :: farg2 

farg1 = cvode_mem
farg2 = msbp
fresult = swigc_FCVodeSetLSetupFrequency(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetConstraints(cvode_mem, constraints) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
type(N_Vector), target, intent(inout) :: constraints
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(constraints)
fresult = swigc_FCVodeSetConstraints(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetNonlinearSolver(cvode_mem, nls) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
type(SUNNonlinearSolver), target, intent(inout) :: nls
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(nls)
fresult = swigc_FCVodeSetNonlinearSolver(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetNlsRhsFn(cvode_mem, f) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
type(C_FUNPTR), intent(in), value :: f
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_FUNPTR) :: farg2 

farg1 = cvode_mem
farg2 = f
fresult = swigc_FCVodeSetNlsRhsFn(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetUseIntegratorFusedKernels(cvode_mem, onoff) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), intent(in) :: onoff
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = cvode_mem
farg2 = onoff
fresult = swigc_FCVodeSetUseIntegratorFusedKernels(farg1, farg2)
swig_result = fresult
end function

function FCVodeRootInit(cvode_mem, nrtfn, g) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), intent(in) :: nrtfn
type(C_FUNPTR), intent(in), value :: g
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
type(C_FUNPTR) :: farg3 

farg1 = cvode_mem
farg2 = nrtfn
farg3 = g
fresult = swigc_FCVodeRootInit(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeSetRootDirection(cvode_mem, rootdir) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), dimension(*), target, intent(inout) :: rootdir
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(rootdir(1))
fresult = swigc_FCVodeSetRootDirection(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetNoInactiveRootWarn(cvode_mem) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 

farg1 = cvode_mem
fresult = swigc_FCVodeSetNoInactiveRootWarn(farg1)
swig_result = fresult
end function

function FCVode(cvode_mem, tout, yout, tret, itask) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), intent(in) :: tout
type(N_Vector), target, intent(inout) :: yout
real(C_DOUBLE), dimension(*), target, intent(inout) :: tret
integer(C_INT), intent(in) :: itask
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 
type(C_PTR) :: farg3 
type(C_PTR) :: farg4 
integer(C_INT) :: farg5 

farg1 = cvode_mem
farg2 = tout
farg3 = c_loc(yout)
farg4 = c_loc(tret(1))
farg5 = itask
fresult = swigc_FCVode(farg1, farg2, farg3, farg4, farg5)
swig_result = fresult
end function

function FCVodeComputeState(cvode_mem, ycor, y) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
type(N_Vector), target, intent(inout) :: ycor
type(N_Vector), target, intent(inout) :: y
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = cvode_mem
farg2 = c_loc(ycor)
farg3 = c_loc(y)
fresult = swigc_FCVodeComputeState(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeGetDky(cvode_mem, t, k, dky) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), intent(in) :: t
integer(C_INT), intent(in) :: k
type(N_Vector), target, intent(inout) :: dky
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 
integer(C_INT) :: farg3 
type(C_PTR) :: farg4 

farg1 = cvode_mem
farg2 = t
farg3 = k
farg4 = c_loc(dky)
fresult = swigc_FCVodeGetDky(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FCVodeGetWorkSpace(cvode_mem, lenrw, leniw) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: lenrw
integer(C_LONG), dimension(*), target, intent(inout) :: leniw
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = cvode_mem
farg2 = c_loc(lenrw(1))
farg3 = c_loc(leniw(1))
fresult = swigc_FCVodeGetWorkSpace(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeGetNumSteps(cvode_mem, nsteps) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nsteps
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(nsteps(1))
fresult = swigc_FCVodeGetNumSteps(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetNumRhsEvals(cvode_mem, nfevals) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nfevals
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(nfevals(1))
fresult = swigc_FCVodeGetNumRhsEvals(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetNumLinSolvSetups(cvode_mem, nlinsetups) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nlinsetups
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(nlinsetups(1))
fresult = swigc_FCVodeGetNumLinSolvSetups(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetNumErrTestFails(cvode_mem, netfails) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: netfails
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(netfails(1))
fresult = swigc_FCVodeGetNumErrTestFails(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetLastOrder(cvode_mem, qlast) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), dimension(*), target, intent(inout) :: qlast
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(qlast(1))
fresult = swigc_FCVodeGetLastOrder(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetCurrentOrder(cvode_mem, qcur) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), dimension(*), target, intent(inout) :: qcur
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(qcur(1))
fresult = swigc_FCVodeGetCurrentOrder(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetCurrentGamma(cvode_mem, gamma) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), dimension(*), target, intent(inout) :: gamma
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(gamma(1))
fresult = swigc_FCVodeGetCurrentGamma(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetNumStabLimOrderReds(cvode_mem, nslred) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nslred
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(nslred(1))
fresult = swigc_FCVodeGetNumStabLimOrderReds(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetActualInitStep(cvode_mem, hinused) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), dimension(*), target, intent(inout) :: hinused
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(hinused(1))
fresult = swigc_FCVodeGetActualInitStep(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetLastStep(cvode_mem, hlast) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), dimension(*), target, intent(inout) :: hlast
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(hlast(1))
fresult = swigc_FCVodeGetLastStep(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetCurrentStep(cvode_mem, hcur) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), dimension(*), target, intent(inout) :: hcur
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(hcur(1))
fresult = swigc_FCVodeGetCurrentStep(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetCurrentState(cvode_mem, y) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
type(C_PTR) :: y
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = y
fresult = swigc_FCVodeGetCurrentState(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetCurrentTime(cvode_mem, tcur) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), dimension(*), target, intent(inout) :: tcur
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(tcur(1))
fresult = swigc_FCVodeGetCurrentTime(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetTolScaleFactor(cvode_mem, tolsfac) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), dimension(*), target, intent(inout) :: tolsfac
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(tolsfac(1))
fresult = swigc_FCVodeGetTolScaleFactor(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetErrWeights(cvode_mem, eweight) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
type(N_Vector), target, intent(inout) :: eweight
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(eweight)
fresult = swigc_FCVodeGetErrWeights(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetEstLocalErrors(cvode_mem, ele) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
type(N_Vector), target, intent(inout) :: ele
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(ele)
fresult = swigc_FCVodeGetEstLocalErrors(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetNumGEvals(cvode_mem, ngevals) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: ngevals
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(ngevals(1))
fresult = swigc_FCVodeGetNumGEvals(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetRootInfo(cvode_mem, rootsfound) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), dimension(*), target, intent(inout) :: rootsfound
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(rootsfound(1))
fresult = swigc_FCVodeGetRootInfo(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetIntegratorStats(cvode_mem, nsteps, nfevals, nlinsetups, netfails, qlast, qcur, hinused, hlast, hcur, tcur) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nsteps
integer(C_LONG), dimension(*), target, intent(inout) :: nfevals
integer(C_LONG), dimension(*), target, intent(inout) :: nlinsetups
integer(C_LONG), dimension(*), target, intent(inout) :: netfails
integer(C_INT), dimension(*), target, intent(inout) :: qlast
integer(C_INT), dimension(*), target, intent(inout) :: qcur
real(C_DOUBLE), dimension(*), target, intent(inout) :: hinused
real(C_DOUBLE), dimension(*), target, intent(inout) :: hlast
real(C_DOUBLE), dimension(*), target, intent(inout) :: hcur
real(C_DOUBLE), dimension(*), target, intent(inout) :: tcur
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 
type(C_PTR) :: farg4 
type(C_PTR) :: farg5 
type(C_PTR) :: farg6 
type(C_PTR) :: farg7 
type(C_PTR) :: farg8 
type(C_PTR) :: farg9 
type(C_PTR) :: farg10 
type(C_PTR) :: farg11 

farg1 = cvode_mem
farg2 = c_loc(nsteps(1))
farg3 = c_loc(nfevals(1))
farg4 = c_loc(nlinsetups(1))
farg5 = c_loc(netfails(1))
farg6 = c_loc(qlast(1))
farg7 = c_loc(qcur(1))
farg8 = c_loc(hinused(1))
farg9 = c_loc(hlast(1))
farg10 = c_loc(hcur(1))
farg11 = c_loc(tcur(1))
fresult = swigc_FCVodeGetIntegratorStats(farg1, farg2, farg3, farg4, farg5, farg6, farg7, farg8, farg9, farg10, farg11)
swig_result = fresult
end function

function FCVodeGetNonlinearSystemData(cvode_mem, tcur, ypred, yn, fn, gamma, rl1, zn1, user_data) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), dimension(*), target, intent(inout) :: tcur
type(C_PTR) :: ypred
type(C_PTR) :: yn
type(C_PTR) :: fn
real(C_DOUBLE), dimension(*), target, intent(inout) :: gamma
real(C_DOUBLE), dimension(*), target, intent(inout) :: rl1
type(C_PTR) :: zn1
type(C_PTR), target, intent(inout) :: user_data
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 
type(C_PTR) :: farg4 
type(C_PTR) :: farg5 
type(C_PTR) :: farg6 
type(C_PTR) :: farg7 
type(C_PTR) :: farg8 
type(C_PTR) :: farg9 

farg1 = cvode_mem
farg2 = c_loc(tcur(1))
farg3 = ypred
farg4 = yn
farg5 = fn
farg6 = c_loc(gamma(1))
farg7 = c_loc(rl1(1))
farg8 = zn1
farg9 = c_loc(user_data)
fresult = swigc_FCVodeGetNonlinearSystemData(farg1, farg2, farg3, farg4, farg5, farg6, farg7, farg8, farg9)
swig_result = fresult
end function

function FCVodeGetNumNonlinSolvIters(cvode_mem, nniters) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nniters
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(nniters(1))
fresult = swigc_FCVodeGetNumNonlinSolvIters(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetNumNonlinSolvConvFails(cvode_mem, nncfails) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nncfails
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(nncfails(1))
fresult = swigc_FCVodeGetNumNonlinSolvConvFails(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetNonlinSolvStats(cvode_mem, nniters, nncfails) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nniters
integer(C_LONG), dimension(*), target, intent(inout) :: nncfails
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = cvode_mem
farg2 = c_loc(nniters(1))
farg3 = c_loc(nncfails(1))
fresult = swigc_FCVodeGetNonlinSolvStats(farg1, farg2, farg3)
swig_result = fresult
end function


subroutine SWIG_chararray_to_string(wrap, string)
  use, intrinsic :: ISO_C_BINDING
  type(SwigArrayWrapper), intent(IN) :: wrap
  character(kind=C_CHAR, len=:), allocatable, intent(OUT) :: string
  character(kind=C_CHAR), dimension(:), pointer :: chars
  integer(kind=C_SIZE_T) :: i
  call c_f_pointer(wrap%data, chars, [wrap%size])
  allocate(character(kind=C_CHAR, len=wrap%size) :: string)
  do i=1, wrap%size
    string(i:i) = chars(i)
  end do
end subroutine

function FCVodeGetReturnFlagName(flag) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
character(kind=C_CHAR, len=:), allocatable :: swig_result
integer(C_LONG), intent(in) :: flag
type(SwigArrayWrapper) :: fresult 
integer(C_LONG) :: farg1 

farg1 = flag
fresult = swigc_FCVodeGetReturnFlagName(farg1)
call SWIG_chararray_to_string(fresult, swig_result)
if (.false.) call SWIG_free(fresult%data)
end function

subroutine FCVodeFree(cvode_mem)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), target, intent(inout) :: cvode_mem
type(C_PTR) :: farg1 

farg1 = c_loc(cvode_mem)
call swigc_FCVodeFree(farg1)
end subroutine

function FCVodeSetJacTimesRhsFn(cvode_mem, jtimesrhsfn) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
type(C_FUNPTR), intent(in), value :: jtimesrhsfn
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_FUNPTR) :: farg2 

farg1 = cvode_mem
farg2 = jtimesrhsfn
fresult = swigc_FCVodeSetJacTimesRhsFn(farg1, farg2)
swig_result = fresult
end function

function FCVBandPrecInit(cvode_mem, n, mu, ml) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT64_T), intent(in) :: n
integer(C_INT64_T), intent(in) :: mu
integer(C_INT64_T), intent(in) :: ml
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT64_T) :: farg2 
integer(C_INT64_T) :: farg3 
integer(C_INT64_T) :: farg4 

farg1 = cvode_mem
farg2 = n
farg3 = mu
farg4 = ml
fresult = swigc_FCVBandPrecInit(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FCVBandPrecGetWorkSpace(cvode_mem, lenrwls, leniwls) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: lenrwls
integer(C_LONG), dimension(*), target, intent(inout) :: leniwls
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = cvode_mem
farg2 = c_loc(lenrwls(1))
farg3 = c_loc(leniwls(1))
fresult = swigc_FCVBandPrecGetWorkSpace(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVBandPrecGetNumRhsEvals(cvode_mem, nfevalsbp) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nfevalsbp
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(nfevalsbp(1))
fresult = swigc_FCVBandPrecGetNumRhsEvals(farg1, farg2)
swig_result = fresult
end function

function FCVBBDPrecInit(cvode_mem, nlocal, mudq, mldq, mukeep, mlkeep, dqrely, gloc, cfn) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT64_T), intent(in) :: nlocal
integer(C_INT64_T), intent(in) :: mudq
integer(C_INT64_T), intent(in) :: mldq
integer(C_INT64_T), intent(in) :: mukeep
integer(C_INT64_T), intent(in) :: mlkeep
real(C_DOUBLE), intent(in) :: dqrely
type(C_FUNPTR), intent(in), value :: gloc
type(C_FUNPTR), intent(in), value :: cfn
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT64_T) :: farg2 
integer(C_INT64_T) :: farg3 
integer(C_INT64_T) :: farg4 
integer(C_INT64_T) :: farg5 
integer(C_INT64_T) :: farg6 
real(C_DOUBLE) :: farg7 
type(C_FUNPTR) :: farg8 
type(C_FUNPTR) :: farg9 

farg1 = cvode_mem
farg2 = nlocal
farg3 = mudq
farg4 = mldq
farg5 = mukeep
farg6 = mlkeep
farg7 = dqrely
farg8 = gloc
farg9 = cfn
fresult = swigc_FCVBBDPrecInit(farg1, farg2, farg3, farg4, farg5, farg6, farg7, farg8, farg9)
swig_result = fresult
end function

function FCVBBDPrecReInit(cvode_mem, mudq, mldq, dqrely) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT64_T), intent(in) :: mudq
integer(C_INT64_T), intent(in) :: mldq
real(C_DOUBLE), intent(in) :: dqrely
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT64_T) :: farg2 
integer(C_INT64_T) :: farg3 
real(C_DOUBLE) :: farg4 

farg1 = cvode_mem
farg2 = mudq
farg3 = mldq
farg4 = dqrely
fresult = swigc_FCVBBDPrecReInit(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FCVBBDPrecGetWorkSpace(cvode_mem, lenrwbbdp, leniwbbdp) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: lenrwbbdp
integer(C_LONG), dimension(*), target, intent(inout) :: leniwbbdp
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = cvode_mem
farg2 = c_loc(lenrwbbdp(1))
farg3 = c_loc(leniwbbdp(1))
fresult = swigc_FCVBBDPrecGetWorkSpace(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVBBDPrecGetNumGfnEvals(cvode_mem, ngevalsbbdp) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: ngevalsbbdp
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(ngevalsbbdp(1))
fresult = swigc_FCVBBDPrecGetNumGfnEvals(farg1, farg2)
swig_result = fresult
end function

function FCVDiag(cvode_mem) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 

farg1 = cvode_mem
fresult = swigc_FCVDiag(farg1)
swig_result = fresult
end function

function FCVDiagGetWorkSpace(cvode_mem, lenrwls, leniwls) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: lenrwls
integer(C_LONG), dimension(*), target, intent(inout) :: leniwls
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = cvode_mem
farg2 = c_loc(lenrwls(1))
farg3 = c_loc(leniwls(1))
fresult = swigc_FCVDiagGetWorkSpace(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVDiagGetNumRhsEvals(cvode_mem, nfevalsls) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nfevalsls
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(nfevalsls(1))
fresult = swigc_FCVDiagGetNumRhsEvals(farg1, farg2)
swig_result = fresult
end function

function FCVDiagGetLastFlag(cvode_mem, flag) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: flag
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(flag(1))
fresult = swigc_FCVDiagGetLastFlag(farg1, farg2)
swig_result = fresult
end function

function FCVDiagGetReturnFlagName(flag) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
character(kind=C_CHAR, len=:), allocatable :: swig_result
integer(C_LONG), intent(in) :: flag
type(SwigArrayWrapper) :: fresult 
integer(C_LONG) :: farg1 

farg1 = flag
fresult = swigc_FCVDiagGetReturnFlagName(farg1)
call SWIG_chararray_to_string(fresult, swig_result)
if (.false.) call SWIG_free(fresult%data)
end function

function FCVodeSetLinearSolver(cvode_mem, ls, a) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
type(SUNLinearSolver), target, intent(inout) :: ls
type(SUNMatrix), target, intent(inout) :: a
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = cvode_mem
farg2 = c_loc(ls)
farg3 = c_loc(a)
fresult = swigc_FCVodeSetLinearSolver(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeSetJacFn(cvode_mem, jac) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
type(C_FUNPTR), intent(in), value :: jac
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_FUNPTR) :: farg2 

farg1 = cvode_mem
farg2 = jac
fresult = swigc_FCVodeSetJacFn(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetJacEvalFrequency(cvode_mem, msbj) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), intent(in) :: msbj
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_LONG) :: farg2 

farg1 = cvode_mem
farg2 = msbj
fresult = swigc_FCVodeSetJacEvalFrequency(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetLinearSolutionScaling(cvode_mem, onoff) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), intent(in) :: onoff
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = cvode_mem
farg2 = onoff
fresult = swigc_FCVodeSetLinearSolutionScaling(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetEpsLin(cvode_mem, eplifac) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), intent(in) :: eplifac
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 

farg1 = cvode_mem
farg2 = eplifac
fresult = swigc_FCVodeSetEpsLin(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetLSNormFactor(arkode_mem, nrmfac) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
real(C_DOUBLE), intent(in) :: nrmfac
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 

farg1 = arkode_mem
farg2 = nrmfac
fresult = swigc_FCVodeSetLSNormFactor(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetPreconditioner(cvode_mem, pset, psolve) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
type(C_FUNPTR), intent(in), value :: pset
type(C_FUNPTR), intent(in), value :: psolve
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_FUNPTR) :: farg2 
type(C_FUNPTR) :: farg3 

farg1 = cvode_mem
farg2 = pset
farg3 = psolve
fresult = swigc_FCVodeSetPreconditioner(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeSetJacTimes(cvode_mem, jtsetup, jtimes) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
type(C_FUNPTR), intent(in), value :: jtsetup
type(C_FUNPTR), intent(in), value :: jtimes
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_FUNPTR) :: farg2 
type(C_FUNPTR) :: farg3 

farg1 = cvode_mem
farg2 = jtsetup
farg3 = jtimes
fresult = swigc_FCVodeSetJacTimes(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeSetLinSysFn(cvode_mem, linsys) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
type(C_FUNPTR), intent(in), value :: linsys
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_FUNPTR) :: farg2 

farg1 = cvode_mem
farg2 = linsys
fresult = swigc_FCVodeSetLinSysFn(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetLinWorkSpace(cvode_mem, lenrwls, leniwls) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: lenrwls
integer(C_LONG), dimension(*), target, intent(inout) :: leniwls
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = cvode_mem
farg2 = c_loc(lenrwls(1))
farg3 = c_loc(leniwls(1))
fresult = swigc_FCVodeGetLinWorkSpace(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeGetNumJacEvals(cvode_mem, njevals) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: njevals
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(njevals(1))
fresult = swigc_FCVodeGetNumJacEvals(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetNumPrecEvals(cvode_mem, npevals) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: npevals
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(npevals(1))
fresult = swigc_FCVodeGetNumPrecEvals(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetNumPrecSolves(cvode_mem, npsolves) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: npsolves
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(npsolves(1))
fresult = swigc_FCVodeGetNumPrecSolves(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetNumLinIters(cvode_mem, nliters) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nliters
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(nliters(1))
fresult = swigc_FCVodeGetNumLinIters(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetNumLinConvFails(cvode_mem, nlcfails) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nlcfails
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(nlcfails(1))
fresult = swigc_FCVodeGetNumLinConvFails(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetNumJTSetupEvals(cvode_mem, njtsetups) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: njtsetups
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(njtsetups(1))
fresult = swigc_FCVodeGetNumJTSetupEvals(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetNumJtimesEvals(cvode_mem, njvevals) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: njvevals
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(njvevals(1))
fresult = swigc_FCVodeGetNumJtimesEvals(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetNumLinRhsEvals(cvode_mem, nfevalsls) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nfevalsls
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(nfevalsls(1))
fresult = swigc_FCVodeGetNumLinRhsEvals(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetLinSolveStats(cvode_mem, njevals, nfevalsls, nliters, nlcfails, npevals, npsolves, njtsetups, njtimes) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: njevals
integer(C_LONG), dimension(*), target, intent(inout) :: nfevalsls
integer(C_LONG), dimension(*), target, intent(inout) :: nliters
integer(C_LONG), dimension(*), target, intent(inout) :: nlcfails
integer(C_LONG), dimension(*), target, intent(inout) :: npevals
integer(C_LONG), dimension(*), target, intent(inout) :: npsolves
integer(C_LONG), dimension(*), target, intent(inout) :: njtsetups
integer(C_LONG), dimension(*), target, intent(inout) :: njtimes
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 
type(C_PTR) :: farg4 
type(C_PTR) :: farg5 
type(C_PTR) :: farg6 
type(C_PTR) :: farg7 
type(C_PTR) :: farg8 
type(C_PTR) :: farg9 

farg1 = cvode_mem
farg2 = c_loc(njevals(1))
farg3 = c_loc(nfevalsls(1))
farg4 = c_loc(nliters(1))
farg5 = c_loc(nlcfails(1))
farg6 = c_loc(npevals(1))
farg7 = c_loc(npsolves(1))
farg8 = c_loc(njtsetups(1))
farg9 = c_loc(njtimes(1))
fresult = swigc_FCVodeGetLinSolveStats(farg1, farg2, farg3, farg4, farg5, farg6, farg7, farg8, farg9)
swig_result = fresult
end function

function FCVodeGetLastLinFlag(cvode_mem, flag) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: flag
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(flag(1))
fresult = swigc_FCVodeGetLastLinFlag(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetLinReturnFlagName(flag) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
character(kind=C_CHAR, len=:), allocatable :: swig_result
integer(C_LONG), intent(in) :: flag
type(SwigArrayWrapper) :: fresult 
integer(C_LONG) :: farg1 

farg1 = flag
fresult = swigc_FCVodeGetLinReturnFlagName(farg1)
call SWIG_chararray_to_string(fresult, swig_result)
if (.false.) call SWIG_free(fresult%data)
end function

function FCVodeSetMaxStepsBetweenJac(cvode_mem, msbj) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), intent(in) :: msbj
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_LONG) :: farg2 

farg1 = cvode_mem
farg2 = msbj
fresult = swigc_FCVodeSetMaxStepsBetweenJac(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetProjFn(cvode_mem, pfun) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
type(C_FUNPTR), intent(in), value :: pfun
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_FUNPTR) :: farg2 

farg1 = cvode_mem
farg2 = pfun
fresult = swigc_FCVodeSetProjFn(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetProjErrEst(cvode_mem, onoff) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), intent(in) :: onoff
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = cvode_mem
farg2 = onoff
fresult = swigc_FCVodeSetProjErrEst(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetProjFrequency(cvode_mem, proj_freq) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), intent(in) :: proj_freq
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_LONG) :: farg2 

farg1 = cvode_mem
farg2 = proj_freq
fresult = swigc_FCVodeSetProjFrequency(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetMaxNumProjFails(cvode_mem, max_fails) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), intent(in) :: max_fails
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = cvode_mem
farg2 = max_fails
fresult = swigc_FCVodeSetMaxNumProjFails(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetEpsProj(cvode_mem, eps) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), intent(in) :: eps
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 

farg1 = cvode_mem
farg2 = eps
fresult = swigc_FCVodeSetEpsProj(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetProjFailEta(cvode_mem, eta) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), intent(in) :: eta
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 

farg1 = cvode_mem
farg2 = eta
fresult = swigc_FCVodeSetProjFailEta(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetNumProjEvals(cvode_mem, nproj) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nproj
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(nproj(1))
fresult = swigc_FCVodeGetNumProjEvals(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetNumProjFails(cvode_mem, nprf) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nprf
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(nprf(1))
fresult = swigc_FCVodeGetNumProjFails(farg1, farg2)
swig_result = fresult
end function


end module
