## Documentation for module qs_modify_pab_block

Set of procedures to modify the density matrix, in order to collocate on the real space grid specific functions of the primitives

source: qs_modify_pab_block.F

#### public Subroutines/Functions:

create a new pab_local so that mapping pab_local with pgf_a pgf_b is equivalent to mapping pab with pgf_a (nabla_{idir} pgf_b) - (nabla_{idir} pgf_a) pgf_b ( pgf_a ) (ddx pgf_b) - (ddx pgf_a)( pgf_b ) = pgf_a *(lbx pgf_{b-1x} - 2*zetb*pgf_{b+1x}) - (lax pgf_{a-1x} - 2*zeta*pgf_{a+1x}) pgf_b
SUBROUTINE
prepare_arb (pab_local, pab, ir, lxa, lya, lza, lxb, lyb, lzb, o1, o2)
create a new pab_local so that mapping pab_local with pgf_a pgf_b pgf_a (r-Rb)_{ir} pgf_b = pgf_a * pgf_b{+1ir}
create a new pab_local so that mapping pab_local with pgf_a pgf_b pgf_a (r-Rb)_{ir} (nabla_{idir} pgf_b) - (nabla_{idir} pgf_a) (r-Rb)_{ir} pgf_b ( pgf_a )(r-Rb)_{ir} (ddx pgf_b) - (ddx pgf_a) (r-Rb)_{ir} ( pgf_b ) = pgf_a *(lbx pgf_{b-1x+1ir} - 2*zetb*pgf_{b+1x+1ir}) - (lax pgf_{a-1x} - 2*zeta*pgf_{a+1x}) pgf_{b+1ir}
create a new pab_local so that mapping pab_local with pgf_a pgf_b is equivalent to mapping pab with pgf_a (nabla_{idir} pgf_b) + (nabla_{idir} pgf_a) pgf_b ( pgf_a ) (ddx pgf_b) + (ddx pgf_a)( pgf_b ) = pgf_a *(lbx pgf_{b-1x} - 2*zetb*pgf_{b+1x}) + (lax pgf_{a-1x} - 2*zeta*pgf_{a+1x}) pgf_b
SUBROUTINE
prepare_dadb (pab_local, pab, lxa, lya, lza, lxb, lyb, lzb, o1, o2, zeta, zetb)
create a new pab_local so that mapping pab_local with pgf_a pgf_b is equivalent to mapping pab with 0.5 * (nabla pgf_a) . (nabla pgf_b) (ddx pgf_a ) (ddx pgf_b) = (lax pgf_{a-1x} - 2*zeta*pgf_{a+1x})*(lbx pgf_{b-1x} - 2*zetb*pgf_{b+1x})
create a new pab_local so that mapping pab_local with pgf_a pgf_b is equivalent to mapping pab with (ddi pgf_a) . (ddi pgf_b) (ddx pgf_a ) (ddx pgf_b) = (lax pgf_{a-1x} - 2*zeta*pgf_{a+1x})*(lbx pgf_{b-1x} - 2*zetb*pgf_{b+1x})
create a new pab_local so that mapping pab_local with pgf_a pgf_b is equivalent to mapping pab with (ddidj pgf_a) . (ddidj pgf_b) (ddxdx pgf_a ) (ddxdx pgf_b) =
create a new pab_local so that mapping pab_local with pgf_a pgf_b is equivalent to mapping pab with (ddidj pgf_a) . (ddidj pgf_b) (ddxdy pgf_a ) (ddxdy pgf_b) =

#### Parameters:

 INTEGER :: func_ab = 401 INTEGER :: func_adbmdab = 403 INTEGER :: func_arb = 406 INTEGER :: func_ardbmdarb = 404 INTEGER :: func_dabpadb = 405 INTEGER :: func_dadb = 402 INTEGER :: func_der(0:9) = (/401,501,502,503,601,602,603,604,605,606/) INTEGER :: func_dx = 501 INTEGER :: func_dxdx = 604 INTEGER :: func_dxdy = 601 INTEGER :: func_dy = 502 INTEGER :: func_dydy = 605 INTEGER :: func_dydz = 602 INTEGER :: func_dz = 503 INTEGER :: func_dzdx = 603 INTEGER :: func_dzdz = 606

#### SUBROUTINEprepare_adb_m_dab(pab_local, pab, idir, lxa, lya, lza, lxb, lyb, lzb, o1, o2, zeta, zetb)^

create a new pab_local so that mapping pab_local with pgf_a pgf_b is equivalent to mapping pab with pgf_a (nabla_{idir} pgf_b) - (nabla_{idir} pgf_a) pgf_b ( pgf_a ) (ddx pgf_b) - (ddx pgf_a)( pgf_b ) = pgf_a *(lbx pgf_{b-1x} - 2*zetb*pgf_{b+1x}) - (lax pgf_{a-1x} - 2*zeta*pgf_{a+1x}) pgf_b

