Octopus
linear_solver_oct_m Module Reference

Data Types

type  linear_solver_args_t
 
type  linear_solver_t
 

Functions/Subroutines

subroutine, public linear_solver_init (this, namespace, gr, states_are_real, mc, space)
 
subroutine, public linear_solver_end (this)
 
integer function, public linear_solver_ops_per_iter (this)
 
subroutine, public linear_solver_obsolete_variables (namespace, old_prefix, new_prefix)
 
subroutine, public dlinear_solver_solve_hxey (this, namespace, hm, mesh, st, ist, ik, x, y, shift, tol, residue, iter_used, occ_response)
 This subroutine calculates the solution of (H + shift) x = y Typically shift = - eigenvalue + omega. More...
 
subroutine, public dlinear_solver_solve_hxey_batch (this, namespace, hm, mesh, st, xb, yb, shift, tol, residue, iter_used, occ_response, use_initial_guess)
 
subroutine dlinear_solver_cg (ls, namespace, hm, mesh, st, ist, ik, x, y, shift, tol, residue, iter_used)
 Conjugate gradients. More...
 
subroutine dlinear_solver_idrs (ls, namespace, mesh, st, x, y, tol, residue, iter_used)
 IDRS This is the "Induced Dimension Reduction", IDR(s) (for s=4). IDR(s) is a robust and efficient short recurrence Krylov subspace method for solving large nonsymmetric systems of linear equations. It is described in [Peter Sonneveld and Martin B. van Gijzen, SIAM J. Sci. Comput. 31, 1035 (2008)]. We have adapted the code released by M. B. van Gizjen [http: More...
 
subroutine dlinear_solver_bicgstab (ls, namespace, hm, mesh, st, ist, ik, x, y, shift, tol, residue, iter_used, occ_response)
 BICONJUGATE GRADIENTS STABILIZED see http: More...
 
subroutine dlinear_solver_multigrid (ls, namespace, hm, mesh, st, ist, ik, x, y, shift, tol, residue, iter_used)
 
subroutine dlinear_solver_operator (hm, namespace, mesh, st, ist, ik, shift, x, hx)
 This routine applies the operator hx = [H (+ Q) + shift] x. More...
 
subroutine dlinear_solver_operator_batch (hm, namespace, mesh, st, shift, xb, hxb)
 
subroutine dlinear_solver_operator_na (x, hx, userdata)
 applies linear_solver_operator with other arguments implicit as global variables More...
 
subroutine dlinear_solver_operator_t_na (x, hx, userdata)
 applies transpose of linear_solver_operator with other arguments implicit as global variables \( (H - shift)^T = H* - shift = (H - shift*)* \) More...
 
subroutine dlinear_solver_operator_sym_na (x, hx, userdata)
 applies linear_solver_operator in symmetrized form: \( A^T A \) More...
 
subroutine dlinear_solver_preconditioner (x, hx, userdata)
 
subroutine dlinear_solver_sos (hm, namespace, mesh, st, ist, ik, x, y, shift, residue, iter_used)
 
subroutine dlinear_solver_qmr_dotp (this, namespace, hm, mesh, st, xb, bb, shift, iter_used, residue, threshold, use_initial_guess)
 for complex symmetric matrices W Chen and B Poirier, J Comput Phys 219, 198-209 (2006) More...
 
real(real64) function, dimension(n) dsingledimarray (n, a)
 
real(real64) function, dimension(np, dim) ddoubledimarray (np, dim, a)
 
real(real64) function ddotproduct (a, b)
 
real(real64) function, dimension(size(v, 1), size(v, 2)) dmatrixvector (v)
 
real(real64) function, dimension(size(v, 1), size(v, 2)) dpreconditioner (v)
 
subroutine, public zlinear_solver_solve_hxey (this, namespace, hm, mesh, st, ist, ik, x, y, shift, tol, residue, iter_used, occ_response)
 This subroutine calculates the solution of (H + shift) x = y Typically shift = - eigenvalue + omega. More...
 
subroutine, public zlinear_solver_solve_hxey_batch (this, namespace, hm, mesh, st, xb, yb, shift, tol, residue, iter_used, occ_response, use_initial_guess)
 
subroutine zlinear_solver_cg (ls, namespace, hm, mesh, st, ist, ik, x, y, shift, tol, residue, iter_used)
 Conjugate gradients. More...
 
subroutine zlinear_solver_idrs (ls, namespace, mesh, st, x, y, tol, residue, iter_used)
 IDRS This is the "Induced Dimension Reduction", IDR(s) (for s=4). IDR(s) is a robust and efficient short recurrence Krylov subspace method for solving large nonsymmetric systems of linear equations. It is described in [Peter Sonneveld and Martin B. van Gijzen, SIAM J. Sci. Comput. 31, 1035 (2008)]. We have adapted the code released by M. B. van Gizjen [http: More...
 
subroutine zlinear_solver_bicgstab (ls, namespace, hm, mesh, st, ist, ik, x, y, shift, tol, residue, iter_used, occ_response)
 BICONJUGATE GRADIENTS STABILIZED see http: More...
 
subroutine zlinear_solver_multigrid (ls, namespace, hm, mesh, st, ist, ik, x, y, shift, tol, residue, iter_used)
 
subroutine zlinear_solver_operator (hm, namespace, mesh, st, ist, ik, shift, x, hx)
 This routine applies the operator hx = [H (+ Q) + shift] x. More...
 
subroutine zlinear_solver_operator_batch (hm, namespace, mesh, st, shift, xb, hxb)
 
subroutine zlinear_solver_operator_na (x, hx, userdata)
 applies linear_solver_operator with other arguments implicit as global variables More...
 
subroutine zlinear_solver_operator_t_na (x, hx, userdata)
 applies transpose of linear_solver_operator with other arguments implicit as global variables \( (H - shift)^T = H* - shift = (H - shift*)* \) More...
 
subroutine zlinear_solver_operator_sym_na (x, hx, userdata)
 applies linear_solver_operator in symmetrized form: \( A^T A \) More...
 
subroutine zlinear_solver_preconditioner (x, hx, userdata)
 
subroutine zlinear_solver_sos (hm, namespace, mesh, st, ist, ik, x, y, shift, residue, iter_used)
 
subroutine zlinear_solver_qmr_dotp (this, namespace, hm, mesh, st, xb, bb, shift, iter_used, residue, threshold, use_initial_guess)
 for complex symmetric matrices W Chen and B Poirier, J Comput Phys 219, 198-209 (2006) More...
 
complex(real64) function, dimension(n) zsingledimarray (n, a)
 
complex(real64) function, dimension(np, dim) zdoubledimarray (np, dim, a)
 
complex(real64) function zdotproduct (a, b)
 
complex(real64) function, dimension(size(v, 1), size(v, 2)) zmatrixvector (v)
 
complex(real64) function, dimension(size(v, 1), size(v, 2)) zpreconditioner (v)
 

Variables

type(linear_solver_args_targs
 

Function/Subroutine Documentation

◆ linear_solver_init()

subroutine, public linear_solver_oct_m::linear_solver_init ( type(linear_solver_t), intent(out)  this,
type(namespace_t), intent(in)  namespace,
type(grid_t), intent(inout)  gr,
logical, intent(in)  states_are_real,
type(multicomm_t), intent(in)  mc,
class(space_t), intent(in)  space 
)
Parameters
[in]states_are_realfor choosing solver

Definition at line 186 of file linear_solver.F90.

◆ linear_solver_end()

subroutine, public linear_solver_oct_m::linear_solver_end ( type(linear_solver_t), intent(inout)  this)

Definition at line 323 of file linear_solver.F90.

◆ linear_solver_ops_per_iter()

integer function, public linear_solver_oct_m::linear_solver_ops_per_iter ( type(linear_solver_t), intent(inout)  this)

Definition at line 337 of file linear_solver.F90.

◆ linear_solver_obsolete_variables()

subroutine, public linear_solver_oct_m::linear_solver_obsolete_variables ( type(namespace_t), intent(in)  namespace,
character(len=*), intent(in)  old_prefix,
character(len=*), intent(in)  new_prefix 
)

Definition at line 351 of file linear_solver.F90.

◆ dlinear_solver_solve_hxey()

subroutine, public linear_solver_oct_m::dlinear_solver_solve_hxey ( type(linear_solver_t), intent(inout), target  this,
type(namespace_t), intent(in), target  namespace,
type(hamiltonian_elec_t), intent(in), target  hm,
class(mesh_t), intent(in), target  mesh,
type(states_elec_t), intent(in), target  st,
integer, intent(in)  ist,
integer, intent(in)  ik,
real(real64), dimension(:,:), intent(inout), contiguous  x,
real(real64), dimension(:,:), intent(in), contiguous  y,
real(real64), intent(in)  shift,
real(real64), intent(in)  tol,
real(real64), intent(out)  residue,
integer, intent(out)  iter_used,
logical, intent(in), optional  occ_response 
)

This subroutine calculates the solution of (H + shift) x = y Typically shift = - eigenvalue + omega.

Parameters
[in,out]xx(meshnp_part, ddim)
[in]yy(meshnp, ddim)

Definition at line 436 of file linear_solver.F90.

◆ dlinear_solver_solve_hxey_batch()

subroutine, public linear_solver_oct_m::dlinear_solver_solve_hxey_batch ( type(linear_solver_t), intent(inout), target  this,
type(namespace_t), intent(in)  namespace,
type(hamiltonian_elec_t), intent(in), target  hm,
class(mesh_t), intent(in), target  mesh,
type(states_elec_t), intent(in), target  st,
type(wfs_elec_t), intent(inout)  xb,
type(wfs_elec_t), intent(inout)  yb,
real(real64), dimension(:), intent(in), contiguous  shift,
real(real64), intent(in)  tol,
real(real64), dimension(:), intent(out), contiguous  residue,
integer, dimension(:), intent(out)  iter_used,
logical, intent(in), optional  occ_response,
logical, intent(in), optional  use_initial_guess 
)

Definition at line 527 of file linear_solver.F90.

◆ dlinear_solver_cg()

subroutine linear_solver_oct_m::dlinear_solver_cg ( type(linear_solver_t), intent(inout)  ls,
type(namespace_t), intent(in)  namespace,
type(hamiltonian_elec_t), intent(in)  hm,
class(mesh_t), intent(in)  mesh,
type(states_elec_t), intent(in)  st,
integer, intent(in)  ist,
integer, intent(in)  ik,
real(real64), dimension(:,:), intent(inout), contiguous  x,
real(real64), dimension(:,:), intent(in), contiguous  y,
real(real64), intent(in)  shift,
real(real64), intent(in)  tol,
real(real64), intent(out)  residue,
integer, intent(out)  iter_used 
)
private

Conjugate gradients.

Parameters
[in,out]xx(meshnp, stddim)
[in]yy(meshnp, stddim)

Definition at line 578 of file linear_solver.F90.

◆ dlinear_solver_idrs()

subroutine linear_solver_oct_m::dlinear_solver_idrs ( type(linear_solver_t), intent(inout)  ls,
type(namespace_t), intent(in)  namespace,
class(mesh_t), intent(in)  mesh,
type(states_elec_t), intent(in)  st,
real(real64), dimension(:,:), intent(inout), contiguous  x,
real(real64), dimension(:,:), intent(in), contiguous  y,
real(real64), intent(in)  tol,
real(real64), intent(out)  residue,
integer, intent(out)  iter_used 
)
private

IDRS This is the "Induced Dimension Reduction", IDR(s) (for s=4). IDR(s) is a robust and efficient short recurrence Krylov subspace method for solving large nonsymmetric systems of linear equations. It is described in [Peter Sonneveld and Martin B. van Gijzen, SIAM J. Sci. Comput. 31, 1035 (2008)]. We have adapted the code released by M. B. van Gizjen [http:

Parameters
[in,out]xx(meshnp, stddim)
[in]yy(meshnp, stddim)

Definition at line 666 of file linear_solver.F90.

◆ dlinear_solver_bicgstab()

subroutine linear_solver_oct_m::dlinear_solver_bicgstab ( type(linear_solver_t), intent(inout)  ls,
type(namespace_t), intent(in)  namespace,
type(hamiltonian_elec_t), intent(in)  hm,
class(mesh_t), intent(in)  mesh,
type(states_elec_t), intent(in)  st,
integer, intent(in)  ist,
integer, intent(in)  ik,
real(real64), dimension(:,:), intent(inout), contiguous  x,
real(real64), dimension(:,:), intent(in), contiguous  y,
real(real64), intent(in)  shift,
real(real64), intent(in)  tol,
real(real64), intent(out)  residue,
integer, intent(out)  iter_used,
logical, intent(in)  occ_response 
)
private

BICONJUGATE GRADIENTS STABILIZED see http:

Parameters
[in,out]xx(meshnp, stddim)
[in]yy(meshnp, stddim)

Definition at line 712 of file linear_solver.F90.

◆ dlinear_solver_multigrid()

subroutine linear_solver_oct_m::dlinear_solver_multigrid ( type(linear_solver_t), intent(inout)  ls,
type(namespace_t), intent(in)  namespace,
type(hamiltonian_elec_t), intent(in)  hm,
class(mesh_t), intent(in)  mesh,
type(states_elec_t), intent(in)  st,
integer, intent(in)  ist,
integer, intent(in)  ik,
real(real64), dimension(:,:), intent(inout), contiguous  x,
real(real64), dimension(:,:), intent(in), contiguous  y,
real(real64), intent(in)  shift,
real(real64), intent(in)  tol,
real(real64), intent(out)  residue,
integer, intent(out)  iter_used 
)
private

Definition at line 864 of file linear_solver.F90.

◆ dlinear_solver_operator()

subroutine linear_solver_oct_m::dlinear_solver_operator ( type(hamiltonian_elec_t), intent(in)  hm,
type(namespace_t), intent(in)  namespace,
class(mesh_t), intent(in)  mesh,
type(states_elec_t), intent(in)  st,
integer, intent(in)  ist,
integer, intent(in)  ik,
real(real64), intent(in)  shift,
real(real64), dimension(:,:), intent(inout), contiguous  x,
real(real64), dimension(:,:), intent(out), contiguous  hx 
)
private

This routine applies the operator hx = [H (+ Q) + shift] x.

Parameters
[in,out]xx(meshnp_part, stddim)
[out]hxHx(meshnp, stddim)

Definition at line 960 of file linear_solver.F90.

◆ dlinear_solver_operator_batch()

subroutine linear_solver_oct_m::dlinear_solver_operator_batch ( type(hamiltonian_elec_t), intent(in)  hm,
type(namespace_t), intent(in)  namespace,
class(mesh_t), intent(in)  mesh,
type(states_elec_t), intent(in)  st,
real(real64), dimension(:), intent(in)  shift,
type(wfs_elec_t), intent(inout)  xb,
type(wfs_elec_t), intent(inout)  hxb 
)
private

Definition at line 1010 of file linear_solver.F90.

◆ dlinear_solver_operator_na()

subroutine linear_solver_oct_m::dlinear_solver_operator_na ( real(real64), dimension(:), intent(in), contiguous  x,
real(real64), dimension(:), intent(out), contiguous  hx,
type(c_ptr), dimension(:), intent(in)  userdata 
)
private

applies linear_solver_operator with other arguments implicit as global variables

Parameters
[in]xx(meshnp, stddim)
[out]hxHx(meshnp, stddim)

Definition at line 1068 of file linear_solver.F90.

◆ dlinear_solver_operator_t_na()

subroutine linear_solver_oct_m::dlinear_solver_operator_t_na ( real(real64), dimension(:), intent(in), contiguous  x,
real(real64), dimension(:), intent(out), contiguous  hx,
type(c_ptr), dimension(:), intent(in)  userdata 
)
private

applies transpose of linear_solver_operator with other arguments implicit as global variables \( (H - shift)^T = H* - shift = (H - shift*)* \)

Definition at line 1092 of file linear_solver.F90.

◆ dlinear_solver_operator_sym_na()

subroutine linear_solver_oct_m::dlinear_solver_operator_sym_na ( real(real64), dimension(:), intent(in), contiguous  x,
real(real64), dimension(:), intent(out), contiguous  hx,
type(c_ptr), dimension(:), intent(in)  userdata 
)
private

applies linear_solver_operator in symmetrized form: \( A^T A \)

Parameters
[in]xx(meshnp, stddim)
[out]hxHx(meshnp, stddim)

Definition at line 1115 of file linear_solver.F90.

◆ dlinear_solver_preconditioner()

subroutine linear_solver_oct_m::dlinear_solver_preconditioner ( real(real64), dimension(:), intent(in), contiguous  x,
real(real64), dimension(:), intent(out), contiguous  hx,
type(c_ptr), dimension(:), intent(in)  userdata 
)
private
Parameters
[in]xx(meshnp, stddim)
[out]hxHx(meshnp, stddim)

Definition at line 1140 of file linear_solver.F90.

◆ dlinear_solver_sos()

subroutine linear_solver_oct_m::dlinear_solver_sos ( type(hamiltonian_elec_t), intent(in)  hm,
type(namespace_t), intent(in)  namespace,
class(mesh_t), intent(in)  mesh,
type(states_elec_t), intent(in)  st,
integer, intent(in)  ist,
integer, intent(in)  ik,
real(real64), dimension(:,:), intent(inout), contiguous  x,
real(real64), dimension(:,:), intent(in), contiguous  y,
real(real64), intent(in)  shift,
real(real64), intent(out)  residue,
integer, intent(out)  iter_used 
)
private
Parameters
[in,out]xx(meshnp, stddim)
[in]yy(meshnp, stddim)

Definition at line 1164 of file linear_solver.F90.

◆ dlinear_solver_qmr_dotp()

subroutine linear_solver_oct_m::dlinear_solver_qmr_dotp ( type(linear_solver_t), intent(inout)  this,
type(namespace_t), intent(in)  namespace,
type(hamiltonian_elec_t), intent(in)  hm,
class(mesh_t), intent(in)  mesh,
type(states_elec_t), intent(in)  st,
type(wfs_elec_t), intent(inout)  xb,
type(wfs_elec_t), intent(in)  bb,
real(real64), dimension(:), intent(in)  shift,
integer, dimension(:), intent(out)  iter_used,
real(real64), dimension(:), intent(out), contiguous  residue,
real(real64), intent(in)  threshold,
logical, intent(in), optional  use_initial_guess 
)
private

for complex symmetric matrices W Chen and B Poirier, J Comput Phys 219, 198-209 (2006)

Parameters
[out]residuethe residue = abs(Ax-b)
[in]thresholdconvergence threshold

Definition at line 1221 of file linear_solver.F90.

◆ dsingledimarray()

real(real64) function, dimension(n) linear_solver_oct_m::dsingledimarray ( integer, intent(in)  n,
real(real64), dimension(:, :), intent(in)  a 
)
private

Definition at line 1586 of file linear_solver.F90.

◆ ddoubledimarray()

real(real64) function, dimension(np, dim) linear_solver_oct_m::ddoubledimarray ( integer, intent(in)  np,
integer, intent(in)  dim,
real(real64), dimension(:), intent(in)  a 
)
private

Definition at line 1598 of file linear_solver.F90.

◆ ddotproduct()

real(real64) function linear_solver_oct_m::ddotproduct ( real(real64), dimension(:), intent(in)  a,
real(real64), dimension(:), intent(in)  b 
)
private

Definition at line 1608 of file linear_solver.F90.

◆ dmatrixvector()

real(real64) function, dimension(size(v, 1), size(v, 2)) linear_solver_oct_m::dmatrixvector ( real(real64), dimension(:, :), intent(in)  v)
private

Definition at line 1615 of file linear_solver.F90.

◆ dpreconditioner()

real(real64) function, dimension(size(v, 1), size(v, 2)) linear_solver_oct_m::dpreconditioner ( real(real64), dimension(:, :), intent(in)  v)
private

Definition at line 1638 of file linear_solver.F90.

◆ zlinear_solver_solve_hxey()

subroutine, public linear_solver_oct_m::zlinear_solver_solve_hxey ( type(linear_solver_t), intent(inout), target  this,
type(namespace_t), intent(in), target  namespace,
type(hamiltonian_elec_t), intent(in), target  hm,
class(mesh_t), intent(in), target  mesh,
type(states_elec_t), intent(in), target  st,
integer, intent(in)  ist,
integer, intent(in)  ik,
complex(real64), dimension(:,:), intent(inout), contiguous  x,
complex(real64), dimension(:,:), intent(in), contiguous  y,
complex(real64), intent(in)  shift,
real(real64), intent(in)  tol,
real(real64), intent(out)  residue,
integer, intent(out)  iter_used,
logical, intent(in), optional  occ_response 
)

This subroutine calculates the solution of (H + shift) x = y Typically shift = - eigenvalue + omega.

Parameters
[in,out]xx(meshnp_part, ddim)
[in]yy(meshnp, ddim)

Definition at line 1740 of file linear_solver.F90.

◆ zlinear_solver_solve_hxey_batch()

subroutine, public linear_solver_oct_m::zlinear_solver_solve_hxey_batch ( type(linear_solver_t), intent(inout), target  this,
type(namespace_t), intent(in)  namespace,
type(hamiltonian_elec_t), intent(in), target  hm,
class(mesh_t), intent(in), target  mesh,
type(states_elec_t), intent(in), target  st,
type(wfs_elec_t), intent(inout)  xb,
type(wfs_elec_t), intent(inout)  yb,
complex(real64), dimension(:), intent(in), contiguous  shift,
real(real64), intent(in)  tol,
real(real64), dimension(:), intent(out), contiguous  residue,
integer, dimension(:), intent(out)  iter_used,
logical, intent(in), optional  occ_response,
logical, intent(in), optional  use_initial_guess 
)

Definition at line 1831 of file linear_solver.F90.

◆ zlinear_solver_cg()

subroutine linear_solver_oct_m::zlinear_solver_cg ( type(linear_solver_t), intent(inout)  ls,
type(namespace_t), intent(in)  namespace,
type(hamiltonian_elec_t), intent(in)  hm,
class(mesh_t), intent(in)  mesh,
type(states_elec_t), intent(in)  st,
integer, intent(in)  ist,
integer, intent(in)  ik,
complex(real64), dimension(:,:), intent(inout), contiguous  x,
complex(real64), dimension(:,:), intent(in), contiguous  y,
complex(real64), intent(in)  shift,
real(real64), intent(in)  tol,
real(real64), intent(out)  residue,
integer, intent(out)  iter_used 
)
private

Conjugate gradients.

Parameters
[in,out]xx(meshnp, stddim)
[in]yy(meshnp, stddim)

Definition at line 1882 of file linear_solver.F90.

◆ zlinear_solver_idrs()

subroutine linear_solver_oct_m::zlinear_solver_idrs ( type(linear_solver_t), intent(inout)  ls,
type(namespace_t), intent(in)  namespace,
class(mesh_t), intent(in)  mesh,
type(states_elec_t), intent(in)  st,
complex(real64), dimension(:,:), intent(inout), contiguous  x,
complex(real64), dimension(:,:), intent(in), contiguous  y,
real(real64), intent(in)  tol,
real(real64), intent(out)  residue,
integer, intent(out)  iter_used 
)
private

IDRS This is the "Induced Dimension Reduction", IDR(s) (for s=4). IDR(s) is a robust and efficient short recurrence Krylov subspace method for solving large nonsymmetric systems of linear equations. It is described in [Peter Sonneveld and Martin B. van Gijzen, SIAM J. Sci. Comput. 31, 1035 (2008)]. We have adapted the code released by M. B. van Gizjen [http:

Parameters
[in,out]xx(meshnp, stddim)
[in]yy(meshnp, stddim)

Definition at line 1970 of file linear_solver.F90.

◆ zlinear_solver_bicgstab()

subroutine linear_solver_oct_m::zlinear_solver_bicgstab ( type(linear_solver_t), intent(inout)  ls,
type(namespace_t), intent(in)  namespace,
type(hamiltonian_elec_t), intent(in)  hm,
class(mesh_t), intent(in)  mesh,
type(states_elec_t), intent(in)  st,
integer, intent(in)  ist,
integer, intent(in)  ik,
complex(real64), dimension(:,:), intent(inout), contiguous  x,
complex(real64), dimension(:,:), intent(in), contiguous  y,
complex(real64), intent(in)  shift,
real(real64), intent(in)  tol,
real(real64), intent(out)  residue,
integer, intent(out)  iter_used,
logical, intent(in)  occ_response 
)
private

BICONJUGATE GRADIENTS STABILIZED see http:

Parameters
[in,out]xx(meshnp, stddim)
[in]yy(meshnp, stddim)

Definition at line 2016 of file linear_solver.F90.

◆ zlinear_solver_multigrid()

subroutine linear_solver_oct_m::zlinear_solver_multigrid ( type(linear_solver_t), intent(inout)  ls,
type(namespace_t), intent(in)  namespace,
type(hamiltonian_elec_t), intent(in)  hm,
class(mesh_t), intent(in)  mesh,
type(states_elec_t), intent(in)  st,
integer, intent(in)  ist,
integer, intent(in)  ik,
complex(real64), dimension(:,:), intent(inout), contiguous  x,
complex(real64), dimension(:,:), intent(in), contiguous  y,
complex(real64), intent(in)  shift,
real(real64), intent(in)  tol,
real(real64), intent(out)  residue,
integer, intent(out)  iter_used 
)
private

Definition at line 2168 of file linear_solver.F90.

◆ zlinear_solver_operator()

subroutine linear_solver_oct_m::zlinear_solver_operator ( type(hamiltonian_elec_t), intent(in)  hm,
type(namespace_t), intent(in)  namespace,
class(mesh_t), intent(in)  mesh,
type(states_elec_t), intent(in)  st,
integer, intent(in)  ist,
integer, intent(in)  ik,
complex(real64), intent(in)  shift,
complex(real64), dimension(:,:), intent(inout), contiguous  x,
complex(real64), dimension(:,:), intent(out), contiguous  hx 
)
private

This routine applies the operator hx = [H (+ Q) + shift] x.

Parameters
[in,out]xx(meshnp_part, stddim)
[out]hxHx(meshnp, stddim)

Definition at line 2264 of file linear_solver.F90.

◆ zlinear_solver_operator_batch()

subroutine linear_solver_oct_m::zlinear_solver_operator_batch ( type(hamiltonian_elec_t), intent(in)  hm,
type(namespace_t), intent(in)  namespace,
class(mesh_t), intent(in)  mesh,
type(states_elec_t), intent(in)  st,
complex(real64), dimension(:), intent(in)  shift,
type(wfs_elec_t), intent(inout)  xb,
type(wfs_elec_t), intent(inout)  hxb 
)
private

Definition at line 2314 of file linear_solver.F90.

◆ zlinear_solver_operator_na()

subroutine linear_solver_oct_m::zlinear_solver_operator_na ( complex(real64), dimension(:), intent(in), contiguous  x,
complex(real64), dimension(:), intent(out), contiguous  hx,
type(c_ptr), dimension(:), intent(in)  userdata 
)
private

applies linear_solver_operator with other arguments implicit as global variables

Parameters
[in]xx(meshnp, stddim)
[out]hxHx(meshnp, stddim)

Definition at line 2372 of file linear_solver.F90.

◆ zlinear_solver_operator_t_na()

subroutine linear_solver_oct_m::zlinear_solver_operator_t_na ( complex(real64), dimension(:), intent(in), contiguous  x,
complex(real64), dimension(:), intent(out), contiguous  hx,
type(c_ptr), dimension(:), intent(in)  userdata 
)
private

applies transpose of linear_solver_operator with other arguments implicit as global variables \( (H - shift)^T = H* - shift = (H - shift*)* \)

Definition at line 2396 of file linear_solver.F90.

◆ zlinear_solver_operator_sym_na()

subroutine linear_solver_oct_m::zlinear_solver_operator_sym_na ( complex(real64), dimension(:), intent(in), contiguous  x,
complex(real64), dimension(:), intent(out), contiguous  hx,
type(c_ptr), dimension(:), intent(in)  userdata 
)
private

applies linear_solver_operator in symmetrized form: \( A^T A \)

Parameters
[in]xx(meshnp, stddim)
[out]hxHx(meshnp, stddim)

Definition at line 2419 of file linear_solver.F90.

◆ zlinear_solver_preconditioner()

subroutine linear_solver_oct_m::zlinear_solver_preconditioner ( complex(real64), dimension(:), intent(in), contiguous  x,
complex(real64), dimension(:), intent(out), contiguous  hx,
type(c_ptr), dimension(:), intent(in)  userdata 
)
private
Parameters
[in]xx(meshnp, stddim)
[out]hxHx(meshnp, stddim)

Definition at line 2444 of file linear_solver.F90.

◆ zlinear_solver_sos()

subroutine linear_solver_oct_m::zlinear_solver_sos ( type(hamiltonian_elec_t), intent(in)  hm,
type(namespace_t), intent(in)  namespace,
class(mesh_t), intent(in)  mesh,
type(states_elec_t), intent(in)  st,
integer, intent(in)  ist,
integer, intent(in)  ik,
complex(real64), dimension(:,:), intent(inout), contiguous  x,
complex(real64), dimension(:,:), intent(in), contiguous  y,
complex(real64), intent(in)  shift,
real(real64), intent(out)  residue,
integer, intent(out)  iter_used 
)
private
Parameters
[in,out]xx(meshnp, stddim)
[in]yy(meshnp, stddim)

Definition at line 2468 of file linear_solver.F90.

◆ zlinear_solver_qmr_dotp()

subroutine linear_solver_oct_m::zlinear_solver_qmr_dotp ( type(linear_solver_t), intent(inout)  this,
type(namespace_t), intent(in)  namespace,
type(hamiltonian_elec_t), intent(in)  hm,
class(mesh_t), intent(in)  mesh,
type(states_elec_t), intent(in)  st,
type(wfs_elec_t), intent(inout)  xb,
type(wfs_elec_t), intent(in)  bb,
complex(real64), dimension(:), intent(in)  shift,
integer, dimension(:), intent(out)  iter_used,
real(real64), dimension(:), intent(out), contiguous  residue,
real(real64), intent(in)  threshold,
logical, intent(in), optional  use_initial_guess 
)
private

for complex symmetric matrices W Chen and B Poirier, J Comput Phys 219, 198-209 (2006)

Parameters
[out]residuethe residue = abs(Ax-b)
[in]thresholdconvergence threshold

Definition at line 2525 of file linear_solver.F90.

◆ zsingledimarray()

complex(real64) function, dimension(n) linear_solver_oct_m::zsingledimarray ( integer, intent(in)  n,
complex(real64), dimension(:, :), intent(in)  a 
)
private

Definition at line 2890 of file linear_solver.F90.

◆ zdoubledimarray()

complex(real64) function, dimension(np, dim) linear_solver_oct_m::zdoubledimarray ( integer, intent(in)  np,
integer, intent(in)  dim,
complex(real64), dimension(:), intent(in)  a 
)
private

Definition at line 2902 of file linear_solver.F90.

◆ zdotproduct()

complex(real64) function linear_solver_oct_m::zdotproduct ( complex(real64), dimension(:), intent(in)  a,
complex(real64), dimension(:), intent(in)  b 
)
private

Definition at line 2912 of file linear_solver.F90.

◆ zmatrixvector()

complex(real64) function, dimension(size(v, 1), size(v, 2)) linear_solver_oct_m::zmatrixvector ( complex(real64), dimension(:, :), intent(in)  v)
private

Definition at line 2919 of file linear_solver.F90.

◆ zpreconditioner()

complex(real64) function, dimension(size(v, 1), size(v, 2)) linear_solver_oct_m::zpreconditioner ( complex(real64), dimension(:, :), intent(in)  v)
private

Definition at line 2942 of file linear_solver.F90.

Variable Documentation

◆ args

type(linear_solver_args_t) linear_solver_oct_m::args
private

Definition at line 181 of file linear_solver.F90.