NEURON
iter.h File Reference
#include "sparse.h"

Go to the source code of this file.

Classes

struct  Iter_data
 

Macros

#define INULL   (ITER *)NULL
 
#define ITER_LIMIT_DEF   1000
 
#define ITER_EPS_DEF   1e-6
 
#define iter_Ax(ip, fun, fun_par)    (ip->Ax=(Fun_Ax)(fun),ip->A_par=(void *)(fun_par),0)
 
#define iter_ATx(ip, fun, fun_par)    (ip->ATx=(Fun_Ax)(fun),ip->AT_par=(void *)(fun_par),0)
 
#define iter_Bx(ip, fun, fun_par)    (ip->Bx=(Fun_Ax)(fun),ip->B_par=(void *)(fun_par),0)
 
#define ITER_FREE(ip)   (iter_free(ip), (ip)=(ITER *)NULL)
 

Typedefs

typedef VEC *(* Fun_Ax) (void *, VEC *, VEC *)
 
typedef struct Iter_data ITER
 
typedef void(* Fun_info) (ITER *, double, VEC *, VEC *)
 
typedef int(* Fun_stp_crt) (ITER *, double, VEC *, VEC *)
 

Functions

void iter_std_info (ITER *ip, double nres, VEC *res, VEC *Bres)
 
int iter_std_stop_crit (ITER *ip, double nres, VEC *res, VEC *Bres)
 
ITERiter_get (int lenb, int lenx)
 
ITERiter_resize (ITER *ip, int lenb, int lenx)
 
int iter_free (ITER *ip)
 
void iter_dump (FILE *fp, ITER *ip)
 
ITERiter_copy (ITER *ip1, ITER *ip2)
 
ITERiter_copy2 (ITER *ip1, ITER *ip2)
 
SPMATiter_gen_sym (int n, int nrow)
 
SPMATiter_gen_nonsym (int m, int n, int nrow, double diag)
 
SPMATiter_gen_nonsym_posdef (int n, int nrow)
 
VECiter_cg (ITER *ip)
 
VECiter_cg1 (ITER *ip)
 
VECiter_spcg (SPMAT *A, SPMAT *LLT, VEC *b, double eps, VEC *x, int limit, int *steps)
 
VECiter_cgs (ITER *ip, VEC *r0)
 
VECiter_spcgs (SPMAT *A, SPMAT *B, VEC *b, VEC *r0, double eps, VEC *x, int limit, int *steps)
 
VECiter_lsqr (ITER *ip)
 
VECiter_splsqr (SPMAT *A, VEC *b, double tol, VEC *x, int limit, int *steps)
 
VECiter_gmres (ITER *ip)
 
VECiter_spgmres (SPMAT *A, SPMAT *B, VEC *b, double tol, VEC *x, int k, int limit, int *steps)
 
MATiter_arnoldi_iref (ITER *ip, Real *h, MAT *Q, MAT *H)
 
MATiter_arnoldi (ITER *ip, Real *h, MAT *Q, MAT *H)
 
MATiter_sparnoldi (SPMAT *A, VEC *x0, int k, Real *h, MAT *Q, MAT *H)
 
VECiter_mgcr (ITER *ip)
 
VECiter_spmgcr (SPMAT *A, SPMAT *B, VEC *b, double tol, VEC *x, int k, int limit, int *steps)
 
void iter_lanczos (ITER *ip, VEC *a, VEC *b, Real *beta2, MAT *Q)
 
void iter_splanczos (SPMAT *A, int m, VEC *x0, VEC *a, VEC *b, Real *beta2, MAT *Q)
 
VECiter_lanczos2 (ITER *ip, VEC *evals, VEC *err_est)
 
VECiter_splanczos2 (SPMAT *A, int m, VEC *x0, VEC *evals, VEC *err_est)
 
VECiter_cgne (ITER *ip)
 
VECiter_spcgne (SPMAT *A, SPMAT *B, VEC *b, double eps, VEC *x, int limit, int *steps)
 

Macro Definition Documentation

◆ INULL

#define INULL   (ITER *)NULL

Definition at line 113 of file iter.h.

◆ iter_ATx

#define iter_ATx (   ip,
  fun,
  fun_par 
)     (ip->ATx=(Fun_Ax)(fun),ip->AT_par=(void *)(fun_par),0)

Definition at line 142 of file iter.h.

◆ iter_Ax

#define iter_Ax (   ip,
  fun,
  fun_par 
)     (ip->Ax=(Fun_Ax)(fun),ip->A_par=(void *)(fun_par),0)

Definition at line 140 of file iter.h.

◆ iter_Bx

#define iter_Bx (   ip,
  fun,
  fun_par 
)     (ip->Bx=(Fun_Ax)(fun),ip->B_par=(void *)(fun_par),0)

Definition at line 144 of file iter.h.

◆ ITER_EPS_DEF

#define ITER_EPS_DEF   1e-6

Definition at line 135 of file iter.h.

◆ ITER_FREE

#define ITER_FREE (   ip)    (iter_free(ip), (ip)=(ITER *)NULL)

Definition at line 148 of file iter.h.

◆ ITER_LIMIT_DEF

#define ITER_LIMIT_DEF   1000

Definition at line 134 of file iter.h.

Typedef Documentation

◆ Fun_Ax

typedef VEC*(* Fun_Ax) (void *, VEC *, VEC *)

Definition at line 49 of file iter.h.

◆ Fun_info

typedef void(* Fun_info) (ITER *, double, VEC *, VEC *)

Definition at line 117 of file iter.h.

