Documentation for module xc_derivatives

...

source: xc_derivatives.F
Loading...

public Subroutines/Functions:

...
...
get the information about the given functional

SUBROUTINExc_functionals_eval(functionals, lsd, rho_set, deriv_set, deriv_order)

...

Arguments:
POINTER
:: functionals a section containing the functional combination to be applied
LOGICAL,
INTENT(in)
:: lsd if a local spin desnity is performed
POINTER
:: rho_set a rho set where all the arguments needed by this functional should be valid (which argument are needed can be found with xc_functional_get_info)
POINTER
:: deriv_set place where to store the functional derivatives (they are added to the derivatives)
INTEGER,
INTENT(in)
:: deriv_order degree of the derivative that should be evalated, if positive all the derivatives up to the given degree are evaluated, if negative only the given degree is requested (but to simplify the code all the derivatives might be calculated, you should ignore them when adding derivatives of various functionals they might contain the derivative of just one functional)

FUNCTIONxc_functionals_get_needs(functionals, lsd, add_basic_components)

...

Return Value ::
Arguments:
POINTER
:: functionals a section containing the functional combination to be applied
LOGICAL,
INTENT(in)
:: lsd if a local spin desnity is performed
LOGICAL,
INTENT(in),
OPTIONAL
:: add_basic_components makes sure that if some gradient combination is needed also the gradient components are requested, and if lsd is true rho_spin is requested. Defaults to false.

SUBROUTINExc_functional_get_info(functional, lsd, reference, shortform, needs, max_deriv, ifunc_name)

get the information about the given functional

Arguments:
POINTER
:: functional the functional you want info about
LOGICAL,
INTENT(in)
:: lsd if you are using lsd or lda
CHARACTER(*),
INTENT(out),
OPTIONAL
:: reference the reference to the acticle where the functional is explained
CHARACTER(*),
INTENT(out),
OPTIONAL
:: shortform the short definition of the functional
INTENT(inout),
OPTIONAL
:: needs the flags corresponding to the inputs needed by this functional are set to true (the flags not needed aren't touched)
INTEGER,
INTENT(out),
OPTIONAL
:: max_deriv the maximal derivative available
INTEGER,
INTENT(in),
OPTIONAL
:: ifunc_name ...