I haven't posted anything for a long time. Partly because with each post I have one fewer issue to solve in the future, and partly because I'm busy, which is a good thing to be if you're an academic.
Either way, I've been doing a lot of fun computational stuff during the past year. Because I have the memory of a goldfish (
not as bad as they claim) I'll post some of the techniques here. Nothing fancy, but still handy stuff.
Let's start with the easiest. I'll also have to disappoint by not actually going through the inputs (I don't have the time) -- but at least it gives you something to dissect.
Paramagnetic systems
You should always do a fragment guess when doing computations on a paramagnetic system. There used to be pretty decent example on the gaussian website, but the link's dead.
So, here's an example using Mn
II(H
2O)
72+:
%nprocshared=6
%Mem=800000000
%Chk=Mn_heptaaqua_fragmentguess-1.chk
#P uPBE1PBE/def2svp 5D 7F Punch=(MO) Pop=() guess=(fragment=8,only) nosymm
Mn_heptaaqua_fragmentguess
2 6 2 6 0 1 0 1 0 1 0 1 0 1 0 1 0 1! charge and multiplicity
Mn(fragment=1) -0.00562000 -0.159820 -0.00534000
O(fragment=2) 0.806850 2.92945 0.648110
H(fragment=2) 0.517800 2.22992 1.19065
H(fragment=2) 0.710610 2.64504 -0.251480
O(fragment=3) -2.27505 2.01043 -0.829720
H(fragment=3) -1.61846 1.53635 -1.35764
H(fragment=3) -2.16217 1.69798 0.0680700
O(fragment=4) 1.25719 0.434100 -2.53776
H(fragment=4) 1.44642 -0.489420 -2.38016
H(fragment=4) 1.93095 0.912890 -2.06836
O(fragment=5) -0.763700 -0.365100 2.64881
H(fragment=5) -1.25350 0.434770 2.55458
H(fragment=5) 0.142800 -0.109660 2.78161
O(fragment=6) 2.85799 -0.0152600 0.774460
H(fragment=6) 2.85234 -0.657260 0.0556300
H(fragment=6) 2.56047 -0.559630 1.50359
O(fragment=7) -2.58701 -1.35998 -0.392700
H(fragment=7) -2.33975 -1.98479 0.179520
H(fragment=7) -2.25366 -1.27355 -1.16844
O(fragment=8) 0.506670 -2.98431 -0.354720
H(fragment=8) 0.314610 -2.83412 0.445580
H(fragment=8) 0.228450 -2.74784 -1.07163
--Link1--
%nprocshared=3
%Mem=800000000
%Chk=Mn_heptaaqua_fragmentguess-1.chk
#P uPBE1PBE/chkbasis 5D 7F Opt=() SCRF=(PCM,Solvent=water) Punch=(MO) Pop=() guess=read geom=allcheck nosymm
The keys here are: 1) everything is divided into fragments (Mn and each H2O are individual fragments). 2) The spin state for the total system is given, followed by the multiplicities and charges of each fragment and 3) the first calculation is just used to generate a fragment guess ( guess=(fragment=8,only) ). 4) The first job is then immediately followed by a second job defined in link1, and it reads in the fragment guess, the geometry and the basis set from the first job. NOTE: fragment guesses can't use SCRF.
Freezing atoms
This is pretty basic, but useful. The example uses Mg(H
2O)
62+.
%nprocshared=6
%Mem=800000000
%Chk=Mg6aq_b3pw91.chk
#P rPBE1PBE/gen 5D Opt=(readopt) Punch=(MO) Pop=()
Mg6aq_b3pw91
2 1 ! charge and multiplicity
Mg 0.00000 0.00000 0.00000
O 0.00000 2.09000 0.00000
H -0.691981 2.65500 -0.691981
H 0.691981 2.65500 0.691981
O 1.47785 2.22045e-16 1.47785
H 1.87737 0.978609 1.87737
H 1.87737 -0.978609 1.87737
O -1.47785 -1.11022e-16 1.47785
H -1.18539 7.33956e-09 2.56935
H -2.56935 -7.33957e-09 1.18539
O 0.00000 -2.09000 0.00000
H -0.691981 -2.65500 0.691981
H 0.691981 -2.65500 -0.691981
O -1.47785 2.22045e-16 -1.47785
H -1.87737 -0.978609 -1.87737
H -1.87737 0.978609 -1.87737
O 1.47785 -1.11022e-16 -1.47785
H 1.18539 -2.20187e-08 -2.56935
H 2.56935 2.20187e-08 -1.18539
noatoms atoms=Mg,O
Mg H O 0
6-31G
****
Keys: 1) use opt=(readopt) to make gaussian look for more instructions immediately
noatoms makes all atoms inactive. Then make Mg and O active again using 'atoms'. You can also give a numerical range, e.g. atoms=1-2,5,8 etc. You can also use notatoms, which specifies atoms to make inactive (instead of noatoms which makes all inactive).
I defined the basis set at the bottom only to show what order things come in i.e. readopt input comes before basis gen.
NOTE: if you do opt=(readopt) and freq=() in the same job those atoms will be frozen in the Hessian
Mixing basis sets
What if you have a large cluster and want to use a triple-zeta basis set for some oxygens, and a double-zeta for others that are less 'important'?
%nprocshared=6
%Mem=800000000
%Chk=Mg6aq_b3pw91.chk
#P rPBE1PBE/gen 5D Opt=(readopt) Punch=(MO) Pop=()
Mg6aq_b3pw91
2 1 ! charge and multiplicity
Mg 0.00000 0.00000 0.00000
O 0.00000 2.09000 0.00000
O -1.47785 -1.11022e-16 1.47785
O 0.00000 -2.09000 0.00000
O -1.47785 2.22045e-16 -1.47785
O 1.47785 2.22045e-16 1.47785
O 1.47785 -1.11022e-16 -1.47785
H -0.691981 2.65500 -0.691981
H 0.691981 2.65500 0.691981
H 1.87737 0.978609 1.87737
H 1.87737 -0.978609 1.87737
H -1.18539 7.33956e-09 2.56935
H -2.56935 -7.33957e-09 1.18539
H -0.691981 -2.65500 0.691981
H 0.691981 -2.65500 -0.691981
H -1.87737 -0.978609 -1.87737
H -1.87737 0.978609 -1.87737
H 1.18539 -2.20187e-08 -2.56935
H 2.56935 2.20187e-08 -1.18539
Mg 0
6-311G
****
O 0
def2svp
****
8-12 0
6-31G
****
13-19 0
6-311+G(2d,2p)
****
In this case Mg uses 6-311G, O uses def2svp, and some of the H use 6-31G while others use 6-311+G(2d,2p). The input obviously doesn't make any chemical sense, but it works as an example. To add ECP, put in an empty space after the last basis set, and then define the ECPs like you would basis sets (but use e.g. def2 instead of def2tzvp, since def2 contains the ecps).
Partial Charges in DFT input
I'm not 100% sure about this one, but I've checked against nwchem and it gives the same output as using 'charge' in nwchem input.
%nprocshared=6
%Mem=800000000
%Chk=Mg6aq_b3pw91.chk
#P rPBE1PBE/GEN 5D Opt=() Punch=(MO) Pop=()
Mg6aq_b3pw91
2 1 ! charge and multiplicity
Mg 0.00000 0.00000 0.00000
O 0.00000 2.09000 0.00000
O 1.47785 2.22045e-16 1.47785
O -1.47785 -1.11022e-16 1.47785
O 0.00000 -2.09000 0.00000
O -1.47785 2.22045e-16 -1.47785
O 1.47785 -1.11022e-16 -1.47785
H(znuc=.91666666666666666666) -0.691981 2.65500 -0.691981
H(znuc=.91666666666666666666) 0.691981 2.65500 0.691981
H(znuc=.91666666666666666666) 1.87737 0.978609 1.87737
H(znuc=.91666666666666666666) 1.87737 -0.978609 1.87737
H(znuc=.91666666666666666666) -1.18539 7.33956e-09 2.56935
H(znuc=.91666666666666666666) -2.56935 -7.33957e-09 1.18539
H(znuc=.91666666666666666666) -0.691981 -2.65500 0.691981
H(znuc=.91666666666666666666) 0.691981 -2.65500 -0.691981
H(znuc=.91666666666666666666) -1.87737 -0.978609 -1.87737
H(znuc=.91666666666666666666) -1.87737 0.978609 -1.87737
H(znuc=.91666666666666666666) 1.18539 -2.20187e-08 -2.56935
H(znuc=.91666666666666666666) 2.56935 2.20187e-08 -1.18539
Mg O H 0
6-31G
****
Again, it's an artificial example. I've set the charges of the H to 11/12ths, so that the charge of the entire complex is 1, and not 2+ anymore.
Confusingly, I can only get it to work properly if I set the charge to 2+ in the input i.e. ignoring the changed charges for different atoms. Either way, it gives the same result as nwchem (although in nwchem I'd set the total charge to +1 in recognition of the change atomic charges).