Cartesius Library
particles Module Reference

Data Types

type  interatomicdistance
 
type  particle
 
type  particle_ptr
 
type  particlearray
 

Functions/Subroutines

subroutine writesomepropertytoparticle (someParticle, someName, someModus, someValue, pDeallocator)
 
subroutine getpropertybykeyword (someParticle, propertyName, prop)
 Returns the attribute of the atom with the matching property name. More...
 
class(*) function, pointer getpropertybykeyword_fn (someParticle, propertyName)
 Same as above, but can be used as a function. More...
 
subroutine removepropertybykeyword (someParticle, propertyName)
 Deallocates a property in the attribute list if it exists. If it doesn't, does nothing. More...
 
subroutine purgepropertybykeyword (someParticle, propertyName)
 Deallocates a property in the attribute list if it exists. If it doesn't, does nothing. More...
 
type(particle) function, pointer getparticlefromsystem (system, particleID)
 
type(node) function, pointer getparticlesystem (someParticle)
 
real function, pointer getmadelungpotential (someParticle)
 
type(particle) function, pointer getparticlepreimage (someParticle)
 Wrapper to get the preimage of a symmetric particle. More...
 
type(list) function, pointer getparticleimages (someParticle)
 
type(point) function, pointer getparticlepoint (someParticle)
 
integer function, pointer getatomicnumber (someParticle)
 
integer function, pointer getnumberofatoms (someParticle)
 
integer function, pointer getnumberofelectrons (someParticle)
 
real function, pointer getweight (someParticle)
 
real function, pointer getcorecharge (someParticle)
 
real function, pointer getelectronaffinity (someParticle)
 
real function, pointer getpotentialofionization (someParticle)
 
type(chargedistribution) function, pointer getchargeparameters (someParticle)
 
type(lennardjonesparameters) function, pointer getlennardjonesparameters (someParticle)
 
real function getatomicmass (p)
 
subroutine particlelisttoarrayptr (particle_list, particle_array)
 
subroutine particlelisttoarray (particle_list, particle_array)
 
subroutine particlearrayptrtolist (particle_array, particle_list)
 
subroutine particlearraytolist (particle_array, particle_list)
 
real function distancebetweenparticles (particle1, particle2)
 Returns the distance between particles 1 ans 2. More...
 
real function anglebetweenthreeparticles (particle1, particle2, particle3)
 Returns the angle created by particles 123. More...
 
subroutine geteuleranglesforrotationconnectedwithlocalframe (atom1, atom2, alpha, beta, gamma)
 Returns Euler angles (ZYZ) which rotate a Z unit vector to align with bond atom1 -> atom2. More...
 
subroutine getcayleykleinforrotationconnectedtolocalframe (atom1, atom2, ck_a, ck_b)
 
subroutine geteuleranglesforrotationconnectedwithparticle (someParticle, alpha, beta, gamma)
 
subroutine getcayleykleinforrotationconnectedwithparticle (someParticle, a, b)
 
logical function isatom (CurrentParticle)
 
logical function isconditionsatisfiedforparticle (CurrentParticle)
 
logical function iscondition_0_satisfiedforparticle (CurrentParticle)
 
logical function iscondition_1_satisfiedforparticle (CurrentParticle, a)
 
logical function issomethingtrueaboutparticle (CurrentParticle, pSomething)
 
subroutine dosomethingtoparticle (CurrentParticle)
 
subroutine sumparticlepropertyrecursively (someParticle, summ)
 
subroutine sumparticleproperty (someParticle, summ)
 
subroutine getatomarrayptr (tree, atomArray)
 Returns a particle_ptr array of all atoms in the given tree. More...
 
subroutine getatomarray (tree, atomArray)
 Returns a particleArray variable containing all atoms in the given tree. More...
 
subroutine getatomlist (tree, atomList)
 Returns a list of all atoms in the given tree. More...
 
subroutine getatomlist_node (tree, arg)
 
type(particle) function, pointer particle_from_polymorphic (x)
 Converts a polymorphic pointer to a particle pointer if possible, else returns a null-pointer. More...
 
