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 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 525 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 576 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 664 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 710 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 862 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 958 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 1008 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 1066 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 1089 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 1111 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 1135 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 1158 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 1215 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 1580 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 1592 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 1602 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 1609 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 1632 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 1734 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 1825 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 1876 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 1964 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 2010 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 2162 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 2258 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 2308 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 2366 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 2389 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 2411 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 2435 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 2458 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 2515 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 2880 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 2892 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 2902 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 2909 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 2932 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.