To minimize the amount of manual editing of my input files I've started to modify the menus in ECCE. One thing that was missing before was the option of selecting a solvation model for Gaussian jobs. I've added that now.
I will eventually submit my changes upstreams, but for now I'll just post a clunky list of changes that I've made:
There are two files to edit:
apps/scripts/codereg/ged03theory.py.
Add the following right after the DFT options section and before the MP options section (
ca line number 273 in my case)
#Theory options solvation -CAO
sovSizer = EcceBoxSizer(self,
label = "Solvation",
cols = 2)
sovLeftSizer = EcceVBoxSizer()
sovRightSizer = EcceVBoxSizer()
#Use solvation
self.useSCRF = EcceCheckBox(self, #useCosmo
label = " Use SCRF"
name = "ES.Theory.SCF.UseSCRF",
default = False)
sovLeftSizer.AddWidget(self.useSCRF,
border = EcceGlobals.BorderDefault)
#SCRF type
scrfChoice = ["PCM",
"CPCM",
"IPCM",
"SCIPCM",
"SMD",
"Dipole"]
self.scrf = EcceComboBox(self,
choices = scrfChoice,
name = "ES.Theory.SCF.SCRF",
label = "SCRF type:",
default = 0)
sovRightSizer.AddWidget(self.scrf,
border = EcceGlobals.BorderDefault)
#Solvent type
solventChoice = ["Water",
"Acetonitrile",
"Methanol",
"Ethanol",
"Manual",
"Benzene",
"Chloroform",
"Diethylether",
"Dichloromethane",
"Dichloroethane",
"Carbontetrachloride",
"Toluene",
"Chlorobenzene",
"Nitromethane",
"Heptane",
"Aniline",
"Acetone",
"Tetrahydrofuran",
"Dimethylsulfoxide",
"Argon",
"Krypton",
"Xenon",
"n-Octanol",
"1-Butanol"
"Cyclohexane",
"Isoquinoline",
"Quinoline",
]
self.solvent = EcceComboBox(self,
choices = solventChoice,
name = "ES.Theory.SCF.Solvent",
label = "Solvent:",
default = 0)
sovRightSizer.AddWidget(self.solvent,
border = EcceGlobals.BorderDefault)
self.scrfDielec = EcceFloatInput(self,
default = 78.4,
name = "ES.Theory.SCF.Dielectric",
label = "Dielectric Constant:",
hardRange = "(0..)",
unit = "Debye")
sovRightSizer.AddWidget(self.scrfDielec,
border = EcceGlobals.BorderDefault)
sovSizer.AddWidget(sovLeftSizer,
flag = wx.ALL)
sovSizer.AddWidget(sovRightSizer,
flag = wx.ALL)
self.panelSizer.Add(sovSizer)
#End theory options solvation -CAO
Also add the following to the
def CheckDependency(self) block, right before the "
if (EcceGlobals.Category == "MP" or" line:
# SCRF solvation -- CAO
if EcceGlobals.Category == "DFT" or EcceGlobals.Category == "SCF":
self.solvent.Enable(self.useSCRF.GetValue())
self.scrf.Enable(self.useSCRF.GetValue())
self.scrfDielec.Enable(self.useSCRF.GetValue() and
self.solvent.GetValue() == "Manual")
# end SCRF
Edit
apps/scripts/parsers/ai.gauss03 and put the following somewhere in the file.
##############################################################################
#
# Description:
# SCRF options field -CAO
#
##############################################################################
sub SCRFOptions {
my($options,$result);
$result = "";
$options = "";
#scrf type
if ($AbiDict{"ES.Theory.SCF.UseSCRF"}) {
if ($AbiDict{"ES.Theory.SCF.SCRF"} eq "" ) {
$options .= "PCM,";
}
else {$options .= ($AbiDict{"ES.Theory.SCF.SCRF"}).","};
# solvent/dielectric
if ($AbiDict{"ES.Theory.SCF.Solvent"} eq "Manual") {
if (defined($AbiDict{"ES.Theory.SCF.Dielectric"})) {
$options .= "Dielectric=".$AbiDict{"ES.Theory.SCF.Dielectric"}."";
} }
elsif ($AbiDict{"ES.Theory.SCF.Solvent"} eq "") {
$options .= "Solvent=water"; }
else { $options .= "Solvent=".$AbiDict{"ES.Theory.SCF.Solvent"};
}
if ($options ne "") {
$result = "SCRF=(";
$result .= $options;
$result .= ") ";
}
return $result;
}
}
Also add the following right below the "
$route .= &SCFOptions;" line:
$route .= &SCRFOptions;
And you're done: