## spESTframeSn3LaheWFI.m
close all 
clear
## 
disp('==================================================================')
disp(' spESTframeSn3LaheWFI.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=408  page=407 ')
## GNU octave version >= 3.0.x
##=========================================================================
## This Program is written by Andres Lahe,   2010-06-26
##                    e-mail: andres.lahe@ttu.ee
## LAST MODIFIED: Andres Lahe,   2013-07-08
## 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 ABB 
  global koormusvariant
 global toereaktsioonid_algavad
##  int16(koormusvariant) 
##  int16(muutujaDaF1)
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=5
                            SolmedeArv=Number_of_frame_nodes;
#---------  Number of elements ----------
Number_of_elements=4
                            ElementideArv=Number_of_elements;
#---------  Number of supports ----------
Number_of_support_reactions=6
                            Ntoerkts=Number_of_support_reactions;
disp('  ')

spNNK=12*ElementideArv+Ntoerkts;
   The_number_of_unknowns_are=spNNK
disp('---  ')
##%%%%%%%%%%%%%%%%%%%%%%%%%%%% global AAB 
## ---- load variants -----
load_variant=1;
#load_variant=2;
###load_variant=3
        koormusvariant=load_variant;
###koormusvariant=2

###koormusvariant=3
##%%%%%%%%%%%%%%%%%%%%%%%%%%%%
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
#
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
disp('--------- Scaling multiplier for the displacements----------')
baasi0=EIp/4.0  # scaling multiplier for the displacements
# baasi0=1.0;
h=4.0;
l=4.0;
l1=l   % l
l2=l   % l
Mplr=30.0 # The plastic moment of beam
Mplp=15.0 # The plastic moment of column
#%%%%%%
## The loads
##F1s=0.0; ## F1sv2=0.0;
F2s=0.5; ## F2s03=7.3427;
F3s=1.0; ## F3s03=14.685;
##F4s=0.0; ## F4sv2=0.0;
##F5s=0.0; ## F5sv2=0.0;
#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
disp('---  ')
disp(' The displacements and the forces calculated on the parts of the element ''Nmitmeks''.  ')
Nmitmeks=4
Lp=10.0; % graafika axis
#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
##Fjoud=esFjoud(:,1:2,i);
#Fjoud=esFjoud(:,1:3,i);%
##qkoormus=esQkoormus(:,1:3,i); 
#qkoormus=esQkoormus(:,1:4,i);
#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
switch (koormusvariant)
case{1}
#
disp('---  ')
disp(' The load variant 1 ')
disp('---  ')
F2s=F2s 
F3s=F3s
#disp(' Element load  in local coordinates ')
#disp('    qz     qx     qA      qL ')
# The 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)=[0.0 0.0 0.0 4.0];  # [0.0 0.0 0.0 0.0];
esQkoormus(1,1:4,2)=[0.0 0.0 0.0 4.0];  # [0.0 0.0 0.0 0.0];
esQkoormus(1,1:4,3)=[0.0 0.0 0.0 4.0];  # [0.0 0.0 0.0 0.0];
esQkoormus(1,1:4,4)=[0.0 0.0 0.0 4.0];  # [0.0 0.0 0.0 0.0];
#esQkoormus
# 
# The 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 4.0];
esFjoud(1,1:3,2)=[0.0 0.0 4.0];    # [0.0 0.0 4.0];
#esFjoud(2,1:3,2)=[0.0 0.0 4.0];   # [0.0 0.0 4.0];
esFjoud(1,1:3,3)=[0.0 0.0 4.0];   # [10.0 0.0 4.0];
esFjoud(1,1:3,4)=[0.0 0.0 4.0];
#esFjoud
#