type(particle_ptr) function, pointer particle_ptr_from_polymorphic (x)
 Converts a polymorphic pointer to a particle pointer if possible, else returns a null-pointer. More...
 
subroutine searchatoms (someParticle, atoms)
 
subroutine getatoms (someParticle, atoms)
 
subroutine searchdatoms (someParticle, atoms)
 
subroutine getdatom (someParticle, atoms)
 
subroutine searchfatoms (someParticle, atoms)
 
subroutine getfatom (someParticle, atoms)
 
subroutine getinteratomicdistances (molecule, interatomicDistances)
 
subroutine searchbondingatoms (atoms, interatomicDistances, bondingAtoms)
 
real function, dimension(3) get_connecting_vector_coeffs (atom1, atom2)
 
real function, dimension(3) get_connecting_unitvector_coeffs (atom1, atom2)
 
type(vector) function, pointer getunitvectorofbondconnectingatoms (atom1, atom2)
 
subroutine typicalbondlenghts (n, k, BondLenght)
 
subroutine sum2particlespropertyrecursively (someParticle1, someParticle2, summ)
 
subroutine sum2particlesproperty (someParticle1, someParticle2, summ)
 
type(unitcell) function, pointer getunitcell (system)
 Return pointer to unit cell of a crystal. More...
 
subroutine writegeometry_poscar (system)
 
subroutine deallocate_particle (pParticle)
 Deallocates all fields of the given particle to prevent memory leaks. More...
 
subroutine deallocate_particlearray (pParticleArray)
 Deallocates a particleArray. More...
 
subroutine deallocate_interatomicdistance (pInteratomicDistance)
 Dealloctaes a variable of type :: interatomicDistance. Does not deallocate the particles it points to. More...
 

Variables

real, parameter, public distance_cc = 1.8
 
real, parameter, public distance_nn = 0.0
 
real, parameter, public distance_oo = 0.0
 
real, parameter, public distance_ch = 1.094
 
real, parameter, public distance_nh = 0.0
 
real, parameter, public distance_oh = 0.0
 
real, parameter, public distance_cn = 1.474
 
real, parameter, public distance_co = 1.425
 
real, parameter, public distance_no = 0.0
 
real, parameter, public angle_hch = 109.47*Pi/180
 
real, parameter, public angle_ccc = 109.47*Pi/180
 

Function/Subroutine Documentation

◆ anglebetweenthreeparticles()

real function particles::anglebetweenthreeparticles ( type(particle), intent(inout)  particle1,
type(particle), intent(inout)  particle2,
type(particle), intent(inout)  particle3 
)

Returns the angle created by particles 123.

Here is the call graph for this function:

◆ deallocate_interatomicdistance()

subroutine particles::deallocate_interatomicdistance ( class(*), intent(inout), pointer  pInteratomicDistance)

Dealloctaes a variable of type :: interatomicDistance. Does not deallocate the particles it points to.

◆ deallocate_particle()

subroutine particles::deallocate_particle ( class(*), intent(inout), pointer  pParticle)

Deallocates all fields of the given particle to prevent memory leaks.

◆ deallocate_particlearray()

subroutine particles::deallocate_particlearray ( class(*), intent(inout), pointer  pParticleArray)

Deallocates a particleArray.

◆ distancebetweenparticles()

real function particles::distancebetweenparticles ( type(particle), intent(inout)  particle1,
type(particle), intent(inout)  particle2 
)

Returns the distance between particles 1 ans 2.

Here is the call graph for this function:

◆ dosomethingtoparticle()

subroutine particles::dosomethingtoparticle ( type(particle), intent(in)  CurrentParticle)

◆ get_connecting_unitvector_coeffs()

real function, dimension(3) particles::get_connecting_unitvector_coeffs ( type(particle), intent(in)  atom1,
type(particle), intent(in)  atom2 
)
Here is the call graph for this function:

◆ get_connecting_vector_coeffs()

real function, dimension(3) particles::get_connecting_vector_coeffs ( type(particle), intent(in)  atom1,
type(particle), intent(in)  atom2 
)
Here is the call graph for this function:

◆ getatomarray()

