分类目录归档:程序设计

推荐Latex写数学公式

发现直接用Latex写数学公式很舒服,常用的先简略如下:
换行:\\
空格:a\ b
小于等于:\le
大于等于:\ge
分数:\frac{a}{b}
大型分数(无嵌套):dfrac{a}{b}
大范围括号:\left ( \frac{\pi}{2} \right )^n
开根号:\sqrt{\pi}
上标、撇号:a^{\prime}
下标:f_y
三角函数:\sin a, \cos b, \tan c, \cot d, \sec e, \csc f
取大小:\min(x,y), \max(x,y)

希腊字母表
序号 小写 LaTeX 读音
1 α \alpha /ˈælfə/
2 β \beta /ˈbiːtə/
3 γ \gamma /ˈɡæmə/
4 δ \delta /ˈdɛltə/
5 ϵ \epsilon /ˈɛpsɪlɒn/
6 ε \varepsilon /ˈɛpsɪlɒn/
7 ζ \zeta /ˈzeɪtə/
8 η \eta /ˈeɪtə/
9 θ \theta /ˈθiːtə/
10 ϑ \vartheta /ˈθiːtə/
11 ι \iota /aɪˈoʊtə/
12 κ \kappa /ˈkæpə/
13 λ \lambda /ˈlæmdə/
14 μ \mu /mjuː/
15 ν \nu /njuː/
16 ξ \xi /zaɪ, ksaɪ/
17 o o /ˈɒmɪkrɒn/
18 π \pi /paɪ/
19 ϖ \varpi /paɪ/
20 ρ \rho /roʊ/
21 ϱ \varrho /roʊ/
22 σ \sigma /ˈsɪɡmə/
23 ς \varsigma /ˈsɪɡmə/
24 τ \tau /taʊ, tɔː/
25 υ \upsilon /ˈʌpsɪlɒn/
26 ϕ \phi /faɪ/
27 φ \varphi /faɪ/
28 χ \chi /kaɪ/
29 ψ \psi /psaɪ/
30 ω \omega /oʊˈmeɪɡə/
序号 大写 LaTeX 读音
31 Γ \Gamma /ˈɡæmə/
32 Δ \Delta /ˈdɛltə/
33 Θ \Theta /ˈθiːtə/
34 Λ \Lambda /ˈlæmdə/
35 Ξ \Xi /zaɪ, ksaɪ/
36 Π \Pi /paɪ/
37 Σ \Sigma /ˈsɪɡmə/
38 Υ \Upsilon /ˈʌpsɪlɒn/
39 Φ \Phi /faɪ/
40 Ψ \Psi /psaɪ/
41 Ω \Omega /oʊˈmeɪɡə/

 

Python之常用混凝土构件计算01

写在前面的话
最近在用Jupyter Notebook学习Python,顺便把以前fx-FD10Pro做的构件计算文件重写成Python的,就当做练习了。


