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(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)
 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(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 185 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 322 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 336 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 350 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 435 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 526 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 577 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 665 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 711 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 863 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 959 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 1009 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 1067 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 1090 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 1112 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 1136 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 1159 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 1216 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 1581 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 1593 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 1603 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 1610 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 1633 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 1735 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 1826 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 1877 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 1965 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 2011 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 2163 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 2259 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 2309 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 2367 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 2390 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 2412 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 2436 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 2459 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 2516 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 2881 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 2893 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 2903 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 2910 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 2933 of file linear_solver.F90.

Variable Documentation

◆ args

type(linear_solver_args_t) linear_solver_oct_m::args
private

Definition at line 180 of file linear_solver.F90.