534. Adding new options to ECCE -- adding solvation models for G03 (G09)

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:
Previous
Next Post »