"CODE" 33302; "PROCEDURE" FEM LAG SKEW(X, Y, N, Q, R, F, ORDER, E); "VALUE" N, ORDER; "INTEGER" N, ORDER; "REAL" "PROCEDURE" Q, R, F; "ARRAY" X, Y, E; "BEGIN" "INTEGER" L, L1; "REAL" XL1, XL, H, A12, A21, B1, B2, TAU1, TAU2, CH, TL, G, YL, PP, E1, E2, E3, E4, E5, E6; "ARRAY" T, SUPER, SUB, CHI, GI[0:N-1]; "PROCEDURE" ELEMENT MAT VEC EVALUATION 1; "BEGIN" "OWN" "REAL" Q2, R2, F2; "REAL" Q1, R1, F1, H2, S12; "IF" L=1 "THEN" "BEGIN" Q2:= Q(XL1); R2:= R(XL1); F2:= F(XL1) "END"; H2:= H/2; S12:= - 1/H; Q1:= Q2; Q2:= Q(XL); R1:= R2; R2:= R(XL); F1:= F2; F2:= F(XL); B1:= H2*F1; B2:= H2*F2; TAU1:= H2*R1; TAU2:= H2*R2; A12:= S12 + Q1/2; A21:= S12 - Q2/2 "END" ELEMENT MAT VEC EV.; "PROCEDURE" ELEMENT MAT VEC EVALUATION 2; "BEGIN" "OWN" "REAL" Q3, R3, F3; "REAL" Q1, Q2, R1, R2, F1, F2, S12, S13, S22, X2, H6, H15, C12, C32, A13, A31, A22, A23, A32, B3, TAU3; "IF" L=1 "THEN" "BEGIN" Q3:= Q(XL1); R3:= R(XL1); F3:= F(XL1) "END"; X2:= (XL1 + XL)/2; H6:= H/6; H15:= H/1.5; Q1:= Q3; Q2:= Q(X2); Q3:= Q(XL); R1:= R3; R2:= R(X2); R3:= R(XL); F1:= F3; F2:= F(X2); F3:= F(XL); B1:= H6*F1; B2:= H15*F2; B3:= H6*F3; TAU1:= H6*R1; TAU2:= H15*R2; TAU3:= H6*R3; S12:= - 1/H/0.375; S13:= - S12/8; S22:= - 2*S12; A12:= S12 + Q1/1.5; A13:= S13 - Q1/6; A21:= S12 - Q2/1.5; A23:= S12 + Q2/1.5; A22:= S22 + TAU2; A31:= S13 + Q3/6; A32:= S12 - Q3/1.5; "COMMENT" STATIC CONDENSATION; C12:= - A12/A22; C32:= - A32/A22; A12:= A13 + C12*A23; A21:= A31 + C32*A21; B1:= B1 + C12*B2; B2:= B3 + C32*B2; TAU1:= TAU1 + C12*TAU2; TAU2:= TAU3 + C32*TAU2 "END" ELEMENT MAT VEC EVALUATION 2 "PROCEDURE" ELEMENT MAT VEC EVALUATION 3; "BEGIN" "OWN" "REAL" Q4, R4, F4; "REAL" Q1, Q2, Q3, R1, R2, R3, F1, F2, F3, S12, S13, S14, S22, S23, X2, X3, H12, H24, DET, C12, C13, C42, C43, A13, A14, A22, A23, A24, A31, A32, A33, A34, A41, A42, A43, B3, B4, TAU3, TAU4; "IF" L=1 "THEN" "BEGIN" Q4:= Q(XL1); R4:= R(XL1); F4:= F(XL1) "END"; X2:= XL1 + 0.27639320225*H; X3:= XL - X2 + XL1; H12:= H/12; H24:= H/2.4; Q1:= Q4; Q2:= Q(X2); Q3:= Q(X3); Q4:= Q(XL); R1:= R4; R2:= R(X2); R3:= R(X3); R4:= R(XL); F1:= F4; F2:= F(X2); F3:= F(X3); F4:= F(XL); S12:= -4.8784183052080/H; S13:= 0.7117516385414/H; S14:= -.16666666666667/H; S23:= 25*S14; S22:= -2*S23; B1:= H12*F1; B2:= H24*F2; B3:= H24*F3; B4:= H12*F4; TAU1:= H12*R1; TAU2:= H24*R2; TAU3:= H24*R3; TAU4:= H12*R4; A12:= S12 + 0.67418082864578*Q1; A13:= S13 - 0.25751416197912*Q1; A14:= S14 + Q1/12; A21:= S12 - 0.67418082864578*Q2; A22:= S22 + TAU2; A23:= S23 + 0.93169499062490*Q2; A24:= S13 - 0.25751416197912*Q2; A31:= S13 + 0.25751416197912*Q3; A32:= S23 - 0.93169499062490*Q3; A33:= S22 + TAU3; A34:= S12 + 0.67418082864578*Q3; A41:= S14 - Q4/12; A42:= S13 + 0.25751416197912*Q4; A43:= S12 - 0.67418082864578*Q4; "COMMENT" STATIC CONDENSATION; DET:= A22*A33 - A23*A32; C12:= (A13*A32 - A12*A33)/DET; C13:= (A12*A23 - A13*A22)/DET; C42:= (A32*A43 - A42*A33)/DET; C43:= (A42*A23 - A43*A22)/DET; TAU1:= TAU1 + C12*TAU2 + C13*TAU3 ; TAU2:= TAU4 + C42*TAU2 + C43*TAU3; A12:= A14 + C12*A24 + C13*A34; A21:= A41 + C42*A21 + C43*A31; B1:= B1 + C12*B2 + C13*B3; B2:= B4 + C42*B2 + C43*B3 "END" ELEMENT MAT VEC EVALUATION 3 "PROCEDURE" BOUNDARY CONDITIONS; "IF" L=1 "AND" E2 = 0 "THEN" "BEGIN" TAU1:= 1; B1:= E3/E1; A12:= 0 "END" "ELSE" "IF" L=1 "AND" E2 ^= 0 "THEN" "BEGIN" TAU1:= TAU1 - E1/E2; B1:= B1 - E3/E2 "END" "ELSE" "IF" L=N "AND" E5 = 0 "THEN" "BEGIN" TAU2:= 1; A21:= 0; B2:= E6/E4; "END" "ELSE" "IF" L=N "AND" E5 ^= 0 "THEN" "BEGIN" TAU2:= TAU2 + E4/E5; B2:= B2 + E6/E5 "END" B.C.1; "PROCEDURE" FORWARD BABUSKA; "IF" L=1 "THEN" "BEGIN" CHI[0]:= CH:= TL:= TAU1; T[0]:= TL; GI[0]:= G:= YL:= B1; Y[0]:= YL; SUB[0]:= A21; SUPER[0]:= A12; PP:= A21/(CH - A12); CH:= TAU2 - CH*PP; G:= B2 - G*PP; TL:= TAU2; YL:= B2 "END" "ELSE" "BEGIN" CHI[L1]:= CH:= CH + TAU1; GI[L1]:= G:= G + B1; SUB[L1]:= A21; SUPER[L1]:= A12; PP:= A21/(CH - A12); CH:= TAU2 - CH*PP; G:= B2 - G*PP; T[L1]:= TL + TAU1; TL:= TAU2; Y[L1]:= YL + B1; YL:= B2 "END" FORWARD BABUSKA; "PROCEDURE" BACKWARD BABUSKA; "BEGIN"PP:= YL; Y[N]:= G/CH; G:= PP; CH:= TL; L:= N; "FOR" L:= L - 1 "WHILE" L >= 0 "DO" "BEGIN" PP:= SUPER[L]/(CH - SUB[L]); TL:= T[L]; CH:= TL - CH*PP; YL:= Y[L]; G:= YL - G*PP; Y[L]:=(GI[L] + G - YL)/(CHI[L] + CH - TL) ; "END" "END" BACKWARD BABUSKA; L:= 0; XL:= X[0]; E1:= E[1]; E2:= E[2]; E3:= E[3]; E4:= E[4]; E5:= E[5]; E6:= E[6]; "COMMENT" ELEMENTWISE ASSEMBLAGE OF MATRIX AND VECTOR COMBINED WITH FORWARD BABUSKA SUBSTITUTION; "FOR" L:= L + 1 "WHILE" L <= N "DO" "BEGIN" XL1:= XL; L1:= L - 1; XL:= X[L]; H:= XL - XL1; "IF" ORDER = 2 "THEN" ELEMENT MAT VEC EVALUATION 1 "ELSE" "IF" ORDER = 4 "THEN" ELEMENT MAT VEC EVALUATION 2 "ELSE" ELEMENT MAT VEC EVALUATION 3; "IF" L=1 "OR" L=N "THEN" BOUNDARY CONDITIONS; FORWARD BABUSKA "END"; BACKWARD BABUSKA; "END" FEM LAGR; "EOP"