在Abaqus中使用f90格式的子程序

Abaqus默认支持的是固定(fortran77)格式的Fortran子程序。编译或者调用子程序时会自动搜索文件后缀为:*.for, *.f, *.C, *.c, *.cc, *.CPP, *.cpp, *.CXX, *.cxx 的源代码文件。

如果想使用f90自由格式的Fortran子程序,需要修改Abaqus的环境配置文件。Abaqus2018环境配置文件的位置与2016的位置不同,在我的电脑中是:D:\Program Files\Dassault Systemes\SimulationServices\V6R2018x\win_b64\SMA\site\win86_64.env

在该环境配置文件的Fortran编译选项中增加'/free':

compile_fortran=['ifort',
                 '/c','/DABQ_WIN86_64', '/extend-source', '/fpp',
                 '/iface:cref', '/recursive', '/Qauto-scalar',
                 '/QxSSE3', '/QaxAVX', 
                 '/heap-arrays:1', 
                 # '/Od', '/Ob0',  # <-- Optimization Debugging
                 # '/Zi',          # <-- Debugging
                 '/include:%I', '/include:'+abaHomeInc, '%P', '/free']

并且需要将子程序文件后缀改为for,之后,将该子程序编译为obj文件(umat-std.obj):

abaqus make library=umat.for

在执行计算任务时将该obj文件作为用户子程

Abaqus是一款强大的有限元分析软件,它允许用户通过编写用户子程序(User Subroutines,简称US)来自定义材料行为、边界条件、载荷等。USS子程序是其中一种用于定义用户自定义材料行为的子程序。以下是如何使用USS子程序的基本步骤: 1. **编写USS子程序**: - 首先,你需要使用Fortran语言编写USS子程序。USS子程序需要包含特定的接口和变量,以便Abaqus能够正确调用。 - 子程序的基本结构如下: ```fortran SUBROUTINE USS(STRESS, STATEV, DDSDDE, SSE, SPD, & SCD, RPL, DDSDDT, DRPLDE, DRPLDT, & STRAN, DSTRAN, TIME, DTIME, TEMP, DTEMP, & PREDEF, DPRED, CMNAME, & NDI, NSHR, NTENS, NSTATV, PROPS, NPROPS, & COORDS, DROT, PNEWDT, CELENT, DFGRD0, DFGRD1, & NOEL, NPT, LAYER, KSPT, KSTEP, KINC) IMPLICIT NONE ! 声明变量 ! 子程序体 END SUBROUTINE USS ``` 2. **编译USS子程序**: - 使用适当的Fortran编译器将编写的USS子程序编译成动态链接库(DLL)或共享对象(SO)文件。 - 例如,使用Intel Fortran编译器编译的命令可能如下: ```sh ifort -c -fpp -DNTYPE=DOUBLE -DABQ_USS your_uss_subroutine.f90 ifort -shared -fpic -o your_uss_subroutine.dll your_uss_subroutine.obj ``` 3. **在Abaqus中调用USS子程序**: - 在Abaqus/CAE中,创建一个新的模型或打开现有模型。 - 在材料属性定义中,选择“用户自定义材料”(User-defined Material),并在相应的字段中输入你的USS子程序名称。 - 在分析步(Step)设置中,确保选择了适当的分析类型,并指定调用子程序的相关参数。 4. **运行分析**: - 保存模型并提交作业进行分析。 - Abaqus将自动调用你编写的USS子程序,并根据子程序中的定义进行计算。 5. **结果分析**: - 分析完成后,使用Abaqus/CAE或其他后处理工具查看结果。 - 验证子程序的正确性,确保结果符合预期。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值