Report Typos and Errors    
Semi-Lagrangian Library
Modular library for kinetic and gyrokinetic simulations of plasmas in fusion energy devices.
Derived types and interfaces | Functions/Subroutines
sll_m_gyroaverage_2d_polar Module Reference

Derived types and interfaces

type  sll_t_plan_gyroaverage_polar
 

Functions/Subroutines

type(sll_t_plan_gyroaverage_polar) function, pointer, public sll_f_new_plan_gyroaverage_polar_hermite (eta_min, eta_max, Nc, N_points, interp_degree, deriv_size)
 
type(sll_t_plan_gyroaverage_polar) function, pointer, public sll_f_new_plan_gyroaverage_polar_splines (eta_min, eta_max, Nc, N_points)
 
type(sll_t_plan_gyroaverage_polar) function, pointer, public sll_f_new_plan_gyroaverage_polar_pade (eta_min, eta_max, Nc)
 
subroutine, public sll_s_compute_gyroaverage_points_polar_hermite (gyro, f, rho)
 
subroutine, public sll_s_compute_gyroaverage_points_polar_hermite_c1 (gyro, f, rho)
 
subroutine, public sll_s_compute_gyroaverage_points_polar_with_invar_hermite_c1 (gyro, f, rho)
 
subroutine, public sll_s_pre_compute_gyroaverage_polar_hermite_c1 (gyro, rho)
 
subroutine assemble_csr_from_pre_compute (pre_compute_coeff, pre_compute_N, pre_compute_index, nb, Nc, ia, ja, a, num_rows, num_nz)
 
subroutine, public sll_s_compute_gyroaverage_pre_compute_polar_hermite_c1 (gyro, f)
 
subroutine, public sll_s_compute_gyroaverage_points_polar_spl (gyro, f, rho)
 
subroutine, public sll_s_compute_gyroaverage_points_polar_with_invar_spl (gyro, f, rho)
 
subroutine, public sll_s_pre_compute_gyroaverage_polar_spl (gyro, rho)
 
subroutine, public sll_s_compute_gyroaverage_pre_compute_polar_spl (gyro, f)
 
subroutine, public sll_s_pre_compute_gyroaverage_polar_spl_fft (gyro, rho)
 
subroutine, public sll_s_compute_gyroaverage_pre_compute_polar_spl_fft (gyro, f)
 
subroutine, public sll_s_compute_gyroaverage_pade_polar (gyro, f, rho)
 
subroutine, public sll_s_compute_gyroaverage_pade_high_order_polar (gyro, f, rho, order)
 
subroutine hermite_coef_nat_per (f, buf3d, N, d)
 
subroutine hermite_c1_coef_nat_per (f, buf3d, N, d)
 
subroutine compute_w_hermite (w, r, s)
 
subroutine localize_polar (x, eta_min, eta_max, ii, eta, N)
 
subroutine localize_per (i, x, xmin, xmax, N)
 
subroutine localize_nat (i, x, xmin, xmax, N)
 
subroutine interpolate_hermite (f, i, x, fval, N)
 
subroutine interpolate_hermite_c1 (f, i, x, fval, N)
 
subroutine contribution_hermite_c1 (x, val)
 
subroutine contribution_spl (x, val)
 
subroutine splcoefnat1d0 (lunat, N)
 
subroutine splcoefnat1d (p, lunat, N)
 
subroutine splcoefnat1d0old (dnat, lnat, N)
 
subroutine splcoefnatper2d (f, buf, dnatx, lnatx, dpery, lpery, mpery, Nx, Ny)
 
subroutine splnatper2d (f, xx, xmin, xmax, yy, ymin, ymax, fval, Nx, Ny)
 
subroutine splper1d (f, xx, xmin, xmax, fval, N)
 
subroutine splnat1d (f, xx, xmin, xmax, fval, N)
 
subroutine splcoefper1d0old (dper, lper, mper, N)
 
subroutine splcoefper1d0 (luper, N)
 
subroutine splcoefper1d (f, luper, N)
 
subroutine splcoefnat1dold (p, dnat, lnat, N)
 
