Octopus
|
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_t) | args |
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 | ||
) |
[in] | states_are_real | for choosing solver |
Definition at line 183 of file linear_solver.F90.
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.
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.
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.
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.
[in,out] | x | x(meshnp_part, ddim) |
[in] | y | y(meshnp, ddim) |
Definition at line 434 of file linear_solver.F90.
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.
|
private |
Conjugate gradients.
[in,out] | x | x(meshnp, stddim) |
[in] | y | y(meshnp, stddim) |
Definition at line 576 of file linear_solver.F90.
|
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:
[in,out] | x | x(meshnp, stddim) |
[in] | y | y(meshnp, stddim) |
Definition at line 666 of file linear_solver.F90.
|
private |
BICONJUGATE GRADIENTS STABILIZED see http:
[in,out] | x | x(meshnp, stddim) |
[in] | y | y(meshnp, stddim) |
Definition at line 712 of file linear_solver.F90.
|
private |
Definition at line 864 of file linear_solver.F90.
|
private |
This routine applies the operator hx = [H (+ Q) + shift] x.
[in,out] | x | x(meshnp_part, stddim) |
[out] | hx | Hx(meshnp, stddim) |
Definition at line 960 of file linear_solver.F90.
|
private |
Definition at line 1010 of file linear_solver.F90.
|
private |
applies linear_solver_operator with other arguments implicit as global variables
[in] | x | x(meshnp, stddim) |
[out] | hx | Hx(meshnp, stddim) |
Definition at line 1068 of file linear_solver.F90.
|
private |
applies transpose of linear_solver_operator with other arguments implicit as global variables \( (H - shift)^T = H* - shift = (H - shift*)* \)
Definition at line 1091 of file linear_solver.F90.
|
private |
applies linear_solver_operator in symmetrized form: \( A^T A \)
[in] | x | x(meshnp, stddim) |
[out] | hx | Hx(meshnp, stddim) |
Definition at line 1113 of file linear_solver.F90.
|
private |
[in] | x | x(meshnp, stddim) |
[out] | hx | Hx(meshnp, stddim) |
Definition at line 1137 of file linear_solver.F90.
|
private |
[in,out] | x | x(meshnp, stddim) |
[in] | y | y(meshnp, stddim) |
Definition at line 1160 of file linear_solver.F90.
|
private |
for complex symmetric matrices W Chen and B Poirier, J Comput Phys 219, 198-209 (2006)
[out] | residue | the residue = abs(Ax-b) |
[in] | threshold | convergence threshold |
Definition at line 1217 of file linear_solver.F90.
|
private |
Definition at line 1584 of file linear_solver.F90.
|
private |
Definition at line 1596 of file linear_solver.F90.
|
private |
Definition at line 1606 of file linear_solver.F90.
|
private |
Definition at line 1613 of file linear_solver.F90.
|
private |
Definition at line 1636 of file linear_solver.F90.
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.
[in,out] | x | x(meshnp_part, ddim) |
[in] | y | y(meshnp, ddim) |
Definition at line 1738 of file linear_solver.F90.
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 1829 of file linear_solver.F90.
|
private |
Conjugate gradients.
[in,out] | x | x(meshnp, stddim) |
[in] | y | y(meshnp, stddim) |
Definition at line 1880 of file linear_solver.F90.
|
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:
[in,out] | x | x(meshnp, stddim) |
[in] | y | y(meshnp, stddim) |
Definition at line 1970 of file linear_solver.F90.
|
private |
BICONJUGATE GRADIENTS STABILIZED see http:
[in,out] | x | x(meshnp, stddim) |
[in] | y | y(meshnp, stddim) |
Definition at line 2016 of file linear_solver.F90.
|
private |
Definition at line 2168 of file linear_solver.F90.
|
private |
This routine applies the operator hx = [H (+ Q) + shift] x.
[in,out] | x | x(meshnp_part, stddim) |
[out] | hx | Hx(meshnp, stddim) |
Definition at line 2264 of file linear_solver.F90.
|
private |
Definition at line 2314 of file linear_solver.F90.
|
private |
applies linear_solver_operator with other arguments implicit as global variables
[in] | x | x(meshnp, stddim) |
[out] | hx | Hx(meshnp, stddim) |
Definition at line 2372 of file linear_solver.F90.
|
private |
applies transpose of linear_solver_operator with other arguments implicit as global variables \( (H - shift)^T = H* - shift = (H - shift*)* \)
Definition at line 2395 of file linear_solver.F90.
|
private |
applies linear_solver_operator in symmetrized form: \( A^T A \)
[in] | x | x(meshnp, stddim) |
[out] | hx | Hx(meshnp, stddim) |
Definition at line 2417 of file linear_solver.F90.
|
private |
[in] | x | x(meshnp, stddim) |
[out] | hx | Hx(meshnp, stddim) |
Definition at line 2441 of file linear_solver.F90.
|
private |
[in,out] | x | x(meshnp, stddim) |
[in] | y | y(meshnp, stddim) |
Definition at line 2464 of file linear_solver.F90.
|
private |
for complex symmetric matrices W Chen and B Poirier, J Comput Phys 219, 198-209 (2006)
[out] | residue | the residue = abs(Ax-b) |
[in] | threshold | convergence threshold |
Definition at line 2521 of file linear_solver.F90.
|
private |
Definition at line 2888 of file linear_solver.F90.
|
private |
Definition at line 2900 of file linear_solver.F90.
|
private |
Definition at line 2910 of file linear_solver.F90.
|
private |
Definition at line 2917 of file linear_solver.F90.
|
private |
Definition at line 2940 of file linear_solver.F90.
|
private |
Definition at line 178 of file linear_solver.F90.