Skip to content

Commit 1cd9317

Browse files
committed
check
controllato sinotticamente il codice rispetto a quanto avevo fatto per MchiNstrisceSteel. Le uniche cose diverse le ho riportate come commenti alla fine della definizione della classe
1 parent 87f7b0e commit 1cd9317

File tree

3 files changed

+108
-0
lines changed

3 files changed

+108
-0
lines changed

MchiNstrisce3.m

+108
Original file line numberDiff line numberDiff line change
@@ -717,6 +717,114 @@ function dividiLayer(obj,i)
717717
obj.layersProp = [obj.layersProp(1:i,:); [Areal, ygl]; obj.layersProp(i+1:end,:)];
718718
end
719719

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+
720828

721829
end
722830

WIP/2024-01-09 14_45_05-.png

163 KB
Loading

WIP/2024-01-09 14_54_35-.png

162 KB
Loading

0 commit comments

Comments
 (0)