This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
howto:gaussian [2016/05/04 13:48] alopis [Gaussian Job Array Script for running on Single Nodes] |
howto:gaussian [2025/10/17 09:51] (current) alopis [Easy Gaussian09 and Gaussian16 PBS creation and submission] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Gaussian at CHPC ====== | ====== Gaussian at CHPC ====== | ||
| - | Gaussian | + | This license |
| + | |||
| + | Gaussian can be run over 1 or 2 nodes (see example below) | ||
| + | |||
| + | ====Easy Gaussian09 | ||
| + | |||
| + | In order to see all available Easy Scripts, first include/ | ||
| + | |||
| + | module load chpc/ | ||
| + | |||
| + | Execute **qg09_E01** or **qg16_A03** or **qg16_B01** or **qg16_C01** | ||
| - | ====Easy Gaussian PBS creation and submission==== | ||
| - | Execute **qg09_D01** or **qg09_E01** on login node and follow the prompts. | ||
| This script handles PBS setup and submission. | This script handles PBS setup and submission. | ||
| Also takes care of jobs running over more than one node with LINDA and does cleanup of temporary GAU files when job is completed/ | Also takes care of jobs running over more than one node with LINDA and does cleanup of temporary GAU files when job is completed/ | ||
| Line 38: | Line 46: | ||
| Do you wish to submit job to cluster (y/n) | Do you wish to submit job to cluster (y/n) | ||
| y | y | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | ====Gaussian Job Array Script for running on Single Nodes: Requires Modification for our new Lengau cluster==== | ||
| | | ||
| - | #! /bin/sh | ||
| - | #PBS -N My.job | ||
| - | #PBS -l select=1: | ||
| - | #PBS -l walltime=0: | ||
| - | #PBS -q workq | ||
| - | #PBS -m abe | ||
| - | #PBS -M MyEmailAddress | ||
| | | ||
| - | # Any of these comment lines can remain in place and won't interfere with the script - or removed if you prefer. | + | If you wish to use the utility **formchk** (to create readable format files for visualisers) please |
| - | # The line below defined | + | |
| - | # an individual job but which uses the same settings such as node, walltime and email about jobs. | + | |
| - | # "qstat -ftu username" | + | |
| - | # as [1], [2] etc. You can do a qdel on a sub-job, just use job number including square brackets. | + | |
| | | ||
| - | | + | |
| + | source $g16root/ | ||
| | | ||
| - | # This is to clean up temporary files which are left behind if Gaussian crashes. No changes required below. | + | Then the command **formcheck** should be available |
| - | cleanup_scratch() { | + | |
| - | echo " | + | |
| - | + | ||
| - | cd " | + | |
| - | rm -rfv " | + | |
| - | echo " | + | |
| - | echo " | + | |
| - | date | + | |
| - | exit 0 | + | |
| - | } | + | |
| - | + | ||
| - | # Associate the function " | + | |
| - | trap ' | + | |
| - | + | ||
| - | source / | + | |
| - | module add gaussian/ | + | |
| - | source / | + | |
| - | + | ||
| - | mkdir / | + | |
| - | mkdir / | + | |
| - | + | ||
| - | # Change to your work directory (usually more reliable than using " | + | |
| - | # directory in the format below using /lustre | + | |
| - | cd / | + | |
| - | + | ||
| - | # These are arbitrary subdirectory names for each sub-job, please set up all your input files (.com and | + | |
| - | # .chk) in this subdirectory and your output files will be written here. Hence each sub-job will be in | + | |
| - | # separate directories and more clearly organised. The names are arbitrary, so you should | + | |
| - | # name them in a meaningful way for you. Please note, the input files must also have the exact same name as | + | |
| - | # the directory containing them so the script can then find and run using them. In the current example only | + | |
| - | # 3 jobs are specified (PBS -J 1-3), but you can specify | + | |
| - | # 23 if desired). This bypasses the 10 queued job limit (counts as 1 job) but is not problematic for the | + | |
| - | # system - in fact better! | + | |
| - | + | ||
| - | directory[1]=alpha | + | |
| - | directory[2]=beta | + | |
| - | directory[3]=gamma | + | |
| - | directory[4]=delta | + | |
| - | directory[5]=epsilon | + | |
| - | directory[6]=eta | + | |
| - | directory[7]=theta | + | |
| - | directory[8]=iota | + | |
| - | directory[9]=kappa | + | |
| - | directory[10]=lamda | + | |
| - | directory[11]=mu | + | |
| - | directory[12]=nu | + | |
| - | directory[13]=xi | + | |
| - | directory[14]=omicron | + | |
| - | directory[15]=pi | + | |
| - | directory[16]=rho | + | |
| - | directory[17]=sigma | + | |
| - | directory[18]=tau | + | |
| - | directory[19]=upsilon | + | |
| - | directory[20]=phi | + | |
| - | directory[21]=chi | + | |
| - | directory[22]=psi | + | |
| - | directory[23]=omega | + | |
| - | + | ||
| - | # Printing out some possibly useful about your sub-job into the standard .out file. You'll see this file is | + | |
| - | # named according to your job number | + | |
| - | # number (1-3 in this example). No need to change anything below. | + | |
| - | + | ||
| - | echo "My job starts here" | + | |
| - | date | + | |
| - | uname -n | + | |
| - | + | ||
| - | echo ' PBS_ARRAY_INDEX: | + | |
| - | + | ||
| - | cd ${directory[$PBS_ARRAY_INDEX]} | + | |
| - | echo ' directory: ' ${directory[$PBS_ARRAY_INDEX]} | + | |
| - | pwd | + | |
| - | echo ' | + | |
| - | + | ||
| - | g09 < ${directory[$PBS_ARRAY_INDEX]}.com > ${directory[$PBS_ARRAY_INDEX]}.log | + | |
| - | + | ||
| - | # Normal exit of script: clean up temporary files - Gaussian should do this anyway, but to be safe. Remove | + | |
| - | # the Gaussian scratch directory where temporary files are written: / | + | |
| - | # If abnormal termination (walltime or job killed) then subroutine cleanup_scratch will clear temporary files. | + | |
| - | + | ||
| - | rm -rfv " | + | |
| - | + | ||
| - | echo " | + | |
| - | | + | |
| - | + | ||
| - | + | ||
| - | ====Gaussian Job Array Script for running on Multiple Nodes==== | + | |
| - | # | + | You can use a **checkpoint file (.chk)** which will allow you to continue with a 2nd (or subsequent) calculation from close to where the initial/ |
| - | + | ||
| - | # Any of these comment lines can remain in place and won't interfere with the script - or removed if you prefer. | + | https://gaussian.com/faq2/ |
| - | # (1) These are standard type lines for PBS job specification. Modify them for your own requirements - choice of | + | |
| - | # nodes; walltime; your directory on scratch for standard out and error files ; email of job starting, | + | https:// |
| - | # ending and errors. | + | |
| - | + | https://gaussian.com/tip4/ | |
| - | #PBS -N My.job | + | |
| - | #PBS -l select=2: | + | https://www.researchgate.net/post/How-can-I-res... |
| - | #PBS -l walltime=0: | + | |
| - | #PBS -q workq | + | Very occassionally |
| - | #PBS -m abe | + | |
| - | #PBS -M MY_Email_Address | + | Please **recheck** your molecular **geometry very carefully** to ensure there are no issues |
| - | # End of comments (1) Make changes above. | + | |
| - | + | ||
| - | # (2) The line below defined | + | |
| - | # essentially an individual job but which uses the same settings such as node, walltime | + | |
| - | # "qstat -ftu username" | + | |
| - | # as [1], [2] etc. You can do a qdel on a sub-job, just use job number | + | |
| - | + | ||
| - | #PBS -J 1-3 | + | |
| - | + | ||
| - | # (3) This is to clean up temporary files which are left behind if Gaussian | + | |
| - | cleanup_scratch() { | + | |
| - | echo " | + | |
| - | + | ||
| - | cd " | + | |
| - | rm -rfv " | + | |
| - | echo " | + | |
| - | echo " | + | |
| - | date | + | |
| - | exit 0 | + | |
| - | } | + | |
| - | + | ||
| - | # Associate function " | + | |
| - | trap ' | + | |
| - | + | ||
| - | # End of comments (2) No changes required above. | + | |
| - | + | ||
| - | # (4) You can remove this first line below after you've run the script once, but won't be problem if it remains. | + | |
| - | mkdir | + | |
| - | + | ||
| - | # (5) Please leave this line unchanged. Creating a subdirectory with your jobid for temporary Gaussian files | + | |
| - | # which are removed after job. Previously everyone' | + | |
| - | | + | |
| - | + | ||
| - | # (6) Change to your work directory (usually more reliable than using " | + | |
| - | # work directory in the format below using /lustre | + | |
| - | cd /lustre/SCRATCH5/users/ | + | |
| - | + | ||
| - | # (7) These are arbitrary subdirectory names for each sub-job, please set up all your input files (.com and | + | |
| - | # .chk) in this subdirectory and your output files will be written here. Hence each sub-job will be in | + | |
| - | | + | |
| - | # meaningful way for you. Please note, the input files must also have the exact same name as the directory | + | |
| - | # containing them so the script can then find and run using them. In the current example only 3 jobs are | + | |
| - | # specified (PBS -J 1-3), but you can specify as many directories/ | + | |
| - | # desired). This bypasses the 10 queued job limit (counts as 1 job) but not problematic for the system - in | + | |
| - | # fact better! | + | |
| - | + | ||
| - | directory[1]=alpha | + | |
| - | directory[1]=alpha | + | |
| - | directory[2]=beta | + | |
| - | directory[3]=gamma | + | |
| - | directory[4]=delta | + | |
| - | directory[5]=epsilon | + | |
| - | directory[6]=eta | + | |
| - | directory[7]=theta | + | |
| - | directory[8]=iota | + | |
| - | directory[9]=kappa | + | |
| - | directory[10]=lamda | + | |
| - | directory[11]=mu | + | |
| - | directory[12]=nu | + | |
| - | directory[13]=xi | + | |
| - | directory[14]=omicron | + | |
| - | directory[15]=pi | + | |
| - | directory[16]=rho | + | |
| - | directory[17]=sigma | + | |
| - | directory[18]=tau | + | |
| - | directory[19]=upsilon | + | |
| - | directory[20]=phi | + | |
| - | directory[21]=chi | + | |
| - | directory[22]=psi | + | |
| - | directory[23]=omega | + | |
| - | + | ||
| - | # (8) Printing out some possibly useful about your sub-job into the standard .out file. You'll see this file | + | |
| - | # is named according | + | |
| - | # sub-job number | + | |
| - | + | ||
| - | echo "My job starts here" | + | |
| - | date | + | |
| - | uname -n | + | |
| - | + | ||
| - | echo ' PBS_ARRAY_INDEX: | + | |
| - | + | ||
| - | cd ${directory[$PBS_ARRAY_INDEX]} | + | |
| - | echo ' directory: ' ${directory[$PBS_ARRAY_INDEX]} | + | |
| - | pwd | + | |
| - | echo ' | + | |
| - | + | ||
| - | + | ||
| - | # (9) Please leave unchanged. This new module specifies | + | |
| - | # for temporary files directory. | + | |
| - | source / | + | |
| - | module add gaussian/ | + | |
| - | source / | + | |
| - | + | ||
| - | # (10) Please leave unchanged. The directory/ | + | |
| - | LINDA=`cat $PBS_NODEFILE | uniq | tr ' | + | |
| - | echo linda: $LINDA | + | |
| - | cat ${directory[$PBS_ARRAY_INDEX]}.com | sed " | + | |
| - | g09 < temp$$.inp > ${directory[$PBS_ARRAY_INDEX]}.log | + | |
| - | + | ||
| - | # (11) Leave following unchanged. | + | |
| - | # Normal exit of script: clean up temporary files - Gaussian should do this anyway, but to be safe. | + | |
| - | # Remove the Gaussian scratch directory where temporary files are written. It is | + | |
| - | # / | + | |
| - | # If abnormal termination (walltime or job killed) then function subroutine cleanup_scratch | + | |
| - | # temporary files. | + | |
| - | + | ||
| - | rm -rfv " | + | |
| - | + | ||
| - | echo " | + | |
| - | date | + | |