(git:d18deda)
Loading...
Searching...
No Matches
qs_ot Module Reference

orbital transformations More...

Functions/Subroutines

subroutine, public 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_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_get_derivative_ref (matrix_hc, matrix_x, matrix_sx, matrix_gx, qs_ot_env)
 ...
 
subroutine, public 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_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_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)
 

Detailed Description

orbital transformations

History
Added Taylor expansion based computation of the matrix functions (01.2004) added additional rotation variables for non-equivalent occupied orbs (08.2004)
Author
Joost VandeVondele (06.2002)

Function/Subroutine Documentation

◆ qs_ot_new_preconditioner()

subroutine, public qs_ot::qs_ot_new_preconditioner ( type(qs_ot_type qs_ot_env,
type(preconditioner_type), pointer  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)

Parameters
qs_ot_env...
preconditioner...

Definition at line 72 of file qs_ot.F.

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

◆ qs_ot_get_orbitals_ref()

subroutine, public qs_ot::qs_ot_get_orbitals_ref ( type(dbcsr_type), pointer  matrix_c,
type(dbcsr_type), pointer  matrix_s,
type(dbcsr_type), pointer  matrix_x,
type(dbcsr_type), pointer  matrix_sx,
type(dbcsr_type), pointer  matrix_gx_old,
type(dbcsr_type), pointer  matrix_dx,
type(qs_ot_type qs_ot_env,
type(qs_ot_type qs_ot_env1 
)

...

Parameters
matrix_c...
matrix_s...
matrix_x...
matrix_sx...
matrix_gx_old...
matrix_dx...
qs_ot_env...
qs_ot_env1...

Definition at line 514 of file qs_ot.F.

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

◆ qs_ot_get_derivative_ref()

subroutine, public qs_ot::qs_ot_get_derivative_ref ( type(dbcsr_type), pointer  matrix_hc,
type(dbcsr_type), pointer  matrix_x,
type(dbcsr_type), pointer  matrix_sx,
type(dbcsr_type), pointer  matrix_gx,
type(qs_ot_type qs_ot_env 
)

...

Parameters
matrix_hc...
matrix_x...
matrix_sx...
matrix_gx...
qs_ot_env...

Definition at line 699 of file qs_ot.F.

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

◆ qs_ot_get_p()

subroutine, public qs_ot::qs_ot_get_p ( type(dbcsr_type), pointer  matrix_x,
type(dbcsr_type), pointer  matrix_sx,
type(qs_ot_type qs_ot_env 
)

computes p=x*S*x and the matrix functionals related matrices

Parameters
matrix_x...
matrix_sx...
qs_ot_env...

Definition at line 747 of file qs_ot.F.

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

◆ qs_ot_get_orbitals()

subroutine, public qs_ot::qs_ot_get_orbitals ( type(dbcsr_type), pointer  matrix_c,
type(dbcsr_type), pointer  matrix_x,
type(qs_ot_type 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

Parameters
matrix_c...
matrix_x...
qs_ot_env...

Definition at line 1019 of file qs_ot.F.

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

◆ qs_ot_get_derivative()

subroutine, public qs_ot::qs_ot_get_derivative ( type(dbcsr_type), pointer  matrix_hc,
type(dbcsr_type), pointer  matrix_x,
type(dbcsr_type), pointer  matrix_sx,
type(dbcsr_type), pointer  matrix_gx,
type(qs_ot_type 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)

Parameters
matrix_hc...
matrix_x...
matrix_sx...
matrix_gx...
qs_ot_env...

Definition at line 1072 of file qs_ot.F.

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