Skip to content

Commit

Permalink
Fixed confirmed specifications for Gaussian
Browse files Browse the repository at this point in the history
  • Loading branch information
RaphaelRobidas committed Mar 20, 2022
1 parent f0f1cad commit e1d327a
Show file tree
Hide file tree
Showing 2 changed files with 85 additions and 2 deletions.
25 changes: 23 additions & 2 deletions ccinput/packages/gaussian.py
Original file line number Diff line number Diff line change
Expand Up @@ -368,14 +368,35 @@ def create_input_file(self):
else:
cmd_formatted = f"{cmd} "

if cmd.lower() != "scrf":
spec_options = []
for o in options:
print(o)
if self.calc.type == CalcType.TS and o in [
"ts",
"NoEigenTest",
"CalcFC",
]:
continue
elif self.calc.type == CalcType.CONSTR_OPT and o == "modredundant":
continue
spec_options.append(o)
if len(spec_options) > 0:
spec_option_str = ", ".join(spec_options)
confirmed_spec = f"{cmd}({spec_option_str}) "
if cmd in self.KEYWORD_LIST:
self.confirmed_specifications = (
confirmed_spec + self.confirmed_specifications
)
else:
self.confirmed_specifications += confirmed_spec

# This ensures that the command line follows this pattern:
# CMD1 <CMD2> METHOD/BASIS_SET <ADDITIONAL_OPTION1> ...
if cmd in self.KEYWORD_LIST:
self.command_line = cmd_formatted + self.command_line
else:
self.command_line = self.command_line + cmd_formatted
if cmd.lower() != "scrf":
self.confirmed_specifications += cmd_formatted

self.confirmed_specifications = self.confirmed_specifications.strip()

Expand Down
62 changes: 62 additions & 0 deletions ccinput/tests/test_gaussian.py
Original file line number Diff line number Diff line change
Expand Up @@ -1978,6 +1978,68 @@ def test_global_specification(self):
self.assertTrue(self.is_equivalent(REF, inp.input_file))
self.assertEqual(inp.confirmed_specifications.strip(), "scf(tight)")

def test_confirmed_command_specification(self):
params = {
"nproc": 8,
"mem": "10000MB",
"type": "Geometrical Optimisation",
"file": "Cl.xyz",
"software": "Gaussian",
"method": "M06-2X",
"basis_set": "Def2-SVP",
"charge": "-1",
"specifications": "opt(maxstep=5)",
}

inp = self.generate_calculation(**params)

REF = """
%chk=calc.chk
%nproc=8
%mem=10000MB
#p opt(maxstep=5) M062X/Def2SVP
File created by ccinput
-1 1
Cl 0.0 0.0 0.0
"""

self.assertTrue(self.is_equivalent(REF, inp.input_file))
self.assertEqual(inp.confirmed_specifications.strip(), "opt(maxstep=5)")

def test_confirmed_command_specification_selective(self):
params = {
"nproc": 8,
"mem": "10000MB",
"type": "TS Optimisation",
"file": "Cl.xyz",
"software": "Gaussian",
"method": "M06-2X",
"basis_set": "Def2-SVP",
"charge": "-1",
"specifications": "opt(maxstep=5)",
}

inp = self.generate_calculation(**params)

REF = """
%chk=calc.chk
%nproc=8
%mem=10000MB
#p opt(maxstep=5, ts, NoEigenTest, CalcFC) M062X/Def2SVP
File created by ccinput
-1 1
Cl 0.0 0.0 0.0
"""

self.assertTrue(self.is_equivalent(REF, inp.input_file))
self.assertEqual(inp.confirmed_specifications.strip(), "opt(maxstep=5)")

def test_multiple_global_specification(self):
params = {
"nproc": 8,
Expand Down

0 comments on commit e1d327a

Please sign in to comment.