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(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, 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(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 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 531 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 582 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 672 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 718 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 882 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 980 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 1030 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 1088 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 1112 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 1135 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 1160 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 1184 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 1241 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 1606 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 1617 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 1627 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 1634 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 1657 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 1759 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 1854 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 1905 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 1995 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 2041 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 2205 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 2303 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 2353 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 2411 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 2435 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 2458 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 2483 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 2507 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 2564 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 2929 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 2940 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 2950 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 2957 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 2980 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.