#disp(' Node forces in global  coordinates ')
# sSolmF(forces,1,nodes); forces=[Fx; Fz; My]
sSolmF = zeros(3,1,SolmedeArv);
#sSolmF(:,1,1)= 0.0;
sSolmF(1,1,2)= F2s;  # 0.5;
sSolmF(2,1,3)= F3s;  # 1.0;
#sSolmF(:,1,4)= 0.0
#sSolmF(:,1,5)= 0.0
%disp(' Kustuta ')
     s1F(:,:) = sSolmF(:,1,1);
     s2F(:,:) = sSolmF(:,1,2);
     s3F(:,:) = sSolmF(:,1,3);
     s4F(:,:) = sSolmF(:,1,4);
     s5F(:,:) = sSolmF(:,1,5);
#
#s1F(1,1,1)=0.0;  # force Fz
#s1F(2,1,1)=0.0;  # force Fz
#s1F(3,1,1)=0.0;  # force My
#%%%%%
# The support shift - tSiire#
# The support shift multiplied by scaling multiplier
tSiire = zeros(3,1,SolmedeArv);
#tSiire(:,1,1)= 0.0
#tSiire(2,1,1)= 0.01*baasi0
#tSiire(:,1,2)= 0.0
#tSiire(:,1,3)= 0.0
#tSiire(:,1,4)= 0.0
#tSiire(:,1,5)= 0.0
##%%%%
case{2}
disp('---  ')
disp(' The load variant 2 ')
disp('---  ')
#
disp(' load myfile30.mat  ')
load myfile30.mat 
disp(' plastF1F2;  ')
plastF1F2;
Flambda0=plastF1F2(1,1);
F2s03=plastF1F2(1,2)
F3s03=plastF1F2(1,3)
#disp(' Element load  in local coordinates ')
#disp('    qz     qx     qA      qL ')
# The 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)=[0.0 0.0 0.0 4.0];  # [0.0 0.0 0.0 0.0];
esQkoormus(1,1:4,2)=[0.0 0.0 0.0 4.0];  # [0.0 0.0 0.0 0.0];
esQkoormus(1,1:4,3)=[0.0 0.0 0.0 4.0];  # [0.0 0.0 0.0 0.0];
esQkoormus(1,1:4,4)=[0.0 0.0 0.0 4.0];  # [0.0 0.0 0.0 0.0];
#esQkoormus
# 
# The 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 4.0];
esFjoud(1,1:3,2)=[0.0 0.0 4.0];    # [0.0 0.0 4.0];
#esFjoud(2,1:3,2)=[0.0 0.0 4.0];   # [0.0 0.0 4.0];
esFjoud(1,1:3,3)=[0.0 0.0 4.0];   # [10.0 0.0 4.0];
esFjoud(1,1:3,4)=[0.0 0.0 4.0];
#esFjoud
#

#disp(' Node forces in global  coordinates ')
# sSolmF(forces,1,nodes); forces=[Fx; Fz; My]
sSolmF = zeros(3,1,SolmedeArv);
#sSolmF(:,1,1)= 0.0;
sSolmF(1,1,2)= F2s03;
sSolmF(2,1,3)= F3s03;
#sSolmF(:,1,4)= 0.0
#sSolmF(:,1,5)= 0.0
%disp(' Kustuta ')
     s1F(:,:) = sSolmF(:,1,1);
     s2F(:,:) = sSolmF(:,1,2);
     s3F(:,:) = sSolmF(:,1,3);
     s4F(:,:) = sSolmF(:,1,4);
     s5F(:,:) = sSolmF(:,1,5);
#
#s1F(1,1,1)=0.0;  # force Fz
#s1F(2,1,1)=0.0;  # force Fz
#s1F(3,1,1)=0.0;  # force My
#%%%%%
# The support shift - tSiire#
# The support shift multiplied by scaling multiplier
tSiire = zeros(3,1,SolmedeArv);
#tSiire(:,1,1)= 0.0
#tSiire(2,1,1)= 0.01*baasi0
#tSiire(:,1,2)= 0.0
#tSiire(:,1,3)= 0.0
#tSiire(:,1,4)= 0.0
#tSiire(:,1,5)= 0.0
case{3}
disp(' The 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    -4.0;    % node 2
        4.0    -4.0;    % node 3
        8.0    -4.0;    % node 4
        8.0     0.0];   % node 5
