点接触弹性变形数值计算

点接触弹性变形数值计算的图1contact_deformation.m

点接触弹性变形数值计算的图2main.m

点接触弹性变形数值计算的图3S.m

点接触弹性变形数值计算的图4SUBAK.m

点接触弹性变形数值计算的图5untitled.jpg

最近又做了个案例,是关于点接触弹性变形数值计算,具体描述参考《弹性流体动压润滑数值计算方法》P23-29,黄平著。以下为一个算例的matlab实现方法(原书为FORTRAN语言),与大家交流,请大家多提意见。

  • 主程序

clear

clc

N=33;

global AK

AK=SUBAK(N);

KL=log(N-1)/log(2)-1.99;

DX=2.4/(N-1);

for I=1:N

    X(I)=-1.2+DX*(I-1);

    A=X(I)^2;

    for J=1:N

        Y(J)=-1.2+DX*(J-1);

        P(I,J)=0;

        H(I,J)=0.5*A+0.5*Y(J)^2;

    end

end

M=0;

for I=1:N

    for J=1:N

        A=1.0-X(I)^2-Y(J)^2;

        if A>=0

            P(I,J)=sqrt(A);

        end

    end

end

V=contact_deformation(N,DX,P,0);

for I=1:N

    for J=1:N

        H(I,J)=H(I,J)+V(I,J);

    end

end

%% painting

figure(1)

subplot(2,2,1)

mesh(X,Y,H)

title('')

subplot(2,2,2)

mesh(X,Y,V)

subplot(2,2,3)

mesh(X,Y,P)

subplot(2,2,4)

mesh(X,Y,(H+V))

  • 调用程序1

function S=S(X,Y)

S=X+sqrt(X^2+Y^2);

  • 调用程序2

function AK=SUBAK(MM)

AK(1:65,1:65)=0;

for I=1:MM

    XP=I+0.5;

    XM=I-0.5;

    for J=1:MM

        YP=J+0.5;

        YM=J-0.5;

        A1=S(YP,XP)/S(YM,XP);

        A2=S(XM,YM)/S(XP,YM);

        A3=S(YM,XM)/S(YP,XM);

        A4=S(XP,YP)/S(XM,YP);

        AK(I,J)=XP*log(A1)+YM*log(A2)+XM*log(A3)+YP*log(A4);

        AK(J,I)=AK(I,J);

    end

end

  • 调用程序3

function V=contact_deformation(N,DX,P,V)

PAI1=0.2026423;

global AK

for I=1:N

    for J=1:N

        H0=0;

        for K=1:N

            IK=abs(I-K);

            for L=1:N

                JL=abs(J-L);

                H0=H0+AK(IK+1,JL+1)*P(K,L);

                V(I,J)=H0*DX*PAI1;

            end

        end

    end

end

untitled.jpg
(5条)
默认 最新
评论 点赞
学习了
评论 点赞

查看更多评论 >

点赞 7 评论 5 收藏 6
关注