@@ -717,6 +717,114 @@ function dividiLayer(obj,i)
717
717
obj.layersProp = [obj .layersProp(1 : i ,: ); [Areal , ygl ]; obj .layersProp(i + 1 : end ,: )];
718
718
end
719
719
720
+
721
+ % Funzioni da "MchiNstrisceSteel.m":
722
+
723
+ % function [eps0,chi] = findEquilibrium(obj,N,M)
724
+ % %trova il profilo di deformazione che equilibria le azione
725
+ % %esterne N e M. Ha l'ipotesi di sezion piane che rimangono
726
+ % %piane anche dopo la deformazione quindi eps0 è la deformazione
727
+ % %in corrispondenza della fibra baricentrica e chi è la
728
+ % %curvatura.
729
+ % %usa il metodo di Newton-Raphson
730
+
731
+ % Phi= [0; 0]; %vettore eps,chi
732
+ % err = 1; %errore che deve andare a zero
733
+ % tol = 1.e-10; %tolleranza
734
+ % delta = 1.e-8;
735
+
736
+ % while err > tol
737
+ % %calcola il jacobiano
738
+ % JF(:,1) = (obj.F(Phi(1)+delta,Phi(2),N,M)-obj.F(Phi(1),Phi(2),N,M))/delta;
739
+ % JF(:,2) = (obj.F(Phi(1),Phi(2)+delta,N,M)-obj.F(Phi(1),Phi(2),N,M))/delta;
740
+ % %calcola lo step successivo
741
+ % Phi0=Phi;
742
+ % Phi = Phi0 - inv(JF) * (obj.F(Phi0(1),Phi0(2),N,M));
743
+ % %calcola l'errore
744
+ % err = norm(Phi - Phi0)/norm(Phi0);
745
+ % end
746
+
747
+ % % [~,M] = obj.setStrain(Phi(1)-Phi(2)*obj.yg, Phi(1)+Phi(2)*(obj.H-obj.yg));
748
+ % eps0 = Phi(1);
749
+ % chi = Phi(2);
750
+
751
+ % end
752
+
753
+
754
+ % function [M,phi,yn] = ultimatePoint(obj, N)
755
+ % %calcola il momento e la curvatura ultimi
756
+
757
+ % if abs(N) > obj.fy*obj.Area; error('la sezione non può resistere a tale sforzo'); end
758
+
759
+ % % fissato lo eps_top = epscu cambia eps_top fino a trovare N corretto (se la rottura è lato CLS)
760
+ % eps_sup = obj.epscu;
761
+
762
+ % %trova un range per fare la bisezione:
763
+ % count = 0;
764
+ % eps_infP = obj.epscu; %l'ho scelto io sta sicuramente qua dentro...
765
+ % eps_infN = obj.epscu; %in questo intevallo (non può essere più compresso di così)
766
+ % eps_supP = obj.epscu; %nel caso si ha la rottura lato acciaio la bisezione va fatta sulla eps_sup
767
+ % eps_supN = obj.epscu;
768
+ % rottura_acciaio = 0;
769
+ % while obj.setStrain(eps_infP,eps_supP) < N
770
+ % eps_infP = eps_infP + 0.0001;
771
+ % %l'acciaio è arrivato a rottura, quindi si ha una rottura lato acciaio
772
+ % if eps_infP > obj.epssu
773
+ % eps_infP = obj.epssu; %fissa eps_inf
774
+ % eps_inf = eps_infP; %usa un solo eps_inf (fissato) per non confondere le idee...
775
+ % eps_supP = eps_supP + 0.001;
776
+ % rottura_acciaio = 1;
777
+ % end
778
+ % count = count + 1;
779
+ % if count > 1000; error('MchiNstrisce non è arrivato a convergenza'); end
780
+ % end
781
+ % % if rottura_acciaio; warning('rottura lato acciaio'); end
782
+ % if rottura_acciaio; logFile('MchiN::ultimatePoint: rottura lato acciaio'); end
783
+
784
+ % %fa la bisezione
785
+ % err = [100 100 100];
786
+ % count = 0;
787
+ % if rottura_acciaio == 0
788
+ % %rottura del CLS:
789
+ % while ((abs(err(2)) > abs(0.000001 * N)) || (abs(eps_infP-eps_infN) > abs(0.0001*eps_infN))) %+0.000001 serve per non creare errori per N=0)
790
+ % err = [(obj.setStrain(eps_infP,eps_sup) - N) (obj.setStrain((eps_infP+eps_infN)/2,eps_sup) - N) (obj.setStrain(eps_infN,eps_sup) - N)];
791
+ % if err(1)*err(2) < 0
792
+ % %la risultante è tra err(1) e err(2) (eps_infP è corretto)
793
+ % eps_infN = (eps_infP+eps_infN)/2;
794
+ % else
795
+ % %la risultante è tra err(2) e err(3) (eps_infN è corretto)
796
+ % eps_infP = (eps_infP+eps_infN)/2;
797
+ % end
798
+ % count = count + 1;
799
+ % if count > 10000; error('MchiNstrisce non è arrivato a convergenza'); end
800
+ % end
801
+ % eps_inf = (eps_infP+eps_infN)/2;
802
+ % else
803
+ % %rottura dell'acciaio:
804
+ % while ((abs(err(2)) > abs(0.000001 * N)) || (abs(eps_supP-eps_supN) > abs(0.0001*eps_supN))) %+0.000001 serve per non creare errori per N=0)
805
+ % err = [(obj.setStrain(eps_inf,eps_supP) - N) (obj.setStrain(eps_inf,(eps_supP+eps_supN)/2) - N) (obj.setStrain(eps_inf,eps_supN) - N)];
806
+ % if err(1)*err(2) < 0
807
+ % %la risultante è tra err(1) e err(2) (eps_supP è corretto)
808
+ % eps_supN = (eps_supP+eps_supN)/2;
809
+ % else
810
+ % %la risultante è tra err(2) e err(3) (eps_supN è corretto)
811
+ % eps_supP = (eps_supP+eps_supN)/2;
812
+ % end
813
+ % count = count + 1;
814
+ % if count > 9000
815
+ % disp('sta per fallire');
816
+ % end
817
+ % if count > 10000; error('MchiNstrisce non è arrivato a convergenza'); end
818
+ % end
819
+ % eps_sup = (eps_supP+eps_supN)/2;
820
+ % end
821
+
822
+ % [~,M] = obj.setStrain(eps_inf,eps_sup);
823
+ % phi = (eps_inf-eps_sup)/obj.H; %compressione: negativa (la fibra superiore è compressa)
824
+ % yn = -eps_sup/(eps_inf-eps_sup) * obj.H;
825
+ % M = -M; %convenzione italiana
826
+ % end
827
+
720
828
721
829
end
722
830
0 commit comments