pulisco memoria

kill(all);

definisco spostamenti lineari

u(x,y) := a * x + b * y + c;

v(x,y) := d * x + e * y + f;

determino [a,b,c,d,e,f] imponendo che lo spostamento al nodo sia eguale 
allo spostamento nodale

eqns: [
u(x_i,y_i)=u_i,
u(x_j,y_j)=u_j,
u(x_k,y_k)=u_k,
v(x_i,y_i)=v_i,
v(x_j,y_j)=v_j,
v(x_k,y_k)=v_k
];

matrice dei coefficienti del sistema di equazioni di cui sopra

augcoefmatrix(eqns,[a,b,c,d,e,f]);

risolvo tali equazioni nelle incognite [a,b,c,d,e,f]

assegno alle incognite il valore soluzione utilizzando globalsolve=true

linsolve(eqns,   [ a , b , c , d , e , f ] ) , globalsolve=true;

funzioni spostamento sul tria3

u(x,y);

v(x,y);

estraggo le componenti di deformazione

eps_x : diff ( u(x,y) , x , 1 );

eps_y : diff ( v(x,y) , y, 1 );

gamma_xy : diff(u(x,y) , y ,1 ) + diff ( v(x,y) , x ,1 );

compongo tali componenti entro un vettore deformazione 

eps : [ eps_x , eps_y , gamma_xy ];

estraggo la matrice che premoltiplicata al vettore spostamenti nodali mi restituisce
il vettore deformazioni eps

vettore spostamenti nodali

delta : [u_i, v_i, u_j, v_j, u_k , v_k ];

matrice B di legame tra spostamenti nodali e deformazioni eps

B : coefmatrix ( eps, delta );

calcolo area dell'elemento con la regola del determinante

Areadet : determinant(

matrix(
        [  1  ,  1  ,  1  ],
        [ x_i , x_j , x_k ],
        [ y_i , y_j , y_k ]
)


) * 1 / 2;

sostituisco tale definizione di area entro la definizione di B

ratsubst (  Area   ,   Areadet    ,   B   );