! 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-2022, 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 farkode_arkstep_mod
 use, intrinsic :: ISO_C_BINDING
 use farkode_mod
 use fsundials_nvector_mod
 use fsundials_context_mod
 use fsundials_types_mod
 use fsundials_matrix_mod
 use fsundials_nvector_mod
 use fsundials_context_mod
 use fsundials_types_mod
 use fsundials_linearsolver_mod
 use fsundials_matrix_mod
 use fsundials_nvector_mod
 use fsundials_context_mod
 use fsundials_types_mod
 use fsundials_nonlinearsolver_mod
 use fsundials_types_mod
 implicit none
 private

 ! DECLARATION CONSTRUCTS
 integer(C_INT), parameter, public :: ARKSTEP_DEFAULT_ERK_2 = ARKODE_HEUN_EULER_2_1_2
 integer(C_INT), parameter, public :: ARKSTEP_DEFAULT_ERK_3 = ARKODE_BOGACKI_SHAMPINE_4_2_3
 integer(C_INT), parameter, public :: ARKSTEP_DEFAULT_ERK_4 = ARKODE_ZONNEVELD_5_3_4
 integer(C_INT), parameter, public :: ARKSTEP_DEFAULT_ERK_5 = ARKODE_CASH_KARP_6_4_5
 integer(C_INT), parameter, public :: ARKSTEP_DEFAULT_ERK_6 = ARKODE_VERNER_8_5_6
 integer(C_INT), parameter, public :: ARKSTEP_DEFAULT_ERK_8 = ARKODE_FEHLBERG_13_7_8
 integer(C_INT), parameter, public :: ARKSTEP_DEFAULT_DIRK_2 = ARKODE_SDIRK_2_1_2
 integer(C_INT), parameter, public :: ARKSTEP_DEFAULT_DIRK_3 = ARKODE_ARK324L2SA_DIRK_4_2_3
 integer(C_INT), parameter, public :: ARKSTEP_DEFAULT_DIRK_4 = ARKODE_SDIRK_5_3_4
 integer(C_INT), parameter, public :: ARKSTEP_DEFAULT_DIRK_5 = ARKODE_ARK548L2SA_DIRK_8_4_5
 integer(C_INT), parameter, public :: ARKSTEP_DEFAULT_ARK_ETABLE_3 = ARKODE_ARK324L2SA_ERK_4_2_3
 integer(C_INT), parameter, public :: ARKSTEP_DEFAULT_ARK_ETABLE_4 = ARKODE_ARK436L2SA_ERK_6_3_4
 integer(C_INT), parameter, public :: ARKSTEP_DEFAULT_ARK_ETABLE_5 = ARKODE_ARK548L2SA_ERK_8_4_5
 integer(C_INT), parameter, public :: ARKSTEP_DEFAULT_ARK_ITABLE_3 = ARKODE_ARK324L2SA_DIRK_4_2_3
 integer(C_INT), parameter, public :: ARKSTEP_DEFAULT_ARK_ITABLE_4 = ARKODE_ARK436L2SA_DIRK_6_3_4
 integer(C_INT), parameter, public :: ARKSTEP_DEFAULT_ARK_ITABLE_5 = ARKODE_ARK548L2SA_DIRK_8_4_5
 public :: FARKStepCreate
 public :: FARKStepResize
 public :: FARKStepReInit
 public :: FARKStepReset
 public :: FARKStepSStolerances
 public :: FARKStepSVtolerances
 public :: FARKStepWFtolerances
 public :: FARKStepResStolerance
 public :: FARKStepResVtolerance
 public :: FARKStepResFtolerance
 public :: FARKStepSetLinearSolver
 public :: FARKStepSetMassLinearSolver
 public :: FARKStepRootInit
 public :: FARKStepSetDefaults
 public :: FARKStepSetOptimalParams
 public :: FARKStepSetOrder
 public :: FARKStepSetInterpolantType
 public :: FARKStepSetInterpolantDegree
 public :: FARKStepSetDenseOrder
 public :: FARKStepSetNonlinearSolver
 public :: FARKStepSetNlsRhsFn
 public :: FARKStepSetLinear
 public :: FARKStepSetNonlinear
 public :: FARKStepSetExplicit
 public :: FARKStepSetImplicit
 public :: FARKStepSetImEx
 public :: FARKStepSetDeduceImplicitRhs
 public :: FARKStepSetTables
 public :: FARKStepSetTableNum
 type, bind(C) :: SwigArrayWrapper
  type(C_PTR), public :: data = C_NULL_PTR
  integer(C_SIZE_T), public :: size = 0
 end type
 public :: FARKStepSetTableName
 public :: FARKStepSetCFLFraction
 public :: FARKStepSetSafetyFactor
 public :: FARKStepSetErrorBias
 public :: FARKStepSetMaxGrowth
 public :: FARKStepSetMinReduction
 public :: FARKStepSetFixedStepBounds
 public :: FARKStepSetAdaptivityMethod
 public :: FARKStepSetAdaptivityFn
 public :: FARKStepSetMaxFirstGrowth
 public :: FARKStepSetMaxEFailGrowth
 public :: FARKStepSetSmallNumEFails
 public :: FARKStepSetMaxCFailGrowth
 public :: FARKStepSetNonlinCRDown
 public :: FARKStepSetNonlinRDiv
 public :: FARKStepSetDeltaGammaMax
 public :: FARKStepSetLSetupFrequency
 public :: FARKStepSetPredictorMethod
 public :: FARKStepSetStabilityFn
 public :: FARKStepSetMaxErrTestFails
 public :: FARKStepSetMaxNonlinIters
 public :: FARKStepSetMaxConvFails
 public :: FARKStepSetNonlinConvCoef
 public :: FARKStepSetConstraints
 public :: FARKStepSetMaxNumSteps
 public :: FARKStepSetMaxHnilWarns
 public :: FARKStepSetInitStep
 public :: FARKStepSetMinStep
 public :: FARKStepSetMaxStep
 public :: FARKStepSetStopTime
 public :: FARKStepSetFixedStep
 public :: FARKStepSetMaxNumConstrFails
 public :: FARKStepSetRootDirection
 public :: FARKStepSetNoInactiveRootWarn
 public :: FARKStepSetErrHandlerFn
 public :: FARKStepSetErrFile
 public :: FARKStepSetUserData
 public :: FARKStepSetDiagnostics
 public :: FARKStepSetPostprocessStepFn
 public :: FARKStepSetPostprocessStageFn
 public :: FARKStepSetStagePredictFn
 public :: FARKStepSetJacFn
 public :: FARKStepSetMassFn
 public :: FARKStepSetJacEvalFrequency
 public :: FARKStepSetLinearSolutionScaling
 public :: FARKStepSetEpsLin
 public :: FARKStepSetMassEpsLin
 public :: FARKStepSetLSNormFactor
 public :: FARKStepSetMassLSNormFactor
 public :: FARKStepSetPreconditioner
 public :: FARKStepSetMassPreconditioner
 public :: FARKStepSetJacTimes
 public :: FARKStepSetJacTimesRhsFn
 public :: FARKStepSetMassTimes
 public :: FARKStepSetLinSysFn
 public :: FARKStepEvolve
 public :: FARKStepGetDky
 public :: FARKStepComputeState
 public :: FARKStepGetNumExpSteps
 public :: FARKStepGetNumAccSteps
 public :: FARKStepGetNumStepAttempts
 public :: FARKStepGetNumRhsEvals
 public :: FARKStepGetNumLinSolvSetups
 public :: FARKStepGetNumErrTestFails
 public :: FARKStepGetCurrentButcherTables
 public :: FARKStepGetEstLocalErrors
 public :: FARKStepGetWorkSpace
 public :: FARKStepGetNumSteps
 public :: FARKStepGetActualInitStep
 public :: FARKStepGetLastStep
 public :: FARKStepGetCurrentStep
 public :: FARKStepGetCurrentTime
 public :: FARKStepGetCurrentState
 public :: FARKStepGetCurrentGamma
 public :: FARKStepGetCurrentMassMatrix
 public :: FARKStepGetTolScaleFactor
 public :: FARKStepGetErrWeights
 public :: FARKStepGetResWeights
 public :: FARKStepGetNumGEvals
 public :: FARKStepGetRootInfo
 public :: FARKStepGetNumConstrFails
 public :: FARKStepGetUserData
 public :: FARKStepPrintAllStats
 public :: FARKStepGetReturnFlagName
 public :: FARKStepWriteParameters
 public :: FARKStepWriteButcher
 public :: FARKStepGetTimestepperStats
 public :: FARKStepGetStepStats
 public :: FARKStepGetNonlinearSystemData
 public :: FARKStepGetNumNonlinSolvIters
 public :: FARKStepGetNumNonlinSolvConvFails
 public :: FARKStepGetNonlinSolvStats
 public :: FARKStepGetNumStepSolveFails
 public :: FARKStepGetLinWorkSpace
 public :: FARKStepGetNumJacEvals
 public :: FARKStepGetNumPrecEvals
 public :: FARKStepGetNumPrecSolves
 public :: FARKStepGetNumLinIters
 public :: FARKStepGetNumLinConvFails
 public :: FARKStepGetNumJTSetupEvals
 public :: FARKStepGetNumJtimesEvals
 public :: FARKStepGetNumLinRhsEvals
 public :: FARKStepGetLastLinFlag
 public :: FARKStepGetMassWorkSpace
 public :: FARKStepGetNumMassSetups
 public :: FARKStepGetNumMassMultSetups
 public :: FARKStepGetNumMassMult
 public :: FARKStepGetNumMassSolves
 public :: FARKStepGetNumMassPrecEvals
 public :: FARKStepGetNumMassPrecSolves
 public :: FARKStepGetNumMassIters
 public :: FARKStepGetNumMassConvFails
 public :: FARKStepGetNumMTSetups
 public :: FARKStepGetLastMassFlag
 public :: FARKStepGetLinReturnFlagName
 public :: FARKStepFree
 public :: FARKStepPrintMem
 public :: FARKStepCreateMRIStepInnerStepper

