## Documentation for module pw_methods

...

source: pw_methods.F

#### public Subroutines/Functions:

SUBROUTINE
pw_axpy (pw1, pw2, alpha)
pw2 = alpha*pw1 + pw2 alpha defaults to 1
SUBROUTINE
pw_copy (pw1, pw2)
copy a pw type variable
SUBROUTINE
pw_derive (pw, n)
Calculate the derivative of a plane wave vector
SUBROUTINE
pw_dr2 (pw, pwdr2, i, j)
Calculate the tensorial 2nd derivative of a plane wave vector
SUBROUTINE
pw_dr2_gg (pw, pwdr2_gg, i, j)
Calculate the tensorial 2nd derivative of a plane wave vector and divides by |G|^2. pwdr2_gg(G=0) is put to zero.
pw_integral_a2b (pw1, pw2)
...
pw_integral_ab (pw1, pw2)
Calculate integral over unit cell for functions in plane wave basis only returns the real part of it ......
pw_integrate_function (fun, isign, oprt)
...
SUBROUTINE
pw_scale (pw, a)
multiplies pw coeffs with a number
SUBROUTINE
pw_set (pw, values)
Initialize pw values using values from a real array data, which might be defined on a smaller grid than pw but which is contained in it
SUBROUTINE
pw_smoothing (pw, ecut, sigma)
Multiplies a G-space function with a smoothing factor of the form f(|G|) = exp((ecut - G^2)/sigma)/(1+exp((ecut - G^2)/sigma))
SUBROUTINE
pw_structure_factor (sf, r)
Calculate the structure factor for point r
SUBROUTINE
pw_transfer (pw1, pw2, debug)
Generalize copy of pw types
SUBROUTINE
pw_write (pw, unit_nr)
writes a small description of the actual grid (change to output the data as cube file, maybe with an optional long_description arg?)
SUBROUTINE
pw_zero (pw)
Set values of a pw type to zero

#### SUBROUTINEpw_axpy(pw1, pw2, alpha)^

pw2 = alpha*pw1 + pw2 alpha defaults to 1

##### Arguments:
 TYPE(pw_type), INTENT(in) :: pw1 ... TYPE(pw_type), INTENT(inout) :: pw2 ... REAL(dp), INTENT(in), OPTIONAL :: alpha ...

#### SUBROUTINEpw_copy(pw1, pw2)^

copy a pw type variable

##### Arguments:
 TYPE(pw_type), INTENT(in) :: pw1 ... TYPE(pw_type), INTENT(inout) :: pw2 ...

#### SUBROUTINEpw_derive(pw, n)^

Calculate the derivative of a plane wave vector

##### Arguments:
 TYPE(pw_type), INTENT(inout) :: pw ... INTEGER, INTENT(in) :: n(3) ...

#### SUBROUTINEpw_dr2(pw, pwdr2, i, j)^

Calculate the tensorial 2nd derivative of a plane wave vector

##### Arguments:
 TYPE(pw_type), INTENT(in) :: pw ... TYPE(pw_type), INTENT(inout) :: pwdr2 ... INTEGER, INTENT(in) :: i ... INTEGER, INTENT(in) :: j ...

#### SUBROUTINEpw_dr2_gg(pw, pwdr2_gg, i, j)^

Calculate the tensorial 2nd derivative of a plane wave vector and divides by |G|^2. pwdr2_gg(G=0) is put to zero.

##### Arguments:
 TYPE(pw_type), INTENT(in) :: pw ... TYPE(pw_type), INTENT(inout) :: pwdr2_gg ... INTEGER, INTENT(in) :: i ... INTEGER, INTENT(in) :: j ...

#### FUNCTIONpw_integral_a2b(pw1, pw2)^

...

 Return Value :: REAL(dp)
##### Arguments:
 TYPE(pw_type), INTENT(in) :: pw1 ... TYPE(pw_type), INTENT(in) :: pw2 ...

#### FUNCTIONpw_integral_ab(pw1, pw2)^

Calculate integral over unit cell for functions in plane wave basis only returns the real part of it ......

 Return Value :: REAL(dp)
##### Arguments:
 TYPE(pw_type), INTENT(in) :: pw1 ... TYPE(pw_type), INTENT(in) :: pw2 ...

#### FUNCTIONpw_integrate_function(fun, isign, oprt)^

...

 Return Value :: REAL(dp)
##### Arguments:
 TYPE(pw_type), INTENT(in) :: fun ... INTEGER, INTENT(in), OPTIONAL :: isign ... CHARACTER(*), INTENT(in), OPTIONAL :: oprt ...

#### SUBROUTINEpw_scale(pw, a)^

multiplies pw coeffs with a number

##### Arguments:
 TYPE(pw_type), INTENT(inout) :: pw ... REAL(dp), INTENT(in) :: a ...

#### SUBROUTINEpw_set(pw, values)^

Initialize pw values using values from a real array data, which might be defined on a smaller grid than pw but which is contained in it

##### Arguments:
 TYPE(pw_type), INTENT(inout) :: pw the pw to initialize REAL(dp), INTENT(in), POINTER :: values(:,:,:) the array holding the input data

#### SUBROUTINEpw_smoothing(pw, ecut, sigma)^

Multiplies a G-space function with a smoothing factor of the form f(|G|) = exp((ecut - G^2)/sigma)/(1+exp((ecut - G^2)/sigma))

##### Arguments:
 TYPE(pw_type), INTENT(inout) :: pw ... REAL(dp), INTENT(in) :: ecut ... REAL(dp), INTENT(in) :: sigma ...

#### SUBROUTINEpw_structure_factor(sf, r)^

Calculate the structure factor for point r

##### Arguments:
 TYPE(pw_type), INTENT(inout) :: sf ... REAL(dp), INTENT(in) :: r(:) ...

#### SUBROUTINEpw_transfer(pw1, pw2, debug)^

Generalize copy of pw types

##### Arguments:
 TYPE(pw_type), INTENT(in), TARGET :: pw1 ... TYPE(pw_type), INTENT(inout), TARGET :: pw2 ... LOGICAL, INTENT(in), OPTIONAL :: debug ...

#### SUBROUTINEpw_write(pw, unit_nr)^

writes a small description of the actual grid (change to output the data as cube file, maybe with an optional long_description arg?)

##### Arguments:
 TYPE(pw_type), INTENT(in) :: pw the pw data to output INTEGER, INTENT(in) :: unit_nr the unit to output to

#### SUBROUTINEpw_zero(pw)^

Set values of a pw type to zero

##### Arguments:
 TYPE(pw_type), INTENT(inout) :: pw ...