Visualize the LUMO state of a water molecule

In this tutorial you will learn how to visualize a molecular orbital. As an example, you will visualize the LUMO state of water molecule. Specifically, you will:

  • Build the molecule.
  • Compute a single point calculation at the DFT level.
  • Obtain the molecular eigenenergy spectrum and visualize the LUMO state.

Building the molecule

  1. Open VNL and create a new project by clicking Create New. Give the project a Title (here: “Water_LUMO”), select the folder where data will be stored, then click OK and Open to start the project.

    ../../_images/1-create_new.png ../../_images/115.png
  2. In the VNL main window, click on the builder_icon icon to open the Builder.

  3. Go to the Stash, click Add ‣ New Configuration. A hydrogen atom appears in the Stash and in the preview window of the Builder.

  4. Go to Coordinate Tools ‣ Translate. Tick the Copy option, increase Z to 1 Å, and click the Apply button twice to add two more hydrogen atoms.

  5. Go to the preview window. Press Ctrl + R to center the view and select the atom in the middle. Use the ModifyElement02_icon Modify Element tool in the toolbar to change it to oxygen.

  6. Select all atoms using the left mouse button while holding down the Ctrl button of your keyboard. Go to Coordinate Tools ‣ Z-matrix and set the distances and angles as shown in the picture below (H-O distance 0.972278 Å and H-O-H angle 102.75 degrees).



You have now built the water molecule completely from scratch!


It is of course not necessary to always build structures from scratch. Instead, you can import configurations from the database_icon Database:

  • Go to the Stash and select Add ‣ From Database.
  • From the menu click Databases ‣ Molecules and search for “Water” in the search window.
  • Select “Water” and add it to Stash by double-clicking it or by using the plus_icon icon.

Calculating the LUMO state

  1. In the Builder, click sendto_icon in the lower right-hand corner, and select Script Generator.

  2. In the script_generator_icon Scripter, add the following blocks by double-clicking the correspoding icons in the Blocks panel on the left-hand side of the screen:

    • calculator_icon New Calculator.
    • analysis_icon Analysis ‣ MolecularEnergySpectrum.
    • analysis_icon Analysis ‣ Eigenstate.

  3. Go to Global IO and define a suitable location and name of the NetCDF file in which your results will be saved, using the global_IO_button button. In this tutorial, save this file as

  4. Now double-click the analysis_icon Eigenstate block and edit it:

    • Since water has 8 valence electrons (one for each hydrogen and six for oxygen; the two 1s electrons are part of the pseudocore in ATK), there will be 4 occupied states, each one doubly degenerate since this is a spin-independent calculation. Therefore set the quantum number to 4 for the LUMO state.
  5. To run the calculation, use the sendto_icon Send to button to send the script to the job_manager_icon Job Manager. Then, save the script using the window that appears.

  6. When the Job Manager opens up, click on the jm_play_enabled_icon button to run the script.

  7. When the script has finished (it takes a minute or so), navigate to the LabFloor in the VNL main window and click on the tab tab of the NetCDF file in order to display the objects contained there.

  8. Select both the Eigenstate and MolecularConfiguration objects stored in the NetCDF file (use a left mouse click while holding down Ctrl), and drag and drop both objects onto the viewer_icon Viewer, which will then pop up.


  9. Click OK, and click OK again in the next window.

  10. In the Viewer, click on Properties.

  11. To obtain the same image as below, do as follows:

    • Go to Scene Properties ‣ Scene and uncheck “Compass enabled”.
    • Go to Scene Properties ‣ Isosurface and set the Isovalue to 0.087.
    • Go to Scene Properties ‣ Isosurface and set the Rendering style to Lines.
    • Go to Scene Properties ‣ Atoms and set the atoms and bonds radious to 0.25 and 0.05, respectively.



Please note the use of the \(\pm\)isovalue” option. When checked, it divides the full range of available isovalues into two equally large ranges, and plots the two ranges in complimentary colors.