CONTACT 在 Ubuntu 系统中的安装与使用

发布于:2025-02-28 ⋅ 阅读:(17) ⋅ 点赞:(0)

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 oneAPI https://www.intel.com/content/www/us/en/developer/tools/oneapi/base-toolkit-download.html?packages=oneapi-toolkit&oneapi-toolkit-os=linux&oneapi-lin=apt

下列代码从官方页面摘录,包括了将 Intel 存储库添加到 APT 源并安装 oneAPI 基础工具包的流程:

  1. 更新软件包列表并安装必要的前置依赖

  2. 将 Intel 存储库密钥添加到系统密钥环中

  3. 配置 apt 使用 Intel 存储库

  4. 使用 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”就依次指定了:

  1. C(CONFIG) - 几何组合

  2. P(PVTIME) - 与前一算例的联系、时间步迭代

  3. B(BOUND) - 法向问题边界/近似模型

  4. T(TANG) - 切向问题是否/如何计算

  5. N(NORM) - 垂向位置或载荷的给定方式

  6. F(FORCE) - 切向力/轨道变形的处理方式

  7. 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 时,需要在输入文件中提供新的网格/坐标相关信息;否则沿用之前。
    • 25 都是针对“近似平面”或者“展开平面”上的离散方式,只是实现算法不同。
    • 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 尚不可用。
  • 说明
    • 23 都是基于解析的格林函数(半无限体),只是对牵引分布做了不同假设。
    • 4 针对曲面接触的修正,尚处于试验阶段。

M (MATER1)

  • 全称MATER1 (type of material model)
  • 功能:指定接触材料(弹性/塑性等)的基本模型(与前面 C3 选项一同决定真正求解过程)。
  • 可选值
    • 0:纯弹性接触(最常见);
    • 2:简化理论:用户自定义单一柔度值(modified Fastsim 方式);
    • 3:简化理论:自动计算三段柔度(同样是 Fastsim 改良);
    • 4:包含界面层与近表层塑性变形(更加复杂)。
  • 说明
    • 23 是常见的修正Fastsim方法,用较小计算量去近似真正弹塑行为;
    • 4 则考虑界面层的塑性/黏弹等效应(可能较耗时)。

Z1 (ZTRACK)

  • 全称ZTRACK (the track design geometry, rail profile, optional deviations)
  • 功能:决定是否在当前算例中更新/读取轨道参数、轨头剖面、以及钢轨不平顺(devia­­­tion)等数据。
  • 可选值
    • 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=13 进行温度方面的输出或计算;否则 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=3O=56 研究详细分布;正式批量计算可只用 O=2 以减少文件长度。

W (FLOW)

  • 功能:决定屏幕/输出文件中显示多少 flow trace信息,如每次迭代的残差、外圈循环、Newton 步等。
  • 可选值
    • 0:不显示流,只显示算例编号;
    • 1-6:选择对哪些迭代过程(1~6)输出详细信息:
      1. 外部循环(如 module 1 的全局力收敛, module 3 的 Panagiotopoulos 过程)
      2. 与滑移速度或温度迭代相关的过程
      3. NORM/TANG 算法
      4. Newton-Raphson 过程
      5. 迭代法(ConvexGS, SteadyGS)
      6. NormCG
    • 9:最详细的 trace,包括元素划分的中间状态(可能非常冗长)。
  • 说明W=3W=4 通常提供相对适中的迭代信息,便于观察收敛过程而不会过于庞大。

R (RETURN)

  • 功能:决定当前算例结束后,程序如何返回主程序或是否跳过本次计算。
  • 可选值
    • 1:计算完成后返回主程序(即结束 Module 1 或 Module 3);
    • 3:只做预处理(preprocessing)然后跳过这个算例,不执行后续迭代求解,立即返回主程序。
  • 说明
    • 在 CONTACT 模块化结构中,可以停留在 module 1/3 来做多个算例(一个接一个),也可以用 R=1 告诉程序“本算例后就离开 module”,或者用 R=3 只读输入而不做求解。
    • 如果在输入文件中有许多算例(多个 case),可以根据 R 的值决定是否一次算完还是在某case后提前退出。

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.0CETA=0.0CPHI=0.0:没有显式的“宏观移位”(shift) 或 spin(旋转),即纯正向压紧,无横纵滑移、无自旋。
  • POISS(1)=0.420POISS(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