程序说明:
【a】已知Asp,M,求As
x=h_0-\sqrt{h_0^2-\dfrac{2\left[\gamma_{RE}M-f_y^{\prime}A_s^{\prime}(h_0-a_s^{\prime}\right]}{\alpha_1f_cb}} \\should,\ x\le\xi_bh_0 \\if\ x\ge2a^{\prime},\ A_s=\dfrac{\alpha_1f_cbx+f_y^{\prime}A_s^{\prime}}{f_y} \\if\ x<2a^{\prime},\ A_s=\dfrac{\gamma_{RE}M}{f_y(h-a_s-a_s^{\prime})}
【b】已知As,Asp,求Mu
x=\dfrac{f_yA_s-f_y^{\prime}A_s^{\prime}}{\alpha_1f_cb} \\if\ ,x\ge2a^{\prime},\ M_u=[\alpha_1f_cbx(h_0-\dfrac{x}{2})+f_y^{\prime}A_s^{\prime}(h_0-a_s^{\prime})]/\gamma_{RE} \\if\ ,x<2a^{\prime},\ M_u=f_yA_s(h-a_s-a_s^{\prime})/\gamma_{RE}


#coding=utf-8
#钢筋混凝土参数
def c_hrb():
    global fcuk,HRB,Ec,fc,ft,ftk,Es,fy,fyp,fyk
    global a1,epsilon_cu
    fcuk=Ec=fc=ft=ftk=0.0
    HRB=Es=fy=fyp=fyk=0.0
    #矩形应力图系数a1,C50以下为1.0
    a1=1.0
    #正截面混凝土极限压应变epsilon_cu,C50以下为0.0033
    epsilon_cu=0.0033    
    fcuk=int(input("C?30/35/40"))
    if (fcuk==30):
        Ec=30000
        fc=14.3
        ft=1.43
        ftk=2.01
    elif (fcuk==35):
        Ec=31500
        fc=16.7
        ft=1.57
        ftk=2.2
    elif (fcuk==40):
        Ec=32500
        fc=19.1
        ft=1.71
        ftk=2.39
    HRB=int(input("HRB?300/400/500"))
    if (HRB==300):
        Es=210000
        fy=270
        fyp=270
        fyk=300
    elif (HRB==400):
        Es=200000
        fy=360
        fyp=360
        fyk=400
    elif (HRB==500):
        Es=200000
        fy=435
        fyp=410
        fyk=500
    print('fcuk=',fcuk)
    print('Ec=',Ec)
    print('fc=',fc)
    print('ft=',ft)
    print('ftk=',ftk)
    print('HRB=',HRB)
    print('Es=',Es)
    print('fy=',fy)
    print('fyp=',fyp)
    print('fyk=',fyk)
#函数结束

#1.受弯构件正截面
#矩形双筋(非抗震,gamma_RE=1.0;抗震,《混规》11.1.6,gamma_RE=0.75)
#【a】已知Asp,M,求As
def given_asp_m_solve_as():
    import math
    c_hrb()
    gamma_RE=float(input("抗震0.75,gamma_RE="))
    nsp=float(input("受压筋个数nsp="))
    dsp=float(input("受压筋直径dsp="))
    Asp=nsp*0.25*3.14*(dsp**2)
    M=float(input("kN*m,M="))
    h=float(input("mm,h="))
    b=float(input("mm,b="))
    ast=float(input("mm,受拉钢筋合力点至受拉边缘的距离ast="))
    asp=float(input("mm,受压钢筋合力点至受压边缘的距离asp="))
    h0=h-ast
    #界限受压区高度ksi_b
    ksi_b=round(0.8/(1 + fy / (Es*epsilon_cu)),3)
    #受压区高度x
    x=round(h0-math.sqrt(h0**2 - 2*(gamma_RE*M*(10**6) - fyp*Asp*(h0-asp)) / (a1*fc*b)),1)
    print('h0=',h0)
    print('ksi_b=',ksi_b)
    print('x=',x)
    if (x<=ksi_b*h0):
        #弯曲破坏时,截面的延性取决于受压区高度的大小,受压区高度越小,截面转动就越大,延性就越好
        print(x,"非抗震截面,<=ksi_b*h0",ksi_b*h0)
        print(x,"抗震端截面,一级x<=0.25h0",0.25*h0)
        print(x,"抗震端截面,二、三级x<=0.35h0",0.35*h0)        
    else:
        #超筋梁,脆性破坏
        print(x,">ksi_b*h0,截面过小!",ksi_b*h0)
    if (x>=2*asp):
        print(x,">=2*asp,混规6.2.10-4式",2*asp)
        As=(a1*fc*b*x+fyp*Asp)/fy
    else:
        print(x,"<2*asp,混规6.2.14条",2*asp)
        As=gamma_RE*M*(10**6) / (fy*(h - ast - asp))
    As=round(As,1)
    print('受拉筋面积As=',As)
    rho=round(As/(b*h)*100,3)
    print('另需满足最小配筋率;配筋率rho=',rho,'%')
#函数结束

#【b】已知As,Asp,求Mu
def given_as_asp_solve_mu():
    import math
    c_hrb()
    gamma_RE=float(input("抗震0.75,gamma_RE="))
    nst=float(input("受拉筋个数nst="))
    dst=float(input("受拉筋直径dst="))
    As=nst*0.25*3.14*(dst**2)
    nsp=float(input("受压筋个数nsp="))
    dsp=float(input("受压筋直径dsp="))
    Asp=nsp*0.25*3.14*(dsp**2)
    h=float(input("mm,h="))
    b=float(input("mm,b="))
    ast=float(input("mm,受拉钢筋合力点至受拉边缘的距离ast="))
    asp=float(input("mm,受压钢筋合力点至受压边缘的距离asp="))
    h0=h-ast
    #界限受压区高度ksi_b
    ksi_b=round(0.8/(1 + fy / (Es*epsilon_cu)),3)
    #受压区高度x
    x=(fy*As-fyp*Asp)/(a1*fc*b)
    print('h0=',h0)
    print('ksi_b=',ksi_b)
    print('x=',x)
    if (x<=ksi_b*h0):
        #弯曲破坏时,截面的延性取决于受压区高度的大小,受压区高度越小,截面转动就越大,延性就越好
        print(x,"非抗震截面,<=ksi_b*h0",ksi_b*h0)
        print(x,"抗震端截面,一级x<=0.25h0",0.25*h0)
        print(x,"抗震端截面,二、三级x<=0.35h0",0.35*h0)        
    else:
        x=ksi_b*h0
        print(x,"取x=ksi_b*h0",ksi_b*h0)
    if (x>=2*asp):
        print(x,">=2*asp,混规6.2.10-4式",2*asp)
        Mu=(a1*fc*b*x*(h0-x/2) + fyp*Asp*(h0-asp)) / gamma_RE/(10**6)
    else:
        print(x,"<2*asp,混规6.2.14条",2*asp)
        Mu=fy*As*(h - ast - asp) / gamma_RE/(10**6)
    Mu=round(Mu,3)
    print('极限抗弯承载力Mu=',Mu)
#函数结束

Primavera P6 主要工作流程

最近在学习markdown用mermaid做流程图,索性画一下Primavera P6的主要工作步骤以供参考。

~~~mermaid
graph TD
N1[01程序基础设置]
N2[02创建OBS]
N3[03创建EPS]
N4[04创建项目分类码<br />05创建项目]
N6[06加载项目分类码]
N7[07创建WBS]
N9[08创建作业分类码<br />09创建作业]
N10[10创建步骤<br />11确定工期<br />12限制条件<br />13建立逻辑关系<br />14加载作业分类码]
N15[15关键路径法进度计算]
N16[16进度分析]
N17[17创建RBS]
N18[18创建资源分类码<br />19创建资源]
N20[20加载资源分类码]
N21[21创建CBS]
N22[22费用估算]
N23[23加载资源]
N24[24加载其它费用]
N25[25加载费用科目]
N26[26资源&费用分析]
N27[27冻结目标计划]
N28[28项目发布&计划N]
N29[29更新进度]
N30[30更新资源&费用]
N31[31偏差分析]
N32[32计划调整]
TF1{调整?}
TF2{完工?}
S(开始) --> N1
N1 --> N2 --> N3
N3 --> N4 --> N6
N6 --> N7
N7 --> N22
N7 --> N9
N9 --> N10 --> N15
N15 --> N16 --> N27
N15 --> N26 --> N27
N1 --> N17
N17 --> N18 --> N20 --> N23
N1 --> N21 --> N25
N9 --> N24 --> N25
N9 --> N23 --> N25
N25 --> N15
N27 --> N28 --> N29 --> N31
N28 --> N30 --> N31 --> TF1 --否--> N28
TF1 --是--> N32 --> TF2 --否--> N27
TF2 --是--> E(结束)
~~~

效果如下:

使用SSL建立连线加密网站 (https)

写在前面的话

由于要布设https,但又囊中羞涩,只为101kpa.com域名购买了证书,因此wangjingye.com的域名不能用了。诸君见谅。


使用SSL证书(SSL Certificates)为网站提供数据HTTPS加密协议访问,保障数据的安全。装载SSL证书产品后自动激活浏览器中显示“锁”型安全标志,地址栏以“https”开头。

0、购买SSL证书文件。

1、在Apache的安装目录(默认/etc/httpd)下,新建cert目录。并将证书、证书链文件和密钥文件拷贝到cert目录中。如果需要安装多个证书,需在Apache目录中新建对应数量的cert目录,用于存放不同的证书 。

2、查看在 /etc/httpd/modules下是否有mod_ssl.so模块,若未安装 mod_ssl.so 模块,您可通过执行yum install mod_ssl 命令进行安装。

3、查看在 /etc/httpd/conf.modules.d 目录下的 00-ssl.conf 配置文件找到 LoadModule ssl_module modules/mod_ssl.so(用于加载 SSL 模块)配置语句,若已注释,请去掉首行的注释符号(#)。

4、编辑 /etc/httpd/conf.d 目录下的 ssl.conf 配置文件。修改如下内容:

VirtualHost *:443
ServerName #修改为申请证书时绑定的域名www.YourDomainName1.com。
DocumentRoot /var/www/html
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3 # 添加SSL协议支持协议,去掉不安全的协议。
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM # 修改加密套件。
SSLHonorCipherOrder on
SSLCertificateFile cert/domain name1_public.crt # 将domain name1_public.crt替换成您证书文件名。
SSLCertificateKeyFile cert/domain name1.key # 将domain name1.key替换成您证书的密钥文件名。
SSLCertificateChainFile cert/domain name1_chain.crt # 将domain name1_chain.crt替换成您证书的密钥文件名;证书链开头如果有#字符,请删除。
/VirtualHost

5、查看在 /etc/httpd/modules下是否有mod_ssl.so模块。没有则安装。

6、在/etc/httpd/conf.modules.d中新建一个 *.conf 文件,例如 00-rewrite.conf。在新建文件中添加以下内容:

LoadModule rewrite_module modules/mod_rewrite.so

6、在 httpd.conf 配置文件中添加如下内容:

Directory "/var/www/html"
# 自动http重定向https
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)?$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
/Directory

7、重启Apache服务器

8、进入WordPress面板,依次点击设置> 通用,然后向下滑动到WordPress地址(URL)和网站地址(URL)字段,将https://替换为http://。

9、解决SSL站点后图片失效问题。

WordPress开启HTTPS后,博客原来上传的图片地址依旧为http的链接,这会导致地址栏绿锁显示不正常,解决方法如下:批量处理WordPress更改图片地址http为https,通过修改MySQL数据库,将所有wp-content/uploads下的图片链接均改为https。

使用phpMyAdmin登录WordPress的MySQL数据库,并选择你的WordPress数据库,点击“SQL”,输入以下语句:

UPDATE wp_posts SET post_content = replace(post_content, 'http://域名/wp-content/uploads', 'https://域名/wp-content/uploads');

注意:
a. 操作前请务必对数据库进行备份,以避免不可挽回的数据丢失!
b. “wp_posts”:默认表前缀为wp,如果你修改了表前缀,请改成自己的前缀;
c. 将“域名”改成自己的域名.

自建停机坪

使用Cloudflare+V2Ray+WebSocket+TLS+Nginx自建停机坪
为自己的小飞机,建个机场。公共机场ExpressVPN,私人机场V2ray,基本可以应付全部情况。

1、购买一台国外VPS/云服务器,如Linode。

2、注册一个域名,国外域名服务商的,如GoDaddy。

3、注册Cloudflare解析域名。
3.1、将GoDaddy域名的NS服务器替换为Cloudflare的NS服务器;
3.2、替换域名NS服务器之后,确保Cloudflare下的域名状态为Active;
3.3、在DNS中将域名解析到VPS的IP上;
3.4、添加新解析的时候,小黄云默认是黄色的,即Proxied,点一下,成灰色,即DNS only;
3.5、查看当前域名的SSL/TLS状态为Active,SSL应用参数为 Full;

4、V2Ray+WebSocket+TLS+Nginx一键安装代码(网址https://github.com/wulabing/V2Ray_ws-tls_bash_onekey):

wget -N --no-check-certificate -q -O install.sh "https://raw.githubusercontent.com/wulabing/V2Ray_ws-tls_bash_onekey/master/install.sh" && chmod +x install.sh && bash install.sh

5、BBR加速代码(网址https://github.com/teddysun/across):

wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh

如果安装不了 BBR 请先安装wget:

yum –y install wget

然后运行以下命令,查看BBR是否启动成功:

sysctl net.ipv4.tcp_congestion_control

如果提示
net.ipv4.tcp_congestion_control = bbr
就表示成功启动了BBR加速。

6、查看是否能够正常访问你刚才在命令行中执行的域名,并查看是否开启 HTTPS 访问。

7、脚本管理命令
启动 V2ray:

systemctl start v2ray

停止 V2ray:

systemctl stop v2ray

启动 Nginx:

systemctl start nginx

停止 Nginx:

systemctl stop nginx

8、配置防火墙
8.1、查看防火墙状态

firewall-cmd --state

8.2、开启防火墙
如果要开放的端口太多,嫌麻烦,可以关闭防火墙,安全性自行评估

systemctl start firewalld.service

8.3、查看防火墙所有开放的端口

firewall-cmd --zone=public --list-ports

8.4、查看监听的端口

netstat -lnpt

8.5、开放或关闭端口

firewall-cmd --zone=public --add-port=80/tcp --permanent #开放80和443端口
firewall-cmd --zone=public --remove-port=10000/tcp --permanent #关闭10000端口
firewall-cmd --reload #配置立即生效

9、启动Cloudflare的CDN
9.1、去cloudflare把那个橙色的云朵点亮了,等待10分钟cdn生效。
9.2、可以使用cmd来ping一下解析的域名,查看IP不应是服务器的IP。

10、安装v2rayN客户端
10.1、下载安装网址https://github.com/2dust/v2rayN/releases
10.2、添加[VMess]服务器。填上你设置的对应数据,请务必完全参照服务端返回的数据,服务端和客户端必须一致,如地址(域名)、端口、用户ID、路径等,加密方式一般为auto,传输协议为ws,伪装类型一般为none,伪装域名留空,开启tls和不安全传输,设置完保存。
10.3、Http代理模式选择PAC模式(或全局模式),检查更新PAC。

2016新的一年开启新的架构

© Written by J.Y. WANG

结构工程师搭建网站,写写自己的东西也算是某种舒缓心中憋闷的方式之一。我常碎碎念希望能多了解世界真实的运行规律,哪怕没什么实际的名闻利养。但友人也常玩讽道,站得更高才能看得更真切,不在高位自然无法明白高处的风景。我对此也是无话可说。也许只是同样的风景,起起伏伏后会有不同的体会吧。就如“看山是山,看水是水; 看山不是山,看水不是水; 看山还是山,看水还是水。”的境界不同。既然放下了,心打开了,做做自己喜欢的,看看书,充实一下自己,一切都是上天最好的安排。本来呢工作上的学识技能不太愿意分享,想指着其升官发财呢,现在来看多可笑。既然如此不如拿来放到自己网站,自己的天地里,供有缘人分享。初步打算写两部分内容:一是大道至简系列,关于结构设计的一些基本理念;二是欧洲规范学习系列,关于EUROCODE的应用。既然把计划写在这里了,那么就督促自己坚持把这两个系列完成。

好了言归正传,为了能让自己的那点思想在这个健壮的小站上愉快的流淌,基业长青。新的一年换用大型站点的架构,俗话说做事看世界要有格局,当然我自己的小站也要有格局,就是架构要有优良的鲁棒性,所谓麻雀虽小五脏俱全。

架构的目的:
1、方便系统升级自己折腾,方便备份,安全性高。
2、实现动静分离。
oss_in_website

阿里云的配置如下:
ECS配置
CPU:1核;内存:2 GB;操作系统:CentOS 7.4 64位;带宽:2Mbps;
系统盘 40GB;数据盘 40GB;

RDS配置
CPU:1核;内存:1 GB; 容量:40GB;

使用OSS;使用CDN;

将整个系统至于云盾的保护之下。
使用数据盘单独挂载/var/www目录,将OS系统与网站数据分离。
使用RDS,将数据库从数据盘分离。
使用OSS,将图库和附件库从数据盘分离。
使用CDN,分发加快OSS静态数据加载速度。

经过此番处理后:由于网站数据对应数据盘,升级或变更操作系统将不影响网站数据;将数据库搬至云端RDS后,数据库单独管理,有效防止网站攻击,可时时自动备份,安全可靠;将较大文件如图片、附件等静态文件搬至OSS并实现CDN分发,提高加载速度,实现动静分离。通过以上架构,即使系统盘,数据盘完全擦除也可轻松重新建站,因为数据库和大型文件均搬至云端。并且哪怕是极端情况,磁盘损毁,网站遭到恶意攻击,均可轻松应对。

最后附上一个技术细节,所谓细节据定成败。(以下部分20180101更新)
附录:关于ossfs的使用。另外关于LAMP系统搭建请看阿里云服务器搭建LAMP环境

1、首先用ps aux | grep apache 看下httpd运行于那个用户下,默认是apache用户。
2、然后下载安装对应版本的ossfs最新安装包。

wget http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/32196/cn_zh/1507811577850/ossfs_1.80.3_centos7.0_x86_64.rpm
yum localinstall ossfs_1.80.3_centos7.0_x86_64.rpm

3、写入OSS的AKID与AKS至密码文件,然后修改文件执行权限和用户组。
echo 你的第一个bucket:你的AKID:你的AKS> /etc/passwd-ossfs
echo 你的第二个bucket:你的AKID:你的AKS>> /etc/passwd-ossfs

chmod 640 /etc/passwd-ossfs
chown root:apache /etc/passwd-ossfs

4、然后以apache用户建立目录。

sudo -u apache mkdir /var/www/html/wp-content/你的图库名
sudo -u apache mkdir /var/www/html/wp-content/附件库名

5、加载OSS的bucket

ossfs 你的第一个bucket 你的图库路径 -o url=http://oss-cn-qingdao-internal.aliyuncs.com -o uid=用户号,gid=用户组号,umask=007,allow_other
ossfs 你的第二个bucket 附件库路径 -o url=http://oss-cn-qingdao-internal.aliyuncs.com -o uid=用户号,gid=用户组号,umask=007,allow_other

6、需要注意的问题:
– 对应好自己系统的安装包;
– 记得修改密码文件的权限和用户组;
– url填写内网地址,并从oss-cn开始填写;
– 如果使用allow_other,会变成777权限,不安全。如果不使用allow_other,把用户ID改为apacheID,就会变成700权限,就会导致无法访问的问题。解决方法:使用uid,gid,umask参数控制用户和用户组及其权限。
– 设置自动挂载ossfs方法:
在/etc/init.d/目录下建立文件ossfs,把模板文件中的内容拷贝到这个新文件中。并将其中的your_xxx内容改成您自己的信息,其中同样可以使用uid,gid,umask参数。
建立的ossfs脚本赋予可执行权限 chmod a+x /etc/init.d/ossfs
把ossfs启动脚本作为其他服务,开机自动启动 chkconfig ossfs on

ANSYS接触分析中的一些注意事项和技巧

© Written by J.Y. WANG

关于耦合或约束方程的适用情况
1、如果接触模型没有摩擦, 接触区域始终粘在一起, 并且分析是小挠度、小转动问题, 那么可以用耦合或约束方程代替接触。使用耦合或约束方程的优点是分析还是线性的。

关于接触刚度
2、罚刚度越大, 接触表面的侵入量越小。然而, 若此值太大,则会由于病态条件而引起收敛困难。可以通过一些实验来确定一个合适的接触刚度, 使求解收敛,而且侵入量可以接受。
3、接触刚度是接触面的相对刚度的函数。对于块状实体, 通常赫兹接触刚度适用于罚刚度, 可以这样估算:k = fE。式中f 是介于0.1~10之间的系数, E是较软的接触材料的弹性模量。设f=1 通常是一个较好的起始值。

关于目标/接触面的选择
4、指定接触和目标表面的目的是将接触检查点增加到最大数。对于刚体对柔体接触, 目标面总是刚体表面。对于柔体对柔体接触, 目标面和接触面的选择会引起不同量的侵入, 从而影响求解精度:
•如果凸面与平面或凹面接触, 那么平面或凹面应该是目标面;
•如果一个表面网格粗糙, 而另一个表面网格较细, 那么网格粗糙的表面应该是目标面;
•如果一个表面比另一个表面的刚度大, 那么刚度大的表面应该是目标面;
•如果一个表面划分为高次单元, 而另一个表面划分为低次单元, 那么划分为低次单元的表面应该是目标面;
•如果一个表面比另一个表面大, 那么更大的表面应该是目标面。

5、接触对由实常数号来确定,目标单元和接触单元必须共用相同的实常数号。
在实常数中应该设置罚刚度比例系数(FKN)和拉格朗日乘子侵入比例系数(FTOLN)。FKN 通常介于0.01~10之间。 对于体积变形问题, 用值1.0(默认), 对于以弯曲变形为主的问题, 用值0.1。FTOLN 默认为0.1。 可以改变此值, 但若容差太小, 会使迭代数过多或不收敛。

关于求解选项
6、不用自适应下降。对于面对面接触问题, 自适应下降对于收敛不能提供任何帮助;
7、使用一个合理的平衡迭代数目, 通常是25;
8、因为对于大时间增量, 迭代计算会变得不稳定, 用线性搜索来稳定计算;
9、将预测器打开, 大转动或动态分析除外。
10、对于小应变、小位移和小滑动问题,要关上大变形效应开关,这样设置将加快接触搜索速度。

关于刚体位移
11、在静态分析中, 开始不连接在一起的两个(或多个)物体, 在建立接触前, 会产生刚体运动。如果在求解中的任一时刻, 两个物体没有联系, 刚度矩阵就会奇异。 ANSYS将会发出一个负主元警告信息。由于物体初始时没有联系, 要克服刚体位移有几个选项:

•在“恰好碰上”的位置建立几何模型
要求知道“恰好碰上”的位置在哪里。如果表面是曲面或者不规则, 则难以确定。但由于有限元网格的数值修整, 物体之间会存在小间隙或侵入,可能引起不收敛或接触物体的分离。

•动力学
在动力分析中, 惯性作用可以阻止刚体运动. 克服刚体运动的一种选择是动态地求解问题。将需要加上质量和阻尼, 使求解从静态转换到动态。但在一个“静态”模型中, 要缓冲掉不想要的动态影响并不总是那么容易。

•位移控制
该技术用强加的位移使两物体进入接触状态。然后, 可以通过一个空载荷步, 使该问题从位移控制求解转换到力控制求解。但对于复杂加载, 施加哪个位移并不总是那么明显。具体步骤一般为:
载荷步1 用一个强加的小位移使物体进入初始接触状态。
载荷步2 从位移控制转换到力控制。删除强加的位移, 加上反作用力, 并用一个子步求解(由于此系统没有变化, 该载荷步应该经过一次或两次迭代就收敛)。
载荷步3 继续进行载荷历史加载。

•软弹簧
该技术使用接地软弹簧来阻止刚体运动。与系统刚度相比, 弹簧刚度应该可以忽略。弹簧与基座相连, 可以将地上节点的反作用力与总的反作用力相比, 以确保弹簧对求解没有影响。初始载荷必须足够小, 从而引起弹簧的小变形, 这样接触单元才能认识侵入。需要做些实验, 使目标单元不“穿过”接触表面。

•用不分离接触
模拟对象的实际物理过程需要是属于不分离的情况。

•调整初始接触条件
以用实常数ICONT或PMIN和PMAX去调整初始接触条件,以阻止刚体位移。ICONT将接触面上在调整带内的节点移到目标面上。PMIN和PMAX 实际地将刚性面移进目标。