pulizia della memoria

kill(all);

da pagg. 8,9 Barber , ivi derivate dai circoli di Mohr

il theta di fig. 1.3 p 8 è complementare al mio angolo "t"

definisco le quantità ausiliarie
c coerente con cos(theta), formule 1.15-1.17

batto "c" ove nelle formule vedo cos(theta)
batto "s"                        sin(theta)

c : cos( t )$
s : sin( t )$

la gestione della diversa definizione dell'angolo t mio / theta Barber è gestita
entro i termini ausiliari

srr = sigma radial radiale = sigma_r
ff  = "far field", stato a remoto

define(
    srr_ff(sxx,syy,sxy,t),
    sxx*c^2 + syy*s^2+2*sxy*s*c
);

variante con :=  non funziona come desiderato
in quanto a me serve una sostituzione immediata dei simboli c ed s in funzione di t

    srr_ff_NOOOOOO(sxx,syy,sxy,t):=
    sxx*c^2 + syy*s^2+2*sxy*s*c;

srr_ff_NOOOOOO(1,0,0,t);

con define funziona...

srr_ff(1,0,0,t);

torniamo a noi

srt = tensione radial tangenziale = tau_rt

define(
    srt_ff(sxx,syy,sxy,t),
    sxy*(c^2-s^2)+(syy-sxx)*s*c
);

define(
    stt_ff(sxx,syy,sxy,t),
    syy*c^2 + sxx*s^2-2*sxy*s*c
);

non servono più le quantità ausiliarie

kill(c,s)$

condizioni al contorno di far field, nel caso specifico

srr_ff(1,0,0,t);

stt_ff(1,0,0,t);

srt_ff(1,0,0,t);

porto in rappresentazione di serie di Fourier , finita

trigreduce([ srr_ff(1,0,0,t) , stt_ff(1,0,0,t) , srt_ff(1,0,0,t) ]);

inserisco i termini della soluzione secondo Michell che ritengo appropriati
al caso specifico

philist : [ r^2 , log(r) , r^(-2+2)*cos(2*t) , r^2*cos(2*t) , r^(-2)*cos(2*t) ];

costruisco la lista dei termini incogniti di combinazione lineare

unks : makelist(   A[paperino] , paperino , 1 , length(philist) );

creo phi(r,t) come combinazione lineare dei termini di philist modulati
per i coefficienti presi da unks

define(
    phi(r,t),
    sum( philist[i] * unks[i] , i , 1 ,length(philist ) )
);

inserisco le relazioni che derivano da phi le componenti di tensione

define(
    srr(r,t),
    1/r * diff( phi(r,t) , r , 1) + 1/r^2*diff( phi(r,t) , t , 2 )
);
define(
    stt(r,t),
    diff( phi(r,t) , r , 2 )
);
define(
    srt(r,t),
    1/r^2 * diff(phi(r,t), t,1) - 1/r * diff(phi(r,t),r,1,t,1)
);

scrivo le equazioni legate alle condizioni al contorno, 
poi le trigreducerò per analizzarne il contenuto armonico
= poi ne farò un'espansione in serie di fourier in t

QUI ERA l'ERRORE!!!
eqns:[
    srr(1,t) = 0,
    srt(1,t) = 0,
    limit(srr(r,t) , r , +inf) = trigreduce(srr_ff(0,1,0,t)),
    limit(srt(r,t) , r , +inf) = trigreduce(srt_ff(0,1,0,t)),
    limit(stt(r,t) , r , +inf) = trigreduce(stt_ff(0,1,0,t))
];
NON AVEVO COMPLETATO LA SOSTITUZIONE DEL FAR FIELD

eqns:[
    srr(1,t) = 0,
    srt(1,t) = 0,
    limit(srr(r,t) , r , +inf) = trigreduce(srr_ff(1,0,0,t)),
    limit(srt(r,t) , r , +inf) = trigreduce(srt_ff(1,0,0,t)),
    limit(stt(r,t) , r , +inf) = trigreduce(stt_ff(1,0,0,t))
];

eqns[5];

estraggo con uno stratagemma (utilizzo di augcoefmatrix) i coefficienti
con cui cos(2*t) e sin(2*t) entrano nelle equazioni, e il residuo (ossia
il termine costante nel caso specifico)

mat :
augcoefmatrix(
    eqns,
    [ cos(2*t) , sin(2*t) ]
);

se questi coefficienti sono tutti nulli, le equazioni valgono per ogni t

neweqns : [];

for i : 1 thru length(eqns) do (

    neweqns : append ( neweqns , makelist( mat[i,j] = 0, j , 1, 3   ) )


);
neweqns;

neweqns:[];
for i :  1 thru length(eqns) do(
    for j : 1 thru 3 do (
        neweqns : append (neweqns , [ mat[i,j] = 0 ] )
    )
);
neweqns;

ho 15 equazioni in 5 incognite, spero non siano tutte indipendenti

linsolve( neweqns , unks ) , globalsolve=true;

controllo condizioni al contorno foro

srr(1,t);

srt(1,t);

wxplot2d(
    [stt(1,t),limit(srr(r,t),r,inf),limit(stt(r,t),r,inf),limit(srt(r,t),r,inf)],
    [t,-%pi, %pi],
    [legend,"srr_ff","stt_ff","srt_ff"]
);