(git:5c1df3d)
Loading...
Searching...
No Matches
qs_ot.F File Reference

Go to the source code of this file.

Modules

module  qs_ot
 orbital transformations

Functions/Subroutines

real(kind=dp) function, public qs_ot::qs_ot_antihermitian_spectral_norm (rotation_generator)
 spectral norm of a dense anti-Hermitian rotation generator
pure real(kind=dp) function, public qs_ot::qs_ot_fixed_n_response_mu_shift (weighted_energy_response, local_curvature_sum, fixed_n_curvature_sum)
 chemical-potential response for one fixed-electron-number group
pure subroutine, public qs_ot::qs_ot_fixed_n_energy_gradient (rayleigh_energy, energy_coordinate, response_weight, fixed_n_weight_sum, fixed_n_weighted_residual, gradient)
 fixed-N Mermin gradient in auxiliary-energy coordinates
pure subroutine, public qs_ot::qs_ot_fixed_n_energy_hessian (response_weight, fixed_n_weight_sum, hessian)
 dense fixed-N occupation Hessian in auxiliary-energy coordinates
subroutine, public qs_ot::qs_ot_fixed_n_schur_block (rotation_hessian, rayleigh_response, response_weight, rotation_gradient, energy_gradient, schur_block, coupling_vector, schur_rhs)
 local block of the fixed-N rotation/energy Schur complement
subroutine, public qs_ot::qs_ot_fixed_n_multigroup_schur_block (rotation_hessian, rayleigh_response, response_weight, response_group, rotation_gradient, energy_gradient, schur_block, coupling_matrix, schur_rhs)
 eliminate spin-resolved auxiliary energies while retaining every fixed-N constraint
subroutine, public qs_ot::qs_ot_symmetric_abs_solve (matrix, rhs, solution, valid, relative_floor)
 apply a positive spectral inverse of a real symmetric response matrix
subroutine, public qs_ot::qs_ot_projected_response_update (reference_hessian, response_correction, coefficients, valid, projected_gradient, relative_floor)
 update a baseline response direction in a small positive physical-response subspace
pure subroutine, public qs_ot::qs_ot_symmetric_sr1_update (matrix, step, response, updated_matrix, valid, relative_tolerance)
 add one accepted symmetric response secant to a reference Hessian
subroutine, public qs_ot::qs_ot_density_secant_hessian (density_step, hamiltonian_step, density_modes, correction, valid, density_norm_sq, response_work)
 project a self-adjoint density/Hamiltonian secant onto density-response modes
subroutine, public qs_ot::qs_ot_density_secant_projected_hessian (density_norm_sq, response_work, density_overlap, response_overlap, correction, valid, secant_mode, secant_position)
 form a projected self-adjoint Hxc response from distributed density-space overlaps
subroutine, public qs_ot::qs_ot_density_tangent (rotation_generator, occupation, kpoint_weight, rotation_step, weighted_occupation_step, density_tangent, difference_step)
 finite-chart density tangent for coupled complex rotations and fixed-N occupations
subroutine, public qs_ot::qs_ot_density_secant_orbital_overlaps (overlap_start_current, occupation_start, occupation_current, hamiltonian_step_start, hamiltonian_step_current, density_modes, kpoint_weight, density_norm_sq, response_work, density_overlap, response_overlap, valid)
 project a physical density/Hamiltonian secant between moving orbital subspaces
subroutine, public qs_ot::qs_ot_fixed_n_projector_frechet (chc, dchc, occupation, kpoint_weight, response_weight, fixed_n_weight_sum, projector_derivative, density_factor)
 fixed-N Frechet derivative of a smooth occupation projector
subroutine, public qs_ot::qs_ot_finite_rotation_response (chc, rotation_generator, occupation, kpoint_weight, rotation_gradient, rotation_hessian, rayleigh_response, difference_step)
 finite complex REF rotation Hessian and Rayleigh-energy response
pure complex(kind=dp) function, public qs_ot::qs_ot_complex_exp_frechet_kernel (e1, e2)
 Frechet divided-difference kernel for exp(-i*evals).
