diff --git a/docs/Scientific_Computing/Supported_Applications/ABAQUS.md b/docs/Scientific_Computing/Supported_Applications/ABAQUS.md index 2dd6407c8..d5d287eb3 100644 --- a/docs/Scientific_Computing/Supported_Applications/ABAQUS.md +++ b/docs/Scientific_Computing/Supported_Applications/ABAQUS.md @@ -8,6 +8,7 @@ tags: - gpu - mpi - omp +- fea title: ABAQUS vote_count: 2 vote_sum: 0 @@ -15,21 +16,9 @@ zendesk_article_id: 212457807 zendesk_section_id: 360000040076 --- +A list of ABAQUS commands can be found with: - -[//]: <> (REMOVE ME IF PAGE VALIDATED) -[//]: <> (vvvvvvvvvvvvvvvvvvvv) -!!! warning - This page has been automatically migrated and may contain formatting errors. -[//]: <> (^^^^^^^^^^^^^^^^^^^^) -[//]: <> (REMOVE ME IF PAGE VALIDATED) - - - -A list of commands can be found with: - -``` sl +``` sh abaqus help ``` @@ -38,7 +27,8 @@ can provide significant speedup to your computations, however hyperthreaded CPUs will use twice the number of licence tokens. It may be worth adding  `#SBATCH --hint nomultithread` to your slurm script if licence tokens are your main limiting factor. -!!! prerequisite Tips + +!!! note Required ABAQUS licences can be determined by this simple and intuitive formula `⌊ 5 x N``0.422`` ⌋` where `N` is number of CPUs. @@ -51,88 +41,72 @@ parameter `academic=TEACHING` or `academic=RESEARCH` in a relevant Not all solvers are compatible with all types of parallelisation. -| | | | | | -|-------------------|--------------------|------------------|---------------|----------------| -|   | Element operations | Iterative solver | Direct solver | Lanczos solver | -| `mp_mode=threads` | ✖ | ✔ | ✔ | ✔ | -| `mp_mode=mpi` | ✔ | ✔ | ✖ | ✖ | -!!! prerequisite Note +| | | | | | +|-------------------|--------------------|-----------|--------|---------| +|   | Element operations | Iterative | Direct | Lanczos | +| `mp_mode=threads` | ✖ | ✔ | ✔ | ✔ | +| `mp_mode=mpi` | ✔ | ✔ | ✖ | ✖ | + +!!! warning If your input files were created using an older version of ABAQUS you will need to update them using the command, - ``` sl + ``` sh abaqus -upgrade -job new_job_name -odb old.odb ``` or - ``` sl + ``` sh abaqus -upgrade -job new_job_name -inp old.inp ``` - - ---- - - - - - - - - - - - - @@ -245,4 +219,4 @@ rm "abaqus_v6.env"   *Note: Hyperthreading off, testing done on small mechanical FEA model. -Results highly model dependant. Do your own tests.* \ No newline at end of file +Results highly model dependant. Do your own tests.*

Serial

-
-

For when only one CPU is required, generally as part of -an job -array.

-

 

#!/bin/bash -e
-
-#SBATCH --job-name      ABAQUS-Shared
-#SBATCH --time          00:05:00       # Walltime
-#SBATCH --cpus-per-task 1              
-#SBATCH --mem           1500          # total mem
-
-module load ABAQUS/2019
-
-abaqus job="propeller_s4rs_c3d8r" verbose=2 interactive 

Shared Memory

-
-mp_mode=threads -

Uses a nodes shared memory for communication. 

-

May have a small speedup compared to MPI when using a low number of -CPUs, scales poorly. Needs significantly less memory than MPI.

-Hyperthreading may be enabled if using shared memory but it is not -recommended.
#!/bin/bash -e
-
-#SBATCH --job-name      ABAQUS-Shared
-#SBATCH --time          00:05:00       # Walltime
-#SBATCH --cpus-per-task 4              
-#SBATCH --mem           2G        # total mem
-
-module load ABAQUS/2019
-
-abaqus job="propeller_s4rs_c3d8r" verbose=2 interactive \
-    cpus=${SLURM_CPUS_PER_TASK} mp_mode=threads

UDF

-
-

Shared memory run with user defined function (fortran or C). 

+ +## Examples + +=== Serial + For when only one CPU is required, generally as part of +a [job array](https://support.nesi.org.nz/hc/en-gb/articles/360000690275-Parallel-Execution#t_array) + ``` + #!/bin/bash -e + #SBATCH --job-name ABAQUS-serial + #SBATCH --time 00:05:00 # Walltime + #SBATCH --cpus-per-task 1 + #SBATCH --mem 1500 # total mem + module load ABAQUS/{{applications.ABAQUS.machines.mahuika.versions | last}} +abaqus job="propeller_s4rs_c3d8r" verbose=2 interactive +=== "Shared Memory" + `mp_mode=threads` + Uses a nodes shared memory for communication. + May have a small speedup compared to MPI when using a low number of + CPUs, scales poorly. Needs significantly less memory than MPI. + Hyperthreading may be enabled if using shared memory but it is not + recommended. + + ```sl + #!/bin/bash -e + #SBATCH --job-name ABAQUS-Shared + #SBATCH --time 00:05:00 # Walltime + #SBATCH --cpus-per-task 4 + #SBATCH --mem 2G # total mem + module load ABAQUS/{{applications.ABAQUS.machines.mahuika.versions}} + abaqus job="propeller_s4rs_c3d8r verbose=2 interactive \ + cpus=${SLURM_CPUS_PER_TASK} mp_mode=threads + +=== "UDF" +Shared memory run with user defined function (fortran or C). 

user=<name_of_function> 

Function will be compiled at start of run. 

You may need to chance the function suffix if you usually compile -on windows.

#!/bin/bash -e
-
-#SBATCH --job-name      ABAQUS-SharedUDF
-#SBATCH --time          00:05:00       # Walltime
-#SBATCH --cpus-per-task 4              
-#SBATCH --mem           2G         # total mem
-
-module load imkl
-module load ABAQUS/2019
+on windows.
+
+
+    ```
+    #!/bin/bash -e
+    
+    #SBATCH --job-name      ABAQUS-SharedUDF
+    #SBATCH --time          00:05:00       # Walltime
+    #SBATCH --cpus-per-task 4
+    #SBATCH --mem           2G         # total mem
+
+    module load imkl
+    module load ABAQUS/{{{{applications.ABAQUS.machines.mahuika.versions | last}}
 
 abaqus job="propeller_s4rs_c3d8r" user=my_udf.f90 verbose=2 interactive \
     cpus=${SLURM_CPUS_PER_TASK} mp_mode=threads