## spESTframe77LaheWFI.m
close all 
clear
## 
disp('==================================================================')
disp(' spESTframe77LaheWFI.m     ')
disp(' Analysis of a plane frame using the EST method. ')
disp(' The EST method finds the displacements and forces. ')
disp(' The equations matrix are non-symmetric sparse matrix. ')
## http://digi.lib.ttu.ee/opik_eme/slaidid/raamEST1en.pdf
##disp('  ')
disp('---  ')
##disp(' http://digi.lib.ttu.ee/opik_eme/slaidid/raamEST1en.pdf ')
disp(' http://digi.lib.ttu.ee/opik_eme/Ehitusmehaanika.pdf#page=425  #page=243            ')
## GNU octave version >= 3.0.x
##=========================================================================
## This Program is written by Andres Lahe,   2010-07-16
##                    e-mail: andres.lahe@ttu.ee
## LAST MODIFIED: Andres Lahe,   2013-07-21
## Copyright (c)  2010 by Tallinn University of Technology 
##                Department of Mechanics
##                http://www.ttu.ee/
##
## This program is free software; you can redistribute it and/or
## modify it under the terms of the GNU General Public License
## as published by the Free Software Foundation; either version 2
## of the License, or (at your option) any later version.

## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
## GNU General Public License for more details.

## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
## http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
##=========================================================================
##
##siireVardaA
 eps1=0.000001;
 epsgraf=0.01;
 global spA 
  global X 
 global siireVardaA
disp('---  ')
disp(' daf -- the displacements and the forces at the ends of element. ')
disp(' The element of plane frame have 12 daf''s (6+6). ') 
disp(' The number of unknowns are 12*number_of_elements + number_of_support_reactions. ')
disp(' The matrices are assembled into compressed column sparse matrices. ')
disp('---  ')
disp('  ')
#---------  Number of frame nodes ----------
Number_of_frame_nodes=6  #6
                            SolmedeArv=Number_of_frame_nodes;
#---------  Number of elements ----------
Number_of_elements=7
                            ElementideArv=Number_of_elements;
#---------  Number of supports ----------
Number_of_support_reactions=3
                            Ntoerkts=Number_of_support_reactions;
disp('  ')

spNNK=12*ElementideArv+Ntoerkts;
#==========
   The_number_of_unknowns_are=spNNK
disp('---  ')
#==========
disp(' Displacements and forces calculated on the parts of the element ''Nmitmeks''.  ')
Nmitmeks=4
Lp=12.0; # graphics axis
#==========
disp('--------- Element properties ------------')
#E=2.1E+11  # Elastsusmoodul (E=210GPa) E=2.1E+11 [Pa]
#E=2.1E+05 # kPa
#% I-40  Hristloige=400mm=0.4m   I=1902cm4=1.902E+03cm4=1.902E-05m4
#
Ntoerkts=3
EIp=20000
EIr=60000
%EAp=4.6*10^6 
EAp=4.6*10^15
%EAr=6.8*10^6;
EAr=6.8*10^15 
GAp=0.4*EAp; 
GAr=0.4*EAr;
L2x=sqrt(6.0^2+2.0^2);   # length of the element
sinA2=2.0/L2x;
cosA2=6.0/L2x;
l1=6.0;
l2=6.0;
h=7.0;
hp=5.0;
h1=4.0;
q1=4.0;
q2=8.0;
q3=8.0;
F=12.0;
F3=F;
qz1=q1;
qz2v=q2*l1/L2x;   # load/length of the element
qz7=q3;
qz2=qz2v*cosA2;  # projection onto z-axis
qx2=-qz2v*sinA2; # projection onto x-axis
#
disp('--------- Scaling multiplier for the displacements----------')
baasi0=EIp/5.0  # scaling multiplier for the displacements
#%baasi0=1.0;
#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
disp('---  ')
disp(' Displacements and forces calculated on the parts of the element ''Nmitmeks''.  ')
Nmitmeks=4
Lp=12.0; # graphics axis
#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##Fjoud=esFjoud(:,1:2,i);
#Fjoud=esFjoud(:,1:3,i);
##qkoormus=esQkoormus(:,1:3,i); 
#qkoormus=esQkoormus(:,1:4,i);
##%%%%%%%%%%%%%%%%%%%%%%%%%%%%
## ---- load variants -----
load_variant=1
#load_variant=2
#load_variant=3
        koormusvariant=load_variant
