## Documentation for module helium_common

Independent helium subroutines shared with other modules

source: helium_common.F

#### public Subroutines/Functions:

SUBROUTINE
helium_boxmean_3d (helium, a, b, c)
Calculate the point equidistant from two other points a and b within the helium box - 3D version
Calculate probability distribution of the permutation lengths
Calculate helium radial distribution functions wrt positions given by using the atomic weights given by .
SUBROUTINE
helium_calc_rho (helium)
Calculate helium density distribution functions and store them in helium%rho_inst
helium_com (helium)
Calculate center of mass
Given the atom number and permutation state return the cycle number the atom belongs to.
helium_cycle_of (element, permutation)
Given an element of a permutation return the cycle it belongs to.
helium_eval_expansion (helium, r, rp, tab, cut)
Calculate the pair-product action or energy by evaluating the power series expansion according to Eq. 4.46 in Ceperley 1995.
Given the atom index and permutation state returns .TRUE. if the atom belongs to a winding path, .FASLE. otherwise.
Given the atom number and permutation state return the length of the path this atom belongs to.
SUBROUTINE
helium_pbc (helium, r, enforce)
General PBC routine for helium.
Rotate helium particles in imaginary time by nslices
Set coordinate system for RDF calculations
helium_spline (spl, xx)
...
...

#### SUBROUTINEhelium_boxmean_3d(helium, a, b, c)^

Calculate the point equidistant from two other points a and b within the helium box - 3D version

##### Arguments:
 TYPE(helium_solvent_type), POINTER :: helium helium environment for which REAL(dp), INTENT(in) :: a(3) vectors for which to find the mean within the He box REAL(dp), INTENT(in) :: b(3) vectors for which to find the mean within the He box REAL(dp), INTENT(out) :: c(3) ...

#### SUBROUTINEhelium_calc_plength(helium)^

Calculate probability distribution of the permutation lengths

##### Arguments:
 TYPE(helium_solvent_type), POINTER :: helium ...

#### SUBROUTINEhelium_calc_rdf(helium, centers)^

Calculate helium radial distribution functions wrt positions given by using the atomic weights given by .

##### Arguments:
 TYPE(helium_solvent_type), POINTER :: helium ... REAL(dp), POINTER :: centers(:) ...

#### SUBROUTINEhelium_calc_rho(helium)^

Calculate helium density distribution functions and store them in helium%rho_inst

##### Arguments:
 TYPE(helium_solvent_type), POINTER :: helium ...

#### FUNCTIONhelium_com(helium)^

Calculate center of mass

 Return Value :: REAL(dp)
##### Arguments:
 TYPE(helium_solvent_type), POINTER :: helium ...

#### FUNCTIONhelium_cycle_number(helium, atom_number, permutation)^

Given the atom number and permutation state return the cycle number the atom belongs to.

 Return Value :: INTEGER
##### Arguments:
 TYPE(helium_solvent_type), POINTER :: helium ... INTEGER, INTENT(in) :: atom_number ... INTEGER, POINTER :: permutation(:) ...

#### FUNCTIONhelium_cycle_of(element, permutation)^

Given an element of a permutation return the cycle it belongs to.

 Return Value :: INTEGER
##### Arguments:
 INTEGER, INTENT(in) :: element ... INTEGER, INTENT(in), POINTER :: permutation(:) ...

#### FUNCTIONhelium_eval_expansion(helium, r, rp, tab, cut)^

Calculate the pair-product action or energy by evaluating the power series expansion according to Eq. 4.46 in Ceperley 1995.

 Return Value :: REAL(dp)
##### Arguments:
 TYPE(helium_solvent_type), POINTER :: helium ... REAL(dp), INTENT(in) :: r(3) ... REAL(dp), INTENT(in) :: rp(3) ... TYPE(spline_data_p_type), POINTER :: tab(:,:) ... INTEGER, INTENT(in) :: cut ...

#### FUNCTIONhelium_is_winding(helium, atmidx, pos, permutation)^

Given the atom index and permutation state returns .TRUE. if the atom belongs to a winding path, .FASLE. otherwise.

 Return Value :: LOGICAL
##### Arguments:
 TYPE(helium_solvent_type), POINTER :: helium ... INTEGER, INTENT(in) :: atmidx ... REAL(dp), POINTER :: pos(:,:,:) ... INTEGER, POINTER :: permutation(:) ...

#### FUNCTIONhelium_path_length(helium, atom_number, permutation)^

Given the atom number and permutation state return the length of the path this atom belongs to.

 Return Value :: INTEGER
##### Arguments:
 TYPE(helium_solvent_type), POINTER :: helium ... INTEGER, INTENT(in) :: atom_number ... INTEGER, POINTER :: permutation(:) ...

#### SUBROUTINEhelium_pbc(helium, r, enforce)^

General PBC routine for helium.

##### Arguments:
 TYPE(helium_solvent_type), POINTER :: helium ... REAL(dp), INTENT(inout) :: r(3) ... LOGICAL, OPTIONAL :: enforce ...

#### SUBROUTINEhelium_rotate(helium, nslices)^

Rotate helium particles in imaginary time by nslices

##### Arguments:
 TYPE(helium_solvent_type), POINTER :: helium ... INTEGER, INTENT(in) :: nslices ...

#### SUBROUTINEhelium_set_rdf_coord_system(helium, pint_env)^

Set coordinate system for RDF calculations

##### Arguments:
 TYPE(helium_solvent_type), POINTER :: helium ... TYPE(pint_env_type), POINTER :: pint_env ...

#### FUNCTIONhelium_spline(spl, xx)^

...

 Return Value :: REAL(dp)
##### Arguments:
 TYPE(spline_data_type), POINTER :: spl ... REAL(dp), INTENT(in) :: xx ...

#### FUNCTIONhelium_total_moment_of_inertia(helium)^

 Return Value :: REAL(dp)
##### Arguments:
 TYPE(helium_solvent_type), POINTER :: helium ...

#### FUNCTIONhelium_total_projected_area(helium)^

 Return Value :: REAL(dp)
##### Arguments:
 TYPE(helium_solvent_type), POINTER :: helium ...