##### Arguments:
 REAL(dp), INTENT(inout) :: pab_local(:,:) ... REAL(dp), INTENT(in) :: pab(:,:) ... INTEGER, INTENT(in) :: idir ... INTEGER, INTENT(in) :: lxa ... INTEGER, INTENT(in) :: lya ... INTEGER, INTENT(in) :: lza ... INTEGER, INTENT(in) :: lxb ... INTEGER, INTENT(in) :: lyb ... INTEGER, INTENT(in) :: lzb ... INTEGER, INTENT(in) :: o1 ... INTEGER, INTENT(in) :: o2 ... REAL(dp), INTENT(in) :: zeta ... REAL(dp), INTENT(in) :: zetb ...

#### SUBROUTINEprepare_arb(pab_local, pab, ir, lxa, lya, lza, lxb, lyb, lzb, o1, o2)^

create a new pab_local so that mapping pab_local with pgf_a pgf_b pgf_a (r-Rb)_{ir} pgf_b = pgf_a * pgf_b{+1ir}

##### Arguments:
 REAL(dp), INTENT(inout) :: pab_local(:,:) ... REAL(dp), INTENT(in) :: pab(:,:) ... INTEGER, INTENT(in) :: ir ... INTEGER, INTENT(in) :: lxa ... INTEGER, INTENT(in) :: lya ... INTEGER, INTENT(in) :: lza ... INTEGER, INTENT(in) :: lxb ... INTEGER, INTENT(in) :: lyb ... INTEGER, INTENT(in) :: lzb ... INTEGER, INTENT(in) :: o1 ... INTEGER, INTENT(in) :: o2 ...

#### SUBROUTINEprepare_ardb_m_darb(pab_local, pab, idir, ir, lxa, lya, lza, lxb, lyb, lzb, o1, o2, zeta, zetb)^

create a new pab_local so that mapping pab_local with pgf_a pgf_b pgf_a (r-Rb)_{ir} (nabla_{idir} pgf_b) - (nabla_{idir} pgf_a) (r-Rb)_{ir} pgf_b ( pgf_a )(r-Rb)_{ir} (ddx pgf_b) - (ddx pgf_a) (r-Rb)_{ir} ( pgf_b ) = pgf_a *(lbx pgf_{b-1x+1ir} - 2*zetb*pgf_{b+1x+1ir}) - (lax pgf_{a-1x} - 2*zeta*pgf_{a+1x}) pgf_{b+1ir}

##### Arguments:
 REAL(dp), INTENT(inout) :: pab_local(:,:) ... REAL(dp), INTENT(in) :: pab(:,:) ... INTEGER, INTENT(in) :: idir ... INTEGER, INTENT(in) :: ir ... INTEGER, INTENT(in) :: lxa ... INTEGER, INTENT(in) :: lya ... INTEGER, INTENT(in) :: lza ... INTEGER, INTENT(in) :: lxb ... INTEGER, INTENT(in) :: lyb ... INTEGER, INTENT(in) :: lzb ... INTEGER, INTENT(in) :: o1 ... INTEGER, INTENT(in) :: o2 ... REAL(dp), INTENT(in) :: zeta ... REAL(dp), INTENT(in) :: zetb ...

#### SUBROUTINEprepare_dab_p_adb(pab_local, pab, idir, lxa, lya, lza, lxb, lyb, lzb, o1, o2, zeta, zetb)^

create a new pab_local so that mapping pab_local with pgf_a pgf_b is equivalent to mapping pab with pgf_a (nabla_{idir} pgf_b) + (nabla_{idir} pgf_a) pgf_b ( pgf_a ) (ddx pgf_b) + (ddx pgf_a)( pgf_b ) = pgf_a *(lbx pgf_{b-1x} - 2*zetb*pgf_{b+1x}) + (lax pgf_{a-1x} - 2*zeta*pgf_{a+1x}) pgf_b

##### Arguments:
 REAL(dp), INTENT(inout) :: pab_local(:,:) ... REAL(dp), INTENT(in) :: pab(:,:) ... INTEGER, INTENT(in) :: idir ... INTEGER, INTENT(in) :: lxa ... INTEGER, INTENT(in) :: lya ... INTEGER, INTENT(in) :: lza ... INTEGER, INTENT(in) :: lxb ... INTEGER, INTENT(in) :: lyb ... INTEGER, INTENT(in) :: lzb ... INTEGER, INTENT(in) :: o1 ... INTEGER, INTENT(in) :: o2 ... REAL(dp), INTENT(in) :: zeta ... REAL(dp), INTENT(in) :: zetb ...