###koormusvariant=2

###koormusvariant=3
##%%%%%%%%%%%%%%%%%%%%%%%%%%%%
switch (koormusvariant)
case{1}
#
disp(' Load variant 1 ')
#disp(' Element load  in local coordinates ')
#disp('    qz     qx     qA      qL ')
# Uniformly distributed load in local coordinate z and x direction kN/m^2
LoadsqONelement=4;
esQkoormu=zeros(LoadsqONelement,4,ElementideArv);
esQkoormus(1,1:4,1)=[qz1 0.0 0.0 5.0];  # [0.0 0.0 0.0 0.0];
esQkoormus(1,1:4,2)=[qz2 qx2 0.0 L2x];  # [0.0 0.0 0.0 0.0];
esQkoormus(1,1:4,3)=[0.0 0.0 0.0 7.0];  # [0.0 0.0 0.0 0.0];
esQkoormus(1,1:4,4)=[0.0 0.0 0.0 L2x];  # [0.0 0.0 0.0 0.0];
esQkoormus(1,1:4,5)=[0.0 0.0 0.0 5.0];  # [0.0 0.0 0.0 0.0];
esQkoormus(1,1:4,6)=[0.0 0.0 0.0 6.0];  # [0.0 0.0 0.0 0.0];
esQkoormus(1,1:4,7)=[qz7 0.0 0.0 6.0];  # [0.0 0.0 0.0 0.0];
#esQkoormus
# 
# Point load in local coordinate z and x direction  kN
#  Fz, Fx, aF - the coordinate of the point of force application
LoadsF_on_Element=5; 
esFjoud=zeros(LoadsF_on_Element,2,ElementideArv);
esFjoud(1,1:3,1)=[0.0 0.0 0.0];
esFjoud(1,1:3,2)=[0.0 0.0 0.0];    # [0.0 0.0 5.0];
#esFjoud(2,1:3,2)=[0.0 0.0 0.0];   # [0.0 0.0 7.0];
esFjoud(1,1:3,3)=[12.0 0.0 4.0];    # [0.0 0.0 5.0];
esFjoud(1,1:3,4)=[0.0 0.0 0.0];
esFjoud(1,1:3,5)=[0.0 0.0 0.0];
esFjoud(1,1:3,6)=[0.0 0.0 0.0];
esFjoud(1,1:3,7)=[0.0 0.0 0.0];
#esFjoud

