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)
 applies linear_solver_operator with other arguments implicit as global variables More...
 
subroutine dlinear_solver_operator_t_na (x, hx)
 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)
 applies linear_solver_operator in symmetrized form: \( A^T A \) More...
 
subroutine dlinear_solver_preconditioner (x, hx)
 
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(np *ndim) dsingledimarray (np, ndim, 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)
 applies linear_solver_operator with other arguments implicit as global variables More...
 
subroutine zlinear_solver_operator_t_na (x, hx)
 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)
 applies linear_solver_operator in symmetrized form: \( A^T A \) More...
 
subroutine zlinear_solver_preconditioner (x, hx)
 
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(np *ndim) zsingledimarray (np, ndim, 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 183 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 321 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 335 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 349 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 434 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 529 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 580 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 670 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 716 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 880 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 978 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 1028 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 
)
private

applies linear_solver_operator with other arguments implicit as global variables

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

Definition at line 1086 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 
)
private

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

Definition at line 1109 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 
)
private

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

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

Definition at line 1131 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 
)
private
Parameters
[in]xx(meshnp, stddim)
[out]hxHx(meshnp, stddim)

Definition at line 1155 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 1178 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 1235 of file linear_solver.F90.

◆ dsingledimarray()

real(real64) function, dimension(np*ndim) linear_solver_oct_m::dsingledimarray ( integer, intent(in)  np,
integer, intent(in)  ndim,
real(real64), dimension(:, :), intent(in)  a 
)
private

Definition at line 1600 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 1611 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 1621 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 1628 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 1651 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 1753 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 1848 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 1899 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 1989 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 2035 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 2199 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 2297 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 2347 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 
)
private

applies linear_solver_operator with other arguments implicit as global variables

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

Definition at line 2405 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 
)
private

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

Definition at line 2428 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 
)
private

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

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

Definition at line 2450 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 
)
private
Parameters
[in]xx(meshnp, stddim)
[out]hxHx(meshnp, stddim)

Definition at line 2474 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 2497 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 2554 of file linear_solver.F90.

◆ zsingledimarray()

complex(real64) function, dimension(np*ndim) linear_solver_oct_m::zsingledimarray ( integer, intent(in)  np,
integer, intent(in)  ndim,
complex(real64), dimension(:, :), intent(in)  a 
)
private

Definition at line 2919 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 2930 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 2940 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 2947 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 2970 of file linear_solver.F90.

Variable Documentation

◆ args

type(linear_solver_args_t) linear_solver_oct_m::args
private

Definition at line 178 of file linear_solver.F90.