subroutine, public qs_ot::qs_ot_apply_complex_frechet_dbcsr (evals, inner_deriv_re, inner_deriv_im, outer_deriv_re, outer_deriv_im, adjoint)
 apply the complex exponential Frechet kernel to sparse DBCSR Re/Im matrices
subroutine, public qs_ot::qs_ot_new_preconditioner (qs_ot_env, preconditioner)
 gets ready to use the preconditioner/ or renew the preconditioner only keeps a pointer to the preconditioner. If you change the preconditioner, you have to call this routine you remain responsible of proper deallocate of your preconditioner (or you can reuse it on the next step of the computation)
subroutine, public qs_ot::qs_ot_get_orbitals_ref (matrix_c, matrix_s, matrix_x, matrix_sx, matrix_gx_old, matrix_dx, qs_ot_env, qs_ot_env1)
 ...
subroutine, public qs_ot::qs_ot_get_orbitals_ref_complex (matrix_c, matrix_c_im, matrix_s, matrix_s_im, qs_ot_env, qs_ot_env1)
 update complex REF k-point orbitals and their S(k)C(k) images
subroutine, public qs_ot::qs_ot_get_derivative_ref (matrix_hc, matrix_x, matrix_sx, matrix_gx, qs_ot_env)
 ...
subroutine, public qs_ot::qs_ot_get_derivative_ref_complex (matrix_hc, matrix_hc_im, qs_ot_env, matrix_hc_rotation, matrix_hc_rotation_im)
 complex k-point REF derivative dE/dX from H(k)C(k), S(k)C(k), and C(k)
subroutine, public qs_ot::qs_ot_get_p (matrix_x, matrix_sx, qs_ot_env)
 computes p=x*S*x and the matrix functionals related matrices
subroutine, public qs_ot::qs_ot_generate_rotation_complex (qs_ot_env)
 computes U=exp(A) for the complex anti-Hermitian generator A=rot_mat_x+i*rot_mat_x_im
subroutine, public qs_ot::qs_ot_rot_mat_derivative_complex (qs_ot_env)
 pull the complex dE/dU covector back to the anti-Hermitian generator using the adjoint Frechet derivative of exp
subroutine, public qs_ot::qs_ot_get_p_complex (matrix_x, matrix_x_im, matrix_sx, matrix_sx_im, qs_ot_env)
 compute P=X^H*S*X and the STRICT matrix functions for a complex K-point channel
subroutine, public qs_ot::qs_ot_generate_rotation (qs_ot_env)
 computes the rotation matrix rot_mat_u that is associated to a given rot_mat_x using rot_mat_u=exp(rot_mat_x)
subroutine, public qs_ot::qs_ot_rot_mat_derivative (qs_ot_env)
 computes the derivative fields with respect to rot_mat_x
subroutine, public qs_ot::qs_ot_get_orbitals (matrix_c, matrix_x, qs_ot_env)
 c=(c0*cos(p^0.5)+x*sin(p^0.5)*p^(-0.5)) x rot_mat_u this assumes that x is already ortho to S*C0, and that p is x*S*x rot_mat_u is an optional rotation matrix
subroutine, public qs_ot::qs_ot_get_orbitals_complex (matrix_c, matrix_c_im, matrix_s, matrix_s_im, qs_ot_env)
 update complex K-point orbitals with the finite STRICT transformation
subroutine, public qs_ot::qs_ot_get_derivative (matrix_hc, matrix_x, matrix_sx, matrix_gx, qs_ot_env)
 this routines computes dE/dx=dx, with dx ortho to sc0 needs dE/dC=hc,C0,X,SX,p if preconditioned it will not be the derivative, but the lagrangian multiplier is changed so that P*dE/dx is the right derivative (i.e. in the allowed subspace)
subroutine, public qs_ot::qs_ot_prepare_complex_tangent_metric (qs_ot_env, preconditioner_rejected)
 Prepare the inverse metric used to project a complex STRICT gradient. An unusable preconditioner is detached before any minimizer history is updated.
subroutine, public qs_ot::qs_ot_get_derivative_complex (matrix_hc, matrix_hc_im, qs_ot_env, matrix_hc_rotation, matrix_hc_rotation_im)
 finite complex STRICT derivative, projected onto C0^H*S*X=0