#disp(' Node forces in global  coordinates ')
# sSolmF(forces,1,nodes); forces=[Fx; Fz; My]
sSolmF = zeros(3,1,SolmedeArv);
#sSolmF = zeros(3,1,SolmedeArv);
#sSolmF(:,1,1)= 0.0
#sSolmF(:,1,2)= 0.0
#sSolmF(:,1,3)= 0.0
#sSolmF(:,1,4)= 0.0
#sSolmF(:,1,5)= 0.0
#sSolmF(:,1,6)= 0.0
#%%%%%
# Support shift - tSiire#
# Support shift multiplied by scaling multiplier
tSiire = zeros(3,1,SolmedeArv);
#tSiire(1,1,1)= 0.0
#tSiire(2,1,1)= 0.01*baasi0
#tSiire(2,1,5)= 0.0
##%%%%
case{2}
disp(' Load variant 2 ')
case{3}
disp(' Load variant 3 ')
#%%%%%
#%%%%%
otherwise
disp(' No load variant cases ')
endswitch 
#
#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
disp(' Elements loads q in local coordinates ')
#%%%qz=qzZ'
#%%%qx=qxZ'
disp(' qz, qx, qA, qL  ')
disp('  For the element load q = 0,  qL = L - the end of element  ')
esQkoormus
disp(' Elements forces F  in local coordinates  ')                                      
#%%%Fx=FZx'
#%%%Fz=FZz'
esFjoud
disp(' Fz, Fx, aF -- coordinate of the point of force F  application in local coordinates ')
#disp(' x = aL -- coordinate of the point of force F  application in local coordinates ')
disp(' For the element force F = 0,  aL = L - the end of element  ') 
#%aL=aLXx'
esFjoud
#%%%
#%%%
#disp(' Node 2 forces in global  coordinates ')
#sSolmF(:,:,2)
#%s2F'
#disp(' Node 4 forces in global  coordinates ')
#sSolmF(:,:,4)
#%s4F'
#disp(' Node 6 forces in global  coordinates ')
#sSolmF(:,:,6)
#s6F'
disp('------  ')
disp(' Node forces in global  coordinates ')
disp(' Fx Fz My; : ; Node number; ')
disp('------  ')
sSolmF(:,1,:)=sSolmF(:,1,:)
#
#==========
# Nodal coordinates
#==========
krdn=[#	 x       z 
        0.0     0.0;	% node 1
	0.0    -5.0;	% node 2
	6.0	0.0;	% node 3
	6.0    -7.0;	% node 4
       12.0	0.0;	% node 5
       12.0    -5.0];	% node 6
#==========
# disp(' Nr      toel  u  w  fi  N   Q   M ')
#==========
#  Restrictions on support displacements.
# Support  Nr   u   w  fi   hold on - 1, open - 0
#========== 
tsolm=[1    1 1 0;	% node 1
       5    0 1 0];	% node 5
#==========
# Support shift multiplied by scaling multiplier
#tSiire(1,1,1)= 0.0
#tSiire(2,1,1)= 0.01*baasi0
#tSiire(2,1,5)= 0.0
#==========       
# ------------- Element properties, topology and hinges ---------
#-----------------------
elasts=[# Element properties, 
#                     n2 - end of the element, 
#                          n1 - beginning of the element,
#                               N, Q, M hinges at end of the element
#                                        N, Q, M hinges at beginning of the element. 
        EIp EAp GAp   2     1    0 0 0    0 0 1;    % element 1
	EIr EAr GAr   4     2    0 0 0    0 0 0;    % element 2
	EIp EAp GAp   4     3    0 0 0    0 0 0;    % element 3
	EIr EAr GAr   6     4    0 0 0    0 0 0;    % element 4
	EIp EAp GAp   5     6    0 0 1    0 0 0;    % element 5
	EIr EAr GAr   3     1    0 0 0    0 0 1;    % element 6
	EIr EAr GAr   5     3    0 0 1    0 0 0];   % element 7	
# 1-hinge 'true' (axial, shear, moment hinge)
#       
#==========   

#==========
SARV=size(krdn);
NSARV=SARV(1,1);
#%%%%%%%%%%%%
for i=1:NSARV
sJrN(i)=i;
end
#
sJrNT=sJrN';
#%%%%%%%%%%%
#disp('-----------------------------')
disp('===============================')
disp(' Nodal coordinates ')
disp('  Node     X        Z  ') 
disp('-----------------------------')
#disp([krdn])
for i=1:NSARV
disp(sprintf('  %2i    %7.4f  %7.4f',sJrNT(i),    krdn(i,1), krdn(i,2)))
endfor
disp('-----------------------------')
#%%%
if ((SolmedeArv-NSARV) != 0)
disp(' ')
disp(' ------- ')
disp(' ')
Number_of_frame_nodes
Error_by_nodes_input=sprintf('Number of nodes must be, but is: %d, %d', SolmedeArv, NSARV)
disp(' ')
error(' Error by nodes input.')
endif
#%%%

