General Info

Turbomole - General Info - Main fields
Field Source Sample value
Title Set on Browse calculation publication Sample calculation
Browse Item URL pointing Browse published item https://iochem-bd.iciq.es/browse/handle/100/1722
Program <scalar dictRef=”cc:program”> template Turbomole 5.3.2
Author Username fullname Doe, John
Formula Atom count from final geometry C 6 H 12 Fe 1 N 24
Calculation type Custom logic [1] Geometry optimization Minimum
Method(s) Custom logic [2] DFT (b3-lyp, D3, ri-j, gridsize:m3)
Turbomole - General Info with additional fields (if freeh module exists)
Field Source Sample value
Temperature <scalar dictRef=”cc:temp”> 298.15 K
Pressure <scalar dictRef=”cc:press”> 1.0 atm
../_images/TURBOMOLE_header.png ../_images/TURBOMOLE_header2.png

Atoms and Basis Sets

After header section, our HTML resume will output a xyz coordinates table with current molecule atoms.

Initially its read from coord file

Then we will read all instances from module <module cmlx:templateRef=”atomcoord”> and use last instance as final geometry

For every atom, we will output it’s serial number, atom type, coordinates in angstroms, and basis used.

In geometry optimizations calculations, next to geometry section header there will appear the word (optimized), pointing that this geometry is the last one from all optimization steps and has converged.

If the geometry optimization did not converge, there will appear the phrase (calculation did not converge).

If there are multiple geometries we’ll capture it’s last appearance.


Molecular Info

This section captures molecule additional information not captured on previous section.

Molecular Info - Main fields
Field Source Description
Symmetry Appears in symmetry module. Symmetry information about the molecule (if it exists)

Its value is set:

  • Set to 1 on closed shell calculations
  • On open shell calculations = alpha - beta electrons on occupied orbitals

Readed from:

Geometry restrictions <module cmlx:templateRef=”restrictions”> User defined geometry restrictions
Solvation <module cmlx:templateRef=”cosmo”> Solvation parameters


Population analysis

Data source: <module cmlx:templateRef=’population.analysis’>

Data source: <module cmlx:templateRef=’fit.pointcharges’>

This module will hold Mulliken, Loewdin and Natural population analysis, will also contain (if exists) information from unpaired electrons from D(alpha)-D(beta)


Electrostatic moments

Data source: <module cmlx:templateRef=’electrostatic.moments’>

This module will display charge, dipole and multipole values.


Orbital specification

Data source: <module cmlx:templateRef=’orbitals’>


Final results

Data source: <module cmlx:templateRef=’turbomole.energy’> Taken from last line of energy file

Data source: <module cmlx:templateRef=’energy’>

Data source: <module cmlx:templateRef=’nuclear.repulsion’>

Data source: <module cmlx:templateRef=’zero.point.energy’>


IR spectrum

Data source: <module cmlx:templateRef=’vibrations’>

This module will display JSpecView + JSmol plugins (using javascript libraries) working together to represent molecule IR spectrum.

All information will come from “$vibrational normal modes” and “$vibrational spectrum” sections inside Turbomole control file, in case they are defined on external files such as vib_normal_modes and vibspectrum we must copy them inside control file.



Data source: <module cmlx:templateRef=’excitation’>


string turbo:getCalcType boolean isRestrictedOptimization boolean isOptimization boolean isIncomplete nodeset vibrations nodeset statpt nodeset soes

$isRestrictedOptimization       Exists module <module cmlx:templateRef="restrictions" > ?
$isOptimization                 Exists module <module cmlx:templateRef="convergence.info" > ?
$isIncomplete                   Last module <module cmlx:templateRef="convergence.info" > has a "NO" on converged fields?
$vibrations                     Vibrational frequencies information, headers and displacements. Refer to <module cmlx:templateRef="vibrations" >
$statpt                         statpt parameters section read from control file
$soes                           soes parameters section read from control file

    <xsl:param name="isRestrictedOptimization" as="xs:boolean"/>
    <xsl:param name="isOptimization" as="xs:boolean"/>
    <xsl:param name="isIncomplete" as="xs:boolean"/>
    <xsl:param name="vibrations" as="node()?"/>
    <xsl:param name="statpt" as="node()?"/>
    <xsl:param name="soes" as="node()?"/>

    <xsl:variable name="isMinimum" select="not(contains(replace($vibrations/cml:module[@cmlx:templateRef='spectrum']/array[@dictRef='cc:frequency'],'-0.00',''), '-'))"/>
    <xsl:variable name="isExcitedState">
        <xsl:if test="exists($soes) and number($soes/cml:array[@dictRef='t:irrep']/@size) = 1">
            <xsl:value-of select="$turbo:ExcitedState"/>
            <xsl:text> </xsl:text>
            <xsl:if test="$isRestrictedOptimization or $isOptimization">
                (<xsl:value-of select="$soes/cml:array[@dictRef='t:lowest']"/><xsl:value-of select="$soes/cml:array[@dictRef='t:irrep']"/>)

    <xsl:variable name="isTS" select="
        if(exists($statpt) and number($statpt//cml:scalar[@dictRef='t:itrvec']) > 0) then
    <xsl:variable name="itrvecdsd" select="number($statpt//cml:scalar[@dictRef='t:itrvec'])"/>
    <xsl:variable name="calcType" select="
        if($isRestrictedOptimization) then
        else if($isOptimization) then
            concat($turbo:GeometryOptimization, ' ', $isTS)

    <xsl:variable name="vibration" select="
        if(exists($vibrations) and not($isRestrictedOptimization) and compare($isTS,'') = 0) then
            if($isMinimum) then
        else ''
    <xsl:sequence select="concat($calcType, ' ', $vibration, ' ', $isExcitedState)"/>

string turbo:getMehod nodeset soes nodeset methodScalar

$soes           soes parameters section read from control file <module cmlx:templateRef="soes">
$methodScalar   methods read from control file ($dft|$uhf)   <module cmlx:templateRef="methods">

<xsl:variable name="methodsTmp">
    <xsl:for-each select="$methodScalar">
        <xsl:for-each select="tokenize(.,'\s+')">
            <xsl:element name="method">
                <xsl:value-of select="upper-case(.)"/>
                <xsl:text> </xsl:text>
    <xsl:when test="not(exists($methodScalar))">
        <xsl:sequence select="
            if(exists($soes)) then
        <xsl:variable name="step1">
                <xsl:when test="contains($methodsTmp, 'RIR12') and contains($methodsTmp, 'MP2') and contains($methodsTmp, 'RICC2')">
                    <xsl:text>MP2-F12 </xsl:text>
                    <xsl:value-of select="replace(replace(replace($methodsTmp,'RIR12', ''), 'MP2', ''), 'RICC2', '')"></xsl:value-of>
                <xsl:otherwise><xsl:value-of select="$methodsTmp"/></xsl:otherwise>

        <xsl:variable name="step2">
                <xsl:when test="contains($step1, 'UHF') and contains($step1, 'DFT')">
                    <xsl:text>U-DFT </xsl:text>
                    <xsl:value-of select="replace(replace($step1,'UHF',''), 'DFT','')"/>
                <xsl:otherwise><xsl:value-of select="$step1"/></xsl:otherwise>

        <xsl:variable name="step3">
                <xsl:when test="contains($step2, 'DFT') and exists($soes)">
                    <xsl:value-of select="replace($step2,'DFT', 'TDDFT')"/>
                <xsl:otherwise><xsl:value-of select="$step2"/></xsl:otherwise>

        <xsl:value-of select="$step3"/>