text: /*
   * -----------------------------------------------------------------
   * $Revision: 4378 $
   * $Date: 2015-02-19 10:55:14 -0800 (Thu, 19 Feb 2015) $
   * ----------------------------------------------------------------- 
   * Programmer(s): Radu Serban @ LLNL
   * -----------------------------------------------------------------
   * LLNS Copyright Start
   * Copyright (c) 2014, Lawrence Livermore National Security
   * This work was performed under the auspices of the U.S. Department 
   * of Energy by Lawrence Livermore National Laboratory in part under 
   * Contract W-7405-Eng-48 and in part under Contract DE-AC52-07NA27344.
   * Produced at the Lawrence Livermore National Laboratory.
   * All rights reserved.
   * For details, see the LICENSE file.
   * LLNS Copyright End
   * -----------------------------------------------------------------
   * This is the header file for the band linear solver CSVBAND.
   * -----------------------------------------------------------------
   */
  
  #ifndef _CVSBAND_H
  #define _CVSBAND_H
  
  #include <cvodes/cvodes_direct.h>
  #include <sundials/sundials_band.h>
  
  #ifdef __cplusplus  /* wrapper to enable C++ usage */
  extern "C" {
  #endif
  
  /*
   * -----------------------------------------------------------------
   * Function : CVBand
   * -----------------------------------------------------------------
   * A call to the CVBand function links the main CVODE integrator
   * with the CVSBAND linear solver.
   *
   * cvode_mem is the pointer to the integrator memory returned by
   *           CVodeCreate.
   *
   * N is the size of the ODE system.
   *
   * mupper is the upper bandwidth of the band Jacobian
   *        approximation.
   *
   * mlower is the lower bandwidth of the band Jacobian
   *        approximation.
   *
   * The return value of CVBand is one of:
   *    CVDLS_SUCCESS   if successful
   *    CVDLS_MEM_NULL  if the cvode memory was NULL
   *    CVDLS_MEM_FAIL  if there was a memory allocation failure
   *    CVDLS_ILL_INPUT if a required vector operation is missing or
   *                     if a bandwidth has an illegal value.
   * -----------------------------------------------------------------
   */
  
  SUNDIALS_EXPORT int CVBand(void *cvode_mem, long int N, long int mupper, long int mlower);
  
  /*
   * -----------------------------------------------------------------
   * Function: CVBandB
   * -----------------------------------------------------------------
   * CVBandB links the main CVODE integrator with the CVSBAND
   * linear solver for the backward integration.
   * -----------------------------------------------------------------
   */
  
  SUNDIALS_EXPORT int CVBandB(void *cvode_mem, int which,
                              long int nB, long int mupperB, long int mlowerB);
    
  #ifdef __cplusplus
  }
  #endif
  
  #endif
  