ADINA壳单元刚度矩阵导出

从ADINA中导出壳单元刚度矩阵,结果按照ADINA特定规范排列,通过MATLAB编写代码从ADINA导出的刚度矩阵文件读取并还原刚度矩阵

***GLOBAL STIFFNESS MATRIX, DIRECT MATRIX INPUT FILE***
 dmig-define  stif-C:\Users\chenh\Desktop\ADINA\two_test_1
1X-T 0.0000000000000E+00col
1X-T 0.1176271906564E+10
1Y-T0.0000000000000E+00col
1Y-T0.8191472696014E+09
1X-T-0.1785623184815E+09
1Z-T0.0000000000000E+00col
1Z-T0.8191472696014E+09
1Y-T -0.1190415456543E+09
1X-T0.1785623184815E+09
......

使用如下代码还原刚度矩阵

argv="plane.mtx";               % 文件名
infile=fopen(argv);
k=zeros(441*6);                 % 手动定义刚度矩阵大小
while ~feof(infile)
    tline=fgetl(infile);        % 按行读文件
    a=textscan(tline,'%s');
    if size(a{1},1)==4          % 确定当前刚度矩阵元素行数i
        dof=a{1}(2);
        dof=char(dof);
        switch dof
            case 'X-T'
                dof=1;
            case 'Y-T'
                dof=2;
            case 'Z-T'
                dof=3;
            case 'X-R'
                dof=4;
            case 'Y-R'
                dof=5;
            case 'Z-R'
                dof=6;
        end
        indice=a{1}(1);indice=str2double(indice);
        i=indice*6-6+dof;
    elseif size(a{1},1)==3      % 确定当前刚度矩阵元素列数j
        dof=a{1}(2);
        dof=char(dof);
        switch dof
            case 'X-T'
                dof=1;
            case 'Y-T'
                dof=2;
            case 'Z-T'
                dof=3;
            case 'X-R'
                dof=4;
            case 'Y-R'
                dof=5;
            case 'Z-R'
                dof=6;
        end
        indice=a{1}(1);indice=str2double(indice);
        j=indice*6-6+dof;
        k(i,j)=str2double(a{1}(3));     % 将当前刚度矩阵元素储存进刚度矩阵
    end
end
k=tril(k,-1)+tril(k)';          % 下三角矩阵还原为整个刚度矩阵

运行程序,得到还原刚度矩阵如下:

1.176E9-1.179E81.179E8-3.670E-11-4.474E-10...
-1.179E88.192E8-1.190E85.834E78.251E7...
1.179E8-1.190E88.192E85.834E78.251E7...
-3.670E-115.834E75.834E72.918E72.104E3...
-4.474E-108.251E78.251E72.104E32.918E7...
..................

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值