Molecules.jl

Library that handles atom structures as XYZ files and properties derived from it.
Author FermiQC
Popularity
13 Stars
Updated Last
4 Months Ago
Started In
July 2021

CI Coverage License

About

This package offers tools to create and manipulate atomic ensamble for molecular simulations.

  • Parsing XYZ data
  • Manipulation of atomic/geometric structure
  • Properties such as center of mass, nuclear repulsion, nuclear dipoles and moments of inertia.

Examples

Read a string and convert into a vector of Atom objects

julia> water = Molecules.parse_string("""
         O        1.2091536548      1.7664118189     -0.0171613972
         H        2.1984800075      1.7977100627      0.0121161719
         H        0.9197881882      2.4580185570      0.6297938830
""")

julia> water[1]
Oxygen Z = 8 M = 15.9990
 Center:    1.2091536548     1.7664118189    -0.0171613972

Masses are taken from standard values, you can input the desired mass values as an extra column after the element symbol.

One can also create a Molecule object, where some information about the number of electrons, charge, and multiplicty are deduced.

julia> water = Molecule("""
         O        1.2091536548      1.7664118189     -0.0171613972
         H        2.1984800075      1.7977100627      0.0121161719
         H        0.9197881882      2.4580185570      0.6297938830
         """)
Molecule:

O    1.209153654800    1.766411818900   -0.017161397200
H    2.198480007500    1.797710062700    0.012116171900
H    0.919788188200    2.458018557000    0.629793883000


Charge: 0   Multiplicity: 1   
Nuclear repulsion:    8.8880641743

julia> Molecules.nuclear_dipole(water)
3-element Vector{Float64}:
 12.7914974341
 18.3870231709
  0.5046188773

julia> Molecules.center_of_mass(water)
3-element Vector{Float64}:
 1.2483188267782848
 1.8068607904101412
 0.020676111103880096

Contribute

Checkout our issue section for a list of desired features and milestone.