#========== 
#
#==========
#  The restrtictions on the support displacements.
# Support  Nr   u   w  fi   hold on - 1, open - 0
#==========       
tsolm=[1       1 1 1;	% node 1
       5       1 1 1];	% node 5       
#==========
# ------------- 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. 
#                                               plasic moment Mpl  at end of the element,
#                                                     plasic moment Mpl  at beginning of the element, 
        EIp EAp GAp   2     1    0 0 0    0 0 0   0.0  0.0 ;    % element 1
	EIr EAr GAr   3     2    0 0 0    0 0 0   0.0  0.0 ;    % element 2
	EIr EAr GAr   4     3    0 0 0    0 0 0   0.0  0.0 ;    % element 3
	EIp EAp GAp   5     4    0 0 0    0 0 0   0.0  0.0 ];   % element 4
# 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
#%%%
# ------------- Element properties, topology and hinges ---------
#-----------------------

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('  The displacements and the forces numbers (daf''s) ')
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 3 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 5 4] ;	% element 4
%
selem=[selemjl(:,1:25)];
#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
#%%%
#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
# disp(' Nr      toel  u  w  fi  N   Q   M ')
#==========
#  The restrtictions on the support displacements.
# Support  Nr   u   w  fi   hold on - 1, open - 0
#==========       
# tsolm=[1       1 1 1;     % node 1
#        5       1 1 1];    % node 5       
#==========
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(' The restrtictions on the 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 the restrtictions on the 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);
momentVardaA(i,1)=selemjl(i,12);
joudVardaL(i,1:3)=selemjl(i,4:6);
momentVardaL(i,1)=selemjl(i,6);
endfor
#
siireVardaA;
siireVardaL;
joudVardaA;
joudVardaL;
momentVardaA;
disp(' --- ')
momentVardaL;
#%%%%%%%%%%%%
%%%%%ABB=ABB
#--------- Define a matrix spA to be sparse -----------
disp('-------- The sparse matrix instantiation --------  ')
disp('  spA=sparse(NNK,NNK)  ')
spA=sparse(NNK,NNK) % nullistan võrrandisüsteemi kordajate maatriksi
#--------- Define a vector B ------------
disp('-------- The right-hand side of the equations (RHS). --------  ')
disp('  B=zeros(NNK,1);  ')
B=zeros(NNK,1);   % nullistan võrrandisüsteemi vabaliikmed
disp('   ')
%%%%%%%%%%%%%%%%%%%%%%%%%
#------------ The basic equations of frame ----------------
#--------- Define a matrix spA to be sparse -----------
disp('  ')
disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ')
disp(' function AlgParm=LaheFrameSnDFIm(baasi0,Ntoerkts,esQkoormus,esFjoud,sSolmF,tsolm,tSiire,krdn,selem) ')
disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ')
disp('  ')

AlgParm=LaheFrameSnDFIm(baasi0,Ntoerkts,esQkoormus,esFjoud,sSolmF,tsolm,tSiire,krdn,selem);
disp('  ')
AlgPar=AlgParm;
disp('  ')

ABB
 ABBdim=size(ABB); 
 for i=1:ABBdim(1,1)
   for j=1:toereaktsioonid_algavad-1  
         %% ABB(:,8) - node,  ABB(:7) - momentNr, ABB(:1) - element, momX, 
         %% ABB(:,4) - fiNr
   momNode=(ABB(i,8));  
   momDaF=(ABB(i,7)); 
   fiDaF=(ABB(i,4));
   element=(ABB(i,1));
   momVaartus=(X(momDaF,1));
   fiVaartus=(X(fiDaF,1))/baasi0;
   Work_b=momVaartus*fiVaartus;
# momentJoints(i,:)=[momNode momVaartus momDaF element] ;
 momentJoints(i,1)=momNode;
  momentJoints(i,2)=momVaartus; 
   momentJoints(i,3)=momDaF;
    momentJoints(i,4)=element;
     momentJoints(i,5)=fiVaartus;
      momentJoints(i,6)=fiDaF;  
       momentJoints(i,7)=Work_b;        
    endfor
 endfor
# 
momNodeNr=0;
for i=1:ABBdim(1,1)  
    %% ABB(:,8) - node,  ABB(:7) - moment, ABB(:1) - element, momX 
    momDaF=int16(ABB(i,7));
   for j=1:toereaktsioonid_algavad-1     
      if (momDaF==j)
         if(momentVardaA==j)
         momNodeNr=momNodeNr+1;
          % momentNodes(momNode,1)=X(momDaF,1); 
           momentNodes(momNodeNr,1)=X(momDaF,1);
          % momentNodes(momNode,2)=momDaF; 
           momentNodes(momNodeNr,2)=momDaF; 
         else
          momNodeNr=momNodeNr+1;
          % momentNodes(momNode,1)=-X(momDaF,1); 
           momentNodes(momNodeNr,1)=-X(momDaF,1); 
          % momentNodes(momNode,2)=momDaF;
           momentNodes(momNodeNr,2)=momDaF;
           
         endif 
      endif 

   endfor
 endfor
# 
# momentNodes
#  momentJoints
disp('  ')
disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ')
disp(' The element displacements and forces  determinated by the transfer matrix ')
disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ')
disp('  ')
#-------------The element displacements and forces----------
#
  suurused=[' displacement u - ';
            ' displacement w - ';
            ' rotation    fi - ';
            ' normal force N - ';
            ' shear force  Q - ';
            ' moment force M - '];
#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#i=1
loen=0;
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);
%   SII=0.0;
%   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
#-------------The element displacements and forces---------- 
   #
   VardaNr=i;
   disp(sprintf('%13s %2i %15s %5.3f %28s', 'The displacements and forces of element nr',VardaNr,'  length of element ',Li,'m.  element is divided into 4-th parts '))
   %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('  ')