disp('===============================================')
disp('        Topology and  hinges. ')
disp('  End of the element, beginning of the element,  ')
disp('  axial-, shear-, moment hinge; 1 - hinge ''true'' ')
disp('-----------------------------------------------')
elemkinni=elasts(:,4:11);
Topology_and_and_hinges=elemkinni
EARV=size(elemkinni);
NEARV=EARV(1,1);
NEARV;
#
#%%%%%%%%%%%%%%%%%%%%
# --------The displacements and the forces numbers at the end and beginning of element.  ----- -----
slmnr=0;
for i=1:NEARV
 for j=1:12
   slmnr=slmnr+1;
   selemjln(i,j)=slmnr;
 endfor
endfor
#
disp('====================================================')
disp('  Displacements and the forces numbers (DaFs) ')
disp('  at the end and at the beginning of elements.  ')
disp('----------------------------------------------------')
selemjln;
The_displacements_and_the_forces_numbers=selemjln
#
selemjl=[selemjln elasts];
#%==========
#selemjl=[1  2  3  4  5  6  7  8  9 10 11 12 EIp EAp GAp 2 1 ;  # element 1
#	13 14 15 16 17 18 19 20 21 22 23 24 EIr EAr GAr 4 2 ;	# element 2
#	25 26 27 28 29 30 31 32 33 34 35 36 EIp EAp GAp 4 3 ;	# element 3
#	37 38 39 40 41 42 43 44 45 46 47 48 EIr EAr GAr 6 4 ;	# element 4
#	49 50 51 52 53 54 55 56 57 58 59 60 EIp EAp GAp 5 6 ;	# element 5
#	61 62 63 64 65 66 67 68 69 70 71 72 EIr EAr GAr 3 1 ;	# element 6
#	73 74 75 76 77 78 79 80 81 82 83 84 EIr EAr GAr 5 3 ];	# element 7
#%==========
selem=[selemjl(:,1:23)];
#EARV=size(selem);
#NEARV=EARV(1,1);
#%%%%%%%%%%%%
for i=1:NEARV
JrN(i,1)=i;
endfor
#
JrNT=JrN';
#%%%%%%%%%%%
disp('========================================================================================================================================')
disp(' Topology of elements                                                                                                       Moment hinge')
disp('                                                                                                               Node number   ''true''=1 ')
disp(' Nr.  At the end:  u, w, fi, N, Q, M.  At the beginning: u, w, fi, N, Q, M.      EI         EA          GA    End Beginning  M    M')
disp('----------------------------------------------------------------------------------------------------------------------------------------')
#
for i=1:NEARV
disp(sprintf('  %2i     %2i   %2i   %2i   %2i   %2i   %2i     %2i   %2i   %2i    %2i    %2i    %2i     %9.3e   %9.3e   %9.3e  %2i  %3i    %4i   %2i',JrN(i,1),    selemjl(i,1), selemjl(i,2), selemjl(i,3),selemjl(i,4), ...
selemjl(i,5), selemjl(i,6), selemjl(i,7),selemjl(i,8), ...
selemjl(i,9), selemjl(i,10), selemjl(i,11),selemjl(i,12), ...
selemjl(i,13), selemjl(i,14), selemjl(i,15), selemjl(i,16),    selemjl(i,17),   selemjl(i,20),  selemjl(i,23)))
endfor
disp('----------------------------------------------------------------------------------------------------------------------------------------')
#%%%
EARV=size(selem);
NEARV=EARV(1,1);
#%%%
if ((ElementideArv-NEARV)  !=0 )
disp(' ')
disp(' ------- ')
disp(' ')
Number_of_elements
Error_by_elements_input=sprintf(' Number of elements must be, and is  %d, %d',ElementideArv,NEARV)
disp(' ')
error(' Error inserting the topology of elements.')
endif
#%%%
#==========
TSARV=size(tsolm);
NTSARV=TSARV(1,1);
#%%%%%%%%%%%%
for i=1:NTSARV
sJrN(i)=i;
end
#
sTJrNT=sJrN';
#%%%%%%%%%%% restrtictions on the support displacements
#disp('--------------------------------')
disp('==================================================')
disp(' Restrictions on support displacements. ')
disp('JrNr    Node Nr   u  w  fi;  hold on-1, open-0')
disp('--------------------------------------------------')
#disp([tsolm])
for i=1:NTSARV
disp(sprintf('  %2i     %5i   %2i %2i %2i %2i %2i %2i',sTJrNT(i),    tsolm(i,1), tsolm(i,2), tsolm(i,3), tsolm(i,4)))
endfor
disp('--------------------------------------------------')
#%%
TOEARV=size(tsolm);
TOARV=TOEARV(1,1);
##%%%%%%%%%%%
ToeSidemeteArv=0;
for i=1:NTSARV
  for j=2:4
     if (tsolm(i,j) == 1)
       ToeSidemeteArv=ToeSidemeteArv+1;
     endif 
  endfor