subroutine splcoefper1dold (f, dper, lper, mper, N)
 
subroutine solve_tridiag (a, b, c, v, x, n)
 
subroutine, public sll_s_penta (n, e, a, b, c, f, d, x)
 

Function/Subroutine Documentation

◆ assemble_csr_from_pre_compute()

subroutine sll_m_gyroaverage_2d_polar::assemble_csr_from_pre_compute ( real(kind=f64), dimension(:, :), intent(in)  pre_compute_coeff,
integer(kind=i32), dimension(:), intent(in)  pre_compute_N,
integer(kind=i32), dimension(:, :), intent(in)  pre_compute_index,
integer(kind=i32), intent(in)  nb,
integer(kind=i32), dimension(2), intent(in)  Nc,
integer(kind=i32), dimension(:), pointer  ia,
integer(kind=i32), dimension(:), pointer  ja,
real(kind=f64), dimension(:), pointer  a,
integer(kind=i32), intent(out)  num_rows,
integer(kind=i32), intent(out)  num_nz 
)
private

Definition at line 388 of file sll_m_gyroaverage_2d_polar.F90.

◆ compute_w_hermite()

subroutine sll_m_gyroaverage_2d_polar::compute_w_hermite ( real(kind=f64), dimension(r:s), intent(out)  w,
integer(kind=i32), intent(in)  r,
integer(kind=i32), intent(in)  s 
)
private

Definition at line 1378 of file sll_m_gyroaverage_2d_polar.F90.

Here is the caller graph for this function:

◆ contribution_hermite_c1()

subroutine sll_m_gyroaverage_2d_polar::contribution_hermite_c1 ( real(kind=f64), dimension(0:1), intent(in)  x,
real(kind=f64), dimension(4, 0:1, 0:1), intent(out)  val 
)
private

Definition at line 1599 of file sll_m_gyroaverage_2d_polar.F90.

Here is the caller graph for this function:

◆ contribution_spl()

subroutine sll_m_gyroaverage_2d_polar::contribution_spl ( real(kind=f64), dimension(0:1), intent(in)  x,
real(kind=f64), dimension(-1:2, -1:2), intent(out)  val 
)
private

Definition at line 1636 of file sll_m_gyroaverage_2d_polar.F90.

Here is the caller graph for this function:

◆ hermite_c1_coef_nat_per()

subroutine sll_m_gyroaverage_2d_polar::hermite_c1_coef_nat_per ( real(kind=f64), dimension(n(1) + 1, n(2)), intent(in)  f,
real(kind=f64), dimension(4, n(1) + 1, n(2) + 1), intent(out)  buf3d,
integer, dimension(2), intent(in)  N,
integer, dimension(2), intent(in)  d 
)
private

Definition at line 1315 of file sll_m_gyroaverage_2d_polar.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ hermite_coef_nat_per()

subroutine sll_m_gyroaverage_2d_polar::hermite_coef_nat_per ( real(kind=f64), dimension(n(1) + 1, n(2)), intent(in)  f,
real(kind=f64), dimension(9, n(1) + 1, n(2) + 1), intent(out)  buf3d,
integer(kind=i32), dimension(2), intent(in)  N,
integer(kind=i32), dimension(2), intent(in)  d 
)
private

Definition at line 1218 of file sll_m_gyroaverage_2d_polar.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ interpolate_hermite()

subroutine sll_m_gyroaverage_2d_polar::interpolate_hermite ( real(kind=f64), dimension(0:8, 0:n(1), 0:n(2))  f,
integer(kind=i32), dimension(2), intent(in)  i,
real(kind=f64), dimension(2), intent(in)  x,
real(kind=f64), intent(out)  fval,
integer(kind=i32), dimension(2), intent(in)  N 
)
private

Definition at line 1502 of file sll_m_gyroaverage_2d_polar.F90.

Here is the caller graph for this function:

◆ interpolate_hermite_c1()

