Documentation for module xc_rho_set_types

contains the structure

source: xc_rho_set_types.F
Loading...

public Types:

xc_rho_set_type
represent a density, with all the representation and data needed to perform a functional evaluation

public Subroutines/Functions:

allocates and does (minimal) initialization of a rho_set
returns the various attributes of rho_set
releases the given rho_set
updates the given rho set with the density given by rho_r (and rho_g). The rho set will contain the components specified in needs

public Types:

TYPE :: xc_rho_set_type

represent a density, with all the representation and data needed to perform a functional evaluation


INTEGER
:: ref_count reference count (see doc/ReferenceCounting.html)
INTEGER
:: id_nr identification number (unique)
INTEGER,
DIMENSION(2,3) :: local_bounds the part of the 3d array on which the functional is computed
REAL(dp)
:: rho_cutoff ...
REAL(dp)
:: drho_cutoff ...
REAL(dp)
:: tau_cutoff ...
:: owns which components are owned by this structure (and should be deallocated
:: has which components are present and up to date
REAL(dp),
DIMENSION(:,:,:), POINTER :: rho the density
DIMENSION(3) :: drho the gradient of the density (x,y and z direction)
REAL(dp),
DIMENSION(:,:,:), POINTER :: norm_drho the norm of the gradient of the density
REAL(dp),
DIMENSION(:,:,:), POINTER :: rho_1_3 ...
REAL(dp),
DIMENSION(:,:,:), POINTER :: tau the kinetic (KohnSham) part of rho
REAL(dp),
DIMENSION(:,:,:), POINTER :: rhoa ...
REAL(dp),
DIMENSION(:,:,:), POINTER :: rhob ...
DIMENSION(3) :: drhoa ...
DIMENSION(3) :: drhob ...
REAL(dp),
DIMENSION(:,:,:), POINTER :: norm_drhoa ...
REAL(dp),
DIMENSION(:,:,:), POINTER :: norm_drhob ...
REAL(dp),
DIMENSION(:,:,:), POINTER :: drhoa_drhob the scalar product between the gradient of rhoa and the one of rhob
REAL(dp),
DIMENSION(:,:,:), POINTER :: rhoa_1_3 ...
REAL(dp),
DIMENSION(:,:,:), POINTER :: rhob_1_3 ...
REAL(dp),
DIMENSION(:,:,:), POINTER :: tau_a the kinetic (KohnSham) part of rhoa
REAL(dp),
DIMENSION(:,:,:), POINTER :: tau_b the kinetic (KohnSham) part of rhob
REAL(dp),
DIMENSION(:,:,:), POINTER :: laplace_rho ...
REAL(dp),
DIMENSION(:,:,:), POINTER :: laplace_rhoa ...
REAL(dp),
DIMENSION(:,:,:), POINTER :: laplace_rhob ...

SUBROUTINExc_rho_set_create(rho_set, local_bounds, rho_cutoff, drho_cutoff, tau_cutoff)

allocates and does (minimal) initialization of a rho_set

Arguments:
POINTER
:: rho_set the structure to allocate
INTEGER,
INTENT(in)
:: local_bounds(2,3) ...
REAL(dp),
INTENT(in),
OPTIONAL
:: rho_cutoff ...
REAL(dp),
INTENT(in),
OPTIONAL
:: drho_cutoff ...
REAL(dp),
INTENT(in),
OPTIONAL
:: tau_cutoff ...

SUBROUTINExc_rho_set_get(rho_set, can_return_null, rho, drho, norm_drho, rhoa, rhob, norm_drhoa, norm_drhob, drhoa_drhob, rho_1_3, rhoa_1_3, rhob_1_3, laplace_rho, laplace_rhoa, laplace_rhob, drhoa, drhob, rho_cutoff, drho_cutoff, tau_cutoff, tau, tau_a, tau_b, local_bounds)

returns the various attributes of rho_set

Arguments:
POINTER
:: rho_set the object you whant info about
LOGICAL,
INTENT(in),
OPTIONAL
:: can_return_null if true the object returned can be null, if false (the default) it stops with an error if a requested component is not associated
REAL(dp),
OPTIONAL, POINTER
:: rho(:,:,:) ...
OPTIONAL, POINTER
:: drho(:) ...
REAL(dp),
OPTIONAL, POINTER
:: norm_drho(:,:,:) ...
REAL(dp),
OPTIONAL, POINTER
:: rhoa(:,:,:) ...
REAL(dp),
OPTIONAL, POINTER
:: rhob(:,:,:) ...
REAL(dp),
OPTIONAL, POINTER
:: norm_drhoa(:,:,:) ...
REAL(dp),
OPTIONAL, POINTER
:: norm_drhob(:,:,:) ...
REAL(dp),
OPTIONAL, POINTER
:: drhoa_drhob(:,:,:) ...
REAL(dp),
OPTIONAL, POINTER
:: rho_1_3(:,:,:) ...
REAL(dp),
OPTIONAL, POINTER
:: rhoa_1_3(:,:,:) ...
REAL(dp),
OPTIONAL, POINTER
:: rhob_1_3(:,:,:) ...
REAL(dp),
OPTIONAL, POINTER
:: laplace_rho(:,:,:) ...
REAL(dp),
OPTIONAL, POINTER
:: laplace_rhoa(:,:,:) ...
REAL(dp),
OPTIONAL, POINTER
:: laplace_rhob(:,:,:) ...
OPTIONAL, POINTER
:: drhoa(:) ...
OPTIONAL, POINTER
:: drhob(:) ...
REAL(dp),
INTENT(out),
OPTIONAL
:: rho_cutoff ...
REAL(dp),
INTENT(out),
OPTIONAL
:: drho_cutoff ...
REAL(dp),
INTENT(out),
OPTIONAL
:: tau_cutoff ...
REAL(dp),
OPTIONAL, POINTER
:: tau(:,:,:) ...
REAL(dp),
OPTIONAL, POINTER
:: tau_a(:,:,:) ...
REAL(dp),
OPTIONAL, POINTER
:: tau_b(:,:,:) ...
INTEGER,
OPTIONAL, POINTER
:: local_bounds(:,:) ...

SUBROUTINExc_rho_set_release(rho_set, pw_pool)

releases the given rho_set

Arguments:
POINTER
:: rho_set the structure to release
OPTIONAL, POINTER
:: pw_pool the plae where to give back the arrays

SUBROUTINExc_rho_set_update(rho_set, rho_r, rho_g, tau, needs, xc_deriv_method_id, xc_rho_smooth_id, pw_pool)

updates the given rho set with the density given by rho_r (and rho_g). The rho set will contain the components specified in needs

Arguments:
POINTER
:: rho_set the rho_set to update
TYPE(pw_p_type),
POINTER
:: rho_r(:) the new density (in r space)
TYPE(pw_p_type),
POINTER
:: rho_g(:) the new density (in g space, needed for some derivatives)
TYPE(pw_p_type),
POINTER
:: tau(:) ...
INTENT(in)
:: needs the components of rho that are needed
INTEGER,
INTENT(in)
:: xc_deriv_method_id ...
INTEGER,
INTENT(in)
:: xc_rho_smooth_id ...
POINTER
:: pw_pool pool for the allocation of pw and cr3d