#### SUBROUTINEprepare_dadb(pab_local, pab, lxa, lya, lza, lxb, lyb, lzb, o1, o2, zeta, zetb)^

create a new pab_local so that mapping pab_local with pgf_a pgf_b is equivalent to mapping pab with 0.5 * (nabla pgf_a) . (nabla pgf_b) (ddx pgf_a ) (ddx pgf_b) = (lax pgf_{a-1x} - 2*zeta*pgf_{a+1x})*(lbx pgf_{b-1x} - 2*zetb*pgf_{b+1x})

##### Arguments:
 REAL(dp), INTENT(inout) :: pab_local(:,:) ... REAL(dp), INTENT(in) :: pab(:,:) ... INTEGER, INTENT(in) :: lxa ... INTEGER, INTENT(in) :: lya ... INTEGER, INTENT(in) :: lza ... INTEGER, INTENT(in) :: lxb ... INTEGER, INTENT(in) :: lyb ... INTEGER, INTENT(in) :: lzb ... INTEGER, INTENT(in) :: o1 ... INTEGER, INTENT(in) :: o2 ... REAL(dp), INTENT(in) :: zeta ... REAL(dp), INTENT(in) :: zetb ...

#### SUBROUTINEprepare_diadib(pab_local, pab, ider, lxa, lya, lza, lxb, lyb, lzb, o1, o2, zeta, zetb)^

create a new pab_local so that mapping pab_local with pgf_a pgf_b is equivalent to mapping pab with (ddi pgf_a) . (ddi pgf_b) (ddx pgf_a ) (ddx pgf_b) = (lax pgf_{a-1x} - 2*zeta*pgf_{a+1x})*(lbx pgf_{b-1x} - 2*zetb*pgf_{b+1x})

##### Arguments:
 REAL(dp), INTENT(inout) :: pab_local(:,:) ... REAL(dp), INTENT(in) :: pab(:,:) ... INTEGER, INTENT(in) :: ider ... INTEGER, INTENT(in) :: lxa ... INTEGER, INTENT(in) :: lya ... INTEGER, INTENT(in) :: lza ... INTEGER, INTENT(in) :: lxb ... INTEGER, INTENT(in) :: lyb ... INTEGER, INTENT(in) :: lzb ... INTEGER, INTENT(in) :: o1 ... INTEGER, INTENT(in) :: o2 ... REAL(dp), INTENT(in) :: zeta ... REAL(dp), INTENT(in) :: zetb ...

#### SUBROUTINEprepare_diiadiib(pab_local, pab, ider, lxa, lya, lza, lxb, lyb, lzb, o1, o2, zeta, zetb)^

create a new pab_local so that mapping pab_local with pgf_a pgf_b is equivalent to mapping pab with (ddidj pgf_a) . (ddidj pgf_b) (ddxdx pgf_a ) (ddxdx pgf_b) =

##### Arguments:
 REAL(dp), INTENT(inout) :: pab_local(:,:) ... REAL(dp), INTENT(in) :: pab(:,:) ... INTEGER, INTENT(in) :: ider ... INTEGER, INTENT(in) :: lxa ... INTEGER, INTENT(in) :: lya ... INTEGER, INTENT(in) :: lza ... INTEGER, INTENT(in) :: lxb ... INTEGER, INTENT(in) :: lyb ... INTEGER, INTENT(in) :: lzb ... INTEGER, INTENT(in) :: o1 ... INTEGER, INTENT(in) :: o2 ... REAL(dp), INTENT(in) :: zeta ... REAL(dp), INTENT(in) :: zetb ...

#### SUBROUTINEprepare_dijadijb(pab_local, pab, ider1, ider2, lxa, lya, lza, lxb, lyb, lzb, o1, o2, zeta, zetb)^

create a new pab_local so that mapping pab_local with pgf_a pgf_b is equivalent to mapping pab with (ddidj pgf_a) . (ddidj pgf_b) (ddxdy pgf_a ) (ddxdy pgf_b) =

##### Arguments:
 REAL(dp), INTENT(inout) :: pab_local(:,:) ... REAL(dp), INTENT(in) :: pab(:,:) ... INTEGER, INTENT(in) :: ider1 ... INTEGER, INTENT(in) :: ider2 ... INTEGER, INTENT(in) :: lxa ... INTEGER, INTENT(in) :: lya ... INTEGER, INTENT(in) :: lza ... INTEGER, INTENT(in) :: lxb ... INTEGER, INTENT(in) :: lyb ... INTEGER, INTENT(in) :: lzb ... INTEGER, INTENT(in) :: o1 ... INTEGER, INTENT(in) :: o2 ... REAL(dp), INTENT(in) :: zeta ... REAL(dp), INTENT(in) :: zetb ...