User subroutines can be used when running jobs in parallel. In a distributed run, the entire model is decomposed into separate domains (partitions). Each domain is serviced by a separate MPI process. Abaqus provides well-defined synchronization points at which it is possible to exchange information across all MPI ranks, using the MPI communications facilities. All native MPI calls are supported, in both Fortran and C++. In addition, for cases of hybrid execution, user subroutines and any subroutines called by them must be thread safe. This precludes the use of common blocks, data statements, and save statements. To work around these limitations and for guidelines and techniques
你要用集群主要是用它的并行功能,按照并行的方式只要有兩種:Thread和 MPI兩種,代表共享內存和分布式兩種
abaqus的并行計算針對隱式和顯式算法是不同:
以顯式為例
首先顯式算法:
共享內存的提交方式為:
abaqus job=job-name cpus=n
舉例,兩個核心 作業名為beam
abaqus job=beam cpus=2
如果包含用戶自定義子程序
abaqus job=beam user=umat-name cpus=2
分布式的提交方式為:
abaqus job=job-name cpus=n parallel=domain domains=m dynamic_load_balancing
舉例,兩個核心 作業名為beam
如果包含用戶自定義子程序
abaqus job=beam user=umat-name cpus=2 parallel=domain domains=2
還需要提醒,對于子程序請閱讀下面一段文字
Use with user subroutines
User subroutines can be used when running jobs in parallel. In a distributed run, the entire model is decomposed into separate domains (partitions). Each domain is serviced by a separate MPI process. Abaqus provides well-defined synchronization points at which it is possible to exchange information across all MPI ranks, using the MPI communications facilities. All native MPI calls are supported, in both Fortran and C++. In addition, for cases of hybrid execution, user subroutines and any subroutines called by them must be thread safe. This precludes the use of common blocks, data statements, and save statements. To work around these limitations and for guidelines and techniques