Как написать модули Fortran в подпрограмме UMAT в ABAQUS? - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть 3 модуля (в свободном формате .f90), которые вызываются из подпрограммы UMAT, например:

module module_A  
use module_C  
use module_B  
....  
end module_A  

module module_B  
use module_C  
....  
end module_B

module module_C  
....  
end module_C

subroutine UMAT(STRESS,...)  

....  
Here the subroutines from module_A and module_B are being called  
...  
end subroutine UMAT

Теперь мой вопрос: какой должен быть подходящий формат написания этих модулей с подпрограммой UMAT? Как объединить разные файлы модулей в один * .for файл (свободный формат)?

1 Ответ

0 голосов
/ 16 ноября 2018

Если я правильно понимаю, у вас есть несколько исходных файлов, которые вы хотите скомпилировать для вашего UMAT.Поскольку встроенная утилита Abaqus make принимает только один файл, вы можете использовать оператор INCLUDE, чтобы указать компилятору Fortran включить другие исходные файлы в основной исходный файл.Допустим, у вас есть четыре файла: module_A.for, module_B.for, module_C.for и umat.for.umat.for должен содержать несколько операторов INCLUDE вверху:

INCLUDE 'module_C.for'
INCLUDE 'module_B.for'
INCLUDE 'module_A.for'

SUBROUTINE UMAT(... umat args ...)
    USE module_A

ENDSUBROUTINE UMAT

Убедитесь, что все файлы * .for находятся в одном каталоге, чтобы компилятор мог легко их найти.Когда компилятор обнаруживает INCLUDE, он читает указанный исходный файл и продолжает компиляцию, как если бы его содержимое находилось непосредственно в исходном файле umat.for, а затем возвращается к компиляции umat.for.

...