Appendice E
Codici ANSYS e Matlab dello studio svolto nel
capitolo 5
E.1 Codici ANSYS
Il seguente programma si riferisce alle simulazioni descritte nel paragrafo 5.1.1: i codici delle simulazioni descritte nei paragrafi 5.1.2 e 5.1.3 non sono riportate, perché uguali a questa (cambia solo il parametro %r%degx, che diventa, rispettivamente, %r%degy e %r%degz). Si lancia un ciclo si simulazioni, in cui si cambia l’orientazione degli assi cristallini, ruotandola attorno all’asse x:
Inizio ciclo
*do,r,0,90,5
I0=10e-3 Definizione corrente e resistenza R0=104.166667
Ambiente di programmazione: preprocessore.
/prep7
et,1,solid226,101
local,11 Si definiscono due sistemi locali di coordinate: il local,12,,,,,,r secondo ruotato attorno all’asse x di un angolo r
Si specificano i gradi di libertà, le costanti elastiche e i coefficienti di piezoresistività: dof,ux,uy,uz,volt,curr p11=-102.2e-5 p12=53.4e-5 p44=-13.6e-5 G1=146e3 NU=0.23 mp,ex,1,G1 mp,ey,1,G1 mp,ez,1,G1 mp,PRXY,1,NU mp,PRYZ,1,NU mp,PRXZ,1,NU mp,RSVX,1,10 mp,RSVY,1,10 mp,RSVZ,1,10 tb,PZRS,1 tbdata,1,p11,p12,p12 tbdata,7,p12,p11,p12 tbdata,13,p12,p12,p11 tbdata,22,p44 tbdata,29,p44 tbdata,36,p44
Creazione del blocco rigido:
a=1e6 G2=a*G1 mp,ex,2,G2 mp,ey,2,G2 mp,ez,2,G2 mp,PRXY,2,NU
mp,PRYZ,2,NU mp,PRXZ,2,NU mp,RSVX,2,10 mp,RSVY,2,10 mp,RSVZ,2,10 tb,PZRS,2 tbdata,1,p11,p12,p12 tbdata,7,p12,p11,p12 tbdata,13,p12,p12,p11 tbdata,22,p44 tbdata,29,p44 tbdata,36,p44 csys,11
Creazione della geometria:
block,-0.3,0.3,0,4,0,26 blc4,-0.3,0,0.6,4,1 vptn,1,2 vsel,all vsel,s,volume,,4 esys,12 Meshing e coupling: esize,0.2 vatt,1,,1 vsel,s,volume,,3 esys,12 esize,0.2 vatt,2,,1 vsel,all vmesh,all csys,11
nsel,s,node,,1783,1823 nsel,a,node,,9533 nsel,a,node,,9783,9787 nsel,a,node,,10658,10837 cp,1,volt,all *get,nl,node,0,num,min nsel,s,loc,z,1 cp,2,volt,all nsel,all
Applicazione delle sollecitazioni:
asel,s,loc,z,26 da,all,ux,0 da,all,uy,0 da,all,uz,0 asel,all da,8,volt,0 da,1,volt,0 fk,7,amps,10e-3 fk,13,amps,-10e-3 fk,1,fx,-5 fk,4,fx,5 finish
Ambiente di programmazione: soluzione.
/solu
antype,static solve
finish /post1
*get,V1,node,nl,volt Si prende la tensione ai capi della trave, delta_R=(V1/I0)-R0 si calcola la ∆R e si salva in un file.
parsav,all,%r%degx,txt finish
/clear
*enddo Fine del ciclo
Segue il codice delle simulazioni probabilistiche, contenute nel paragrafo 5.2:
File di analisi.
*set,w,0.3 *set,h,4 *set,l,27 *set,I0,10e-3 *set,R0,104.166667 ! /prep7 et,1,solid226,101 local,11Si definiscono le proprietà del materiale:
dof,ux,uy,uz,volt,curr *set,p11,-102.2e-5 *set,p12,53.4e-5 *set,p44,-13.6e-5 *set,G1,146e3 *set,NU,0.23 mp,ex,1,G1 mp,ey,1,G1 mp,ez,1,G1 mp,PRXY,1,NU
mp,PRYZ,1,NU mp,PRXZ,1,NU mp,RSVX,1,10 mp,RSVY,1,10 mp,RSVZ,1,10 tb,PZRS,1 tbdata,1,p11,p12,p12 tbdata,7,p12,p11,p12 tbdata,13,p12,p12,p11 tbdata,22,p44 tbdata,29,p44 tbdata,36,p44 Blocco rigido *set,a,1e6 *set,G2,a*G1 mp,ex,2,G2 mp,ey,2,G2 mp,ez,2,G2 mp,PRXY,2,NU mp,PRYZ,2,NU mp,PRXZ,2,NU mp,RSVX,2,10 mp,RSVY,2,10 mp,RSVZ,2,10 tb,PZRS,2 tbdata,1,p11,p12,p12 tbdata,7,p12,p11,p12 tbdata,13,p12,p12,p11 tbdata,22,p44 tbdata,29,p44 tbdata,36,p44
csys,11 block,-W,W,0,h,0,l *do,i,1,26 wplane,i,-w,0,i,w,0,i,w,4,i vsbw,all numcmp,volu *enddo vsel,all
In questo ciclo si attribuisce un’orientazione (inizializzata a 0 gradi) ad ogni grano; il file probabilistico sostituirà ai valori di tale orientazione le variabili casuali con distribuzione uniforme. *do,r,1,25 *set,or,r+11 vsel,s,volume,,r *set,y%r%,0 local,or,,,,,,x,y%r% esys,or vatt,1,,1 csys,11 esize,0.2 lsel,s,loc,x,-0.3 lsel,r,loc,y,4 lesize,all,0.5,,,,1 lsel,s,loc,x,-0.3 lsel,r,loc,y,0 lesize,all,0.5,,,,1 lsel,s,loc,x,0.3 lsel,r,loc,y,4 lesize,all,0.5,,,,1 lsel,s,loc,x,0.3 lsel,r,loc,y,0 lesize,all,0.5,,,,1
vmesh,all
*enddo
Creazione del blocco rigido
vsel,s,volume,,26,27 esys,11 vatt,2,,1 esize,0.2 lsel,s,loc,x,-0.3 lsel,r,loc,y,4 lesize,all,0.5,,,,1 lsel,s,loc,x,-0.3 lsel,r,loc,y,0 lesize,all,0.5,,,,1 lsel,s,loc,x,0.3 lsel,r,loc,y,4 lesize,all,0.5,,,,1 lsel,s,loc,x,0.3 lsel,r,loc,y,0 lesize,all,0.5,,,,1 lsel,all vmesh,all csys,11 vsel,all Coupling: nsel,s,loc,z,25 cp,1,volt,all nsel,s,loc,z,0 cp,2,volt,all *get,nl,node,0,num,min nsel,all
Applicazione delle sollecitazioni: asel,s,loc,z,0 da,all,ux,0 da,all,uy,0 da,all,uz,0 asel,s,loc,z,25 asel,a,loc,z,27 da,all,volt,0 asel,all fk,1,amps,I0 fk,106,amps,-I0 fk,5,fx,-5 fk,7,fx,5 finish
Ambiente di programmazione: soluzione.
/solu
antype,static solve
finish
Ambiente di programmazione: postprocessore.
Si ricava la variazione di resistenza e si salvano i parametri in un file /post1 set,1 *get,V1,node,nl,volt *set,delta_R,(V1/I0)-R0 parsav,all,%x%deg,txt parsav,all,param,txt finish
/clear
parres,,param,txt
File probabilistico: sostituisce ad ogni valore
y%r%una variabile
casuale con distribuzione uniforme; questa operazione viene svolta per
ogni valore della rotazione attorno all’asse x.
*do,x,0,90,15 Inizio ciclo: si lancia il file di analisi per ogni valore di x del ciclo
/input,analysis,txt /filname,poly%x%
Ambiente di programmazione: Progetto probabilistico
/pds
pdanl,analysis,txt
Si definisce l’orientazione di ogni grano come variabile casuale in ingresso y%r%:
*do,r,1,25
pdvar,y%r%,unif,0,90
*enddo
Si definiscono le variabili casuali in uscita:
pdvar,V1,resp pdvar,delta_R,resp
pdmeth,mcs,lhs
pdlhs,50 ciclo formato da 50 simulazioni pdexe,mcs
Si salvano i risultati ottenuti e si conclude il ciclo:
pdsave parsav,all,param,txt pdclr finish /clear parres,,param,txt
*enddo Fine ciclo
E.2: Codici Matlab
Il seguente codice è stato utilizzato per creare la figura 5.1; la figura 5.2 è stat realizzata con lo stesso codice, in cui si è messo il comando s1='deg.txt', a posto di s1='degx.txt'.
Si prendono i valori delle variazioni di resistenza dai file %r%degx.txt e si crea il vettore delle ascisse, che contiene gli angoli, e quello delle ordinate, che contiene le∆R.
function []=deltar() t=0:2.5:90; dr=1:1:37;
m=n/4 str=num2str(m); s1='degx.txt'; name=strcat(str,s1); fid=fopen(name,'r'); tline=fgets(fid); tline=fgets(fid); tline=fgets(fid); Degrees=str delta_r=tline(18:end) i=(n+5)/5 dr(i)=str2num(delta_r)/10^13 st=fclose(fid); end
Si fa un grafico di ∆R( )θx , attraverso l’interpolazione dei valori ottenuti: x=0:1:90;
y=interp1(t,dr,x,'spline'); plot(t,dr,'*m',x,y)
E.3 Tabelle dei risultati
E.3.1 Materiale con assi cristallini ruotati rispetto all’asse x
Si riporta una tabella contenente i valori di θx e delle corrispondenti ∆R; tali
valori sono stati interpolati per ottenere la figura 5.2:
x
θ [deg] ∆R [mΩ] θx [deg] ∆R [mΩ]
2.5 -7.13 50 -127.99 5 -10.05 52.5 -123.49 7.5 -14.79 55 -117.37 10 -21.22 57.5 -109.79 12.5 -29.11 60 -100.99 15 -38.23 62.5 -91.19 17.5 -48.27 65 -80.71 20 -58.92 67.5 -69.84 22.5 -69.85 70 -58.91 25 -80.72 72.5 -48.27 27.5 -91.20 75 -38.23 30 -100.99 77.5 -29.12 32.5 -109.79 80 -21.22 35 -117.37 82.5 -14.79 37.5 -123.49 85 -10.04 40 -127.99 87.5 -7.13 42.5 -130.74 90 -6.15 45 -131.67
E.3.2 Materiale con assi cristallini ruotati rispetto all’asse y
Si riporta una tabella contenente i valori di θ e delle corrispondenti y ∆R; tali
valori sono stati interpolati per ottenere la figura 5.3:
y
θ [deg] ∆R [mΩ] θ [deg] y ∆R [mΩ]
0 -6.15 47.5 -4.66
5 -6.20 52.5 -4.94 7.5 -6.26 55 -5.16 10 -6.32 57.5 -5.40 12.5 -6.38 60 -5.65 15 -6.41 62.5 -5.88 17.5 -6.41 65 -6.09 20 -6.35 67.5 -6.24 22.5 -6.25 70 -6.35 25 -6.09 72.5 -6.41 27.5 -5.89 75 -6.41 30 -5.65 77.5 -6.38 32.5 -5.40 80 -6.33 35 -5.16 82.5 -6.26 37.5 -4.94 85 -6.20 40 -4.77 87.5 -6.16 42.5 -4.66 90 -6.15 45 -4.63