Wrapper to handle the evaluation of properties related to this dispersion model
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(structure_type), | intent(in) | :: | mol |
Molecular structure data |
||
class(dispersion_model), | intent(in) | :: | disp |
Dispersion model |
||
type(realspace_cutoff), | intent(in) | :: | cutoff |
Realspace cutoffs |
||
real(kind=wp), | intent(out) | :: | cn(:) |
Coordination number |
||
real(kind=wp), | intent(out) | :: | q(:) |
Atomic partial charges |
||
real(kind=wp), | intent(out) | :: | c6(:,:) |
C6 coefficients |
||
real(kind=wp), | intent(out) | :: | alpha(:) |
Static polarizibilities |
subroutine get_properties(mol, disp, cutoff, cn, q, c6, alpha) !DEC$ ATTRIBUTES DLLEXPORT :: get_properties !> Molecular structure data class(structure_type), intent(in) :: mol !> Dispersion model class(dispersion_model), intent(in) :: disp !> Realspace cutoffs type(realspace_cutoff), intent(in) :: cutoff !> Coordination number real(wp), intent(out) :: cn(:) !> Atomic partial charges real(wp), intent(out) :: q(:) !> C6 coefficients real(wp), intent(out) :: c6(:, :) !> Static polarizibilities real(wp), intent(out) :: alpha(:) integer :: mref real(wp), allocatable :: gwvec(:, :, :), lattr(:, :) mref = maxval(disp%ref) call get_lattice_points(mol%periodic, mol%lattice, cutoff%cn, lattr) call get_coordination_number(mol, lattr, cutoff%cn, disp%rcov, disp%en, cn) call get_charges(mol, q) allocate(gwvec(mref, mol%nat, disp%ncoup)) call disp%weight_references(mol, cn, q, gwvec) call disp%get_atomic_c6(mol, gwvec, c6=c6) call disp%get_polarizibilities(mol, gwvec, alpha=alpha) end subroutine get_properties