Docs are under construction. Content may be incomplete or change.

tako.vibration Settings

Page type: Reference · Generated from src/script/takoScriptDocs.ts · Verified 2026-07-11T00:00:00.000Z
On this page

This page is generated from code-owned Doxygen-style metadata in src/script/takoScriptDocs.ts. Update that file first, then regenerate this page so runtime capability descriptions, docs, and agent guidance stay aligned.

tako.vibration

Runs molecular finite-difference vibrational analysis and optional IR/Raman spectra.

Signature: await tako.vibration(structure, { calculator, properties, vibrationDisplacementAngstrom, vibrationNfree, spectroscopy })

Theory

  • Molecular vibrations are computed from finite differences of forces around a stationary geometry. The mass-weighted Hessian gives normal-mode frequencies and displacement vectors.
  • IR intensity comes from dipole derivative estimates, while Raman intensity comes from polarizability derivative estimates where the calculator supports them. These are approximate model-dependent spectra.
  • A geometry with large residual forces can produce misleading low-frequency or imaginary modes. Optimize before vibration analysis unless intentionally probing an unstable structure.

Usage Notes

  • Use vibration for finite molecules. For periodic crystals, use tako.phonon instead.
  • Use vibrationNfree: 4 for a more expensive finite-difference stencil when numerical stability matters.
  • Request only the spectroscopy channels needed for the report to avoid extra derivative work.

Settings

SettingTypeDefaultValuesUnitValidationDescription
calculatorcalculatorRequired for calculator-backed operations; validate the operation, structure element coverage, and requested properties before executionCalculator object from tako.calculator.gxtb(...), gfn2(...), mlip(...), or dft(...). It controls the level of theory, charge/spin where supported, runtime assets, property availability, and the synchronous supported-element list used by TakoScript and the UI.
propertiespropertieslevel-dependent normalization; MLIP: ['energy', 'forces']; GFN2: ['energy', 'forces', 'charges', 'dos', 'pdos']energy, forces, stress, dos, pdos, charges, electronDensity, chargeDensity, nci, molden, wfn, hdf5, orbitals, spinDensity, esp, densityDerivatives, fukui, elfUnknown names are removed and energy/forces are reinserted. Vibration response channels are selected with spectroscopy; normalized electronic property names do not create single-point post-processing.Shared calculator property request retained in calculation settings. This setting does not request IR/Raman and charges, DOS/PDOS, density, NCI, or WFN are not returned by the vibration operation.
vibrationDisplacementAngstromnumber0.01Finite-difference displacement in A. Too small amplifies force noise; too large samples anharmonic curvature.
vibrationNfreeenum22, 4Finite-difference stencil. 2 is cheaper central difference; 4 uses more force evaluations for a higher-order estimate.
spectroscopyarray['frequencies', 'infrared', 'raman']frequencies, infrared, ramanRequested vibrational outputs. frequencies gives modes, infrared adds IR intensities, and raman adds Raman activity where supported.
thermoTemperatureKnumber298.15Evaluation temperature for the thermochemistry payload (ideal-gas G/H/S for molecules, harmonic U/S/F for periodic structures).
thermoPressurePanumber100000Ideal-gas reference pressure in Pa (1 bar) for the translational entropy and G.
thermoSymmetryNumbernumber1Rotational symmetry number σ for the ideal-gas rotational entropy (e.g. H2O 2, NH3 3, benzene 12).

Example

const molecule = await tako.input("input/water.extxyz");
const calculator = tako.calculator.gfn2({ dispersion: "d4" });
const result = await tako.vibration(molecule, {
  calculator,
  vibrationDisplacementAngstrom: 0.01,
  vibrationNfree: 2,
  spectroscopy: ["frequencies", "infrared"],
});
await tako.output("output/vibrations.json", result);

Result

Returned vibration object with mode frequencies, Cartesian displacement vectors, harmonic zero-point energy, and optional GFN2 IR/Raman response payloads. Interface workspace artifacts are derived outside this returned object.