endfor
#
#%%%
#ToeSidemeteArv
if ((Ntoerkts-ToeSidemeteArv)  !=0 )
disp(' ')
disp(' ------- ')
disp(' ')
Number_of_support_reactions
Error_by_inserting_support_reactions=sprintf('Number of support reactions must be, and is  %d, %d',Ntoerkts,ToeSidemeteArv)
disp(' ')
error(' Error inserting restrtictions on support displacements.')
endif
#
#%%%%%%%%
#
lvarras=VardaPikkus(NSARV,NEARV,krdn,selem);
#lvarras
#%%%%%%%%%%%
disp('   ')
NEARV;
NNK=12*NEARV+Ntoerkts;

lvarras;
#
#%disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ')
for i=1:NEARV
elemendiN(i,1)=i;
siireVardaA(i,1:3)=selemjl(i,7:9);
siireVardaL(i,1:3)=selemjl(i,1:3);
joudVardaA(i,1:3)=selemjl(i,10:12);
joudVardaL(i,1:3)=selemjl(i,4:6);
endfor
#
siireVardaA;
siireVardaL;
joudVardaA;
joudVardaL;
#%%%%%%%%%%%%

%%%%%ABB=ABB

#--------- Define a matrix spA to be sparse -----------
disp('-------- Sparse matrix instantiation --------  ')
disp('  spA=sparse(NNK,NNK)  ')
spA=sparse(NNK,NNK) % nullistan võrrandisüsteemi kordajate maatriksi
#--------- Define a vector B ------------
disp('-------- Right-hand side of the equations (RHS). --------  ')
disp('  B=zeros(NNK,1);  ')
B=zeros(NNK,1);   % nullistan võrrandisüsteemi vabaliikmed
disp('   ')
%%%%%%%%%%%%%%%%%%%%%%%%%

disp('  ')
disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ')
disp(' function AlgParm=LaheFrameDFIm(baasi0,Ntoerkts,esQkoormus,esFjoud,sSolmF,tsolm,tSiire,krdn,selem) ')
disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ')
disp('  ')
AlgParm=LaheFrameDFIm(baasi0,Ntoerkts,esQkoormus,esFjoud,sSolmF,tsolm,tSiire,krdn,selem);
#disp('  ')
AlgPar=AlgParm;
#disp('  ')
#
#disp('  ')
disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ')
disp(' Element displacements and forces  determined by transfer matrix ')
disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ')
disp('  ')
#-------------Element displacements and forces----------
#
  suurused=[' displacement u - ';
            ' displacement w - ';
            ' rotation    fi - ';
            ' normal force N - ';
            ' shear force  Q - ';
            ' moment force M - '];
#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i=1:NEARV
  krda=i;
  vF=zeros(6,12);
    EI=selem(i,13);   % from topology
    EA=selem(i,14);   %   "      "
    GAr=selem(i,15);  %   "      "
  Li=lvarras(i,1);