subroutine particles::getatomarray ( type(node), intent(inout)  tree,
type(particlearray), intent(out)  atomArray 
)

Returns a particleArray variable containing all atoms in the given tree.

Here is the call graph for this function:

◆ getatomarrayptr()

subroutine particles::getatomarrayptr ( type(node), intent(inout)  tree,
type(particle_ptr), dimension(:), intent(out), allocatable  atomArray 
)

Returns a particle_ptr array of all atoms in the given tree.

Here is the call graph for this function:

◆ getatomicmass()

real function particles::getatomicmass ( type(particle), intent(in)  p)
Here is the call graph for this function:

◆ getatomicnumber()

integer function, pointer particles::getatomicnumber ( type(particle someParticle)

◆ getatomlist()

subroutine particles::getatomlist ( type(node), intent(inout)  tree,
type(list), intent(out), target  atomList 
)

Returns a list of all atoms in the given tree.

Here is the call graph for this function:

◆ getatomlist_node()

subroutine particles::getatomlist_node ( type(node), intent(inout)  tree,
class(*), intent(inout), pointer  arg 
)
Here is the call graph for this function:

◆ getatoms()

subroutine particles::getatoms ( type(node), intent(inout)  someParticle,
class(*), intent(inout), pointer  atoms 
)
Here is the call graph for this function:

◆ getcayleykleinforrotationconnectedtolocalframe()

subroutine particles::getcayleykleinforrotationconnectedtolocalframe ( type(particle), intent(in)  atom1,
type(particle), intent(in)  atom2,
complex, intent(out)  ck_a,
complex, intent(out)  ck_b 
)
Here is the call graph for this function:

◆ getcayleykleinforrotationconnectedwithparticle()

subroutine particles::getcayleykleinforrotationconnectedwithparticle ( type(particle), intent(inout)  someParticle,
complex, intent(out)  a,
complex, intent(out)  b 
)
Here is the call graph for this function:

◆ getchargeparameters()

type(chargedistribution) function, pointer particles::getchargeparameters ( type(particle someParticle)
Here is the call graph for this function:

◆ getcorecharge()

real function, pointer particles::getcorecharge ( type(particle someParticle)

◆ getdatom()

subroutine particles::getdatom ( type(node), intent(inout)  someParticle,
class(*), intent(inout), pointer  atoms 
)
Here is the call graph for this function:

◆ getelectronaffinity()

real function, pointer particles::getelectronaffinity ( type(particle someParticle)

◆ geteuleranglesforrotationconnectedwithlocalframe()

subroutine particles::geteuleranglesforrotationconnectedwithlocalframe ( type(particle), intent(in)  atom1,
type(particle), intent(in)  atom2,
real, intent(out)  alpha,
real, intent(out)  beta,
real, intent(out)  gamma 
)

Returns Euler angles (ZYZ) which rotate a Z unit vector to align with bond atom1 -> atom2.

Here is the call graph for this function:

◆ geteuleranglesforrotationconnectedwithparticle()

subroutine particles::geteuleranglesforrotationconnectedwithparticle ( type(particle), intent(inout)  someParticle,
real, intent(out)  alpha,
real, intent(out)  beta,
real, intent(out)  gamma 
)
Here is the call graph for this function:

◆ getfatom()

subroutine particles::getfatom ( type(node), intent(inout)  someParticle,
class(*), intent(inout), pointer  atoms 
)
Here is the call graph for this function:

◆ getinteratomicdistances()

subroutine particles::getinteratomicdistances ( type(node), intent(inout)  molecule,
type(interatomicdistance), dimension(:), intent(out), allocatable  interatomicDistances 
)
Here is the call graph for this function:

◆ getlennardjonesparameters()

type(lennardjonesparameters) function, pointer particles::getlennardjonesparameters ( type(particle someParticle)
Here is the call graph for this function:

◆ getmadelungpotential()

real function, pointer particles::getmadelungpotential ( type(particle someParticle)

◆ getnumberofatoms()

integer function, pointer particles::getnumberofatoms ( type(particle someParticle)

◆ getnumberofelectrons()

integer function, pointer particles::getnumberofelectrons ( type(particle someParticle)

◆ getparticlefromsystem()

type(particle) function, pointer particles::getparticlefromsystem ( type(node), intent(inout)  system,
character(len=*), intent(in)  particleID 
)
Here is the call graph for this function:

◆ getparticleimages()

type(list) function, pointer particles::getparticleimages ( type(particle someParticle)
Here is the call graph for this function:

◆ getparticlepoint()

type(point) function, pointer particles::getparticlepoint ( type(particle someParticle)
Here is the call graph for this function:

◆ getparticlepreimage()

type(particle) function, pointer particles::getparticlepreimage ( type(particle someParticle)

Wrapper to get the preimage of a symmetric particle.

Here is the call graph for this function:

◆ getparticlesystem()

type(node) function, pointer particles::getparticlesystem ( type(particle someParticle)
Here is the call graph for this function:

◆ getpotentialofionization()

real function, pointer particles::getpotentialofionization ( type(particle someParticle)

◆ getpropertybykeyword()

subroutine particles::getpropertybykeyword ( type(particle), intent(in)  someParticle,
character(len=*), intent(in)  propertyName,
class(*), intent(inout), pointer  prop 
)

Returns the attribute of the atom with the matching property name.

Here is the call graph for this function:

◆ getpropertybykeyword_fn()

class(*) function, pointer particles::getpropertybykeyword_fn ( class(particle), intent(in)  someParticle,
character(len=*), intent(in)  propertyName 
)

Same as above, but can be used as a function.

Here is the call graph for this function:

◆ getunitcell()

type(unitcell) function, pointer particles::getunitcell ( type(node), intent(in)  system)

Return pointer to unit cell of a crystal.

Here is the call graph for this function:

◆ getunitvectorofbondconnectingatoms()

type(vector) function, pointer particles::getunitvectorofbondconnectingatoms ( type(particle atom1,
type(particle atom2 
)
Here is the call graph for this function:

◆ getweight()

real function, pointer particles::getweight ( type(particle someParticle)

◆ isatom()

logical function particles::isatom ( type(particle), intent(in)  CurrentParticle)
Here is the call graph for this function:

◆ iscondition_0_satisfiedforparticle()

logical function particles::iscondition_0_satisfiedforparticle ( type(particle), intent(in)  CurrentParticle)
Here is the call graph for this function:

◆ iscondition_1_satisfiedforparticle()

logical function particles::iscondition_1_satisfiedforparticle ( type(particle), intent(in)  CurrentParticle,
class(*), intent(in)  a 
)
Here is the call graph for this function:

◆ isconditionsatisfiedforparticle()

logical function particles::isconditionsatisfiedforparticle ( type(particle), intent(in)  CurrentParticle)
Here is the call graph for this function:

◆ issomethingtrueaboutparticle()

logical function particles::issomethingtrueaboutparticle ( type(particle), intent(in)  CurrentParticle,
procedure(dosomethingtoparticle), intent(in), pointer  pSomething 
)

◆ particle_from_polymorphic()

type(particle) function, pointer particles::particle_from_polymorphic ( class(*), intent(in), pointer  x)

Converts a polymorphic pointer to a particle pointer if possible, else returns a null-pointer.

◆ particle_ptr_from_polymorphic()

type(particle_ptr) function, pointer particles::particle_ptr_from_polymorphic ( class(*), intent(in), pointer  x)

Converts a polymorphic pointer to a particle pointer if possible, else returns a null-pointer.

◆ particlearrayptrtolist()

subroutine particles::particlearrayptrtolist ( type(particle_ptr), dimension(:), intent(in)  particle_array,
type(list), intent(out)  particle_list 
)
Here is the call graph for this function:

◆ particlearraytolist()

subroutine particles::particlearraytolist ( type(particlearray), intent(in)  particle_array,
type(list), intent(out)  particle_list 
)
Here is the call graph for this function:

◆ particlelisttoarray()

subroutine particles::particlelisttoarray ( type(list), intent(inout)  particle_list,
type(particlearray), intent(out)  particle_array 
)
Here is the call graph for this function:

◆ particlelisttoarrayptr()

subroutine particles::particlelisttoarrayptr ( type(list), intent(inout)  particle_list,
type(particle_ptr), dimension(:), intent(out), allocatable  particle_array 
)
Here is the call graph for this function:

◆ purgepropertybykeyword()

subroutine particles::purgepropertybykeyword ( class(particle), intent(in)  someParticle,
character(len=*), intent(in)  propertyName 
)

Deallocates a property in the attribute list if it exists. If it doesn't, does nothing.

Here is the call graph for this function:

◆ removepropertybykeyword()

subroutine particles::removepropertybykeyword ( class(particle), intent(in)  someParticle,
character(len=*), intent(in)  propertyName 
)

Deallocates a property in the attribute list if it exists. If it doesn't, does nothing.

Here is the call graph for this function:

◆ searchatoms()

subroutine particles::searchatoms ( type(node), intent(inout)  someParticle,
class(*), intent(inout), pointer  atoms 
)
Here is the call graph for this function:

◆ searchbondingatoms()

subroutine particles::searchbondingatoms ( type(particlearray), intent(in)  atoms,
type(interatomicdistance), dimension(:), intent(in)  interatomicDistances,
type(particle_ptr), dimension(:,:), intent(out), allocatable  bondingAtoms 
)
Here is the call graph for this function:

◆ searchdatoms()

subroutine particles::searchdatoms ( type(node), intent(inout)  someParticle,
class(*), intent(inout), pointer  atoms 
)
Here is the call graph for this function:

◆ searchfatoms()

subroutine particles::searchfatoms ( type(node), intent(inout)  someParticle,
class(*), intent(inout), pointer  atoms 
)
Here is the call graph for this function:

◆ sum2particlesproperty()

subroutine particles::sum2particlesproperty ( type(node), intent(inout)  someParticle1,
type(node), intent(inout)  someParticle2,
class(*), intent(inout), pointer  summ 
)

◆ sum2particlespropertyrecursively()

subroutine particles::sum2particlespropertyrecursively ( type(node), intent(inout)  someParticle1,
type(node), intent(inout)  someParticle2,
class(*), intent(inout), pointer  summ 
)
Here is the call graph for this function:

◆ sumparticleproperty()

subroutine particles::sumparticleproperty ( type(node), intent(inout)  someParticle,
class(*), intent(inout), pointer  summ 
)
Here is the call graph for this function:

◆ sumparticlepropertyrecursively()

subroutine particles::sumparticlepropertyrecursively ( type(node), intent(inout)  someParticle,
class(*), intent(inout), pointer  summ 
)
Here is the call graph for this function:

◆ typicalbondlenghts()

subroutine particles::typicalbondlenghts ( integer, intent(in)  n,
integer, intent(in)  k,
real, intent(out)  BondLenght 
)

◆ writegeometry_poscar()

subroutine particles::writegeometry_poscar ( type(node), intent(inout)  system)
Here is the call graph for this function:

◆ writesomepropertytoparticle()

subroutine particles::writesomepropertytoparticle ( class(particle), intent(inout)  someParticle,
character(len=*), intent(in)  someName,
character(1), intent(in)  someModus,
class(*), intent(in), pointer  someValue,
procedure(deallocatorprocedure), intent(in), optional, pointer  pDeallocator 
)
Here is the call graph for this function:

Variable Documentation

◆ angle_ccc

real, parameter, public particles::angle_ccc = 109.47*Pi/180

◆ angle_hch

real, parameter, public particles::angle_hch = 109.47*Pi/180

◆ distance_cc

real, parameter, public particles::distance_cc = 1.8

◆ distance_ch

real, parameter, public particles::distance_ch = 1.094

◆ distance_cn

real, parameter, public particles::distance_cn = 1.474

◆ distance_co

real, parameter, public particles::distance_co = 1.425

◆ distance_nh

real, parameter, public particles::distance_nh = 0.0

◆ distance_nn

real, parameter, public particles::distance_nn = 0.0

◆ distance_no

real, parameter, public particles::distance_no = 0.0

◆ distance_oh

real, parameter, public particles::distance_oh = 0.0

◆ distance_oo

real, parameter, public particles::distance_oo = 0.0