! WRAPPER DECLARATIONS
interface
function swigc_FARKStepCreate(farg1, farg2, farg3, farg4, farg5) &
bind(C, name="_wrap_FARKStepCreate") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_FUNPTR), value :: farg1
type(C_FUNPTR), value :: farg2
real(C_DOUBLE), intent(in) :: farg3
type(C_PTR), value :: farg4
type(C_PTR), value :: farg5
type(C_PTR) :: fresult
end function

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

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

function swigc_FARKStepReset(farg1, farg2, farg3) &
bind(C, name="_wrap_FARKStepReset") &
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_FARKStepSStolerances(farg1, farg2, farg3) &
bind(C, name="_wrap_FARKStepSStolerances") &
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_FARKStepSVtolerances(farg1, farg2, farg3) &
bind(C, name="_wrap_FARKStepSVtolerances") &
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_FARKStepWFtolerances(farg1, farg2) &
bind(C, name="_wrap_FARKStepWFtolerances") &
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_FARKStepResStolerance(farg1, farg2) &
bind(C, name="_wrap_FARKStepResStolerance") &
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_FARKStepResVtolerance(farg1, farg2) &
bind(C, name="_wrap_FARKStepResVtolerance") &
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_FARKStepResFtolerance(farg1, farg2) &
bind(C, name="_wrap_FARKStepResFtolerance") &
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_FARKStepSetLinearSolver(farg1, farg2, farg3) &
bind(C, name="_wrap_FARKStepSetLinearSolver") &
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_FARKStepSetMassLinearSolver(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FARKStepSetMassLinearSolver") &
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), intent(in) :: farg4
integer(C_INT) :: fresult
end function

function swigc_FARKStepRootInit(farg1, farg2, farg3) &
bind(C, name="_wrap_FARKStepRootInit") &
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_FARKStepSetDefaults(farg1) &
bind(C, name="_wrap_FARKStepSetDefaults") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT) :: fresult
end function

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