subroutine sll_m_gyroaverage_2d_polar::interpolate_hermite_c1 ( real(kind=f64), dimension(0:3, 0:n(1), 0:n(2))  f,
integer(kind=i32), dimension(2), intent(in)  i,
real(kind=f64), dimension(2), intent(in)  x,
real(kind=f64), intent(out)  fval,
integer(kind=i32), dimension(2), intent(in)  N 
)
private

Definition at line 1551 of file sll_m_gyroaverage_2d_polar.F90.

Here is the caller graph for this function:

◆ localize_nat()

subroutine sll_m_gyroaverage_2d_polar::localize_nat ( integer(kind=i32), intent(out)  i,
real(kind=f64), intent(inout)  x,
real(kind=f64), intent(in)  xmin,
real(kind=f64), intent(in)  xmax,
integer(kind=i32), intent(in)  N 
)
private

Definition at line 1481 of file sll_m_gyroaverage_2d_polar.F90.

Here is the caller graph for this function:

◆ localize_per()

subroutine sll_m_gyroaverage_2d_polar::localize_per ( integer(kind=i32), intent(out)  i,
real(kind=f64), intent(inout)  x,
real(kind=f64), intent(in)  xmin,
real(kind=f64), intent(in)  xmax,
integer(kind=i32), intent(in)  N 
)
private

Definition at line 1465 of file sll_m_gyroaverage_2d_polar.F90.

Here is the caller graph for this function:

◆ localize_polar()

subroutine sll_m_gyroaverage_2d_polar::localize_polar ( real(kind=f64), dimension(2), intent(in)  x,
real(kind=f64), dimension(2), intent(in)  eta_min,
real(kind=f64), dimension(2), intent(in)  eta_max,
integer(kind=i32), dimension(2), intent(out)  ii,
real(kind=f64), dimension(2), intent(out)  eta,
integer(kind=i32), dimension(2), intent(in)  N 
)
private

Definition at line 1453 of file sll_m_gyroaverage_2d_polar.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sll_f_new_plan_gyroaverage_polar_hermite()

type(sll_t_plan_gyroaverage_polar) function, pointer, public sll_m_gyroaverage_2d_polar::sll_f_new_plan_gyroaverage_polar_hermite ( real(kind=f64), dimension(2), intent(in)  eta_min,
real(kind=f64), dimension(2), intent(in)  eta_max,
integer(kind=i32), dimension(2), intent(in)  Nc,
integer(kind=i32), intent(in)  N_points,
integer(kind=i32), dimension(2), intent(in)  interp_degree,
integer(kind=i32), intent(in)  deriv_size 
)

Definition at line 82 of file sll_m_gyroaverage_2d_polar.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sll_f_new_plan_gyroaverage_polar_pade()

type(sll_t_plan_gyroaverage_polar) function, pointer, public sll_m_gyroaverage_2d_polar::sll_f_new_plan_gyroaverage_polar_pade ( real(kind=f64), dimension(2), intent(in)  eta_min,
real(kind=f64), dimension(2), intent(in)  eta_max,
integer(kind=i32), dimension(2), intent(in)  Nc 
)

Definition at line 134 of file sll_m_gyroaverage_2d_polar.F90.

Here is the caller graph for this function:

◆ sll_f_new_plan_gyroaverage_polar_splines()

type(sll_t_plan_gyroaverage_polar) function, pointer, public sll_m_gyroaverage_2d_polar::sll_f_new_plan_gyroaverage_polar_splines ( real(kind=f64), dimension(2), intent(in)  eta_min,
real(kind=f64), dimension(2), intent(in)  eta_max,
integer(kind=i32), dimension(2), intent(in)  Nc,
integer(kind=i32), intent(in)  N_points 
)

Definition at line 110 of file sll_m_gyroaverage_2d_polar.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sll_s_compute_gyroaverage_pade_high_order_polar()