#
      disp('----------------------------------------------------------------------------')
#
loen=loen+1;
Moments(loen,:)=Fvv(i,:);
endfor   #end of for i=1:NEARV
#
#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#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
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#
switch (koormusvariant)
case{1}
disp('  ')
disp('  ')
% F2s=0.5; F3s=1.0;
disp(' The load variant 1. Testing a static equilibrium  ')
disp('  ')
%disp(' Testing a static equilibrium:  ')
disp(' The_boundary_forces=[X(49) X(50) X(51) X(52) X(53) X(54)] ')
The_boundary_forces=[X(49) X(50) X(51) X(52) X(53) X(54)]
disp('  ')
disp(' sumZ=F3s+X(50)+X(53) ')
sumZ=F3s+X(50)+X(53)
disp('  ')
disp(' sumX=F2s+X(49)+X(52)')
sumX=F2s+X(49)+X(52)
disp('  ')
% 
disp(' The sum of the moments acting  about point 1: ')
disp(' sumM1=X(51)+ X(54)-h*F2s-l1*F3s-(l1+l2)*X(53) ')
sumM1=X(51)+ X(54)-h*F2s-l1*F3s-(l1+l2)*X(53)
disp('  ')
disp('  The sum of the moments acting  about point 5:  ')
disp(' sumM5=X(51)+ X(54)-h*F2s+l1*F3s+(l1+l2)*X(50)  ')
sumM5=X(51)+ X(54)-h*F2s+l1*F3s+(l1+l2)*X(50)
disp('  ')
disp(' The calculations verified the static equilibrium of the frame   ')
disp('  ')
disp('Moments in the members (elements) ')
% 
#Mplr=30.0 # The plastic moment of beam
#Mplp=15.0 # The plastic moment of column
suheMpl=Mplr/Mplp;
Moments
Moments1=Moments;
Moments1(2,:)=Moments1(2,:)/suheMpl;
Moments1(3,:)=Moments1(3,:)/suheMpl;
disp('  ')
disp('Moments in the elements (the beam moments is reduziert with  Mplr/Mplp) ')
#disp('the beam moments is reduziert with  Mplr/Mplp) ')
Moments1
[maxM, imax]=max(Moments1);
[minM, imin]=min(Moments1);
maxminM=[maxM minM];
disp('The maximum of absolute values of reduziert moments')
AbsmaxminM=max(abs(maxminM))
%Moments2=Moments;
disp('  ') 
disp('Increasing of forces F1, F2 ''Flambda0'' times  ')
disp(' to the appearance of plastic moment Mp=15.0 kNm  ' )
disp('============== ')
#disp( ' Flambda0=15/X(48,1) ')
#Flambda0=15.0/X(48,1)
disp('-------------- ')
disp( ' Flambda0=15/AbsmaxminM ')
Flambda0=15.0/AbsmaxminM
disp('-------------- ')
disp( ' F2s ')
 F2s