function swigc_FARKStepSetOrder(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetOrder") &
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_FARKStepSetInterpolantType(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetInterpolantType") &
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_FARKStepSetInterpolantDegree(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetInterpolantDegree") &
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_FARKStepSetDenseOrder(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetDenseOrder") &
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_FARKStepSetNonlinearSolver(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetNonlinearSolver") &
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_FARKStepSetNlsRhsFn(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetNlsRhsFn") &
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_FARKStepSetLinear(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetLinear") &
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_FARKStepSetNonlinear(farg1) &
bind(C, name="_wrap_FARKStepSetNonlinear") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT) :: fresult
end function

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

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

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

function swigc_FARKStepSetDeduceImplicitRhs(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetDeduceImplicitRhs") &
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_FARKStepSetTables(farg1, farg2, farg3, farg4, farg5) &
bind(C, name="_wrap_FARKStepSetTables") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
integer(C_INT), intent(in) :: farg3
type(C_PTR), value :: farg4
type(C_PTR), value :: farg5
integer(C_INT) :: fresult
end function

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

function swigc_FARKStepSetTableName(farg1, farg2, farg3) &
bind(C, name="_wrap_FARKStepSetTableName") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
import :: swigarraywrapper
type(C_PTR), value :: farg1
type(SwigArrayWrapper) :: farg2
type(SwigArrayWrapper) :: farg3
integer(C_INT) :: fresult
end function

function swigc_FARKStepSetCFLFraction(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetCFLFraction") &
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_FARKStepSetSafetyFactor(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetSafetyFactor") &
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_FARKStepSetErrorBias(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetErrorBias") &
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_FARKStepSetMaxGrowth(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetMaxGrowth") &
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_FARKStepSetMinReduction(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetMinReduction") &
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_FARKStepSetFixedStepBounds(farg1, farg2, farg3) &
bind(C, name="_wrap_FARKStepSetFixedStepBounds") &
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_FARKStepSetAdaptivityMethod(farg1, farg2, farg3, farg4, farg5) &
bind(C, name="_wrap_FARKStepSetAdaptivityMethod") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
integer(C_INT), intent(in) :: farg3
integer(C_INT), intent(in) :: farg4
type(C_PTR), value :: farg5
integer(C_INT) :: fresult
end function

function swigc_FARKStepSetAdaptivityFn(farg1, farg2, farg3) &
bind(C, name="_wrap_FARKStepSetAdaptivityFn") &
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_FARKStepSetMaxFirstGrowth(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetMaxFirstGrowth") &
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_FARKStepSetMaxEFailGrowth(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetMaxEFailGrowth") &
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_FARKStepSetSmallNumEFails(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetSmallNumEFails") &
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_FARKStepSetMaxCFailGrowth(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetMaxCFailGrowth") &
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_FARKStepSetNonlinCRDown(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetNonlinCRDown") &
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_FARKStepSetNonlinRDiv(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetNonlinRDiv") &
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_FARKStepSetDeltaGammaMax(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetDeltaGammaMax") &
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_FARKStepSetLSetupFrequency(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetLSetupFrequency") &
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_FARKStepSetPredictorMethod(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetPredictorMethod") &
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_FARKStepSetStabilityFn(farg1, farg2, farg3) &
bind(C, name="_wrap_FARKStepSetStabilityFn") &
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_FARKStepSetMaxErrTestFails(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetMaxErrTestFails") &
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_FARKStepSetMaxNonlinIters(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetMaxNonlinIters") &
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_FARKStepSetMaxConvFails(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetMaxConvFails") &
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_FARKStepSetNonlinConvCoef(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetNonlinConvCoef") &
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_FARKStepSetConstraints(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetConstraints") &
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_FARKStepSetMaxNumSteps(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetMaxNumSteps") &
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_FARKStepSetMaxHnilWarns(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetMaxHnilWarns") &
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_FARKStepSetInitStep(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetInitStep") &
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_FARKStepSetMinStep(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetMinStep") &
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_FARKStepSetMaxStep(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetMaxStep") &
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_FARKStepSetStopTime(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetStopTime") &
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_FARKStepSetFixedStep(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetFixedStep") &
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_FARKStepSetMaxNumConstrFails(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetMaxNumConstrFails") &
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_FARKStepSetRootDirection(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetRootDirection") &
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_FARKStepSetNoInactiveRootWarn(farg1) &
bind(C, name="_wrap_FARKStepSetNoInactiveRootWarn") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT) :: fresult
end function

function swigc_FARKStepSetErrHandlerFn(farg1, farg2, farg3) &
bind(C, name="_wrap_FARKStepSetErrHandlerFn") &
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_FARKStepSetErrFile(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetErrFile") &
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_FARKStepSetUserData(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetUserData") &
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_FARKStepSetDiagnostics(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetDiagnostics") &
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_FARKStepSetPostprocessStepFn(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetPostprocessStepFn") &
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_FARKStepSetPostprocessStageFn(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetPostprocessStageFn") &
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_FARKStepSetStagePredictFn(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetStagePredictFn") &
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_FARKStepSetJacFn(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetJacFn") &
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_FARKStepSetMassFn(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetMassFn") &
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_FARKStepSetJacEvalFrequency(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetJacEvalFrequency") &
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_FARKStepSetLinearSolutionScaling(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetLinearSolutionScaling") &
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_FARKStepSetEpsLin(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetEpsLin") &
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_FARKStepSetMassEpsLin(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetMassEpsLin") &
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_FARKStepSetLSNormFactor(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetLSNormFactor") &
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_FARKStepSetMassLSNormFactor(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetMassLSNormFactor") &
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_FARKStepSetPreconditioner(farg1, farg2, farg3) &
bind(C, name="_wrap_FARKStepSetPreconditioner") &
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_FARKStepSetMassPreconditioner(farg1, farg2, farg3) &
bind(C, name="_wrap_FARKStepSetMassPreconditioner") &
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_FARKStepSetJacTimes(farg1, farg2, farg3) &
bind(C, name="_wrap_FARKStepSetJacTimes") &
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_FARKStepSetJacTimesRhsFn(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetJacTimesRhsFn") &
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_FARKStepSetMassTimes(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FARKStepSetMassTimes") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_FUNPTR), value :: farg2
type(C_FUNPTR), value :: farg3
type(C_PTR), value :: farg4
integer(C_INT) :: fresult
end function

function swigc_FARKStepSetLinSysFn(farg1, farg2) &
bind(C, name="_wrap_FARKStepSetLinSysFn") &
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_FARKStepEvolve(farg1, farg2, farg3, farg4, farg5) &
bind(C, name="_wrap_FARKStepEvolve") &
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_FARKStepGetDky(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FARKStepGetDky") &
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_FARKStepComputeState(farg1, farg2, farg3) &
bind(C, name="_wrap_FARKStepComputeState") &
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_FARKStepGetNumExpSteps(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetNumExpSteps") &
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_FARKStepGetNumAccSteps(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetNumAccSteps") &
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_FARKStepGetNumStepAttempts(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetNumStepAttempts") &
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_FARKStepGetNumRhsEvals(farg1, farg2, farg3) &
bind(C, name="_wrap_FARKStepGetNumRhsEvals") &
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_FARKStepGetNumLinSolvSetups(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetNumLinSolvSetups") &
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_FARKStepGetNumErrTestFails(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetNumErrTestFails") &
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_FARKStepGetCurrentButcherTables(farg1, farg2, farg3) &
bind(C, name="_wrap_FARKStepGetCurrentButcherTables") &
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_FARKStepGetEstLocalErrors(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetEstLocalErrors") &
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_FARKStepGetWorkSpace(farg1, farg2, farg3) &
bind(C, name="_wrap_FARKStepGetWorkSpace") &
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_FARKStepGetNumSteps(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetNumSteps") &
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_FARKStepGetActualInitStep(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetActualInitStep") &
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_FARKStepGetLastStep(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetLastStep") &
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_FARKStepGetCurrentStep(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetCurrentStep") &
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_FARKStepGetCurrentTime(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetCurrentTime") &
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_FARKStepGetCurrentState(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetCurrentState") &
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_FARKStepGetCurrentGamma(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetCurrentGamma") &
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_FARKStepGetCurrentMassMatrix(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetCurrentMassMatrix") &
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_FARKStepGetTolScaleFactor(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetTolScaleFactor") &
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_FARKStepGetErrWeights(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetErrWeights") &
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_FARKStepGetResWeights(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetResWeights") &
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_FARKStepGetNumGEvals(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetNumGEvals") &
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_FARKStepGetRootInfo(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetRootInfo") &
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_FARKStepGetNumConstrFails(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetNumConstrFails") &
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_FARKStepGetUserData(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetUserData") &
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_FARKStepPrintAllStats(farg1, farg2, farg3) &
bind(C, name="_wrap_FARKStepPrintAllStats") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT), intent(in) :: 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_FARKStepGetReturnFlagName(farg1) &
bind(C, name="_wrap_FARKStepGetReturnFlagName") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
import :: swigarraywrapper
integer(C_LONG), intent(in) :: farg1
type(SwigArrayWrapper) :: fresult
end function

function swigc_FARKStepWriteParameters(farg1, farg2) &
bind(C, name="_wrap_FARKStepWriteParameters") &
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_FARKStepWriteButcher(farg1, farg2) &
bind(C, name="_wrap_FARKStepWriteButcher") &
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_FARKStepGetTimestepperStats(farg1, farg2, farg3, farg4, farg5, farg6, farg7, farg8) &
bind(C, name="_wrap_FARKStepGetTimestepperStats") &
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
integer(C_INT) :: fresult
end function

function swigc_FARKStepGetStepStats(farg1, farg2, farg3, farg4, farg5, farg6) &
bind(C, name="_wrap_FARKStepGetStepStats") &
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
integer(C_INT) :: fresult
end function

function swigc_FARKStepGetNonlinearSystemData(farg1, farg2, farg3, farg4, farg5, farg6, farg7, farg8) &
bind(C, name="_wrap_FARKStepGetNonlinearSystemData") &
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
integer(C_INT) :: fresult
end function

function swigc_FARKStepGetNumNonlinSolvIters(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetNumNonlinSolvIters") &
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_FARKStepGetNumNonlinSolvConvFails(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetNumNonlinSolvConvFails") &
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_FARKStepGetNonlinSolvStats(farg1, farg2, farg3) &
bind(C, name="_wrap_FARKStepGetNonlinSolvStats") &
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_FARKStepGetNumStepSolveFails(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetNumStepSolveFails") &
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_FARKStepGetLinWorkSpace(farg1, farg2, farg3) &
bind(C, name="_wrap_FARKStepGetLinWorkSpace") &
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_FARKStepGetNumJacEvals(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetNumJacEvals") &
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_FARKStepGetNumPrecEvals(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetNumPrecEvals") &
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_FARKStepGetNumPrecSolves(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetNumPrecSolves") &
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_FARKStepGetNumLinIters(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetNumLinIters") &
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_FARKStepGetNumLinConvFails(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetNumLinConvFails") &
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_FARKStepGetNumJTSetupEvals(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetNumJTSetupEvals") &
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_FARKStepGetNumJtimesEvals(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetNumJtimesEvals") &
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_FARKStepGetNumLinRhsEvals(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetNumLinRhsEvals") &
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_FARKStepGetLastLinFlag(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetLastLinFlag") &
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_FARKStepGetMassWorkSpace(farg1, farg2, farg3) &
bind(C, name="_wrap_FARKStepGetMassWorkSpace") &
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_FARKStepGetNumMassSetups(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetNumMassSetups") &
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_FARKStepGetNumMassMultSetups(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetNumMassMultSetups") &
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_FARKStepGetNumMassMult(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetNumMassMult") &
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_FARKStepGetNumMassSolves(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetNumMassSolves") &
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_FARKStepGetNumMassPrecEvals(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetNumMassPrecEvals") &
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_FARKStepGetNumMassPrecSolves(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetNumMassPrecSolves") &
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_FARKStepGetNumMassIters(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetNumMassIters") &
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_FARKStepGetNumMassConvFails(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetNumMassConvFails") &
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_FARKStepGetNumMTSetups(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetNumMTSetups") &
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_FARKStepGetLastMassFlag(farg1, farg2) &
bind(C, name="_wrap_FARKStepGetLastMassFlag") &
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_FARKStepGetLinReturnFlagName(farg1) &
bind(C, name="_wrap_FARKStepGetLinReturnFlagName") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
import :: swigarraywrapper
integer(C_LONG), intent(in) :: farg1
type(SwigArrayWrapper) :: fresult
end function

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

subroutine swigc_FARKStepPrintMem(farg1, farg2) &
bind(C, name="_wrap_FARKStepPrintMem")
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
end subroutine

function swigc_FARKStepCreateMRIStepInnerStepper(farg1, farg2) &
bind(C, name="_wrap_FARKStepCreateMRIStepInnerStepper") &
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 FARKStepCreate(fe, fi, t0, y0, sunctx) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
type(C_PTR) :: swig_result
type(C_FUNPTR), intent(in), value :: fe
type(C_FUNPTR), intent(in), value :: fi
real(C_DOUBLE), intent(in) :: t0
type(N_Vector), target, intent(inout) :: y0
type(C_PTR) :: sunctx
type(C_PTR) :: fresult 
type(C_FUNPTR) :: farg1 
type(C_FUNPTR) :: farg2 
real(C_DOUBLE) :: farg3 
type(C_PTR) :: farg4 
type(C_PTR) :: farg5 

farg1 = fe
farg2 = fi
farg3 = t0
farg4 = c_loc(y0)
farg5 = sunctx
fresult = swigc_FARKStepCreate(farg1, farg2, farg3, farg4, farg5)
swig_result = fresult
end function

function FARKStepResize(arkode_mem, ynew, hscale, t0, resize, resize_data) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
type(N_Vector), target, intent(inout) :: ynew
real(C_DOUBLE), intent(in) :: hscale
real(C_DOUBLE), intent(in) :: t0
type(C_FUNPTR), intent(in), value :: resize
type(C_PTR) :: resize_data
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
real(C_DOUBLE) :: farg3 
real(C_DOUBLE) :: farg4 
type(C_FUNPTR) :: farg5 
type(C_PTR) :: farg6 

farg1 = arkode_mem
farg2 = c_loc(ynew)
farg3 = hscale
farg4 = t0
farg5 = resize
farg6 = resize_data
fresult = swigc_FARKStepResize(farg1, farg2, farg3, farg4, farg5, farg6)
swig_result = fresult
end function

function FARKStepReInit(arkode_mem, fe, fi, t0, y0) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
type(C_FUNPTR), intent(in), value :: fe
type(C_FUNPTR), intent(in), value :: fi
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 
type(C_FUNPTR) :: farg3 
real(C_DOUBLE) :: farg4 
type(C_PTR) :: farg5 

farg1 = arkode_mem
farg2 = fe
farg3 = fi
farg4 = t0
farg5 = c_loc(y0)
fresult = swigc_FARKStepReInit(farg1, farg2, farg3, farg4, farg5)
swig_result = fresult
end function

function FARKStepReset(arkode_mem, tr, yr) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
real(C_DOUBLE), intent(in) :: tr
type(N_Vector), target, intent(inout) :: yr
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 
type(C_PTR) :: farg3 

farg1 = arkode_mem
farg2 = tr
farg3 = c_loc(yr)
fresult = swigc_FARKStepReset(farg1, farg2, farg3)
swig_result = fresult
end function

function FARKStepSStolerances(arkode_mem, reltol, abstol) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_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 = arkode_mem
farg2 = reltol
farg3 = abstol
fresult = swigc_FARKStepSStolerances(farg1, farg2, farg3)
swig_result = fresult
end function

function FARKStepSVtolerances(arkode_mem, reltol, abstol) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_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 = arkode_mem
farg2 = reltol
farg3 = c_loc(abstol)
fresult = swigc_FARKStepSVtolerances(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = efun
fresult = swigc_FARKStepWFtolerances(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = rabstol
fresult = swigc_FARKStepResStolerance(farg1, farg2)
swig_result = fresult
end function

function FARKStepResVtolerance(arkode_mem, rabstol) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
type(N_Vector), target, intent(inout) :: rabstol
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = arkode_mem
farg2 = c_loc(rabstol)
fresult = swigc_FARKStepResVtolerance(farg1, farg2)
swig_result = fresult
end function

function FARKStepResFtolerance(arkode_mem, rfun) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
type(C_FUNPTR), intent(in), value :: rfun
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_FUNPTR) :: farg2 

farg1 = arkode_mem
farg2 = rfun
fresult = swigc_FARKStepResFtolerance(farg1, farg2)
swig_result = fresult
end function

function FARKStepSetLinearSolver(arkode_mem, ls, a) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_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 = arkode_mem
farg2 = c_loc(ls)
farg3 = c_loc(a)
fresult = swigc_FARKStepSetLinearSolver(farg1, farg2, farg3)
swig_result = fresult
end function

function FARKStepSetMassLinearSolver(arkode_mem, ls, m, time_dep) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
type(SUNLinearSolver), target, intent(inout) :: ls
type(SUNMatrix), target, intent(inout) :: m
integer(C_INT), intent(in) :: time_dep
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 
integer(C_INT) :: farg4 

farg1 = arkode_mem
farg2 = c_loc(ls)
farg3 = c_loc(m)
farg4 = time_dep
fresult = swigc_FARKStepSetMassLinearSolver(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FARKStepRootInit(arkode_mem, nrtfn, g) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_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 = arkode_mem
farg2 = nrtfn
farg3 = g
fresult = swigc_FARKStepRootInit(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = arkode_mem
fresult = swigc_FARKStepSetDefaults(farg1)
swig_result = fresult
end function

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

farg1 = arkode_mem
fresult = swigc_FARKStepSetOptimalParams(farg1)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = maxord
fresult = swigc_FARKStepSetOrder(farg1, farg2)
swig_result = fresult
end function

function FARKStepSetInterpolantType(arkode_mem, itype) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
integer(C_INT), intent(in) :: itype
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = arkode_mem
farg2 = itype
fresult = swigc_FARKStepSetInterpolantType(farg1, farg2)
swig_result = fresult
end function

function FARKStepSetInterpolantDegree(arkode_mem, degree) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
integer(C_INT), intent(in) :: degree
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = arkode_mem
farg2 = degree
fresult = swigc_FARKStepSetInterpolantDegree(farg1, farg2)
swig_result = fresult
end function

function FARKStepSetDenseOrder(arkode_mem, dord) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
integer(C_INT), intent(in) :: dord
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = arkode_mem
farg2 = dord
fresult = swigc_FARKStepSetDenseOrder(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(nls)
fresult = swigc_FARKStepSetNonlinearSolver(farg1, farg2)
swig_result = fresult
end function

function FARKStepSetNlsRhsFn(arkode_mem, nls_fi) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
type(C_FUNPTR), intent(in), value :: nls_fi
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_FUNPTR) :: farg2 

farg1 = arkode_mem
farg2 = nls_fi
fresult = swigc_FARKStepSetNlsRhsFn(farg1, farg2)
swig_result = fresult
end function

function FARKStepSetLinear(arkode_mem, timedepend) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
integer(C_INT), intent(in) :: timedepend
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = arkode_mem
farg2 = timedepend
fresult = swigc_FARKStepSetLinear(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
fresult = swigc_FARKStepSetNonlinear(farg1)
swig_result = fresult
end function

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

farg1 = arkode_mem
fresult = swigc_FARKStepSetExplicit(farg1)
swig_result = fresult
end function

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

farg1 = arkode_mem
fresult = swigc_FARKStepSetImplicit(farg1)
swig_result = fresult
end function

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

farg1 = arkode_mem
fresult = swigc_FARKStepSetImEx(farg1)
swig_result = fresult
end function

function FARKStepSetDeduceImplicitRhs(arkode_mem, deduce) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
integer(C_INT), intent(in) :: deduce
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = arkode_mem
farg2 = deduce
fresult = swigc_FARKStepSetDeduceImplicitRhs(farg1, farg2)
swig_result = fresult
end function

function FARKStepSetTables(arkode_mem, q, p, bi, be) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
integer(C_INT), intent(in) :: q
integer(C_INT), intent(in) :: p
type(C_PTR) :: bi
type(C_PTR) :: be
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
integer(C_INT) :: farg3 
type(C_PTR) :: farg4 
type(C_PTR) :: farg5 

farg1 = arkode_mem
farg2 = q
farg3 = p
farg4 = bi
farg5 = be
fresult = swigc_FARKStepSetTables(farg1, farg2, farg3, farg4, farg5)
swig_result = fresult
end function

function FARKStepSetTableNum(arkode_mem, itable, etable) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
integer(ARKODE_DIRKTableID), intent(in) :: itable
integer(ARKODE_ERKTableID), intent(in) :: etable
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
integer(C_INT) :: farg3 

farg1 = arkode_mem
farg2 = itable
farg3 = etable
fresult = swigc_FARKStepSetTableNum(farg1, farg2, farg3)
swig_result = fresult
end function


subroutine SWIG_string_to_chararray(string, chars, wrap)
  use, intrinsic :: ISO_C_BINDING
  character(kind=C_CHAR, len=*), intent(IN) :: string
  character(kind=C_CHAR), dimension(:), target, allocatable, intent(OUT) :: chars
  type(SwigArrayWrapper), intent(OUT) :: wrap
  integer :: i

  allocate(character(kind=C_CHAR) :: chars(len(string) + 1))
  do i=1,len(string)
    chars(i) = string(i:i)
  end do
  i = len(string) + 1
  chars(i) = C_NULL_CHAR ! C string compatibility
  wrap%data = c_loc(chars)
  wrap%size = len(string)
end subroutine

function FARKStepSetTableName(arkode_mem, itable, etable) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
character(kind=C_CHAR, len=*), target :: itable
character(kind=C_CHAR), dimension(:), allocatable, target :: farg2_chars
character(kind=C_CHAR, len=*), target :: etable
character(kind=C_CHAR), dimension(:), allocatable, target :: farg3_chars
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(SwigArrayWrapper) :: farg2 
type(SwigArrayWrapper) :: farg3 

farg1 = arkode_mem
call SWIG_string_to_chararray(itable, farg2_chars, farg2)
call SWIG_string_to_chararray(etable, farg3_chars, farg3)
fresult = swigc_FARKStepSetTableName(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = cfl_frac
fresult = swigc_FARKStepSetCFLFraction(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = safety
fresult = swigc_FARKStepSetSafetyFactor(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = bias
fresult = swigc_FARKStepSetErrorBias(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = mx_growth
fresult = swigc_FARKStepSetMaxGrowth(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = eta_min
fresult = swigc_FARKStepSetMinReduction(farg1, farg2)
swig_result = fresult
end function

function FARKStepSetFixedStepBounds(arkode_mem, lb, ub) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
real(C_DOUBLE), intent(in) :: lb
real(C_DOUBLE), intent(in) :: ub
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 
real(C_DOUBLE) :: farg3 

farg1 = arkode_mem
farg2 = lb
farg3 = ub
fresult = swigc_FARKStepSetFixedStepBounds(farg1, farg2, farg3)
swig_result = fresult
end function

function FARKStepSetAdaptivityMethod(arkode_mem, imethod, idefault, pq, adapt_params) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
integer(C_INT), intent(in) :: imethod
integer(C_INT), intent(in) :: idefault
integer(C_INT), intent(in) :: pq
real(C_DOUBLE), dimension(3), target, intent(inout) :: adapt_params
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
integer(C_INT) :: farg3 
integer(C_INT) :: farg4 
type(C_PTR) :: farg5 

farg1 = arkode_mem
farg2 = imethod
farg3 = idefault
farg4 = pq
farg5 = c_loc(adapt_params(1))
fresult = swigc_FARKStepSetAdaptivityMethod(farg1, farg2, farg3, farg4, farg5)
swig_result = fresult
end function

function FARKStepSetAdaptivityFn(arkode_mem, hfun, h_data) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
type(C_FUNPTR), intent(in), value :: hfun
type(C_PTR) :: h_data
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_FUNPTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = arkode_mem
farg2 = hfun
farg3 = h_data
fresult = swigc_FARKStepSetAdaptivityFn(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = etamx1
fresult = swigc_FARKStepSetMaxFirstGrowth(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = etamxf
fresult = swigc_FARKStepSetMaxEFailGrowth(farg1, farg2)
swig_result = fresult
end function

function FARKStepSetSmallNumEFails(arkode_mem, small_nef) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
integer(C_INT), intent(in) :: small_nef
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = arkode_mem
farg2 = small_nef
fresult = swigc_FARKStepSetSmallNumEFails(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = etacf
fresult = swigc_FARKStepSetMaxCFailGrowth(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = crdown
fresult = swigc_FARKStepSetNonlinCRDown(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = rdiv
fresult = swigc_FARKStepSetNonlinRDiv(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = dgmax
fresult = swigc_FARKStepSetDeltaGammaMax(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = msbp
fresult = swigc_FARKStepSetLSetupFrequency(farg1, farg2)
swig_result = fresult
end function

function FARKStepSetPredictorMethod(arkode_mem, method) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
integer(C_INT), intent(in) :: method
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = arkode_mem
farg2 = method
fresult = swigc_FARKStepSetPredictorMethod(farg1, farg2)
swig_result = fresult
end function

function FARKStepSetStabilityFn(arkode_mem, estab, estab_data) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
type(C_FUNPTR), intent(in), value :: estab
type(C_PTR) :: estab_data
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_FUNPTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = arkode_mem
farg2 = estab
farg3 = estab_data
fresult = swigc_FARKStepSetStabilityFn(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = maxnef
fresult = swigc_FARKStepSetMaxErrTestFails(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = maxcor
fresult = swigc_FARKStepSetMaxNonlinIters(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = maxncf
fresult = swigc_FARKStepSetMaxConvFails(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = nlscoef
fresult = swigc_FARKStepSetNonlinConvCoef(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(constraints)
fresult = swigc_FARKStepSetConstraints(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = mxsteps
fresult = swigc_FARKStepSetMaxNumSteps(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = mxhnil
fresult = swigc_FARKStepSetMaxHnilWarns(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = hin
fresult = swigc_FARKStepSetInitStep(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = hmin
fresult = swigc_FARKStepSetMinStep(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = hmax
fresult = swigc_FARKStepSetMaxStep(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = tstop
fresult = swigc_FARKStepSetStopTime(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = hfixed
fresult = swigc_FARKStepSetFixedStep(farg1, farg2)
swig_result = fresult
end function

function FARKStepSetMaxNumConstrFails(arkode_mem, maxfails) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
integer(C_INT), intent(in) :: maxfails
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = arkode_mem
farg2 = maxfails
fresult = swigc_FARKStepSetMaxNumConstrFails(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(rootdir(1))
fresult = swigc_FARKStepSetRootDirection(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
fresult = swigc_FARKStepSetNoInactiveRootWarn(farg1)
swig_result = fresult
end function

function FARKStepSetErrHandlerFn(arkode_mem, ehfun, eh_data) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_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 = arkode_mem
farg2 = ehfun
farg3 = eh_data
fresult = swigc_FARKStepSetErrHandlerFn(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = errfp
fresult = swigc_FARKStepSetErrFile(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = user_data
fresult = swigc_FARKStepSetUserData(farg1, farg2)
swig_result = fresult
end function

function FARKStepSetDiagnostics(arkode_mem, diagfp) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
type(C_PTR) :: diagfp
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = arkode_mem
farg2 = diagfp
fresult = swigc_FARKStepSetDiagnostics(farg1, farg2)
swig_result = fresult
end function

function FARKStepSetPostprocessStepFn(arkode_mem, processstep) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
type(C_FUNPTR), intent(in), value :: processstep
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_FUNPTR) :: farg2 

farg1 = arkode_mem
farg2 = processstep
fresult = swigc_FARKStepSetPostprocessStepFn(farg1, farg2)
swig_result = fresult
end function

function FARKStepSetPostprocessStageFn(arkode_mem, processstage) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
type(C_FUNPTR), intent(in), value :: processstage
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_FUNPTR) :: farg2 

farg1 = arkode_mem
farg2 = processstage
fresult = swigc_FARKStepSetPostprocessStageFn(farg1, farg2)
swig_result = fresult
end function

function FARKStepSetStagePredictFn(arkode_mem, predictstage) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
type(C_FUNPTR), intent(in), value :: predictstage
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_FUNPTR) :: farg2 

farg1 = arkode_mem
farg2 = predictstage
fresult = swigc_FARKStepSetStagePredictFn(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = jac
fresult = swigc_FARKStepSetJacFn(farg1, farg2)
swig_result = fresult
end function

function FARKStepSetMassFn(arkode_mem, mass) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
type(C_FUNPTR), intent(in), value :: mass
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_FUNPTR) :: farg2 

farg1 = arkode_mem
farg2 = mass
fresult = swigc_FARKStepSetMassFn(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = msbj
fresult = swigc_FARKStepSetJacEvalFrequency(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = onoff
fresult = swigc_FARKStepSetLinearSolutionScaling(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = eplifac
fresult = swigc_FARKStepSetEpsLin(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = eplifac
fresult = swigc_FARKStepSetMassEpsLin(farg1, farg2)
swig_result = fresult
end function

function FARKStepSetLSNormFactor(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_FARKStepSetLSNormFactor(farg1, farg2)
swig_result = fresult
end function

function FARKStepSetMassLSNormFactor(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_FARKStepSetMassLSNormFactor(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = psetup
farg3 = psolve
fresult = swigc_FARKStepSetPreconditioner(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = psetup
farg3 = psolve
fresult = swigc_FARKStepSetMassPreconditioner(farg1, farg2, farg3)
swig_result = fresult
end function

function FARKStepSetJacTimes(arkode_mem, jtsetup, jtimes) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_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 = arkode_mem
farg2 = jtsetup
farg3 = jtimes
fresult = swigc_FARKStepSetJacTimes(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = jtimesrhsfn
fresult = swigc_FARKStepSetJacTimesRhsFn(farg1, farg2)
swig_result = fresult
end function

function FARKStepSetMassTimes(arkode_mem, msetup, mtimes, mtimes_data) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
type(C_FUNPTR), intent(in), value :: msetup
type(C_FUNPTR), intent(in), value :: mtimes
type(C_PTR) :: mtimes_data
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_FUNPTR) :: farg2 
type(C_FUNPTR) :: farg3 
type(C_PTR) :: farg4 

farg1 = arkode_mem
farg2 = msetup
farg3 = mtimes
farg4 = mtimes_data
fresult = swigc_FARKStepSetMassTimes(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = linsys
fresult = swigc_FARKStepSetLinSysFn(farg1, farg2)
swig_result = fresult
end function

function FARKStepEvolve(arkode_mem, tout, yout, tret, itask) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_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 = arkode_mem
farg2 = tout
farg3 = c_loc(yout)
farg4 = c_loc(tret(1))
farg5 = itask
fresult = swigc_FARKStepEvolve(farg1, farg2, farg3, farg4, farg5)
swig_result = fresult
end function

function FARKStepGetDky(arkode_mem, t, k, dky) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_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 = arkode_mem
farg2 = t
farg3 = k
farg4 = c_loc(dky)
fresult = swigc_FARKStepGetDky(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FARKStepComputeState(arkode_mem, zcor, z) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
type(N_Vector), target, intent(inout) :: zcor
type(N_Vector), target, intent(inout) :: z
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = arkode_mem
farg2 = c_loc(zcor)
farg3 = c_loc(z)
fresult = swigc_FARKStepComputeState(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(expsteps(1))
fresult = swigc_FARKStepGetNumExpSteps(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(accsteps(1))
fresult = swigc_FARKStepGetNumAccSteps(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(step_attempts(1))
fresult = swigc_FARKStepGetNumStepAttempts(farg1, farg2)
swig_result = fresult
end function

function FARKStepGetNumRhsEvals(arkode_mem, nfe_evals, nfi_evals) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nfe_evals
integer(C_LONG), dimension(*), target, intent(inout) :: nfi_evals
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = arkode_mem
farg2 = c_loc(nfe_evals(1))
farg3 = c_loc(nfi_evals(1))
fresult = swigc_FARKStepGetNumRhsEvals(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(nlinsetups(1))
fresult = swigc_FARKStepGetNumLinSolvSetups(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(netfails(1))
fresult = swigc_FARKStepGetNumErrTestFails(farg1, farg2)
swig_result = fresult
end function

function FARKStepGetCurrentButcherTables(arkode_mem, bi, be) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
type(C_PTR), target, intent(inout) :: bi
type(C_PTR), target, intent(inout) :: be
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = arkode_mem
farg2 = c_loc(bi)
farg3 = c_loc(be)
fresult = swigc_FARKStepGetCurrentButcherTables(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(ele)
fresult = swigc_FARKStepGetEstLocalErrors(farg1, farg2)
swig_result = fresult
end function

function FARKStepGetWorkSpace(arkode_mem, lenrw, leniw) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_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 = arkode_mem
farg2 = c_loc(lenrw(1))
farg3 = c_loc(leniw(1))
fresult = swigc_FARKStepGetWorkSpace(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(nsteps(1))
fresult = swigc_FARKStepGetNumSteps(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(hinused(1))
fresult = swigc_FARKStepGetActualInitStep(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(hlast(1))
fresult = swigc_FARKStepGetLastStep(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(hcur(1))
fresult = swigc_FARKStepGetCurrentStep(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(tcur(1))
fresult = swigc_FARKStepGetCurrentTime(farg1, farg2)
swig_result = fresult
end function

function FARKStepGetCurrentState(arkode_mem, state) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
type(C_PTR) :: state
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = arkode_mem
farg2 = state
fresult = swigc_FARKStepGetCurrentState(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(gamma(1))
fresult = swigc_FARKStepGetCurrentGamma(farg1, farg2)
swig_result = fresult
end function

function FARKStepGetCurrentMassMatrix(arkode_mem, m) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
type(C_PTR), target, intent(inout) :: m
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = arkode_mem
farg2 = c_loc(m)
fresult = swigc_FARKStepGetCurrentMassMatrix(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(tolsfac(1))
fresult = swigc_FARKStepGetTolScaleFactor(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(eweight)
fresult = swigc_FARKStepGetErrWeights(farg1, farg2)
swig_result = fresult
end function

function FARKStepGetResWeights(arkode_mem, rweight) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
type(N_Vector), target, intent(inout) :: rweight
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = arkode_mem
farg2 = c_loc(rweight)
fresult = swigc_FARKStepGetResWeights(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(ngevals(1))
fresult = swigc_FARKStepGetNumGEvals(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(rootsfound(1))
fresult = swigc_FARKStepGetRootInfo(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(nconstrfails(1))
fresult = swigc_FARKStepGetNumConstrFails(farg1, farg2)
swig_result = fresult
end function

function FARKStepGetUserData(arkode_mem, user_data) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
type(C_PTR), target, intent(inout) :: user_data
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = arkode_mem
farg2 = c_loc(user_data)
fresult = swigc_FARKStepGetUserData(farg1, farg2)
swig_result = fresult
end function

function FARKStepPrintAllStats(arkode_mem, outfile, fmt) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
type(C_PTR) :: outfile
integer(SUNOutputFormat), intent(in) :: fmt
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
integer(C_INT) :: farg3 

farg1 = arkode_mem
farg2 = outfile
farg3 = fmt
fresult = swigc_FARKStepPrintAllStats(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 FARKStepGetReturnFlagName(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_FARKStepGetReturnFlagName(farg1)
call SWIG_chararray_to_string(fresult, swig_result)
if (.false.) call SWIG_free(fresult%data)
end function

function FARKStepWriteParameters(arkode_mem, fp) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
type(C_PTR) :: fp
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = arkode_mem
farg2 = fp
fresult = swigc_FARKStepWriteParameters(farg1, farg2)
swig_result = fresult
end function

function FARKStepWriteButcher(arkode_mem, fp) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
type(C_PTR) :: fp
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = arkode_mem
farg2 = fp
fresult = swigc_FARKStepWriteButcher(farg1, farg2)
swig_result = fresult
end function

function FARKStepGetTimestepperStats(arkode_mem, expsteps, accsteps, step_attempts, nfe_evals, nfi_evals, nlinsetups, &
  netfails) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: expsteps
integer(C_LONG), dimension(*), target, intent(inout) :: accsteps
integer(C_LONG), dimension(*), target, intent(inout) :: step_attempts
integer(C_LONG), dimension(*), target, intent(inout) :: nfe_evals
integer(C_LONG), dimension(*), target, intent(inout) :: nfi_evals
integer(C_LONG), dimension(*), target, intent(inout) :: nlinsetups
integer(C_LONG), dimension(*), target, intent(inout) :: netfails
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 

farg1 = arkode_mem
farg2 = c_loc(expsteps(1))
farg3 = c_loc(accsteps(1))
farg4 = c_loc(step_attempts(1))
farg5 = c_loc(nfe_evals(1))
farg6 = c_loc(nfi_evals(1))
farg7 = c_loc(nlinsetups(1))
farg8 = c_loc(netfails(1))
fresult = swigc_FARKStepGetTimestepperStats(farg1, farg2, farg3, farg4, farg5, farg6, farg7, farg8)
swig_result = fresult
end function

function FARKStepGetStepStats(arkode_mem, nsteps, hinused, hlast, hcur, tcur) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nsteps
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 

farg1 = arkode_mem
farg2 = c_loc(nsteps(1))
farg3 = c_loc(hinused(1))
farg4 = c_loc(hlast(1))
farg5 = c_loc(hcur(1))
farg6 = c_loc(tcur(1))
fresult = swigc_FARKStepGetStepStats(farg1, farg2, farg3, farg4, farg5, farg6)
swig_result = fresult
end function

function FARKStepGetNonlinearSystemData(arkode_mem, tcur, zpred, z, fi, gamma, sdata, user_data) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
real(C_DOUBLE), dimension(*), target, intent(inout) :: tcur
type(C_PTR) :: zpred
type(C_PTR) :: z
type(C_PTR) :: fi
real(C_DOUBLE), dimension(*), target, intent(inout) :: gamma
type(C_PTR) :: sdata
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 

farg1 = arkode_mem
farg2 = c_loc(tcur(1))
farg3 = zpred
farg4 = z
farg5 = fi
farg6 = c_loc(gamma(1))
farg7 = sdata
farg8 = c_loc(user_data)
fresult = swigc_FARKStepGetNonlinearSystemData(farg1, farg2, farg3, farg4, farg5, farg6, farg7, farg8)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(nniters(1))
fresult = swigc_FARKStepGetNumNonlinSolvIters(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(nnfails(1))
fresult = swigc_FARKStepGetNumNonlinSolvConvFails(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(nniters(1))
farg3 = c_loc(nnfails(1))
fresult = swigc_FARKStepGetNonlinSolvStats(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(nncfails(1))
fresult = swigc_FARKStepGetNumStepSolveFails(farg1, farg2)
swig_result = fresult
end function

function FARKStepGetLinWorkSpace(arkode_mem, lenrwls, leniwls) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_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 = arkode_mem
farg2 = c_loc(lenrwls(1))
farg3 = c_loc(leniwls(1))
fresult = swigc_FARKStepGetLinWorkSpace(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(njevals(1))
fresult = swigc_FARKStepGetNumJacEvals(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(npevals(1))
fresult = swigc_FARKStepGetNumPrecEvals(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(npsolves(1))
fresult = swigc_FARKStepGetNumPrecSolves(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(nliters(1))
fresult = swigc_FARKStepGetNumLinIters(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(nlcfails(1))
fresult = swigc_FARKStepGetNumLinConvFails(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(njtsetups(1))
fresult = swigc_FARKStepGetNumJTSetupEvals(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(njvevals(1))
fresult = swigc_FARKStepGetNumJtimesEvals(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(nfevalsls(1))
fresult = swigc_FARKStepGetNumLinRhsEvals(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(flag(1))
fresult = swigc_FARKStepGetLastLinFlag(farg1, farg2)
swig_result = fresult
end function

function FARKStepGetMassWorkSpace(arkode_mem, lenrwmls, leniwmls) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: lenrwmls
integer(C_LONG), dimension(*), target, intent(inout) :: leniwmls
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = arkode_mem
farg2 = c_loc(lenrwmls(1))
farg3 = c_loc(leniwmls(1))
fresult = swigc_FARKStepGetMassWorkSpace(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(nmsetups(1))
fresult = swigc_FARKStepGetNumMassSetups(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(nmvsetups(1))
fresult = swigc_FARKStepGetNumMassMultSetups(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(nmvevals(1))
fresult = swigc_FARKStepGetNumMassMult(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(nmsolves(1))
fresult = swigc_FARKStepGetNumMassSolves(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(nmpevals(1))
fresult = swigc_FARKStepGetNumMassPrecEvals(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(nmpsolves(1))
fresult = swigc_FARKStepGetNumMassPrecSolves(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(nmiters(1))
fresult = swigc_FARKStepGetNumMassIters(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(nmcfails(1))
fresult = swigc_FARKStepGetNumMassConvFails(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(nmtsetups(1))
fresult = swigc_FARKStepGetNumMTSetups(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = c_loc(flag(1))
fresult = swigc_FARKStepGetLastMassFlag(farg1, farg2)
swig_result = fresult
end function

function FARKStepGetLinReturnFlagName(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_FARKStepGetLinReturnFlagName(farg1)
call SWIG_chararray_to_string(fresult, swig_result)
if (.false.) call SWIG_free(fresult%data)
end function

subroutine FARKStepFree(arkode_mem)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), target, intent(inout) :: arkode_mem
type(C_PTR) :: farg1 

farg1 = c_loc(arkode_mem)
call swigc_FARKStepFree(farg1)
end subroutine

subroutine FARKStepPrintMem(arkode_mem, outfile)
use, intrinsic :: ISO_C_BINDING
type(C_PTR) :: arkode_mem
type(C_PTR) :: outfile
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = arkode_mem
farg2 = outfile
call swigc_FARKStepPrintMem(farg1, farg2)
end subroutine

function FARKStepCreateMRIStepInnerStepper(arkode_mem, stepper) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_mem
type(C_PTR), target, intent(inout) :: stepper
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = arkode_mem
farg2 = c_loc(stepper)
fresult = swigc_FARKStepCreateMRIStepInnerStepper(farg1, farg2)
swig_result = fresult
end function


end module
