(git:6a2e663)
admm_methods Module Reference

Contains ADMM methods which require molecular orbitals. More...

Functions/Subroutines

subroutine, public admm_mo_calc_rho_aux (qs_env)
 ... More...
 
subroutine, public admm_mo_calc_rho_aux_kp (qs_env)
 ... More...
 
subroutine, public admm_update_ks_atom (qs_env, calculate_forces)
 Adds the GAPW exchange contribution to the aux_fit ks matrices. More...
 
subroutine, public admm_mo_merge_ks_matrix (qs_env)
 ... More...
 
subroutine, public admm_mo_merge_derivs (ispin, admm_env, mo_set, mo_coeff, mo_coeff_aux_fit, mo_derivs, mo_derivs_aux_fit, matrix_ks_aux_fit)
 ... More...
 
subroutine, public admm_fit_mo_coeffs (admm_env, matrix_s_aux_fit, matrix_s_mixed, mos, mos_aux_fit, geometry_did_change)
 ... More...
 
subroutine, public scale_dm (qs_env, rho_ao_orb, scale_back)
 Scale density matrix by gsi(ispin), is needed for force scaling in ADMMP. More...
 
subroutine, public calc_admm_mo_derivatives (qs_env, mo_derivs)
 Calculate the derivative of the AUX_FIT mo, based on the ORB mo_derivs. More...
 
subroutine, public calc_admm_ovlp_forces (qs_env)
 Calculate the forces due to the AUX/ORB basis overlap in ADMM. More...
 
subroutine, public calc_admm_ovlp_forces_kp (qs_env)
 Calculate the forces due to the AUX/ORB basis overlap in ADMM, in the KP case. More...
 
subroutine, public admm_projection_derivative (qs_env, matrix_hz, matrix_pz, fval)
 Calculate derivatives terms from overlap matrices. More...
 
subroutine, public calc_mixed_overlap_force (qs_env)
 Calculates contribution of forces due to basis transformation. More...
 
subroutine, public admm_aux_response_density (qs_env, dm, dm_admm)
 Calculate ADMM auxiliary response density. More...
 
subroutine, public kpoint_calc_admm_matrices (qs_env, calculate_forces)
 Fill the ADMM overlp and basis change matrices in the KP env based on the real-space array. More...
 

Detailed Description

Contains ADMM methods which require molecular orbitals.

History
04.2008 created [Manuel Guidon] 12.2019 Made GAPW compatible [A. Bussy]
Author
Manuel Guidon

Function/Subroutine Documentation

◆ admm_mo_calc_rho_aux()

subroutine, public admm_methods::admm_mo_calc_rho_aux ( type(qs_environment_type), pointer  qs_env)

...

Parameters
qs_env...

Definition at line 148 of file admm_methods.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ admm_mo_calc_rho_aux_kp()

subroutine, public admm_methods::admm_mo_calc_rho_aux_kp ( type(qs_environment_type), pointer  qs_env)

...

Parameters
qs_env...

Definition at line 284 of file admm_methods.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ admm_update_ks_atom()

subroutine, public admm_methods::admm_update_ks_atom ( type(qs_environment_type), pointer  qs_env,
logical, intent(in)  calculate_forces 
)

Adds the GAPW exchange contribution to the aux_fit ks matrices.

Parameters
qs_env...
calculate_forces...

Definition at line 714 of file admm_methods.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ admm_mo_merge_ks_matrix()

subroutine, public admm_methods::admm_mo_merge_ks_matrix ( type(qs_environment_type), pointer  qs_env)

...

Parameters
qs_env...

Definition at line 777 of file admm_methods.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ admm_mo_merge_derivs()

subroutine, public admm_methods::admm_mo_merge_derivs ( integer, intent(in)  ispin,
type(admm_type), pointer  admm_env,
type(mo_set_type), intent(in)  mo_set,
type(cp_fm_type), intent(in)  mo_coeff,
type(cp_fm_type), intent(in)  mo_coeff_aux_fit,
type(cp_fm_type), dimension(:), intent(in)  mo_derivs,
type(cp_fm_type), dimension(:), intent(in)  mo_derivs_aux_fit,
type(dbcsr_p_type), dimension(:), pointer  matrix_ks_aux_fit 
)

...

Parameters
ispin...
admm_env...
mo_set...
mo_coeff...
mo_coeff_aux_fit...
mo_derivs...
mo_derivs_aux_fit...
matrix_ks_aux_fit...

Definition at line 826 of file admm_methods.F.

Here is the caller graph for this function:

◆ admm_fit_mo_coeffs()

subroutine, public admm_methods::admm_fit_mo_coeffs ( type(admm_type), pointer  admm_env,
type(dbcsr_p_type), dimension(:), pointer  matrix_s_aux_fit,
type(dbcsr_p_type), dimension(:), pointer  matrix_s_mixed,
type(mo_set_type), dimension(:), intent(in)  mos,
type(mo_set_type), dimension(:), intent(in)  mos_aux_fit,
logical, intent(in)  geometry_did_change 
)

