Skip to content

Commit

Permalink
Tests: Molpro MRCI input files
Browse files Browse the repository at this point in the history
  • Loading branch information
alongd committed Aug 19, 2024
1 parent 48e08b2 commit 1621f5d
Showing 1 changed file with 183 additions and 11 deletions.
194 changes: 183 additions & 11 deletions arc/job/adapters/molpro_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,36 @@ def setUpClass(cls):
species=[ARCSpecies(label='spc1', xyz=['O 0 0 1'])],
testing=True,
)
cls.job_3 = MolproAdapter(execution_type='queue',
job_type='sp',
level=Level(method='MRCI', basis='aug-cc-pvtz-f12'),
project='test',
project_directory=os.path.join(ARC_PATH, 'arc', 'testing', 'test_MolproAdapter_3'),
species=[ARCSpecies(label='HNO_t', xyz=["""N -0.08142 0.37454 0.00000
O 1.01258 -0.17285 0.00000
H -0.93116 -0.20169 0.00000"""])],
testing=True,
)
cls.job_4 = MolproAdapter(execution_type='queue',
job_type='sp',
level=Level(method='MRCI-F12', basis='aug-cc-pvtz-f12'),
project='test',
project_directory=os.path.join(ARC_PATH, 'arc', 'testing', 'test_MolproAdapter_4'),
species=[ARCSpecies(label='HNO_t', xyz=["""N -0.08142 0.37454 0.00000
O 1.01258 -0.17285 0.00000
H -0.93116 -0.20169 0.00000"""])],
testing=True,
)
cls.job_5 = MolproAdapter(execution_type='queue',
job_type='sp',
level=Level(method='MP2_CASSCF_MRCI-F12', basis='aug-cc-pVTZ-F12'),
project='test',
project_directory=os.path.join(ARC_PATH, 'arc', 'testing', 'test_MolproAdapter_5'),
species=[ARCSpecies(label='HNO_t', xyz=["""N -0.08142 0.37454 0.00000
O 1.01258 -0.17285 0.00000
H -0.93116 -0.20169 0.00000"""])],
testing=True,
)

def test_set_cpu_and_mem(self):
"""Test assigning number of cpu's and memory"""
Expand All @@ -56,26 +86,26 @@ def test_set_input_file_memory(self):
self.job_1.input_file_memory = None
self.job_1.cpu_cores = 48
self.job_1.set_input_file_memory()
self.assertEqual(self.job_1.input_file_memory, 40)
self.assertEqual(self.job_1.input_file_memory, 438)

self.job_1.cpu_cores = 8
self.job_1.set_input_file_memory()
self.assertEqual(self.job_1.input_file_memory, 235)
self.assertEqual(self.job_1.input_file_memory, 438)

self.job_1.input_file_memory = None
self.job_1.cpu_cores = 1
self.job_1.set_input_file_memory()
self.assertEqual(self.job_1.input_file_memory, 1880)
self.assertEqual(self.job_1.input_file_memory, 438)