#  qx=qxZ(i,1);
#  qz=qzZ(i,1);
#  aLx=aLXx(i,1);
#  Fz=FZz(i,1);
#  Fx=FZx(i,1);
baasi0=1.0;  
#Fjoud=esFjoud(:,1:2,i);
Fjoud=esFjoud(:,1:3,i);
#%       Fz    Fx     a
#%Fjoud=[0.0    0.0   0.0;
#qkoormus=esQkoormus(:,1:3,i); 
qkoormus=esQkoormus(:,1:4,i);
#%       qz     qx     qA      qL
#%qkoormus=[0.0   0.0   0.0  0.0   0.0];   
  
  xsamm=Li/Nmitmeks; % element is divided into 4-th parts
  xx=0;
  AP=AlgPar(i,:)';
#---------The transfer matrix equation --------
for ij=1:Nmitmeks+1  # 5 - displacements and forces at x=0.0
  vvF=ylfhlin(1.0,xx,EA,GAr,EI);
#  vvB=yzhqz(1.0,xx,qx,qz,EA,EI);
#  vvFz=yzfzv(1.0,xx,aLx,Fx,Fz,EA,EI);
 Sj=ESTFrKrmus(1.0,xx,Li,Fjoud,qkoormus,EA,EI); 
 vB=Sj;       
   Fvv(:,ij)=vvF*AP+vB;   
#  Fvv(:,ij)=vvF*AP+vvB+vvFz;
  xx=xx+xsamm;
endfor
#%%%%%%%%%%%%%%%%%
#Fvv(1:3,:)
#Fvv(4:6,:)
VardaNr=i;
#disp(' Varras Li on jaotatud neljaks ')
disp(sprintf('%15s %2i %17s %8.5f %28s', 'Displacements and forces of element no',VardaNr,'  length of element ',Li,'m.  element is divided into 4 parts '))
#Li
#disp('  ')
#
 for i=1:3 
  disp(sprintf('%14s %9.5e   %9.5e   %9.5e   %9.5e  %9.5e',suurused(i,:), Fvv(i,1),   Fvv(i,2),   Fvv(i,3),  Fvv(i,4),  Fvv(i,5)))
 endfor
#
 for i=4:6 
  disp(sprintf('%14s %9.5f   %9.5f   %9.5f   %9.5f  %9.5f',suurused(i,:), Fvv(i,1),   Fvv(i,2),   Fvv(i,3),  Fvv(i,4),  Fvv(i,5)))
 endfor
 #
 #disp('------------------')