disp( ' F2s03=Flambda0*F2s ')    
F2s03=Flambda0*F2s
disp('--- ')
disp( ' F3s ')
F3s
disp( ' F3s03=Flambda0*F3s ')
F3s03=Flambda0*F3s

disp('==============  ')
#F2s=0.5;
#F3s=1.0;
#F2s03=7.3427;
#F3s03=14.685;
disp( ' plastF1F2=[Flambda0 F2s03 F3s03] ')
plastF1F2=[Flambda0 F2s03 F3s03]
disp('  save myfile30.mat plastF1F2  ')
save myfile30.mat plastF1F2

case{2}
disp('  ')
disp('  ')
%   F2s03=5.88; F3s03=11.75;
disp(' The load variant 2. Testing a static equilibrium  ')
disp('  ')
%disp(' Testing a static equilibrium:  ')
disp(' The_boundary_forces=[X(49) X(50) X(51) X(52) X(53) X(54)] ')
The_boundary_forces=[X(49) X(50) X(51) X(52) X(53) X(54)]
disp('  ')
disp(' sumZ=F3s03+X(50)+X(53) ')
sumZ=F3s03+X(50)+X(53)
disp('  ')
disp(' sumX=F2s03+X(49)+X(52)')
sumX=F2s03+X(49)+X(52)
disp('  ')
disp(' The sum of the moments acting  about point 1: ')
disp(' sumM1=X(51)+ X(54)-h*F2s03-l1*F3s03-(l1+l2)*X(53) ')
sumM1=X(51)+ X(54)-h*F2s03-l1*F3s03-(l1+l2)*X(53)
disp('  ')
disp('  The sum of the moments acting  about point 5:  ')
disp(' sumM5=X(51)+ X(54)-h*F2s03+l1*F3s03+(l1+l2)*X(50)  ')
sumM5=X(51)+ X(54)-h*F2s03+l1*F3s03+(l1+l2)*X(50)
disp('  ')
disp(' The calculations verified the static equilibrium of the frame   ')
disp('  ')
disp('Moments in the members (elements) ')
suheMpl=Mplr/Mplp;
Moments;
Moments1=Moments;
Moments1(2,:)=Moments1(2,:)/suheMpl;
Moments1(3,:)=Moments1(3,:)/suheMpl;
disp('  ')
disp('Moments in the elements (the beam moments is reduziert with  Mplr/Mplp) ')
#disp('the beam moments is reduziert with  Mplr/Mplp) ')
Moments1
sizM1=size(Moments1);
sizM1i=sizM1(1,1);
sizM1j=sizM1(1,2);
for i=1:sizM1i
 for j=1:sizM1j
  ting1= abs(15-abs(Moments1(i,j)));
    if (ting1 < eps1)
     Moments1(i,j)=0.0;
    endif
 endfor 
endfor
[maxM, imax]=max(Moments1);
[minM, imin]=min(Moments1);
maxminM=[maxM minM];
disp('The maximum of absolute values of reduziert moments')
AbsmaxminM=max(abs(maxminM))

momentNodesSize=size(momentNodes);
for i=1:momentNodesSize(1,1)
erinevus=abs(AbsmaxminM-abs(momentNodes(i,1)));
   if (erinevus<=eps1)
            %  momentNodes(momNode,1)=-X(momDaF,1); 
           muutujaDaF1=momentNodes(i,2);
          % muutujaDaF1=momentNodes(momNode,2);           
   endif                    
endfor           
%         
muutujaDaF1=int16(muutujaDaF1)

disp(' deltaM0=15.0-AbsmaxminM ')
deltaM0=15.0-AbsmaxminM
%Moments;
Flambda0
deltaM0
muutujaDaF1

disp(' save myfile31.mat Flambda0 deltaM0 muutujaDaF1  ') 
save myfile31.mat Flambda0 deltaM0 muutujaDaF1
disp('  ')
case{3}
%
%%%%%%
otherwise
%disp(' Koormusvarianti pole ')
endswitch
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
disp('Moments in the nodes (Sign Convention 2) ')

# momentNodes
# momentJoints
# momentJoints(i,1)=momNode;
#  momentJoints(i,2)=momVaartus; 
#   momentJoints(i,3)=momDaF;
#    momentJoints(i,4)=element;
#     momentJoints(i,5)=fiVaartus;
#      momentJoints(i,6)=fiDaF;  
#       momentJoints(i,7)=Work_b;        
sizMJnts=size(momentJoints);
sizMJntsi=sizMJnts(1,1); 
disp('============================================================== ')
disp(' Node    Moment DaF Nr  Fi/baasi0  DaF Nr   Work_b    Element  ')
disp('-------------------------------------------------------------- ')
for i=1:sizMJntsi 
 disp(sprintf('%4i  %9.5f %4i   %9.5e %4i   %9.5e %4i',momentJoints(i,1),   momentJoints(i,2),   momentJoints(i,3),   momentJoints(i,5),   momentJoints(i,6),   momentJoints(i,7),        momentJoints(i,4)))
endfor 
disp('-------------------------------------------------------------- ')
 disp('      here  Work_b is a work of boundary forces of an element  ')  
if (koormusvariant == 2) 
%%disp('  At the node 4 the dissipation D = -(-7.50000e-03 + 8.51899e-18) =  0.00750 > 0   ')
endif
disp('    ')
disp('    ')

%http://www.obihiro.ac.jp/~suzukim/masuda/octave/html3/octave_91.html#SEC187
%Table 15.1: Available special characters in TEX mode
%%%%%%%%%%%%%
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.1*d 0.6*d], "ij")
 %
plot(VGRx(IR,:),VGRz(IR,:),"3")
hold on
endfor
%
jaotT=2;
%
title('spESTframeSn3LaheWFI',"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=-10.5;
%yvalg=-12.5;
sammuga=0.7;
text(-1.0, yvalg-1.5*sammuga, 'The displacements and the forces numbers (daf''s) ')
%TSA=[TSA1 Tyhk TSA2 Tyhk TSA3] ; 
text(-1.5, yvalg, 'u w fi N Q M at the beginning')
%text(-2.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, 'The support reactions:  49 50 51 52 53 54 ')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xvalg=7.0;
yvalg=-10.5;
%yvalg=-12.5;
sammuga=0.7;
%TSA=[TSA1 Tyhk TSA2 Tyhk TSA3] ; 
text(6.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
%%%%%%
%axis([-d L+d 1.0 -H-2.0], "ij")
pause (1)
%
%Vaata: http://www.gnu.org/software/octave/doc/interpreter/Printing-Plots.html
%
%print('-deps','spESTframeSn3.eps');
%print('-dpng','spESTframeSn3.png');
print('-dfig','-landscape','-mono','-solid','spESTframeSn3.fig');
refresh
%
%pause (1) % octave
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%pause(1)
figure(2)
spy(spA)
title('spy(spA) - the sparse spA(54,54) non zero elements [4.5%] ')
refresh
%
%print('-deps','spESTframeSn3_sparse.eps');
%print('-dpng','spESTframeSn3_sparse.png');
print('-dfig','-landscape','-mono','-solid','spESTframeSn3_sparse.fig');
%refresh
%
%pause (1) % octave
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%pause 2
%
%kõik
#%%%%%%%%%%%%%%%


