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

📄 pbar_shape_lag.m

📁 matlab实例
💻 M
字号:

function [psi, dpsi] = pBar_shape_lag(ksi, p)
% compute 1-D Lagrangean shape funtions and derivatives at point ksi in master element.
% p = p-order of shape functions

switch(p)
case(1)
    % Linear shape functions
    % 1------2
    
    psi(1) = 0.5 * (1. - ksi);
    psi(2) = 0.5 * (1. + ksi);
    
    dpsi(1) =-0.5;
    dpsi(2) = 0.5;
    
case (2)
    % Quadratic shape functions
    % 1----2----3
    
    psi(1) = ksi * (ksi - 1.0) * 0.5;
    psi(2) = 1.0 - ksi*ksi;
    psi(3) = ksi * (ksi + 1.0) * 0.5;

    dpsi(1) = ksi - 0.5;
    dpsi(2) = -2.0 * ksi;
    dpsi(3) = ksi + 0.5;
    
case (3)
    % Cubic shape functions    
    % 1----2----3----4
    
    psi(1) =  9.0/16. * (1.0/9.0 - ksi*ksi) * (ksi - 1.0);
    psi(2) =  27.0/16.0 * (1.0 - ksi*ksi) * (1.0/3.0 - ksi);
    psi(3) =  27.0/16.0 * (1.0 - ksi*ksi) * (1.0/3.0 + ksi);
    psi(4) = -9.0/16. * (1.0/9.0 - ksi*ksi) * (ksi + 1.0);

    dpsi(1) = -9.0/16.0 * (3.0*ksi*ksi - 2.0*ksi -1.0/9.0);
    dpsi(2) = 27.0/16.0 * (3.0*ksi*ksi -2.0/3.0*ksi -1.0);
    dpsi(3) = 27.0/16.0 * (-3.0*ksi*ksi -2.0/3.0*ksi +1.0);
    dpsi(4) = -9.0/16.0 * (-3.0*ksi*ksi -2.0*ksi +1.0/9.0);

case (4)
    % Quartic shape functions
    % 1----2----3----4----5
    
    psi(1) = (4.0*ksi^3 - 4.0*ksi*ksi - ksi + 1.0)*ksi/6.0;  
    psi(2) =(-8.0*ksi^3 + 4.0*ksi*ksi + 8.0*ksi -4.0)*ksi/3.0;
    psi(3) = 4.0*ksi^4 - 5.0*ksi*ksi + 1.0;
    psi(4) =(-8.0*ksi^3 - 4.0*ksi*ksi + 8.0*ksi +4.0)*ksi/3.0;
    psi(5) = (4.0*ksi^3 + 4.0*ksi*ksi - ksi - 1.0)*ksi/6.0;  

    dpsi(1) =(16.0*ksi^3 - 12.0*ksi*ksi - 2.0*ksi + 1.0)/6.0;
    dpsi(2) =(-32.0*ksi^3 + 12.0*ksi*ksi +16.0*ksi -4.0)/3.0;
    dpsi(3) = (16.0*ksi*ksi - 10.0)*ksi;
    dpsi(4) =(-32.0*ksi^3 - 12.0*ksi*ksi +16.0*ksi +4.0)/3.0;
    dpsi(5) = (16.0*ksi^3 + 12.0*ksi*ksi - 2.0*ksi -1.0)/6.0;
     
otherwise
    error('shape_lag: Requested invalid p-order');
end

% check computations
sum_psi = sum( psi );
if abs(sum_psi - 1.0) > 1.0e-14
    error('shape_lag: functions do not add to one??');
end
sum_dpsi =  sum(dpsi);
if abs(sum_dpsi) > 1.0e-14;
    error('shape_lag: derivatives do not add to zero??');
end
% ****************************************************
% ****************************************************

⌨️ 快捷键说明

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