#
#for i=4:6 
#disp(sprintf('%16s %9.5f   %9.5f   %9.5f   %9.5f  %9.5f',suurusedNQ(i,:), FvvNQ(i,1),   %FvvNQ(i,2),   FvvNQ(i,3),  FvvNQ(i,4),  FvvNQ(i,5)))
#endfor
#
disp('----------------------------------------------------------------------------')
#%%%%%%%%%%%%%%
endfor
#
#%%%%%%%%
#SF=SisejoudPunktis(VardaNr,X,AlgPar,lvarras,selem,esQkoormus,esFjoud,suurused)
SF=SisejoudPunktism(3,4.0,AlgPar,lvarras,selem,esQkoormus,esFjoud,suurused);
disp('-----------------------------------')
SF=SisejoudPunktism(3,4.0-eps1,AlgPar,lvarras,selem,esQkoormus,esFjoud,suurused);
#disp('-----------------------------------')
#%%%%%%%%%%%%
for i=1:NEARV
LkoordN=selem(i,16);
AkoordN=selem(i,17);
DeltaX(i)=krdn(LkoordN,1)-krdn(AkoordN,1);
DeltaZ(i)=krdn(LkoordN,2)-krdn(AkoordN,2);
VGRx(i,1)=krdn(AkoordN,1);
VGRx(i,2)=krdn(LkoordN,1);
VGRz(i,1)=krdn(AkoordN,2);
VGRz(i,2)=krdn(LkoordN,2);
endfor
#
#l1=6.0;
#l2=6.0;
#h=7.0;
#hp=5.0;
#h1=4.0;
#q1=4.0;
#q2=8.0;
#q3=8.0;
#F=12.0;
#%%%%%%%%%%%%
disp('  ')
disp(' Testing a static equilibrium:  ')
disp('  ')
disp(' Support_reactions=[X(85) X(86) X(87)] ')
Support_reactions=[X(85) X(86) X(87)]
disp('The_lengths=[l1 l2 hp  h1] ')
The_lengths=[l1 l2 hp  h1]
disp('  ')
disp(' sumZ=q2*l1+q3*l2+X(86)+X(87) ')
sumZ=q2*l1+q3*l2+X(86)+X(87)
disp('  ')
disp(' sumX=q1*hp+F+X(85)')
sumX=q1*hp+F+X(85)
disp('  ')
disp(' Sum of the moments acting  about point 1: ')
disp(' sumM1=-q1*hp*hp/2-q2*l1*l1/2-q3*l2*(l2/2+l1)-F*h1+X(87)*(l1+l2) ')
sumM1=-q1*hp*hp/2-q2*l1*l1/2-q3*l2*(l2/2+l1)-F*h1-X(87)*(l1+l2)
disp('  ')
disp('  Sum of the moments acting  about point 5:  ')
disp(' sumM5=-q1*hp*hp/2+q2*l1*(l1/2+l2)+q3*l2*l2/2-F*h1+X(86)*(l1+l2) ')
sumM5=-q1*hp*hp/2+q2*l1*(l1/2+l2)+q3*l2*l2/2-F*h1+X(86)*(l1+l2)
disp('  ')
disp('More testing: http://digi.lib.ttu.ee/opik_eme/Ehitusmehaanika.pdf#page=429  ')
disp('  ')
disp(' Calculations verified the static equilibrium of the frame   ')
disp('  ')
#
#%%%%%%%%%%%%
figure(1)
   ax = gca ();
   #axy=[ 0   0   1   0.55];
   #joonepaksus=0.50000
   #joonepaksus=0.75000
   #joonepaksus=3
   #set (ax, "outerposition", axy);
   #set (ax, "outerposition", [ 0   0   1   0.55])
   #ax = gca ();
   #set (ax, "linewidth", joonepaksus);
   #
   grid off
   #
   Lpikk=Lp;
   d=4.0;
   #
     for j=1:NEARV
         IR=j;
         # 
         #   axis([-d Lpikk+d -H-2.0 1.0], "ij")
            axis([-d Lpikk+d  -Lpikk-d-0.9*d d], "ij")
         #
         plot(VGRx(IR,:),VGRz(IR,:),"3")
         hold on
     endfor
   #
   jaotT=2;
   #
   title('spESTframe77',"fontsize",12)
   ax=gca();
      xlabel('x',"fontsize",12)
      ylabel('z',"fontsize",12)
   xticks(1,:)=-d:jaotT:Lpikk+d;
   set (ax, "xtick", xticks)
   #
   #%Sõlmede numbrid
   TTT=' ';
   TST=' ';
   TT1=' ';
   TT1=' ';
   #%%%%%%%%%
    for i=1:NSARV;
      #
      IR=i;
      TTT=eval(sprintf('%i',IR));
      TST=int2str(TTT);
       
      #text(krdn(IR,1), krdn(IR,2)+0.17, TST)
      text(krdn(IR,1), krdn(IR,2)+0.25, TST)
      #
     endfor
#
#%% Varraste numbrid
for j=1:NEARV;
   #
   IR=j;
   TTT=eval(sprintf('%i',IR));
   TST=int2str(TTT);
   text((VGRx(IR,1)+VGRx(IR,2))/2+0.1, (VGRz(IR,1)+VGRz(IR,2))/2, TST)
   #
