- Spring School on Computational Chemistry 17-19 April 2024
- Nino Runeberg, CSC - IT center for Science Ltd, based on the earlier work of Atte Sillanpää
- We have downloaded from PubChem a set of molecules having the same molecular formula C11H14O2N2 .
- From the original set of about 14700 molecules we have selected 31 structures.
Their corresponding SMILES strings are given in the table https://siili.rahtiapp.fi/Duf0GbqtRVGrz2dZbPi5qg - Pick any of the free structures in that table and mark your name on the row (click on side-by-side icon at top left to edit )
- Set up a calculation to get the minimum energy conformation according to the same recipe we used for formaldehyde
- Tabulate the total energy of the corresponding optimized structure
- Can you explain why some isomers are lower in energy than others?
- Bonus Would the order change if you'd change the model? Improve basis set? Add an implicit solvent model? Include entropy estimate?
- Launch TmoleX and create a new project in a suitable directory.
- If you use the Puhti desktop then use something like
/scratch/project_2006657/<your-username>/qc_tutorial2
. Remember to replaceyour-username
with your actual username in order to make it a unique and not interfering with other participants projects. - If you use a locally installed TmoleX then define the new project under your home directory, e.g.
~/qc_tutorial2
.
- A new job is initiated within your new TmoleX project.
- Rename the first job in this project according to the
cid
identifier you picked from the list - In the first
Geometry
subsection paste your SMILES string into the slotSMILES to 3D
. Pushing the buttons should launch the TmoleX viewer showing the 3D structure of the molecule corresponding to your SMILES string. - Since the conversion from
SMILES
toxyz
is quite rough it's often a good idea to do a preoptimization. - Continue in a similar way as we did with formaldehyde and optimize the structure. Do a SMP parallel calculation and request for 8 cores.
- Once the structure optimization has (hopefully) converged, fill in the total energy of that structure into the table.
When a job has finished, all output files are transferred to your local job and deleted from Puhti's work directory.
Amoung the result files yous should have a file called slurm-XXXXXXXXXX.out
where XXXXXXXXXX
is replaced with a
number that corresponds to the JOBID
the job had in Puhti's queuing system.
If you would like to have a closer look at the details of that job you should login to Puhti
Once logged into Puhti you can use the command sacct
to collect various data related to the job. Give the command (replace JOBID with the actual number)
sacct -X -j JOBID -o state,start,alloc,elapsed,cputime
State Start AllocCPUS Elapsed CPUTime
---------- ------------------- ---------- ---------- ----------
COMPLETED 2024-04-15T15:11:06 4 00:10:51 00:43:24
Here the Elapsed
time is the wall time the job took to finish.
Use the optimized structure and define a new job, Start new job with current data
, where you change the basis set (Atomic Attributes
) to def2-TZVP
and define the job as a
Single Point-> Energy (ground state)
. Repeat this calculation using 1,2,4 and 8 cores.
Tabulate the values into a table. You can calculate the "speedup" by
dividing the 1 core time with N core time. Linear speedup would equal
the number of cores used. A speedup above 1.5 when doubling the number of cores is often considered as reasonable.
cores | walltime | speedup |
---|---|---|
1 | ||
2 | ||
4 | ||
8 |
- Why do the numbers differ?
- Why do these number matter?
- Are these numbers accurate?
- How to get more accurate information?
- What else affects the performance?
Occationally you would like to apply the same model/workflow on a bunch of different structures. An example was the preoptimization followed by an optimization at a higher level that we used for formaldehyde. Such batch jobs can be easily done with TmoleX.
- Create a new project and select
Templates -> New/Edit Template
- Define two job steps corresponding to an AM1 geometry optimization followed by a dft/bp86/sv(p) optimization.
-
Create a batch
New Batch Job
and hitAdd List of SMILES
. In that window add some of the our SMILES strings followed by a name (here the cid number) -
For the batch of molecules
Choose Job Template
->Charge: Use from input
->Apply Job Template
This ends the tutorial.