CONTACT 概述
CONTACT 是研究三维摩擦接触问题的高级仿真程序,如轮轨之间、滚动轴承的接触问题。CONTACT 提供了完整且详细的解决方案,可集成到多体仿真软件中。其计算质量可与有限元分析相近,但计算时间仅为后者的千分之一。CONTACT 采用半解析方法和高效的数值算法,使得复杂的滚动接触问题能够在工程实践中得到快速准确的解决,为车辆动力学、轨道磨损预测等领域提供了强大工具。该程序实现了荷兰代尔夫特理工大学的 E.A.H. Vollebregt 博士和 J.J. Kalker 教授开发的滚动接触理论。其开源版本链接如下,具备完整的计算功能,适用于安装了Intel MKL库的Ubuntu系统。
CONTACT开源版本https://github.com/eve70a/CONTACT
物理模型
CONTACT 具备以下功能:
根据给定的轮轨踏面与廓形,确定接触点位置
识别接触区域的大小、形状及作用压力
计算蠕滑和摩擦,计算切向表面应力(牵引力),确定粘着区和滑动区
计算物体内部的弹性位移和次表面应力
适用于稳态和非稳态、滚动和滑动问题
适用于由弹性和粘弹性材料构成的大型均质体
技术要求
编译当前需要使用英特尔 Fortran 编译器,主要是因为程序使用了英特尔数学核心库(MKL)进行快速傅里叶变换(FFT)和 LAPACK 功能。该编译器可在 intel.com 免费获取。
安装流程
1. 安装并配置 Intel oneAPI
Intel oneAPI 官方下载页面
下列代码从官方页面摘录,包括了将 Intel 存储库添加到 APT 源并安装 oneAPI 基础工具包的流程:
更新软件包列表并安装必要的前置依赖
将 Intel 存储库密钥添加到系统密钥环中
配置
apt
使用 Intel 存储库使用
apt
安装基础工具包
sudo apt update
sudo apt install -y gpg-agent wget
# Make sure your system meets the System Requirements.
# To add APT repository access, enter the command for the installation prerequisites:
sudo apt update
sudo apt install -y gpg-agent wget
# To set up the repository, download the key to the system keyring:
# download the key to system keyring
wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB \
| gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null
# add signed entry to apt sources and configure the APT client to use Intel repository:
echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list
# Update the packages list and repository index:
sudo apt update
# Install with APT
sudo apt install intel-oneapi-base-toolkit
2. 查找 oneAPI 安装目录
默认安装目录为 /opt/intel/oneapi
,可通过搜索 setvars.sh
来确认:
find /opt/intel -name setvars.sh
若输出类似 /opt/intel/oneapi/setvars.sh
,则说明 oneAPI 已经正确安装在 /opt/intel/oneapi
。
3. 加载 oneAPI 环境变量
执行以下命令可将 Intel 提供的编译器(如 ifx、ifort 等)加入到 PATH
环境变量中:
source /opt/intel/oneapi/setvars.sh
如果多次执行该脚本,可能会收到“环境已设置”的提示,可加上 --force参数来强制重新加载(适用于较新的 oneAPI 版本):
source /opt/intel/oneapi/setvars.sh --force
若希望在每次打开新终端时都自动加载 oneAPI 环境,可将setvars.sh
写入 ~/.bashrc
:
echo 'source /opt/intel/oneapi/setvars.sh > /dev/null' >> ~/.bashrc
source ~/.bashrc
4. 安装Fortran编译器
Intel oneAPI Base Toolkit 默认包含 Intel Fortran 编译器,但有时需单独安装/更新。可通过以下命令检查:
dpkg -l | grep intel-oneapi-compiler-fortran
如果没有输出,则说明系统未安装该编译器包,可通过以下命令安装:
sudo apt install intel-oneapi-compiler-fortran
安装后设置环境变量,使得系统能够找到 Intel 编译器:
source /opt/intel/oneapi/setvars.sh
验证 ifort 编译器是否可用:
which ifort
# 或者
ifort --version
5. 测试 Fortran 编译器(可选)
可以创建一个简单的 Fortran 程序 hello.f90 用于测试:
cat > hello.f90 <<EOF
print *, "Hello, world!"
end
EOF
编译并运行:
# 使用 ifx 编译
ifx -o hello hello.f90
# 或者使用 ifort 编译
ifort -o hello hello.f90
./hello
06. CONTACT 的编译与启动
较新版本的 Intel oneAPI 可能已将 ifort
替换为 ifx
,然而,CONTACT 的编译脚本固定调用的是 ifort
,而系统上仅有 ifx
,可以在 Intel 编译器所在目录下创建一个符号链接:
sudo ln -s /opt/intel/oneapi/compiler/2025.0/bin/ifx /opt/intel/oneapi/compiler/2025.0/bin/ifort
接下来使用 make 指令编译 CONTACT:
# 在 src 文件夹内执行
make clean
make
编译完成之后,CONTACT 的可执行文件位 bin
目录下,除了 contact_linux64 可执行程序之外,还提供了图形界面脚本 start_gui.sh
,需要先设置 CONTACTDIR
环境变量,再启动 GUI 界面的 CONTACT:
# 假设当前在 bin 目录下
export CONTACTDIR=$(cd .. && pwd)
./start_gui.sh
启动之后的CONTACT GUI有三个模块,包括Select Input、Check Input、Run Experiment。在examples文件夹下,有诸如曼彻斯特 Benchmark 车辆模型在内的多个.inp模型。具体用法请仔细参阅 doc 文件夹下的 user-guide.pdf。
算例INP文件解读
CONTACT 算例一般是以.inp文件格式输入。参考CONTACT 软件手册第 5.1 节,Cattaneo shift 问题的算例可以通过如下方式定义:
3 MODULE
200100 P-B-T-N-F-S PVTIME, BOUND , TANG , NORM , FORCE, STRESS
022020 L-D-C-M-Z-E FRCLAW, DISCNS, INFLCF, MATER, RZNORM, EXRHS
0000331 H-G-I-A-O-W-R HEAT, GAUSEI, IESTIM, MATFIL, OUTPUT, FLOW, RETURN
100 100 30 1 0.0001 MAXGS , MAXIN , MAXNR , MAXOUT, EPS
9.1954 0.000 0.000 0.000 FN, CKSI, CETA, CPHI
0.400 0.400 FSTAT, FKIN
0.420 0.420 200. 200. POISS 1,2, GG 1,2
-3 IPOTCN
19 19 1.000 1.000 1.26667 MX,MY,AA,BB,SCALE
CONTACT 通常将同一个算例(case)的设置紧凑地放在若干行中,格式大致如下:
- 行1: 指定 module 号(1表示轮轨接触计算,3表示通用接触计算)
- 行2: 第一控制字(CPBTNFS,用以确定问题的宏观设置)
- 行3: 第二控制字(例如LDCMZE或者VLDCMZE,用于网格与离散方式、材料/影响系数、几何及位置等方面的设置)
- 行4: 第三控制字(XHGIAOWR,是对输出配置和程序流程进行设置)
- 行5 及以后: 具体的数值输入(如最大迭代次数、法向力、摩擦系数、几何参数、网格大小等)
第一控制字:CPBTNFS
请注意,以下控制字是以
module 1为例,module 3的设置会稍有不同。
C (CONFIG)
- 功能:配置/结构(configuration)选项,描述是“左轮 / 右轮 / 轨道 / 轮对 / 滚筒”等组合。
- 可选数值:
0
:半轮对对半轨道,左轮。1
:半轮对对半轨道,右轮。4
:半轮对在辊子(roller)上,左轮。5
:半轮对在辊子(roller)上,右轮。
- 说明:
- “半轮对”通常指只考虑单个车轮以及与其相对应的一半轨道廓形(或对应的一段钢轨)。
- “左轮 / 右轮”的概念是车辆左右位置的区分。
- 若只想算单轮与钢轨的接触,可以用
0
(左轮) 或1
(右轮) 来指定。
P (PVTIME)
- 功能:与上一算例(或时间步)的关系以及是否要继承/清空之前的切向力信息。
- 可选数值:
0
:新时间步;上一算例的切向力作为当前步的“初值”或“前一时刻”信息。2
:新序列;对瞬态问题(T=1,2),表示开始新的接触阶段(先前蠕滑/切向力清零);对准静态 (T=0,3),则不会用到之前的切向力。3
:新迭代;上一步的切向力“保持”不变(不清零),相当于在同一时间步内迭代收敛的进一步求解。
- 说明:
- 当 T=1 或 2 (表示瞬态滚动、移动坐标等) 时,先前的切向力会影响后续时刻的分布;
- 当 T=0 或 3 (纯正向或稳态滚动) 时,可能并不需要上一时刻的切向力。
B (BOUND)
- 功能:指定法向接触问题的“边界(pressure bound)”或近似求解方式。
- 常见可选值:
0
:完全弹性模型,严格满足接触条件(即最精确的数值弹性迭代)。2
:使用Hertz 椭圆近似得到的压力上限(椭圆形分布,需 IPOTCN<0);3
:使用Hertz 抛物线近似;4
:SDEC(simple double half-elliptical contact area and pressure distribution);5
:Kik-Piotrowski (KPEC) ,即KP模型,非Hertz近似;6
:修正的 ANALYN 方法(非Hertz近似)。
- 说明:
2~6
大多是近似或半解析解,计算速度较快,常与 FASTSIM (M=2,3) 联用。0
表示最一般的全弹性数值迭代,不做先验假设。- 在 Module 1 中,一些近似选项(
2~4
)可能尚未实现(手册注释:“not yet available in module 1.”)。
T (TANG)
- 功能:指定是否要解决切向问题(蠕滑、摩擦),以及采用何种滚动/转动模式。
- 可选值:
0
:无摩擦(只算法向压紧),即纯正向问题;1
:有摩擦压紧,含“移位(shift)”或“瞬态滚动(多步) / 单步” 等;2
:瞬态滚动,使用随动坐标系;3
:稳态滚动的“直接法”。
- 说明:
- T=1 或 2 通常表示瞬态,会与 P-digit 配合使用以处理多步时间序列;
- T=3 表示稳态滚动(长期稳定、不会再演变),求解方法上与瞬态不同。
N1 (NORM)
- 功能:法向方向上是“固定车轮位置” 还是“给定载荷”。
- 可选值:
0
:给定轮对的垂向位置 Z_WS,即轮对下沉多少是已知量;1
:给定总垂向力 F_Z;
- 说明:
- 如果 N1=0,则程序根据车轮坐标Z强制位移,算出对应法向力;
- 如果 N1=1,则程序先指定法向力(如 100 kN),让程序来迭代车轮位置。
F1 (FORCE)
- 功能:指定是否使用给定的切向力(或是否考虑钢轨变形)等。
- 常见可选值:
0
:位置和速度是已知,不单独指定切向力;3
:使用无质量的钢轨模型(massless rail)来考虑某些方向的弹性变形(如 lateral/vertical rail deflection)。
- 说明:
- 在 Module 1 中,有关 F-digit 的更多内容可能在后面章节或 Module 3 中才详细介绍。
S (STRESS)
- 功能:是否计算并输出材料内部(次表层)应力(subsurface stress)。
- 可选值:
0
:不计算次表层应力;1
:计算已经存储在内存中的那些点的应力;2
:读取新的控制参数后,再算已有点;3
:读取新的点坐标,再进行应力计算。
这样,第一组控制字“CPBTNFS”就依次指定了:
C
(CONFIG) - 几何组合P
(PVTIME) - 与前一算例的联系、时间步迭代B
(BOUND) - 法向问题边界/近似模型T
(TANG) - 切向问题是否/如何计算N
(NORM) - 垂向位置或载荷的给定方式F
(FORCE) - 切向力/轨道变形的处理方式S
(STRESS) - 次表层应力后处理
第二控制字:VLDCMZE
V (VARFRC)
- 功能:描述摩擦系数在横向或纵向上的变化方式 (VARiation of FRiCtion)。
- 可选值:
0
:整条钢轨宽度上摩擦系数相同(单组输入);1
:在钢轨横向方向(即不同y位置)上分段给定不同的摩擦系数;2
:在沿滚动方向(轨道前后)随位置变化,分段给定不同摩擦系数。
- 说明:
- 当摩擦条件不再均匀时(例如轨面有油污、水分等不均匀),需要用多段的局部摩擦系数来逼近现实。
L (FRCLAW)
- 功能:选择摩擦模型(friction law)。
- 可选值:
0
:库仑(Coulomb)摩擦 + 静摩擦/动摩擦系数;1
:延续使用上一算例的摩擦模型;4
:摩擦系数随滑移速度的指数衰减/增长规律;6
:摩擦系数随表面温度的分段线性依赖;
- 说明:
- 不同摩擦模型可以更真实地模拟高/低速下的磨耗或发热等情况。
0
(简单的库仑)是最常用的基础模型。
D1 (DISCNS)
- 全称:
DISCNS
(type of grid and its discretisation) - 功能:决定网格/坐标系的类型以及计算时如何处理“刚性滑动/蠕滑”(rigid slip)。
- 可选值:
0, 1
:延续使用上一算例的离散方式,不重新输入。2
:平面接触方法 (planar contact),并在“接触参考平面”上用刚性滑动计算。4
:具有曲面坐标的共形接触(conformal contact);5
:与2
类似,但采用基于网格的暴力(“brute-force”)算法而非接触轨迹(locus)算法。
- 说明:
- 当 D1 = 2, 4, 5 时,需要在输入文件中提供新的网格/坐标相关信息;否则沿用之前。
2
、5
都是针对“近似平面”或者“展开平面”上的离散方式,只是实现算法不同。4
则在“曲线坐标”中做符合性接触分析,适合曲率明显的轮/轨局部。
C3 (INFLCF)
- 全称:
INFLCF
(influence coefficient) - 功能:指定材料影响系数的获取方式(解析/数值),以及材料弹性模型或近似分块方法等。
- 可选值:
0,1
:保持上一算例的方式,不重新读输入。2
:使用解析半空间(piecewise constant traction)的影响系数;程序将根据文件参数重新计算影响系数。3
:同样是解析半空间,但对“双线性”(bilinear)牵引分布做适配;4
:用于conformal contact时的影响系数 (Blanco-approach, experimental);9
:使用数值影响系数(pre-computed, 需读取文件),但该选项在 module 1 尚不可用。
- 说明:
2
、3
都是基于解析的格林函数(半无限体),只是对牵引分布做了不同假设。4
针对曲面接触的修正,尚处于试验阶段。
M (MATER1)
- 全称:
MATER1
(type of material model) - 功能:指定接触材料(弹性/塑性等)的基本模型(与前面 C3 选项一同决定真正求解过程)。
- 可选值:
0
:纯弹性接触(最常见);2
:简化理论:用户自定义单一柔度值(modified Fastsim 方式);3
:简化理论:自动计算三段柔度(同样是 Fastsim 改良);4
:包含界面层与近表层塑性变形(更加复杂)。
- 说明:
2
、3
是常见的修正Fastsim方法,用较小计算量去近似真正弹塑行为;4
则考虑界面层的塑性/黏弹等效应(可能较耗时)。
Z1 (ZTRACK)
- 全称:
ZTRACK
(the track design geometry, rail profile, optional deviations) - 功能:决定是否在当前算例中更新/读取轨道参数、轨头剖面、以及钢轨不平顺(deviation)等数据。
- 可选值:
0
:保持之前的轨道尺寸、钢轨截面和不平顺数据;1
:读入新的轨道尺寸(可能包括轨距、倾角等);2
:仅读入新的不平顺数据(rail deviations);3
:既读新轨道尺寸,也读入新的钢轨截面/不平顺(具体看C1-digit
里是左轨还是右轨)。
- 说明:
- 这允许在同一文件的不同算例里,轨道状态可能变化(例如某段轨道磨耗不同、或轨温胀、或无缝钢轨的偏差)。
E1 (EWHEEL)
- 全称:
EWHEEL
(the wheelset geometry, position, velocity data, wheel profile) - 功能:与上面 Z1 类似,但对车轮(轮对)几何和运动参数进行管理:新的轮廓/新的横移/新的速度等。
- 可选值:
0
:保持之前的轮对尺寸、轮廓和位置速度;1
:读取新的“车轮位置”数据;2
:读新位置+新速度;3
:读新位置速度+新轮对几何+新轮廓(取决于C1是左轮/右轮);4
:读新位置速度,包括柔性轮对的偏差;5
:读新位置速度+新轮对几何+轮廓+柔性偏差。
- 说明:
- 在某些滚动仿真里,轮对可能不断磨耗或者改变姿态,需要逐步更新。
M2 (MATER2)
- 全称:
MATER2
(type of material model w.r.t. damping) - 功能:阻尼(damping)的引入方式。
- 可选值:
0
:无阻尼;1
:与之前算例相同,不重新读取;2
:读入新的参数并激活基于“力的比例阻尼(force-based proportional damping)”的方法。
- 说明:
- 常用于 transient 动力学中,如模拟刚-弹-粘耦合时的能量耗散。
第三控制字:XHGIAOWR
这 8 个字母分别对接输出选项和计算流程相关的配置。
X (XFLOW)
- 功能:控制是否输出额外的(debug) 网格数据到输出文件。
- 可选值:
0
:不输出本算例的任何额外调试信息;1
:读取新的输入(在同一算例中)以配置 debug 输出的细节,然后输出。
- 说明:如果需要查看 CONTACT 在网格单元或迭代细节层面的额外信息,可将
X=1
并在后续输入段指定想要的debug内容。否则,X=0
即可保持干净输出。
H (HEAT)
- 功能:是否计算并输出表面温度(rolling contact 的热问题)。
- 可选值:
0
:不计算温度;1
:使用内存中已有的温度参数来计算并输出;3
:读入新的温度输入数据,进行稳态滚动(steady rolling)情况下的表面温度计算。
- 说明:如果要研究粘着磨耗、热传导、温升等场景,可设置
H=1
或3
进行温度方面的输出或计算;否则H=0
。
G (GAUSEI)
- 功能:选择迭代求解方法(如 Gauss-Seidel, Conjugate Gradient) 及其参数(松弛系数 ω 等)。
- 可选值 (常见):
0
:使用默认求解器:- 当 T=3(稳态滚动) 用 “SteadyGS”,
- 否则用 “TangCG”,
- 并从输入文件中读取最大迭代次数等,但 ω用默认值。
1
:保持上一算例的求解器设定(不变)。2
:使用 “ConvexGS” 并从输入文件读取 ω。3
:使用 “SteadyGS”(若 T=3 时可用),并从输入文件读取 ω。4
:使用默认求解器,但从输入文件中读取滑移速度迭代(slip velocity iteration)的参数。5
:使用 “GDsteady” (实验性的稳态求解),并从文件读参数。
- 说明:
- 不同求解器在收敛速度和稳定性上可能有差别;
T=3
表示稳态滚动时,SteadyGS 或 GDsteady 是常用方法;若是瞬态滚动(T=1,2),可能使用 TangCG 或 ConvexGS 等。
I (IESTIM)
- 功能:确定对于当前算例的切向力和接触区域划分的初始猜测(initial estimate) 。
- 可选值:
0
:没有初值,程序将从零切向力开始,并用一个基于“未变形距离”分布的粗略猜测分区;3
:上一算例提供了较好初值,使用其切向力分布和单元划分(不改变)。
- 说明:
- 当进行多步瞬态计算 (P-digit=0,2,3;T=1,2) 或迭代时,若上一算例与当前算例差别不大(如蠕滑率稍有变化),保留之前的分布作为初值可加速收敛;
- 若工况变化大,可用
0
重置初值。
A (MATFIL)
- 功能:指定是否将接触面上的解(牵引力, 蠕滑, 压力分布等)写入一个 Matlab 文件
<experim>.<case>.mat
,以便后续可视化/后处理。 - 可选值:
0
:不生成.mat
文件;1
:仅记录实际接触区内的详细解到.mat
;2
:记录整个潜在接触区(网格范围)的解到.mat
。
- 说明:可在全局只打印有限信息 (O=2 or 3, A=0),而对感兴趣的工况则设
A=1 or 2
以在 Matlab 文件里保存完整解,方便后续画图或分析。
O (OUTPUT)
- 功能:控制在输出文件
<experim>.out
中打印多少内容(例如全局结果、局部网格分布)。 - 可选值:
0
:不输出任何结果到.out
文件(只在内存里存储, 以便后续算例用);1
:最小输出(仅全局结果,如法向力、蠕滑力、粘滑分区概览);2
:打印所有“全局输入和输出量”(包括几何、载荷、结果的综述);3
:再加一张“接触区域及粘着/滑移划分”的示意图(ASCII 图);若是 conformal contact(D1=4),还会显示曲面参考网格;4
:打印车轮/钢轨的剖面(光顺后)在轨道坐标中;5
:打印接触区域内的详细解(牵引力分布、滑移等);6
:在潜在接触区所有网格单元(含未接触部分)都打印;
- 说明:在调试阶段可能用
O=3
或O=5
、6
研究详细分布;正式批量计算可只用O=2
以减少文件长度。
W (FLOW)
- 功能:决定屏幕/输出文件中显示多少 flow trace信息,如每次迭代的残差、外圈循环、Newton 步等。
- 可选值:
0
:不显示流,只显示算例编号;1-6
:选择对哪些迭代过程(1~6)输出详细信息:- 外部循环(如 module 1 的全局力收敛, module 3 的 Panagiotopoulos 过程)
- 与滑移速度或温度迭代相关的过程
- NORM/TANG 算法
- Newton-Raphson 过程
- 迭代法(ConvexGS, SteadyGS)
- NormCG
9
:最详细的 trace,包括元素划分的中间状态(可能非常冗长)。
- 说明:
W=3
或W=4
通常提供相对适中的迭代信息,便于观察收敛过程而不会过于庞大。
R (RETURN)
- 功能:决定当前算例结束后,程序如何返回主程序或是否跳过本次计算。
- 可选值:
1
:计算完成后返回主程序(即结束 Module 1 或 Module 3);3
:只做预处理(preprocessing)然后跳过这个算例,不执行后续迭代求解,立即返回主程序。
- 说明:
- 在 CONTACT 模块化结构中,可以停留在 module 1/3 来做多个算例(一个接一个),也可以用
R=1
告诉程序“本算例后就离开 module”,或者用R=3
只读输入而不做求解。 - 如果在输入文件中有许多算例(多个 case),可以根据
R
的值决定是否一次算完还是在某case后提前退出。
- 在 CONTACT 模块化结构中,可以停留在 module 1/3 来做多个算例(一个接一个),也可以用
Cattaneo shift problem 算例文件解读
以“The Cattaneo shift problem”为例, 计算无摩擦的 Hertz 正向压紧。此问题的物理情形描述如下:
用一个球(半径 50 mm) 压在平面上,想得到接触圆半径=1 mm,其法向力约 9.1954 N,对应最大接触压约 4.39 N/mm²。
对于此算例,CONTACT有如下设置:
- P=2: PVTIME = 2。表示“new sequence”,不继承前一步的切向力(若是瞬态问题 T=1,2,则会把之前的切向力清空);若是 T=0 或 3,则代表不会用到上一时刻分布。
- B=0: BOUND = 0。法向边界:使用完全弹性模型(full linearly elastic model)。不采用 Hertz 近似法向限制 (B=2,3) 等。
- T=0: TANG = 0。表示这是无摩擦问题(只算法向压紧)。这也符合第一步只做“正向 Hertz 压力”的场景。
- N=1: NORM = 1。总垂向力 Fz已知并给出,而非给定位移。
- F=0: FORCE = 0。未指定额外切向力。
- S=0: STRESS = 0。不计算次表层应力。
- L=0: FRCLAW=0。使用库仑摩擦(静摩擦=动摩擦)。
- D=2: DISCNS=2。在该 module 中的网格离散方式:planar contact approach。
- C=2: INFLCF=2。使用解析影响系数(piecewise constant traction for half-space),并将从文件/输入参数中读取材料信息生成影响系数。
- M=0: MATER=0。纯弹性材料。
- Z=2: RZNORM=2。表示读取新的参数并计算未形变距离(read new parameters and compute undeformed distance)。
- E=0: EXRHS=0。无额外外力项。
- H=0:不进行表面温度计算。
- G=0:使用默认迭代器。
- I=0:初始估计从头开始,不继承上一算例的切向/单元划分。
- A=0:不输出 Matlab 文件。
- O=3:输出级别=3 => 会在
<experiment>.out
文件中打印全局输入/输出,以及显示接触区域及粘滑区分布的 ASCII 图。 - W=3:中等程度的流程跟踪(flow trace),显示NORM/TANG迭代过程。
- R=1:完成本算例后返回主程序。
FN = 9.1954
N:正向法向力。CKSI = 0.0
、CETA=0.0
、CPHI=0.0
:没有显式的“宏观移位”(shift) 或 spin(旋转),即纯正向压紧,无横纵滑移、无自旋。POISS(1)=0.420
,POISS(2)=0.420
:泊松比 0.42 (顶面/底面材料相同),对应文档之中定义的材料聚乙烯(soft)。GG(1)=200
N/mm²,GG(2)=200
N/mm²:对应于剪切模量 GG = 200 MPa。MX=19, MY=19
:网格离散 19×19。- IPOTCN = -3。“-3” 表示直接指定椭圆半轴 AA, BB,而不是给曲率。
AA=1.000, BB=1.000
mm:指定椭圆半轴 = 1 mm (圆形接触 a=b=1)。SCALE=1.26667
:放大系数。 “潜在接触区”边界比实际接触椭圆扩大约 26.667%,这与文档里说的 “two additional elements on each side” 等效,文档中 19/15 ≈ 1.2667。
因此,可以编写如下算例文件,详见用户手册第80页。
3 MODULE
200100 P-B-T-N-F-S PVTIME, BOUND , TANG , NORM , FORCE, STRESS
022020 L-D-C-M-Z-E FRCLAW, DISCNS, INFLCF, MATER, RZNORM, EXRHS
0000331 H-G-I-A-O-W-R HEAT, GAUSEI, IESTIM, MATFIL, OUTPUT, FLOW, RETURN
100 100 30 1 0.0001 MAXGS , MAXIN , MAXNR , MAXOUT, EPS
9.1954 0.000 0.000 0.000 FN, CKSI, CETA, CPHI
0.400 0.400 FSTAT, FKIN
0.420 0.420 200. 200. POISS 1,2, GG 1,2
-3 IPOTCN
19 19 1.000 1.000 1.26667 MX,MY,AA,BB,SCALE