Difference between revisions of "HowTo:ansys"
(→Batch runs) |
(→Batch runs) |
||
Line 63: | Line 63: | ||
=== Batch runs === | === Batch runs === | ||
− | ANSYS can (and usually must) be run in '''batch mode'''. Since you likely have access to Fluent on your local machines, most interactive work should be done there, whereas the computationally intensive runs can be executed on a parallel system such as ours. | + | ANSYS can (and usually must) be run in '''batch mode'''. Since you likely have access to Fluent on your local machines, most interactive work should be done there, whereas the computationally intensive runs can be executed on a parallel system such as ours. For this, data and commands are written into a text file written in '''ANSYS Parametric Design Language''' (APDL) which is used to specify the system and describe the Analysis to be performed. |
+ | Here is the top of an input file (the full file is too long to be displayed here): | ||
− | |||
<pre> | <pre> | ||
/prep7 | /prep7 | ||
Line 92: | Line 92: | ||
</pre> | </pre> | ||
+ | Let's call this file "testsys.txt". The analysis can now be performed by calling ANSYS directly from the command line | ||
+ | <pre>ansys181 -b -i testsys.txt</pre> | ||
− | + | In this case, output is sent to the screen, and output files are given the default name "file.*". No further input from the user is required. | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
Once everything works you could submit this job into the background (using bash) by typing | Once everything works you could submit this job into the background (using bash) by typing | ||
− | <pre> | + | <pre>ansys181 -b -i testsys.txt > test.out 2>&1 & </pre> |
− | This would redirect standard output and standard error to | + | This would redirect standard output and standard error to test.out. The point is that ANSYS is run non-interactively this way, i.e. we can use the same technique to submit a production job to the scheduler, as shown in the next section. |
=== Production runs === | === Production runs === |
Revision as of 18:59, 5 October 2017
Contents
ANSYS Mechanical
This is a help file on using the Mechanical Engineering structural code "ANSYS Mechanical" on our systems. This software is only licensed for academic researchers who have prior training. The software is only made available to persons who belong to a specific Unix group. See details below.
What is ANSYS Mechanical ?ANSYS Mechanical is a Mechanical Engineering software that uses finite element analysis (FEA) for structural analysis. It covers a large range of applications ranging from geometry preparation to optimization. You can model advanced materials, complex environmental loadings and industry-specific requirements in areas such as offshore hydrodynamics and layered composite materials. It can be used interactively and supplies a graphical user interface. It can also run in batch mode, if the required time for solving a problem is too long for interactive use. The latter situation is the standard if you are using it on CAC machines. VersionThe most current version of Fluent on our systems is Ansys-18. Location and AccessANSYS Mechanical runs under the Linux operating system. The program is located in /opt/fluent/ on swlogin1 ("SW cluster") and in /global/software/ansys on caclogin01 ("Frontenac"). To use it, you have to be a trained University User. It is furthermore required that you read our licensing terms, and sign a statement. We will confirm your statement, and you will then be made a member of a Unix group fluent (so called for "historical" reasons), which enables you to run the software. Contact us if you are in doubt of whether you qualify to run Fluent on our system. LicensingThe ANSYS license is "seat limited" and "process limited". At present, there are the following licensing limits on our systems: 25 program runs plus 512 parallel processes i.e. at most 25 separate sessions can be run simultaneously (serial or parallel). Each of these sessions can run up to 4 processes for a total of 100. In addition, it is possible to run up to 512 "parallel only" processes in total. One scenario would be 24 users have 24 process parallel jobs running, and another one with 36, thus using up all available Fluent resources. Not that the seats are shared with the CFD software Fluent. |
Running ANSYSSetupOn the SW clusterThe setup for Fluent on the SW cluster is done via usepackage. Simply type: use ansys on the workup node (swlogin1) or include this command in your setup (.bash_profile) file. This will set up the default (Ansys 18) version. Other versions can be setup through specification of the proper version, for instance use ansys17 to set up the "Ansys 17.0" version. On FrontenacThe setup for Fluent on Frontenac is done via module. Type: module purge --force module load ansys on the workup node (caclogin01) or include these commands in your setup (.bash_profile) file. Note that this is "purging" the present setup which may make the shell in which this done unusable for running other software. NoteYou have to be in the fluent Unix group for this to work on either system, as access permissions prevent general users from accessing ANSYS software such as Fluent. Interactive runs(...under construction...) Batch runsANSYS can (and usually must) be run in batch mode. Since you likely have access to Fluent on your local machines, most interactive work should be done there, whereas the computationally intensive runs can be executed on a parallel system such as ours. For this, data and commands are written into a text file written in ANSYS Parametric Design Language (APDL) which is used to specify the system and describe the Analysis to be performed. Here is the top of an input file (the full file is too long to be displayed here): /prep7 ET,1,SOLID185, ,2 MP,EX,1,70e09 MP,EY,1,70e09 MP,EZ,1,60e09 MP,NUXY,1,0.33 MP,NUYZ,1,0.30 MP,NUXZ,1,0.30 MP,GXY,1,26.5e09 MP,GYZ,1,22e09 MP,GXZ,1,22e09 *AFUN,DEG thetax=0.000000 thetay=0.000000 fx= 0 fy= -1000 fz= 0 fxp= fx fyp= fy*(cos(thetax)) - fz*(sin(thetax)) fzp= fy*(sin(thetax)) + fz*(cos(thetax)) [...] Let's call this file "testsys.txt". The analysis can now be performed by calling ANSYS directly from the command line ansys181 -b -i testsys.txt In this case, output is sent to the screen, and output files are given the default name "file.*". No further input from the user is required. Once everything works you could submit this job into the background (using bash) by typing ansys181 -b -i testsys.txt > test.out 2>&1 & This would redirect standard output and standard error to test.out. The point is that ANSYS is run non-interactively this way, i.e. we can use the same technique to submit a production job to the scheduler, as shown in the next section. Production runsTo submit a production job on our clusters, you must use the scheduler. To obtain details, read through our [[|]] (SW cluster) or [[|]] (Frontenac). Production jobs that are run without scheduler will be terminated by the system administrator. On the SW clusterFor a Fluent production job, the batch command is "wrapped" into a Grid Engine script that looks like this: #!/bin/bash #$ -S /bin/bash #$ -V #$ -cwd #$ -pe shm.pe 12 #$ -m be #$ -M hpcXXXX@localhost #$ -o STD.out #$ -e STD.err rm fan_1.dat . /opt/fluent/ansys-16.1/setup_64bit.sh fluent 3ddp -t$NSLOTS -g -i example.flin Here we are running the above example batch file "example.flin" using 12 processors on a parallel machine. The output and any error messages from the system are re-directed to files called "STD.out" and "STD.err", respectively. The "#$ -q" and "#$ -l" entries force execution on the Linux cluster (important!). Email notification is handled by the "#$ -m" and "#$ -M" lines. Replace "hpcXXXX" by your actual username and make sure that a file called ".forward" that contains you actual email address is in your home directory. This practice makes it impossible for other users to see your email address. Many Fluent jobs that you run on our machines are likely to be quite large. To utilize the parallel structure of our machines, Fluent offers several options to execute the solver in a parallel environment, i.e. on several CPU's simultaneously. The default option for such runs is MPI i.e., it uses the Message Passing Interface for inter-process communication. To take advantage of the parallel capabilities of Fluent, you have to call the program with additional command line options that specify the details of your parallel run:
Parallel jobs of longer runtime should only be run in batch using the Grid Engine. The number of processors "12" specified in our example script appears only once, after #$ -pe shm.pe which is where you let the Grid Engine know how many processors to allocate to run the program. The internal environment variable NSLOTS will automatically be set to this value and can then be used in the fluent command line. It is also necessary to source a setup file called setup_64bit.sh. This will set various environment variables and enable the Fluent program to properly interact with Grid Engine. If you are interested, take a look. The file is readable. All processes are allocated within a single node. This is to make communication more efficient and to avoid problems with the control by Gridengine. The effect of this is that, while still using MPI, Fluent employs a so-called shared-memory layer for communication. The disadvantage is that the size of the job is restricted by the number of cores on a node. Once the script has been adapted (let's call it "fluent.sh"), it can be submitted to the Gridengine by qsub fluent.sh from the login node. Note that the job will appear as a parallel job on the Grid Engine's "qstat" or "qmon" commands. Note also that submission of a parallel job in this way is only profitable for large systems that use many CPU cycles, since the overhead for assigning processes, preparing nodes, and communication between them is considerable. There is an easier way to do this: We are supplying a small perl script called that can be called directly, and will ask a few basic questions, such as the name for the job to be submitted and the number of processes to be used in the job. Simply type AnsysSubmit and answer the questions. The script expects a Fluent input file with "file extension" .flin to be present and will do everything else automatically. This is meant for simple Fluent job submissions. More complex job submissions are better done manually. On FrontenacOn Frontenac, the scheduler in use is SLURM. Here is a SLURM example script of a Fluent production job: #!/bin/bash #SBATCH --job-name=FLUENT_test #SBATCH -c 12 #SBATCH -t 00:30 #SBATCH --mem=1000 module purge --force module load ansys fluent 3ddp -t$SLURM_CPUS_PER_TASK -g -i testsys.flin Here we are running the above example batch file "testsys.flin" using 12 processors on a parallel machine. The output and any error messages from the system are re-directed to a file called "slurm-XXXXX.out" (where XXXXX is the job number). The -t option is used to specify a time limit. If it is omitted you are assigned a default limit. It is best to specify this limit, and choose it to be slightly longer than the largest expected execution time. This will make the job harder to schedule, but it will ensure that the job is not terminated before it finishes. Note that time limits are "hard", i.e. the job will be stopped when it exceeds its limit. This is necessary to make efficient scheduling possible. The --mem option is used to specify a memory limit. If it is omitted you are assigned a default limit. It is best to specify this limit, and choose it to be slightly larger than the largest expected memory usage. This will make the job harder to schedule, but it will ensure that the job is not for exceeding its memory allocation. Note that memory limits are "hard", i.e. the job will be stopped if it exceeds its allocated memory. This enable efficient memory allocation. To take advantage of the parallel capabilities of Fluent, you have to call the program with additional command line options that specify the details of your parallel run:
Parallel jobs of longer runtime should only be run in batch using the Grid Engine. The number of processors "12" specified in our example script appears only once, in #SBATCH -c 12 which is where you let the Grid Engine know how many processors to allocate to run the program. The internal environment variable SLURM_CPUS_PER_TASK will automatically be set to this value and can then be used in the fluent command line. All processes are allocated within a single node. This is to make communication more efficient and to avoid problems with the control by SLURM. The effect of this is that, while still using MPI, Fluent employs a so-called shared-memory layer for communication. The disadvantage is that the size of the job is restricted by the number of cores on a node. Once the script has been adapted (let's call it "fluent.sh"), it can be submitted to SLURM by sbatch fluent.sh from the login node. Note that the job will appear as a parallel job on the "squeue" command. |
Further HelpFluent is a complex software package, and requires some practice to be used efficiently. In this FAQ we can not explain it use in any detail. The documentation for Fluent can be access from inside the program GUI by clicking on the "Help" button on the upper right. This is in html format. The pdf version of the docs can be found in /opt/fluent/ansys-16.0/v140/commonfiles/help/en-us/pdf Fluent documentation is subject to the same license terms as the software itself, i.e. you have to be signed up as a Fluent user in order to access it. If you are experiencing trouble running a batch command script, check carefully if the sequence of commands is exactly in sync with the program. This might mean typing them in interactively as a test. If you have problems with the Grid Engine, read our FAQ on that subject, and maybe consult the manual for that software which is accessible as a PDF file. CAC also provide user support in the case of technical problems: just send email to cac.help@queensu.ca. |