◆ Fun_stp_crt

typedef int(* Fun_stp_crt) (ITER *, double, VEC *, VEC *)

Definition at line 124 of file iter.h.

◆ ITER

typedef struct Iter_data ITER

Function Documentation

◆ iter_arnoldi()

MAT* iter_arnoldi ( ITER ip,
Real h,
MAT Q,
MAT H 
)

Definition at line 445 of file iternsym.c.

◆ iter_arnoldi_iref()

MAT* iter_arnoldi_iref ( ITER ip,
Real h,
MAT Q,
MAT H 
)

Definition at line 348 of file iternsym.c.

◆ iter_cg()

VEC* iter_cg ( ITER ip)

Definition at line 95 of file itersym.c.

◆ iter_cg1()

VEC* iter_cg1 ( ITER ip)

Definition at line 501 of file itersym.c.

◆ iter_cgne()

VEC* iter_cgne ( ITER ip)

Definition at line 1150 of file iternsym.c.

◆ iter_cgs()

VEC* iter_cgs ( ITER ip,
VEC r0 
)

Definition at line 57 of file iternsym.c.

◆ iter_copy()

ITER* iter_copy ( ITER ip1,
ITER ip2 
)

Definition at line 225 of file iter0.c.

◆ iter_copy2()

ITER* iter_copy2 ( ITER ip1,
ITER ip2 
)

Definition at line 190 of file iter0.c.

◆ iter_dump()

void iter_dump ( FILE *  fp,
ITER ip 
)

Definition at line 159 of file iter0.c.

◆ iter_free()

int iter_free ( ITER ip)

Definition at line 118 of file iter0.c.

◆ iter_gen_nonsym()

SPMAT* iter_gen_nonsym ( int  m,
int  n,
int  nrow,
double  diag 
)

Definition at line 305 of file iter0.c.

◆ iter_gen_nonsym_posdef()

SPMAT* iter_gen_nonsym_posdef ( int  n,
int  nrow 
)

Definition at line 347 of file iter0.c.

◆ iter_gen_sym()

SPMAT* iter_gen_sym ( int  n,
int  nrow 
)

Definition at line 264 of file iter0.c.

◆ iter_get()

ITER* iter_get ( int  lenb,
int  lenx 
)

Definition at line 76 of file iter0.c.

◆ iter_gmres()

VEC* iter_gmres ( ITER ip)

Definition at line 599 of file iternsym.c.

◆ iter_lanczos()

void iter_lanczos ( ITER ip,
VEC a,
VEC b,
Real beta2,
MAT Q 
)

Definition at line 183 of file itersym.c.

◆ iter_lanczos2()

VEC* iter_lanczos2 ( ITER ip,
VEC evals,
VEC err_est 
)

Definition at line 378 of file itersym.c.

◆ iter_lsqr()

VEC* iter_lsqr ( ITER ip)

Definition at line 217 of file iternsym.c.

◆ iter_mgcr()

VEC* iter_mgcr ( ITER ip)

Definition at line 891 of file iternsym.c.

◆ iter_resize()

ITER* iter_resize ( ITER ip,
int  lenb,
int  lenx 
)

Definition at line 136 of file iter0.c.

◆ iter_sparnoldi()

MAT* iter_sparnoldi ( SPMAT A,
VEC x0,
int  k,
Real h,
MAT Q,
MAT H 
)

Definition at line 519 of file iternsym.c.

◆ iter_spcg()

VEC* iter_spcg ( SPMAT A,
SPMAT LLT,
VEC b,
double  eps,
VEC x,
int  limit,
int *  steps 
)

Definition at line 66 of file itersym.c.

◆ iter_spcgne()

VEC* iter_spcgne ( SPMAT A,
SPMAT B,
VEC b,
double  eps,
VEC x,
int  limit,
int *  steps 
)

Definition at line 1253 of file iternsym.c.

◆ iter_spcgs()

VEC* iter_spcgs ( SPMAT A,
SPMAT B,
VEC b,
VEC r0,
double  eps,
VEC x,
int  limit,
int *  steps 
)

Definition at line 174 of file iternsym.c.

◆ iter_spgmres()

VEC* iter_spgmres ( SPMAT A,
SPMAT B,
VEC b,
double  tol,
VEC x,
int  k,
int  limit,
int *  steps 
)

Definition at line 791 of file iternsym.c.

◆ iter_splanczos()

void iter_splanczos ( SPMAT A,
int  m,
VEC x0,
VEC a,
VEC b,
Real beta2,
MAT Q 
)

Definition at line 255 of file itersym.c.

◆ iter_splanczos2()

VEC* iter_splanczos2 ( SPMAT A,
int  m,
VEC x0,
VEC evals,
VEC err_est 
)

Definition at line 472 of file itersym.c.

◆ iter_splsqr()

VEC* iter_splsqr ( SPMAT A,
VEC b,
double  tol,
VEC x,
int  limit,
int *  steps 
)

Definition at line 314 of file iternsym.c.

◆ iter_spmgcr()

VEC* iter_spmgcr ( SPMAT A,
SPMAT B,
VEC b,
double  tol,
VEC x,
int  k,
int  limit,
int *  steps 
)

Definition at line 1110 of file iternsym.c.

◆ iter_std_info()

void iter_std_info ( ITER ip,
double  nres,
VEC res,
VEC Bres 
)

Definition at line 50 of file iter0.c.

◆ iter_std_stop_crit()

int iter_std_stop_crit ( ITER ip,
double  nres,
VEC res,
VEC Bres 
)

Definition at line 63 of file iter0.c.