...

Parameters
admm_env...
matrix_s_aux_fit...
matrix_s_mixed...
mos...
mos_aux_fit...
geometry_did_change...

Definition at line 868 of file admm_methods.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ scale_dm()

subroutine, public admm_methods::scale_dm ( type(qs_environment_type), pointer  qs_env,
type(dbcsr_p_type), dimension(:, :), pointer  rho_ao_orb,
logical, intent(in)  scale_back 
)

Scale density matrix by gsi(ispin), is needed for force scaling in ADMMP.

Parameters
qs_env...
rho_ao_orb...
scale_back...
Author
Jan Wilhelm, 12/2014

Definition at line 2531 of file admm_methods.F.

Here is the call graph for this function:

◆ calc_admm_mo_derivatives()

subroutine, public admm_methods::calc_admm_mo_derivatives ( type(qs_environment_type), pointer  qs_env,
type(dbcsr_p_type), dimension(:), pointer  mo_derivs 
)

Calculate the derivative of the AUX_FIT mo, based on the ORB mo_derivs.

Parameters
qs_env...
mo_derivsthe MO derivatives in the orbital basis

Definition at line 2708 of file admm_methods.F.

Here is the call graph for this function:

◆ calc_admm_ovlp_forces()

subroutine, public admm_methods::calc_admm_ovlp_forces ( type(qs_environment_type), pointer  qs_env)

Calculate the forces due to the AUX/ORB basis overlap in ADMM.

Parameters
qs_env...

Definition at line 2753 of file admm_methods.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ calc_admm_ovlp_forces_kp()

subroutine, public admm_methods::calc_admm_ovlp_forces_kp ( type(qs_environment_type), pointer  qs_env)

Calculate the forces due to the AUX/ORB basis overlap in ADMM, in the KP case.

Parameters
qs_env...

Definition at line 2794 of file admm_methods.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ admm_projection_derivative()

subroutine, public admm_methods::admm_projection_derivative ( type(qs_environment_type), pointer  qs_env,
type(dbcsr_p_type), dimension(:), intent(in)  matrix_hz,
type(dbcsr_p_type), dimension(:), intent(in)  matrix_pz,
real(kind=dp), intent(in), optional  fval 
)

Calculate derivatives terms from overlap matrices.

Parameters
qs_env...
matrix_hzFock matrix part using the response density in admm basis
matrix_pzresponse density in orbital basis
fval...

Definition at line 3238 of file admm_methods.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ calc_mixed_overlap_force()

subroutine, public admm_methods::calc_mixed_overlap_force ( type(qs_environment_type), pointer  qs_env)

Calculates contribution of forces due to basis transformation.

   dE/dR = dE/dC'*dC'/dR
   dE/dC = Ks'*c'*occ = H'

   dC'/dR = - tr(A*lambda^(-1/2)*H'^(T)*S^(-1) * dS'/dR)
            - tr(A*C*Y^(T)*C^(T)*Q^(T)*A^(T) * dS'/dR)
            + tr(C*lambda^(-1/2)*H'^(T)*S^(-1) * dQ/dR)
            + tr(A*C*Y^(T)*c^(T) * dQ/dR)
            + tr(C*Y^(T)*C^(T)*A^(T) * dQ/dR)

   where

   A = S'^(-1)*Q
   lambda = C^(T)*B*C
   B = Q^(T)*A
   Y = R*[ (R^(T)*C^(T)*A^(T)*H'*R) xx M ]*R^(T)
   lambda = R*D*R^(T)
   Mij = Poles-Matrix (see above)
   xx = schur product
Parameters
qs_envthe QS environment
History
05.2008 created [Manuel Guidon]
Author
Manuel Guidon

Definition at line 3356 of file admm_methods.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ admm_aux_response_density()

subroutine, public admm_methods::admm_aux_response_density ( type(qs_environment_type), intent(in), pointer  qs_env,
type(dbcsr_p_type), dimension(:), intent(in)  dm,
type(dbcsr_p_type), dimension(:), intent(inout)  dm_admm 
)

Calculate ADMM auxiliary response density.

Parameters
qs_env...
dm...
dm_admm...

Definition at line 3815 of file admm_methods.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ kpoint_calc_admm_matrices()

subroutine, public admm_methods::kpoint_calc_admm_matrices ( type(qs_environment_type), pointer  qs_env,
logical  calculate_forces 
)

Fill the ADMM overlp and basis change matrices in the KP env based on the real-space array.

Parameters
qs_env...
calculate_forces...

Definition at line 3858 of file admm_methods.F.

Here is the call graph for this function:
Here is the caller graph for this function: