# How to obtain the radial probability distribution function of a given orbital from a quantum chemical calculation?

I know that a very similar question has already been asked here and a very competent and useful answer has been provided (see here). However, that previous question was related to the total electron density whereas I am interested in plotting the radial probability distribution function of a given single orbital. Can I also use MultiWFN tool and Gaussian output to do this?

## 1 Answer

This is actually a lot simpler than I initially thought. I'll be using the same example as previously explained in How to obtain the radial probability distribution function from a quantum chemical calculation? My test setup has slightly changed since then, i.e. I've tried it with Gaussian 16 B.01 and Multiwfn 3.6.0 and it worked the same.

We start the same way as in the linked question, until you have your ar.fchk and load that into Multiwfn, you should see something like this:

 Multiwfn -- A Multifunctional Wavefunction Analyzer
Version 3.6, release date: 2019-May-21
Project leader: Tian Lu (Beijing Kein Research Center for Natural Sciences)
Below paper *MUST BE CITED* if Multiwfn is utilized in your work:
Tian Lu, Feiwu Chen, J. Comput. Chem., 33, 580-592 (2012)
Multiwfn official website: http://sobereva.com/multiwfn
Multiwfn English forum: http://sobereva.com/wfnbbs
Multiwfn Chinese forum: http://bbs.keinsci.com/wfn

>>

Loaded ar.fchk successfully!
Formula: Ar1
Molecule weight:        39.94800


We need to modify the wave function now:

                    ************ Main function menu ************
0 Show molecular structure and view orbitals
1 Output all properties at a point
2 Topology analysis
3 Output and plot specific property in a line
4 Output and plot specific property in a plane
5 Output and plot specific property within a spatial region (calc. grid data)
6 Check & modify wavefunction
7 Population analysis and atomic charges
8 Orbital composition analysis
9 Bond order analysis
10 Plot total DOS, partial DOS, OPDOS, local DOS and photoelectron spectrum
11 Plot IR/Raman/UV-Vis/ECD/VCD/ROA spectrum
12 Quantitative analysis of molecular surface
13 Process grid data (No grid data is presented currently)
14 Adaptive natural density partitioning (AdNDP) analysis
15 Fuzzy atomic space analysis
16 Charge decomposition analysis (CDA) and extended CDA (ECDA)
17 Basin analysis
18 Electron excitation analysis
19 Orbital localization analysis
20 Visual study of weak interaction
21 Energy decomposition analysis
100 Other functions (Part1)        200 Other functions (Part2)


Chose 6:

           ============ Modify & Check wavefunction ============
Number of GTFs:    27, Orb:     9, Atoms:    1, A/B elec:   9.000   9.000
-4 Exclude contribution of some atoms to real space functions
-3 Only retain contribution of some atoms to real space functions
-1 Return
0 Save the modified wavefunction to a new .wfn file
1 List all primitive function      2 List all basis function
3 List all orbitals                4 Print detail information of an orbital
5 Print coefficient matrix in basis function
6 Print density matrix in basis function
7 Print various kinds of integral matrix between basis functions
11 Swap some information of two primitive functions
21 Set center of a primitive       22 Set type of a primitive
23 Set exponent of a primitive     24 Set coefficient of a primitive
25 Set coefficients of GTFs/basis functions that satisfied certain conditions
26 Set occupation number of some orbitals
27 Set type of some orbitals       28 Set energy of some orbitals
31 Translate the system            32 Translate and duplicate the system
33 Rotate wavefunction, namely X->Y, Y->Z, Z->X
34 Set occupation number of inner orbitals to zero
36 Invert phase of some orbitals


As you can see there is plenty you can do. For this example I will reset the occupation of some orbitals (26). More precisely, I'll transform the wave function so that only the 2s orbital is doubly occupied. Here is how I did it:

           ============ Modify & Check wavefunction ============
Number of GTFs:    27, Orb:     9, Atoms:    1, A/B elec:   9.000   9.000
-4 Exclude contribution of some atoms to real space functions
-3 Only retain contribution of some atoms to real space functions
-1 Return
0 Save the modified wavefunction to a new .wfn file
1 List all primitive function      2 List all basis function
3 List all orbitals                4 Print detail information of an orbital
5 Print coefficient matrix in basis function
6 Print density matrix in basis function
7 Print various kinds of integral matrix between basis functions
11 Swap some information of two primitive functions
21 Set center of a primitive       22 Set type of a primitive
23 Set exponent of a primitive     24 Set coefficient of a primitive
25 Set coefficients of GTFs/basis functions that satisfied certain conditions
26 Set occupation number of some orbitals
27 Set type of some orbitals       28 Set energy of some orbitals
31 Translate the system            32 Translate and duplicate the system
33 Rotate wavefunction, namely X->Y, Y->Z, Z->X
34 Set occupation number of inner orbitals to zero
36 Invert phase of some orbitals
26

Select the orbitals for which the occupation numbers are needed to be changed
e.g. 2,4,13-16,20 means selecting orbitals 2,4,13,14,15,16,20
Input 0 can select all orbitals, input q or 00 can return
0
Set to which value? e.g. 1.2
Note:
You can also input for example "+1.1" "-1.1" "*1.1" "/1.1" to add, minus, multiply and divide the occupation numbers by 1.1
To recover the initial occupation numbers, input "i"
To generate occupation state for calculating odd electron density, input "odd"
0
Done!

Select the orbitals for which the occupation numbers are needed to be changed
e.g. 2,4,13-16,20 means selecting orbitals 2,4,13,14,15,16,20
Input 0 can select all orbitals, input q or 00 can return
2
Set to which value? e.g. 1.2
Note:
You can also input for example "+1.1" "-1.1" "*1.1" "/1.1" to add, minus, multiply and divide the occupation numbers by 1.1
To recover the initial occupation numbers, input "i"
To generate occupation state for calculating odd electron density, input "odd"
2
Done!

Select the orbitals for which the occupation numbers are needed to be changed
e.g. 2,4,13-16,20 means selecting orbitals 2,4,13,14,15,16,20
Input 0 can select all orbitals, input q or 00 can return
q

============ Modify & Check wavefunction ============
Number of GTFs:    27, Orb:     9, Atoms:    1, A/B elec:   1.000   1.000
-4 Exclude contribution of some atoms to real space functions
-3 Only retain contribution of some atoms to real space functions
-1 Return
0 Save the modified wavefunction to a new .wfn file
1 List all primitive function      2 List all basis function
3 List all orbitals                4 Print detail information of an orbital
5 Print coefficient matrix in basis function
6 Print density matrix in basis function
7 Print various kinds of integral matrix between basis functions
11 Swap some information of two primitive functions
21 Set center of a primitive       22 Set type of a primitive
23 Set exponent of a primitive     24 Set coefficient of a primitive
25 Set coefficients of GTFs/basis functions that satisfied certain conditions
26 Set occupation number of some orbitals
27 Set type of some orbitals       28 Set energy of some orbitals
31 Translate the system            32 Translate and duplicate the system
33 Rotate wavefunction, namely X->Y, Y->Z, Z->X
36 Invert phase of some orbitals
3

Basic information of all orbitals:
Orb:     1 Ene(au/eV):  -117.263218   -3190.8944 Occ: 0.000000 Type:A+B
Orb:     2 Ene(au/eV):   -12.054866    -328.0296 Occ: 2.000000 Type:A+B
Orb:     3 Ene(au/eV):    -9.308431    -253.2953 Occ: 0.000000 Type:A+B
Orb:     4 Ene(au/eV):    -9.308431    -253.2953 Occ: 0.000000 Type:A+B
Orb:     5 Ene(au/eV):    -9.308431    -253.2953 Occ: 0.000000 Type:A+B
Orb:     6 Ene(au/eV):    -1.154432     -31.4137 Occ: 0.000000 Type:A+B
Orb:     7 Ene(au/eV):    -0.495941     -13.4953 Occ: 0.000000 Type:A+B
Orb:     8 Ene(au/eV):    -0.495941     -13.4953 Occ: 0.000000 Type:A+B
Orb:     9 Ene(au/eV):    -0.495941     -13.4953 Occ: 0.000000 Type:A+B

============ Modify & Check wavefunction ============
Number of GTFs:    27, Orb:     9, Atoms:    1, A/B elec:   1.000   1.000
-4 Exclude contribution of some atoms to real space functions
-3 Only retain contribution of some atoms to real space functions
-1 Return
0 Save the modified wavefunction to a new .wfn file
1 List all primitive function      2 List all basis function
3 List all orbitals                4 Print detail information of an orbital
5 Print coefficient matrix in basis function
6 Print density matrix in basis function
7 Print various kinds of integral matrix between basis functions
11 Swap some information of two primitive functions
21 Set center of a primitive       22 Set type of a primitive
23 Set exponent of a primitive     24 Set coefficient of a primitive
25 Set coefficients of GTFs/basis functions that satisfied certain conditions
26 Set occupation number of some orbitals
27 Set type of some orbitals       28 Set energy of some orbitals
31 Translate the system            32 Translate and duplicate the system
33 Rotate wavefunction, namely X->Y, Y->Z, Z->X
36 Invert phase of some orbitals


(The values I have typed in all start in the first column.)

Now leave this screen. You may want to safe with 0 the resulting wave function as new.wfn; but it is not necessary. To get back to the main menu simply type -1.

Now that you have modified the wave function, you can again follow the steps from the linked post.

TL;DR:

200 // other functions
5   // RDF
0   // calc
1   // plot
5   // Export to RDF.txt


I'm sure there is a lot of fancy stuff you can do with that, I used the same gnuplot file to plot the result: Shameless self-plug:

I have written some startup scripts for Multiwfn, which make some things easier or extend the functionality to run calculations within a queueing system (e.g. QTAIM charges). Find it on GitHub: https://github.com/polyluxus/runMultiwfn.bash