⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 k_assembly.m

📁 结构力学中的有限元例子,包含了7个分类文件夹
💻 M
📖 第 1 页 / 共 2 页
字号:
        Kgl((t2-2):t2,(t8-2):t8) = Kgl( (t2-2):t2,(t8-2):t8) + Klc(4:6,22:24);
    
        Kgl((t3-2):t3,(t1-2):t1) = Kgl( (t3-2):t3,(t1-2):t1) + Klc(7:9,1:3);
        Kgl((t3-2):t3,(t2-2):t2) = Kgl( (t3-2):t3,(t2-2):t2) + Klc(7:9,4:6);
        Kgl((t3-2):t3,(t3-2):t3) = Kgl( (t3-2):t3,(t3-2):t3) + Klc(7:9,7:9);
        Kgl((t3-2):t3,(t4-2):t4) = Kgl( (t3-2):t3,(t4-2):t4) + Klc(7:9,10:12);
        Kgl((t3-2):t3,(t5-2):t5) = Kgl( (t3-2):t3,(t5-2):t5) + Klc(7:9,13:15);
        Kgl((t3-2):t3,(t6-2):t6) = Kgl( (t3-2):t3,(t6-2):t6) + Klc(7:9,16:18);
        Kgl((t3-2):t3,(t7-2):t7) = Kgl( (t3-2):t3,(t7-2):t7) + Klc(7:9,19:21);
        Kgl((t3-2):t3,(t8-2):t8) = Kgl( (t3-2):t3,(t8-2):t8) + Klc(7:9,22:24);
    
        Kgl((t4-2):t4,(t1-2):t1) = Kgl( (t4-2):t4,(t1-2):t1) + Klc(10:12,1:3);
        Kgl((t4-2):t4,(t2-2):t2) = Kgl( (t4-2):t4,(t2-2):t2) + Klc(10:12,4:6);
        Kgl((t4-2):t4,(t3-2):t3) = Kgl( (t4-2):t4,(t3-2):t3) + Klc(10:12,7:9);
        Kgl((t4-2):t4,(t4-2):t4) = Kgl( (t4-2):t4,(t4-2):t4) + Klc(10:12,10:12);
        Kgl((t4-2):t4,(t5-2):t5) = Kgl( (t4-2):t4,(t5-2):t5) + Klc(10:12,13:15);
        Kgl((t4-2):t4,(t6-2):t6) = Kgl( (t4-2):t4,(t6-2):t6) + Klc(10:12,16:18);
        Kgl((t4-2):t4,(t7-2):t7) = Kgl( (t4-2):t4,(t7-2):t7) + Klc(10:12,19:21);
        Kgl((t4-2):t4,(t8-2):t8) = Kgl( (t4-2):t4,(t8-2):t8) + Klc(10:12,22:24);
    
        Kgl((t5-2):t5,(t1-2):t1) = Kgl( (t5-2):t5,(t1-2):t1) + Klc(13:15,1:3);
        Kgl((t5-2):t5,(t2-2):t2) = Kgl( (t5-2):t5,(t2-2):t2) + Klc(13:15,4:6);
        Kgl((t5-2):t5,(t3-2):t3) = Kgl( (t5-2):t5,(t3-2):t3) + Klc(13:15,7:9);
        Kgl((t5-2):t5,(t4-2):t4) = Kgl( (t5-2):t5,(t4-2):t4) + Klc(13:15,10:12);
        Kgl((t5-2):t5,(t5-2):t5) = Kgl( (t5-2):t5,(t5-2):t5) + Klc(13:15,13:15);
        Kgl((t5-2):t5,(t6-2):t6) = Kgl( (t5-2):t5,(t6-2):t6) + Klc(13:15,16:18);
        Kgl((t5-2):t5,(t7-2):t7) = Kgl( (t5-2):t5,(t7-2):t7) + Klc(13:15,19:21);
        Kgl((t5-2):t5,(t8-2):t8) = Kgl( (t5-2):t5,(t8-2):t8) + Klc(13:15,22:24);
    
        Kgl((t6-2):t6,(t1-2):t1) = Kgl( (t6-2):t6,(t1-2):t1) + Klc(16:18,1:3);
        Kgl((t6-2):t6,(t2-2):t2) = Kgl( (t6-2):t6,(t2-2):t2) + Klc(16:18,4:6);
        Kgl((t6-2):t6,(t3-2):t3) = Kgl( (t6-2):t6,(t3-2):t3) + Klc(16:18,7:9);
        Kgl((t6-2):t6,(t4-2):t4) = Kgl( (t6-2):t6,(t4-2):t4) + Klc(16:18,10:12);
        Kgl((t6-2):t6,(t5-2):t5) = Kgl( (t6-2):t6,(t5-2):t5) + Klc(16:18,13:15);
        Kgl((t6-2):t6,(t6-2):t6) = Kgl( (t6-2):t6,(t6-2):t6) + Klc(16:18,16:18);
        Kgl((t6-2):t6,(t7-2):t7) = Kgl( (t6-2):t6,(t7-2):t7) + Klc(16:18,19:21);
        Kgl((t6-2):t6,(t8-2):t8) = Kgl( (t6-2):t6,(t8-2):t8) + Klc(16:18,22:24);
        
        Kgl((t7-2):t7,(t1-2):t1) = Kgl( (t7-2):t7,(t1-2):t1) + Klc(19:21,1:3);
        Kgl((t7-2):t7,(t2-2):t2) = Kgl( (t7-2):t7,(t2-2):t2) + Klc(19:21,4:6);
        Kgl((t7-2):t7,(t3-2):t3) = Kgl( (t7-2):t7,(t3-2):t3) + Klc(19:21,7:9);
        Kgl((t7-2):t7,(t4-2):t4) = Kgl( (t7-2):t7,(t4-2):t4) + Klc(19:21,10:12);
        Kgl((t7-2):t7,(t5-2):t5) = Kgl( (t7-2):t7,(t5-2):t5) + Klc(19:21,13:15);
        Kgl((t7-2):t7,(t6-2):t6) = Kgl( (t7-2):t7,(t6-2):t6) + Klc(19:21,16:18);
        Kgl((t7-2):t7,(t7-2):t7) = Kgl( (t7-2):t7,(t7-2):t7) + Klc(19:21,19:21);
        Kgl((t7-2):t7,(t8-2):t8) = Kgl( (t7-2):t7,(t8-2):t8) + Klc(19:21,22:24);
    
        Kgl((t8-2):t8,(t1-2):t1) = Kgl( (t8-2):t8,(t1-2):t1) + Klc(22:24,1:3);
        Kgl((t8-2):t8,(t2-2):t2) = Kgl( (t8-2):t8,(t2-2):t2) + Klc(22:24,4:6);
        Kgl((t8-2):t8,(t3-2):t3) = Kgl( (t8-2):t8,(t3-2):t3) + Klc(22:24,7:9);
        Kgl((t8-2):t8,(t4-2):t4) = Kgl( (t8-2):t8,(t4-2):t4) + Klc(22:24,10:12);
        Kgl((t8-2):t8,(t5-2):t5) = Kgl( (t8-2):t8,(t5-2):t5) + Klc(22:24,13:15);
        Kgl((t8-2):t8,(t6-2):t6) = Kgl( (t8-2):t8,(t6-2):t6) + Klc(22:24,16:18);
        Kgl((t8-2):t8,(t7-2):t7) = Kgl( (t8-2):t8,(t7-2):t7) + Klc(22:24,19:21);
        Kgl((t8-2):t8,(t8-2):t8) = Kgl( (t8-2):t8,(t8-2):t8) + Klc(22:24,22:24);
        
        % global M
        M(t1-2,t1-2) = M(t1-2,t1-2) + fM(1);
        M(t1-1,t1-1) = M(t1-1,t1-1) + fM(2);  
        M(t1,t1)     = M(t1,t1) + fM(3); 
        M(t2-2,t2-2) = M(t2-2,t2-2) + fM(4);
        M(t2-1,t2-1) = M(t2-1,t2-1) + fM(5); 
        M(t2,t2)     = M(t2,t2) + fM(6);
        M(t3-2,t3-2) = M(t3-2,t3-2) + fM(7);
        M(t3-1,t3-1) = M(t3-1,t3-1) + fM(8); 
        M(t3,t3)     = M(t3,t3) + fM(9);
        M(t4-2,t4-2) = M(t4-2,t4-2) + fM(10);
        M(t4-1,t4-1) = M(t4-1,t4-1) + fM(11); 
        M(t4,t4)     = M(t4,t4) + fM(12);
        M(t5-2,t5-2) = M(t5-2,t5-2) + fM(13);
        M(t5-1,t5-1) = M(t5-1,t5-1) + fM(14); 
        M(t5,t5)     = M(t5,t5) + fM(15);
        M(t6-2,t6-2) = M(t6-2,t6-2) + fM(16);
        M(t6-1,t6-1) = M(t6-1,t6-1) + fM(17); 
        M(t6,t6)     = M(t6,t6) + fM(18);
        M(t7-2,t7-2) = M(t7-2,t7-2) + fM(19);
        M(t7-1,t7-1) = M(t7-1,t7-1) + fM(20); 
        M(t7,t7)     = M(t7,t7) + fM(21);
        M(t8-2,t8-2) = M(t8-2,t8-2) + fM(22);
        M(t8-1,t8-1) = M(t8-1,t8-1) + fM(23); 
        M(t8,t8)     = M(t8,t8) + fM(24);
        
    end;
    

    if in_data.EL(i,2)==5  % "5" - CSQ element (quadrilateral) ------------------
        % rhoX is considered = rhoY
        node1 = find(in_data.ND(:,1)==in_data.EL(i,3));
        node2 = find(in_data.ND(:,1)==in_data.EL(i,4));
        node3 = find(in_data.ND(:,1)==in_data.EL(i,5));
        node4 = find(in_data.ND(:,1)==in_data.EL(i,6));

        if in_data.mater.E~=0  Em=in_data.mater.E;   else Em=in_data.EL(i,7);   end;
        if in_data.mater.h~=0 
            if length(in_data.mater.h)==1   hT=[1 1 1 1].*in_data.mater.h; end
            if length(in_data.mater.h)==4   hT=in_data.mater.h;            end
        else hT = in_data.EL(i,8:11); end; % element thickness at 4 nodes
        
        if in_data.mater.miu~=0 miu_1=in_data.mater.miu; else  miu_1 = in_data.EL(i,12); end;

        [Bsys,Esys,Klc,Msys] = D2_CSQ (in_data.ND(node1,2),in_data.ND(node1,3), ...
            in_data.ND(node2,2),in_data.ND(node2,3),in_data.ND(node3,2),in_data.ND(node3,3),...
            in_data.ND(node4,2),in_data.ND(node4,3), Em, hT, miu_1);
        
        Msys = Msys.*in_data.mater.rhoX;

        t1 = node1*2; t2 = node2*2; t3 = node3*2; t4 = node4*2;

        x1 = in_data.ND(node1,2); y1 = in_data.ND(node1,3);
        x2 = in_data.ND(node2,2); y2 = in_data.ND(node2,3);
        x3 = in_data.ND(node3,2); y3 = in_data.ND(node3,3);
        x4 = in_data.ND(node4,2); y4 = in_data.ND(node4,3);

        %        A1 = abs(0.5 * det([1 1 1; x1 x2 x4; y1 y2 y4]) ); % 1st triangle area
        %        A2 = abs(0.5 * det([1 1 1; x4 x2 x3; y4 y2 y3]) ); % 1st triangle area
        %        A = A1+A2; % quadrilateral area 
 
        % global K
        Kgl((t1-1):t1,(t1-1):t1) = Kgl( (t1-1):t1,(t1-1):t1) + Klc(1:2,1:2);
        Kgl((t1-1):t1,(t2-1):t2) = Kgl( (t1-1):t1,(t2-1):t2) + Klc(1:2,3:4);
        Kgl((t1-1):t1,(t3-1):t3) = Kgl( (t1-1):t1,(t3-1):t3) + Klc(1:2,5:6);
        Kgl((t1-1):t1,(t4-1):t4) = Kgl( (t1-1):t1,(t4-1):t4) + Klc(1:2,7:8);
    
        Kgl((t2-1):t2,(t1-1):t1) = Kgl( (t2-1):t2,(t1-1):t1) + Klc(3:4,1:2);
        Kgl((t2-1):t2,(t2-1):t2) = Kgl( (t2-1):t2,(t2-1):t2) + Klc(3:4,3:4);
        Kgl((t2-1):t2,(t3-1):t3) = Kgl( (t2-1):t2,(t3-1):t3) + Klc(3:4,5:6);
        Kgl((t2-1):t2,(t4-1):t4) = Kgl( (t2-1):t2,(t4-1):t4) + Klc(3:4,7:8);
    
        Kgl((t3-1):t3,(t1-1):t1) = Kgl( (t3-1):t3,(t1-1):t1) + Klc(5:6,1:2);
        Kgl((t3-1):t3,(t2-1):t2) = Kgl( (t3-1):t3,(t2-1):t2) + Klc(5:6,3:4);
        Kgl((t3-1):t3,(t3-1):t3) = Kgl( (t3-1):t3,(t3-1):t3) + Klc(5:6,5:6);
        Kgl((t3-1):t3,(t4-1):t4) = Kgl( (t3-1):t3,(t4-1):t4) + Klc(5:6,7:8);
    
        Kgl((t4-1):t4,(t1-1):t1) = Kgl( (t4-1):t4,(t1-1):t1) + Klc(7:8,1:2);
        Kgl((t4-1):t4,(t2-1):t2) = Kgl( (t4-1):t4,(t2-1):t2) + Klc(7:8,3:4);
        Kgl((t4-1):t4,(t3-1):t3) = Kgl( (t4-1):t4,(t3-1):t3) + Klc(7:8,5:6);
        Kgl((t4-1):t4,(t4-1):t4) = Kgl( (t4-1):t4,(t4-1):t4) + Klc(7:8,7:8);

        % global M
        M((t1-1):t1,(t1-1):t1) = M( (t1-1):t1,(t1-1):t1) + Msys(1:2,1:2);
        M((t1-1):t1,(t2-1):t2) = M( (t1-1):t1,(t2-1):t2) + Msys(1:2,3:4);
        M((t1-1):t1,(t3-1):t3) = M( (t1-1):t1,(t3-1):t3) + Msys(1:2,5:6);
        M((t1-1):t1,(t4-1):t4) = M( (t1-1):t1,(t4-1):t4) + Msys(1:2,7:8);
    
        M((t2-1):t2,(t1-1):t1) = M( (t2-1):t2,(t1-1):t1) + Msys(3:4,1:2);
        M((t2-1):t2,(t2-1):t2) = M( (t2-1):t2,(t2-1):t2) + Msys(3:4,3:4);
        M((t2-1):t2,(t3-1):t3) = M( (t2-1):t2,(t3-1):t3) + Msys(3:4,5:6);
        M((t2-1):t2,(t4-1):t4) = M( (t2-1):t2,(t4-1):t4) + Msys(3:4,7:8);
    
        M((t3-1):t3,(t1-1):t1) = M( (t3-1):t3,(t1-1):t1) + Msys(5:6,1:2);
        M((t3-1):t3,(t2-1):t2) = M( (t3-1):t3,(t2-1):t2) + Msys(5:6,3:4);
        M((t3-1):t3,(t3-1):t3) = M( (t3-1):t3,(t3-1):t3) + Msys(5:6,5:6);
        M((t3-1):t3,(t4-1):t4) = M( (t3-1):t3,(t4-1):t4) + Msys(5:6,7:8);
    
        M((t4-1):t4,(t1-1):t1) = M( (t4-1):t4,(t1-1):t1) + Msys(7:8,1:2);
        M((t4-1):t4,(t2-1):t2) = M( (t4-1):t4,(t2-1):t2) + Msys(7:8,3:4);
        M((t4-1):t4,(t3-1):t3) = M( (t4-1):t4,(t3-1):t3) + Msys(7:8,5:6);
        M((t4-1):t4,(t4-1):t4) = M( (t4-1):t4,(t4-1):t4) + Msys(7:8,7:8);
        
    end;

    
    if in_data.EL(i,2)==9  % "9" - BCIZ bending plate element (triangle) ----
        % must: rhoX = rhoY
        node1 = find(in_data.ND(:,1)==in_data.EL(i,3));
        node2 = find(in_data.ND(:,1)==in_data.EL(i,4));
        node3 = find(in_data.ND(:,1)==in_data.EL(i,5));
        
        if in_data.mater.E~=0  E1=in_data.mater.E;       else E1=in_data.EL(i,6);       end;
        if in_data.mater.h~=0 h_1=in_data.mater.h;       else h_1 = in_data.EL(i,7);    end;
        if in_data.mater.miu~=0 miu_1=in_data.mater.miu; else  miu_1 = in_data.EL(i,8); end;
        
        [Klc,ML] = D2_BCIZ (in_data.ND(node1,2),in_data.ND(node1,3),in_data.ND(node2,2),...
            in_data.ND(node2,3),in_data.ND(node3,2),in_data.ND(node3,3),E1,h_1,miu_1);

        t1 = node1*dof_per_node; t2 = node2*dof_per_node; t3 = node3*dof_per_node;

        x1 = in_data.ND(node1,2); y1 = in_data.ND(node1,3);
        x2 = in_data.ND(node2,2); y2 = in_data.ND(node2,3);
        x3 = in_data.ND(node3,2); y3 = in_data.ND(node3,3);
        
        A = (0.5 * det([1 1 1; x1 x2 x3; y1 y2 y3]) ); % triangle area
    
        % mass matrix * material density
        ML = ML.*in_data.mater.rhoX;
        % global stiffness matrix:
        Kgl((t1-2):t1,(t1-2):t1) = Kgl( (t1-2):t1,(t1-2):t1) + Klc(1:3,1:3);
        Kgl((t1-2):t1,(t2-2):t2) = Kgl( (t1-2):t1,(t2-2):t2) + Klc(1:3,4:6);
        Kgl((t1-2):t1,(t3-2):t3) = Kgl( (t1-2):t1,(t3-2):t3) + Klc(1:3,7:9);
        Kgl((t2-2):t2,(t1-2):t1) = Kgl( (t2-2):t2,(t1-2):t1) + Klc(4:6,1:3);
        Kgl((t2-2):t2,(t2-2):t2) = Kgl( (t2-2):t2,(t2-2):t2) + Klc(4:6,4:6);
        Kgl((t2-2):t2,(t3-2):t3) = Kgl( (t2-2):t2,(t3-2):t3) + Klc(4:6,7:9);
        Kgl((t3-2):t3,(t1-2):t1) = Kgl( (t3-2):t3,(t1-2):t1) + Klc(7:9,1:3);
        Kgl((t3-2):t3,(t2-2):t2) = Kgl( (t3-2):t3,(t2-2):t2) + Klc(7:9,4:6);
        Kgl((t3-2):t3,(t3-2):t3) = Kgl( (t3-2):t3,(t3-2):t3) + Klc(7:9,7:9);
        % global mass matrix:
        M((t1-2):t1,(t1-2):t1) = M( (t1-2):t1,(t1-2):t1) + ML(1:3,1:3);
        M((t1-2):t1,(t2-2):t2) = M( (t1-2):t1,(t2-2):t2) + ML(1:3,4:6);
        M((t1-2):t1,(t3-2):t3) = M( (t1-2):t1,(t3-2):t3) + ML(1:3,7:9);
        M((t2-2):t2,(t1-2):t1) = M( (t2-2):t2,(t1-2):t1) + ML(4:6,1:3);
        M((t2-2):t2,(t2-2):t2) = M( (t2-2):t2,(t2-2):t2) + ML(4:6,4:6);
        M((t2-2):t2,(t3-2):t3) = M( (t2-2):t2,(t3-2):t3) + ML(4:6,7:9);
        M((t3-2):t3,(t1-2):t1) = M( (t3-2):t3,(t1-2):t1) + ML(7:9,1:3);
        M((t3-2):t3,(t2-2):t2) = M( (t3-2):t3,(t2-2):t2) + ML(7:9,4:6);
        M((t3-2):t3,(t3-2):t3) = M( (t3-2):t3,(t3-2):t3) + ML(7:9,7:9);
    end;
    
end; % end iterating through all elements -------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -