Documentation for module spme

Calculate the electrostatic energy by the Smooth Particle Ewald method

source: spme.F
Loading...

Generic procedures:

get_patch

public Subroutines/Functions:

...
Calculate the forces on particles B for the electrostatic interaction betrween particles A and B
Calculate the electrostatic potential from particles A (charge A) at positions of particles B

Generic procedure get_patch

Calculates local density in a small box

INTENT(in)
:: part(:) × ×
TYPE(cell_type),
POINTER
:: box × ×
POINTER
:: green × ×
INTEGER,
INTENT(in)
:: npts(3) × ×
INTEGER,
INTENT(in)
:: p × ×
REAL(dp),
INTENT(out)
:: rhos(:,:,:) × ×
LOGICAL,
INTENT(in)
:: is_core ×
LOGICAL,
INTENT(in)
:: is_shell ×
LOGICAL,
INTENT(in)
:: unit_charge ×
REAL(dp),
OPTIONAL, POINTER
:: charges(:) ×
REAL(dp),
POINTER
:: charges(:) ×

SUBROUTINEspme_evaluate(ewald_env, ewald_pw, box, particle_set, fg_coulomb, vg_coulomb, pv_g, shell_particle_set, core_particle_set, fgshell_coulomb, fgcore_coulomb, use_virial, charges, atprop)

...

Arguments:
POINTER
:: ewald_env ...
POINTER
:: ewald_pw ...
TYPE(cell_type),
POINTER
:: box ...
INTENT(in)
:: particle_set(:) ...
REAL(dp),
INTENT(out)
:: fg_coulomb(:,:) ...
REAL(dp),
INTENT(out)
:: vg_coulomb ...
REAL(dp),
INTENT(out)
:: pv_g(:,:) ...
OPTIONAL, POINTER
:: shell_particle_set(:) ...
OPTIONAL, POINTER
:: core_particle_set(:) ...
REAL(dp),
INTENT(out),
OPTIONAL
:: fgshell_coulomb(:,:) ...
REAL(dp),
INTENT(out),
OPTIONAL
:: fgcore_coulomb(:,:) ...
LOGICAL,
INTENT(in)
:: use_virial ...
REAL(dp),
OPTIONAL, POINTER
:: charges(:) ...
POINTER
:: atprop ...

SUBROUTINEspme_forces(ewald_env, ewald_pw, box, particle_set_a, charges_a, particle_set_b, charges_b, forces_b)

Calculate the forces on particles B for the electrostatic interaction betrween particles A and B

Arguments:
POINTER
:: ewald_env ...
POINTER
:: ewald_pw ...
TYPE(cell_type),
POINTER
:: box ...
INTENT(in)
:: particle_set_a(:) ...
REAL(dp),
POINTER
:: charges_a(:) ...
INTENT(in)
:: particle_set_b(:) ...
REAL(dp),
POINTER
:: charges_b(:) ...
REAL(dp),
INTENT(inout)
:: forces_b(:,:) ...

SUBROUTINEspme_potential(ewald_env, ewald_pw, box, particle_set_a, charges_a, particle_set_b, potential)

Calculate the electrostatic potential from particles A (charge A) at positions of particles B

Arguments:
POINTER
:: ewald_env ...
POINTER
:: ewald_pw ...
TYPE(cell_type),
POINTER
:: box ...
INTENT(in)
:: particle_set_a(:) ...
REAL(dp),
POINTER
:: charges_a(:) ...
INTENT(in)
:: particle_set_b(:) ...
REAL(dp),
INTENT(inout)
:: potential(:) ...

SUBROUTINEget_patch_a(part, box, green, npts, p, rhos, is_core, is_shell, unit_charge, charges)

Calculates local density in a small box

Arguments:
INTENT(in)
:: part(:) ...
TYPE(cell_type),
POINTER
:: box ...
POINTER
:: green ...
INTEGER,
INTENT(in)
:: npts(3) ...
INTEGER,
INTENT(in)
:: p ...
REAL(dp),
INTENT(out)
:: rhos(:,:,:) ...
LOGICAL,
INTENT(in)
:: is_core ...
LOGICAL,
INTENT(in)
:: is_shell ...
LOGICAL,
INTENT(in)
:: unit_charge ...
REAL(dp),
OPTIONAL, POINTER
:: charges(:) ...

SUBROUTINEget_patch_b(part, box, green, npts, p, rhos, charges)

Calculates local density in a small box

Arguments:
INTENT(in)
:: part(:) ...
TYPE(cell_type),
POINTER
:: box ...
POINTER
:: green ...
INTEGER,
INTENT(in)
:: npts(3) ...
INTEGER,
INTENT(in)
:: p ...
REAL(dp),
INTENT(out)
:: rhos(:,:,:) ...
REAL(dp),
POINTER
:: charges(:) ...