def test_write_input_file(self):
"""Test writing Gaussian input files"""
"""Test writing Molpro input files"""
self.job_1.cpu_cores = 48
self.job_1.set_input_file_memory()
self.job_1.write_input_file()
with open(os.path.join(self.job_1.local_path, input_filenames[self.job_1.job_adapter]), 'r') as f:
content_1 = f.read()
job_1_expected_input_file = """***,spc1
memory,40,m;
memory,Total=438,m;
geometry={angstrom;
O 0.00000000 0.00000000 1.00000000}
Expand All @@ -86,8 +116,8 @@ def test_write_input_file(self):
int;
{hf;
maxit,1000;
wf,spin=2,charge=0;}
maxit,999;
wf,spin=2,charge=0;}
uccsd(t)-f12;
Expand All @@ -104,7 +134,7 @@ def test_write_input_file(self):
with open(os.path.join(self.job_2.local_path, input_filenames[self.job_2.job_adapter]), 'r') as f:
content_2 = f.read()
job_2_expected_input_file = """***,spc1
memory,40,m;
memory,Total=438,m;
geometry={angstrom;
O 0.00000000 0.00000000 1.00000000}
Expand All @@ -115,8 +145,8 @@ def test_write_input_file(self):
int;
{hf;
maxit,1000;
wf,spin=2,charge=0;}
maxit,999;
wf,spin=2,charge=0;}
uccsd(t);
Expand All @@ -127,6 +157,147 @@ def test_write_input_file(self):
"""
self.assertEqual(content_2, job_2_expected_input_file)

def test_write_mrci_input_file(self):
"""Test writing MRCI Molpro input files"""
self.job_3.cpu_cores = 48
self.job_3.set_input_file_memory()
self.job_3.write_input_file()
with open(os.path.join(self.job_3.local_path, input_filenames[self.job_3.job_adapter]), 'r') as f:
content_3 = f.read()
job_3_expected_input_file = """***,HNO_t
memory,Total=438,m;
geometry={angstrom;
N -0.08142000 0.37454000 0.00000000
O 1.01258000 -0.17285000 0.00000000
H -0.93116000 -0.20169000 0.00000000}
gprint,orbitals;
basis=aug-cc-pvtz-f12
int;
{hf;
maxit,999;
wf,spin=0,charge=0;}
{casscf;
maxit,999;
wf,spin=0,charge=0;}
{mrci;
maxit,999;
wf,spin=0,charge=0;};
E_mrci=energy;
E_mrci_Davidson=energd;
table,E_mrci,E_mrci_Davidson;
---;
"""
self.assertEqual(content_3, job_3_expected_input_file)

self.job_4.cpu_cores = 48
self.job_4.set_input_file_memory()
self.job_4.write_input_file()
with open(os.path.join(self.job_4.local_path, input_filenames[self.job_4.job_adapter]), 'r') as f:
content_4 = f.read()
job_4_expected_input_file = """***,HNO_t
memory,Total=438,m;
geometry={angstrom;
N -0.08142000 0.37454000 0.00000000
O 1.01258000 -0.17285000 0.00000000
H -0.93116000 -0.20169000 0.00000000}
gprint,orbitals;
basis=aug-cc-pvtz-f12
int;
{hf;
maxit,999;
wf,spin=0,charge=0;}
{casscf;
maxit,999;
wf,spin=0,charge=0;}
{mrci-f12;
maxit,999;
wf,spin=0,charge=0;};
E_mrci=energy;
E_mrci_Davidson=energd;
table,E_mrci,E_mrci_Davidson;
---;
"""
self.assertEqual(content_4, job_4_expected_input_file)

self.job_5.cpu_cores = 48
self.job_5.set_input_file_memory()
self.job_5.write_input_file()
with open(os.path.join(self.job_5.local_path, input_filenames[self.job_5.job_adapter]), 'r') as f:
content_5 = f.read()
job_5_expected_input_file = """***,HNO_t
memory,Total=438,m;
geometry={angstrom;
N -0.08142000 0.37454000 0.00000000
O 1.01258000 -0.17285000 0.00000000
H -0.93116000 -0.20169000 0.00000000}
gprint,orbitals;
basis=aug-cc-pvtz-f12
int;
{hf;
maxit,999;
wf,spin=0,charge=0;}
{mp2;
wf,spin=0,charge=0;}
{casscf;
maxit,999;
wf,spin=0,charge=0;}
{mrci-f12;
maxit,999;
wf,spin=0,charge=0;};
E_mrci=energy;
E_mrci_Davidson=energd;
table,E_mrci,E_mrci_Davidson;
---;
"""
print('*****')
print(content_5)
self.assertEqual(content_5, job_5_expected_input_file)

def test_set_files(self):
"""Test setting files"""
job_1_files_to_upload = [{'file_name': 'submit.sub',
Expand Down Expand Up @@ -154,7 +325,8 @@ def tearDownClass(cls):
A function that is run ONCE after all unit tests in this class.
Delete all project directories created during these unit tests
"""
for folder in ['test_MolproAdapter_1', 'test_MolproAdapter_2']:
for folder in ['test_MolproAdapter_1', 'test_MolproAdapter_2', 'test_MolproAdapter_3', 'test_MolproAdapter_4',
'test_MolproAdapter_5']:
shutil.rmtree(os.path.join(ARC_PATH, 'arc', 'testing', folder), ignore_errors=True)


Expand Down

0 comments on commit 1621f5d

Please sign in to comment.