FieldTypeUnitAvailabilityDescription
kind”vibration”Every successful resultRuntime result discriminator.
level_of_theorystringEvery successful resultNormalized calculator level used for every displacement.
engine”gfn2” | “mlip”Every successful resultCalculator engine family.
vibrationsobjectEvery successful resultNormal-mode result from the force finite-difference pass.
vibrations.frequencies_cm_invnumber[]cm^-1Every successful resultSigned real frequency list; imaginary components are represented as negative numbers.
vibrations.frequency_components{ real: number, imaginary: number }[]cm^-1Every successful resultReal and imaginary frequency components without collapsing the sign convention.
vibrations.energies_hartree{ real: number, imaginary: number }[]HartreeEvery successful resultComplex harmonic quantum energy associated with each mode.
vibrations.zero_point_energy_hartreenumberHartreeEvery successful resultHarmonic zero-point energy returned by the vibration backend.
vibrations.zero_point_energy_evnumbereVEvery successful resultThe same harmonic zero-point energy converted to electronvolts.
vibrations.modesnumber[mode][atom][3]Every successful resultCartesian displacement vectors M^-1/2 e derived from the normalized mass-weighted eigenvectors, in input atom order; fixed atoms have zero vectors.
thermochemistryobjectWhen the thermochemistry post-processing succeeds (molecular: ideal-gas G/H/S; periodic: harmonic U/S/F)Free thermochemistry computed from the vibrational modes at the configured temperature, pressure, and symmetry number, including a 50–1000 K sweep.
thermochemistry.modelstringWith thermochemistry’idealGas’ for molecules, ‘harmonic’ for periodic structures.
thermochemistry.temperature_knumberKWith thermochemistryEvaluation temperature for the headline values.
thermochemistry.zero_point_energy_evnumbereVWith thermochemistryHarmonic zero-point energy.
thermochemistry.internal_energy_evnumbereVWith thermochemistryInternal energy U(T) including the electronic energy.
thermochemistry.enthalpy_evnumbereVIdeal-gas modelEnthalpy H(T) = U + kB·T.
thermochemistry.entropy_j_per_mol_knumberJ·mol⁻¹·K⁻¹With thermochemistryEntropy S(T); ideal gas includes translation, rotation, vibration, and electronic spin terms at the configured pressure.
thermochemistry.gibbs_energy_evnumbereVIdeal-gas modelGibbs free energy G(T, P) = H − T·S.
thermochemistry.helmholtz_energy_evnumbereVHarmonic modelHelmholtz free energy F(T) = U − T·S.
thermochemistry.imaginary_modesintegerWith thermochemistryNumber of imaginary modes ignored in the sums; nonzero means the geometry is not a clean minimum.
thermochemistry.sweepobjectWith thermochemistrytemperatures_k plus gibbs_energy_ev (ideal gas) or helmholtz_energy_ev (harmonic) and entropy_j_per_mol_k arrays over 50–1000 K.
infraredobjectOnly when IR was requested and a GFN2 response calculation returned itInfrared finite-difference response payload; omitted for MLIP.
infrared.vibrationsvibration objectWith infrared payloadMode data computed during the dipole-response finite-difference pass.
infrared.intensities_aunumber[](D/Å)^2 amu^-1With infrared payloadPer-mode ASE-convention infrared intensities. The field name is a historical alias and does not mean the stored values remain in raw atomic units.
infrared.static_dipole_aunumbere a0With infrared payloadNorm of the undisplaced molecular dipole vector in atomic units.
infrared.max_force_hartree_per_bohrnumberHartree Bohr^-1With infrared payloadMaximum force diagnostic at the undisplaced response geometry.
ramanobjectOnly when Raman was requested and a GFN2 response calculation returned itFinite-field polarizability-response payload; omitted for MLIP.
raman.vibrationsvibration objectWith Raman payloadMode data computed during the polarizability-response finite-difference pass.
raman.activitiesnumber[]Å^4 amu^-1With Raman payloadPer-mode Placzek Raman activities using zero weight for the antisymmetric anisotropy term.
raman.absolute_intensitiesnumber[]Å^4 amu^-1With Raman payloadCurrent runtime alias of the same zero-antisymmetric-weight Raman activities; it is not a temperature- or laser-dependent experimental intensity.
raman.invariants{ alpha2: number, gamma2: number, delta2: number }[]raw atomic-unit squared derivative invariantWith Raman payloadPer-mode isotropic, symmetric-anisotropic, and antisymmetric polarizability-derivative invariants before the activity conversion.
raman.invariants[].alpha2numberraw atomic-unit squared derivative invariantWith Raman payloadSquared isotropic mode-polarizability derivative before conversion.
raman.invariants[].gamma2numberraw atomic-unit squared derivative invariantWith Raman payloadSquared symmetric-anisotropic mode-polarizability derivative before conversion.
raman.invariants[].delta2numberraw atomic-unit squared derivative invariantWith Raman payloadSquared antisymmetric mode-polarizability derivative before conversion; the current activity arrays assign it zero weight.

Errors and Promise Behavior

  • Rejects if the normalized structure or calculator input cannot be evaluated for the required displaced geometries.
  • Fails when a displaced force, dipole, or polarizability evaluation fails; partial response data is not promoted to a successful result.
  • IR and Raman requested with an MLIP are logged and omitted rather than returned as zero-valued spectra.