subroutine, public sll_m_gyroaverage_2d_polar::sll_s_compute_gyroaverage_pade_high_order_polar ( type(sll_t_plan_gyroaverage_polar gyro,
real(kind=f64), dimension(:, :), intent(inout)  f,
real(kind=f64), intent(in)  rho,
integer(kind=i32), dimension(2), intent(in)  order 
)

Definition at line 1064 of file sll_m_gyroaverage_2d_polar.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sll_s_compute_gyroaverage_pade_polar()

subroutine, public sll_m_gyroaverage_2d_polar::sll_s_compute_gyroaverage_pade_polar ( type(sll_t_plan_gyroaverage_polar gyro,
real(kind=f64), dimension(:, :), intent(inout)  f,
real(kind=f64), intent(in)  rho 
)

Definition at line 1000 of file sll_m_gyroaverage_2d_polar.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sll_s_compute_gyroaverage_points_polar_hermite()

subroutine, public sll_m_gyroaverage_2d_polar::sll_s_compute_gyroaverage_points_polar_hermite ( type(sll_t_plan_gyroaverage_polar gyro,
real(kind=f64), dimension(:, :), intent(inout)  f,
real(kind=f64), intent(in)  rho 
)

Definition at line 152 of file sll_m_gyroaverage_2d_polar.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sll_s_compute_gyroaverage_points_polar_hermite_c1()

subroutine, public sll_m_gyroaverage_2d_polar::sll_s_compute_gyroaverage_points_polar_hermite_c1 ( type(sll_t_plan_gyroaverage_polar gyro,
real(kind=f64), dimension(:, :), intent(inout)  f,
real(kind=f64), intent(in)  rho 
)

Definition at line 189 of file sll_m_gyroaverage_2d_polar.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sll_s_compute_gyroaverage_points_polar_spl()

subroutine, public sll_m_gyroaverage_2d_polar::sll_s_compute_gyroaverage_points_polar_spl ( type(sll_t_plan_gyroaverage_polar gyro,
real(kind=f64), dimension(:, :), intent(inout)  f,
real(kind=f64), intent(in)  rho 
)

Definition at line 504 of file sll_m_gyroaverage_2d_polar.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sll_s_compute_gyroaverage_points_polar_with_invar_hermite_c1()

subroutine, public sll_m_gyroaverage_2d_polar::sll_s_compute_gyroaverage_points_polar_with_invar_hermite_c1 ( type(sll_t_plan_gyroaverage_polar gyro,
real(kind=f64), dimension(:, :), intent(inout)  f,
real(kind=f64), intent(in)  rho 
)

Definition at line 232 of file sll_m_gyroaverage_2d_polar.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sll_s_compute_gyroaverage_points_polar_with_invar_spl()

subroutine, public sll_m_gyroaverage_2d_polar::sll_s_compute_gyroaverage_points_polar_with_invar_spl ( type(sll_t_plan_gyroaverage_polar gyro,
real(kind=f64), dimension(:, :), intent(inout)  f,
real(kind=f64), intent(in)  rho 
)

Definition at line 585 of file sll_m_gyroaverage_2d_polar.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sll_s_compute_gyroaverage_pre_compute_polar_hermite_c1()

subroutine, public sll_m_gyroaverage_2d_polar::sll_s_compute_gyroaverage_pre_compute_polar_hermite_c1 ( type(sll_t_plan_gyroaverage_polar gyro,
real(kind=f64), dimension(:, :), intent(inout)  f 
)

Definition at line 461 of file sll_m_gyroaverage_2d_polar.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sll_s_compute_gyroaverage_pre_compute_polar_spl()

subroutine, public sll_m_gyroaverage_2d_polar::sll_s_compute_gyroaverage_pre_compute_polar_spl ( type(sll_t_plan_gyroaverage_polar gyro,
real(kind=f64), dimension(:, :), intent(inout)  f 
)

Definition at line 748 of file sll_m_gyroaverage_2d_polar.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sll_s_compute_gyroaverage_pre_compute_polar_spl_fft()

subroutine, public sll_m_gyroaverage_2d_polar::sll_s_compute_gyroaverage_pre_compute_polar_spl_fft ( type(sll_t_plan_gyroaverage_polar gyro,
real(kind=f64), dimension(:, :), intent(inout)  f 
)

Definition at line 913 of file sll_m_gyroaverage_2d_polar.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sll_s_penta()

subroutine, public sll_m_gyroaverage_2d_polar::sll_s_penta ( intent(in)  n,
dimension(n)  e,
dimension(n)  a,
dimension(n)  b,
dimension(n)  c,
dimension(n)  f,
dimension(n)  d,
dimension(n), intent(out)  x 
)

Definition at line 1999 of file sll_m_gyroaverage_2d_polar.F90.

Here is the caller graph for this function:

◆ sll_s_pre_compute_gyroaverage_polar_hermite_c1()

subroutine, public sll_m_gyroaverage_2d_polar::sll_s_pre_compute_gyroaverage_polar_hermite_c1 ( type(sll_t_plan_gyroaverage_polar gyro,
real(kind=f64), intent(in)  rho 
)

Definition at line 278 of file sll_m_gyroaverage_2d_polar.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sll_s_pre_compute_gyroaverage_polar_spl()

subroutine, public sll_m_gyroaverage_2d_polar::sll_s_pre_compute_gyroaverage_polar_spl ( type(sll_t_plan_gyroaverage_polar gyro,
real(kind=f64), intent(in)  rho 
)

Definition at line 662 of file sll_m_gyroaverage_2d_polar.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sll_s_pre_compute_gyroaverage_polar_spl_fft()

subroutine, public sll_m_gyroaverage_2d_polar::sll_s_pre_compute_gyroaverage_polar_spl_fft ( type(sll_t_plan_gyroaverage_polar gyro,
real(kind=f64), intent(in)  rho 
)

Definition at line 824 of file sll_m_gyroaverage_2d_polar.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ solve_tridiag()

subroutine sll_m_gyroaverage_2d_polar::solve_tridiag ( intent(in)  a,
intent(in)  b,
intent(in)  c,
intent(in)  v,
intent(out)  x,
intent(in)  n 
)
private

Definition at line 1963 of file sll_m_gyroaverage_2d_polar.F90.

Here is the caller graph for this function:

◆ splcoefnat1d()

subroutine sll_m_gyroaverage_2d_polar::splcoefnat1d ( real(kind=f64), dimension(0:n + 2), intent(inout)  p,
real(kind=f64), dimension(0:1, 0:n + 2), intent(in)  lunat,
integer(kind=i32), intent(in)  N 
)
private

Definition at line 1691 of file sll_m_gyroaverage_2d_polar.F90.

Here is the caller graph for this function:

◆ splcoefnat1d0()

subroutine sll_m_gyroaverage_2d_polar::splcoefnat1d0 ( real(kind=f64), dimension(0:1, 0:n + 2), intent(out)  lunat,
integer(kind=i32), intent(in)  N 
)
private

Definition at line 1671 of file sll_m_gyroaverage_2d_polar.F90.

Here is the caller graph for this function:

◆ splcoefnat1d0old()

subroutine sll_m_gyroaverage_2d_polar::splcoefnat1d0old ( real(kind=f64), dimension(0:n + 2), intent(inout)  dnat,
real(kind=f64), dimension(0:n + 2), intent(inout)  lnat,
integer(kind=i32), intent(in)  N 
)
private

Definition at line 1714 of file sll_m_gyroaverage_2d_polar.F90.

Here is the caller graph for this function:

◆ splcoefnat1dold()

subroutine sll_m_gyroaverage_2d_polar::splcoefnat1dold ( real(kind=f64), dimension(0:n + 2), intent(inout)  p,
real(kind=f64), dimension(0:n + 2), intent(in)  dnat,
real(kind=f64), dimension(0:n + 2), intent(in)  lnat,
integer(kind=i32), intent(in)  N 
)
private

Definition at line 1921 of file sll_m_gyroaverage_2d_polar.F90.

Here is the caller graph for this function:

◆ splcoefnatper2d()

subroutine sll_m_gyroaverage_2d_polar::splcoefnatper2d ( real(kind=f64), dimension(:, :), pointer  f,
real(kind=f64), dimension(:), pointer  buf,
real(kind=f64), dimension(:), pointer  dnatx,
real(kind=f64), dimension(:), pointer  lnatx,
real(kind=f64), dimension(:), pointer  dpery,
real(kind=f64), dimension(:), pointer  lpery,
real(kind=f64), dimension(:), pointer  mpery,
integer(kind=i32), intent(in)  Nx,
integer(kind=i32), intent(in)  Ny 
)
private

Definition at line 1734 of file sll_m_gyroaverage_2d_polar.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ splcoefper1d()

subroutine sll_m_gyroaverage_2d_polar::splcoefper1d ( real(kind=f64), dimension(0:n - 1), intent(inout)  f,
real(kind=f64), dimension(0:3*n - 1), intent(in)  luper,
integer(kind=i32), intent(in)  N 
)
private

Definition at line 1901 of file sll_m_gyroaverage_2d_polar.F90.

Here is the caller graph for this function:

◆ splcoefper1d0()

subroutine sll_m_gyroaverage_2d_polar::splcoefper1d0 ( real(kind=f64), dimension(0:3*n - 1), intent(out)  luper,
integer(kind=i32), intent(in)  N 
)
private

Definition at line 1882 of file sll_m_gyroaverage_2d_polar.F90.

Here is the caller graph for this function:

◆ splcoefper1d0old()

subroutine sll_m_gyroaverage_2d_polar::splcoefper1d0old ( real(kind=f64), dimension(0:n - 1), intent(out)  dper,
real(kind=f64), dimension(0:n - 1), intent(out)  lper,
real(kind=f64), dimension(0:n - 1), intent(out)  mper,
integer(kind=i32), intent(in)  N 
)
private

Definition at line 1864 of file sll_m_gyroaverage_2d_polar.F90.

Here is the caller graph for this function:

◆ splcoefper1dold()

subroutine sll_m_gyroaverage_2d_polar::splcoefper1dold ( real(kind=f64), dimension(0:n - 1), intent(inout)  f,
real(kind=f64), dimension(0:n - 1), intent(in)  dper,
real(kind=f64), dimension(0:n - 1), intent(in)  lper,
real(kind=f64), dimension(0:n - 1), intent(in)  mper,
integer(kind=i32), intent(in)  N 
)
private

Definition at line 1944 of file sll_m_gyroaverage_2d_polar.F90.

Here is the caller graph for this function:

◆ splnat1d()

subroutine sll_m_gyroaverage_2d_polar::splnat1d ( real(kind=f64), dimension(0:n + 2), intent(inout)  f,
real(kind=f64), intent(in)  xx,
real(kind=f64), intent(in)  xmin,
real(kind=f64), intent(in)  xmax,
real(kind=f64), intent(out)  fval,
integer(kind=i32), intent(in)  N 
)
private

Definition at line 1837 of file sll_m_gyroaverage_2d_polar.F90.

Here is the caller graph for this function:

◆ splnatper2d()

subroutine sll_m_gyroaverage_2d_polar::splnatper2d ( real(kind=f64), dimension(:, :), pointer  f,
real(kind=f64), intent(in)  xx,
real(kind=f64), intent(in)  xmin,
real(kind=f64), intent(in)  xmax,
real(kind=f64), intent(in)  yy,
real(kind=f64), intent(in)  ymin,
real(kind=f64), intent(in)  ymax,
real(kind=f64), intent(out)  fval,
integer(kind=i32), intent(in)  Nx,
integer(kind=i32), intent(in)  Ny 
)
private

Definition at line 1754 of file sll_m_gyroaverage_2d_polar.F90.

Here is the caller graph for this function:

◆ splper1d()

subroutine sll_m_gyroaverage_2d_polar::splper1d ( real(kind=f64), dimension(0:n - 1), intent(inout)  f,
real(kind=f64), intent(in)  xx,
real(kind=f64), intent(in)  xmin,
real(kind=f64), intent(in)  xmax,
real(kind=f64), intent(out)  fval,
integer(kind=i32), intent(in)  N 
)
private

Definition at line 1815 of file sll_m_gyroaverage_2d_polar.F90.

Here is the caller graph for this function:
    Report Typos and Errors