endfor
#text(L/2-d/2, -H-d/2, 'Raamskeem')
#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xvalg=-1.0;
yvalg=-15.5;
sammuga=0.8;
text(-1.0, yvalg-1.5*sammuga, 'Numeration of displacements and forces ')
#TSA=[TSA1 Tyhk TSA2 Tyhk TSA3] ; 
text(-1.5, yvalg, 'u w fi N Q M at the beginning')
#%xvalg=xvalg+sammuga;
yvalg=yvalg+sammuga;
for i=1:NEARV;     
   #siireVardaA  joudVardaA(i,1:3)
   TTA1=eval(sprintf('%3i',siireVardaA(i,1)));
   TTA2=eval(sprintf('%3i',siireVardaA(i,2)));
   TTA3=eval(sprintf('%3i',siireVardaA(i,3)));
   TTA4=eval(sprintf('%3i',joudVardaA(i,1)));
   TTA5=eval(sprintf('%3i',joudVardaA(i,2)));
   TTA6=eval(sprintf('%3i',joudVardaA(i,3)));
      TSA1=int2str(TTA1);
      TSA2=int2str(TTA2);   
      TSA3=int2str(TTA3);  
      TSA4=int2str(TTA4);
      TSA5=int2str(TTA5);   
      TSA6=int2str(TTA6);    
      Tyhk='  ';
   TSA=[TSA1 Tyhk TSA2 Tyhk TSA3 Tyhk TSA4 Tyhk TSA5 Tyhk TSA6] ;                                                          
   text(xvalg, yvalg, TSA)
   #%xvalg=xvalg+sammuga;
   yvalg=yvalg+sammuga;
endfor
yvalg=yvalg+sammuga;
text(-1.0, yvalg, 'Support reactions: 85 86 87 ')
#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xvalg=10.0;
yvalg=-15.5;
sammuga=0.8;
#TSA=[TSA1 Tyhk TSA2 Tyhk TSA3] ; 
text(9.5, yvalg, 'u w fi N Q M at the end')
#%xvalg=xvalg+sammuga;
yvalg=yvalg+sammuga;
for i=1:NEARV;
   #siireVardaL  joudVardaL(i,1:3)
   TTA1=eval(sprintf('%3i',siireVardaL(i,1)));
   TTA2=eval(sprintf('%3i',siireVardaL(i,2)));
   TTA3=eval(sprintf('%3i',siireVardaL(i,3)));
   TTA4=eval(sprintf('%3i',joudVardaL(i,1)));
   TTA5=eval(sprintf('%3i',joudVardaL(i,2)));
   TTA6=eval(sprintf('%3i',joudVardaL(i,3)));
     TSA1=int2str(TTA1);
     TSA2=int2str(TTA2);   
     TSA3=int2str(TTA3);  
     TSA4=int2str(TTA4);
     TSA5=int2str(TTA5);   
     TSA6=int2str(TTA6);   
     Tyhk='  ';
   TSA=[TSA1 Tyhk TSA2 Tyhk TSA3 Tyhk TSA4 Tyhk TSA5 Tyhk TSA6] ; 
   text(xvalg, yvalg, TSA)
   #%xvalg=xvalg+sammuga;
   yvalg=yvalg+sammuga;
endfor
#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#
###### hold off
#
#Vaata: http://www.gnu.org/software/octave/doc/interpreter/Printing-Plots.html
#
#print('-deps','spESTframe77.eps');
#print('-dpng','spESTframe77.png');
print('-dfig','-landscape','-mono','-solid','spESTframe77');
refresh
#
#%%%%%%%%%%%%%%%%%%%%%%%%%%%
figure(2)
spy(spA)
title('spy(spA) - the sparse matrix spA(67,67) non zero elements [3.2%] ')
refresh
#
#print('-deps','spESTframe77_sparse_matrix.eps');
#print('-dpng','spESTframe77_sparse_matrix.png');
print('-dfig','-landscape','-mono','-solid','spESTframe77_sparse_matrix.fig');
#refresh
#
# octave
disp('-----------------------------------')
disp('  ')
disp(' The END ')
#%%%%%%%%%%%%%%%


