Pagina 1 di 3

Risoluzione rete resistiva di grandi dimensioni

MessaggioInviato: 20 feb 2018, 17:31
da DanteCpp
Un saluto ai partecipanti,

ho la necessità di risolvere una rete resistiva di enormi dimensioni, dell'ordine di 10^{11} lati, (non planare).

Ho il presentimento che SPICE non regga tali dimensioni, però mi permetto di chiamare in causa Foto UtenteRenzoDF che SPICE lo conosce bene.

Mi è capitato di diagonalizzare matrici di grandi dimensioni con MATLAB o direttamente LAPACK però oltre i 10^5 il problema è intrattabile anche con questo metodo.

Pensavo a qualche metodo iterativo, però non so effettivamente quanto si possa spingere con questi metodi.

Qualcuno di voi ha esperienza in ambito, secondo voi c'è speranza di risolvere un sistema lineare di tali dimensioni (anche con dei supercalcolatori) oppure devo cercare in qualche modo di ridimensionare il problema?

Re: Risoluzione rete resistiva di grandi dimensioni

MessaggioInviato: 20 feb 2018, 18:40
da DarwinNE
Non ho la risposta al quesito, però vorrei sapere come conti di rappresentare il problema nella memoria di un calcolatore. Hai un grafo con 10^{11} elementi? Oppure ne lasci perdere qualcuno per ridurre l'occupazione di memoria?

Da dove viene fuori il problema? Nanofili interconnessi? Puoi applicare metodi statistici?

Re: Risoluzione rete resistiva di grandi dimensioni

MessaggioInviato: 20 feb 2018, 19:10
da xyz
Quale SPICE usi e sotto quale sistema operativo ?

Re: Risoluzione rete resistiva di grandi dimensioni

MessaggioInviato: 20 feb 2018, 19:15
da DrCox
Si tratta di un problema non banale e del tutto generale, non strettamente legato alla risoluzione di reti circuitali. Quando hai a che fare con matrici molto grandi, magari anche sparse, l'occupazione di banda è critica, e talvolta conviene proprio

DarwinNE ha scritto: applicare metodi statistici


Ti suggerisco la lettura di questo articolo, magari può darti qualche spunto:
https://ocw.mit.edu/courses/mathematics ... s/am36.pdf

Oltre alle tecniche lì indicate, io prenderei in considerazione anche lo sviluppo di un piccolo Monte Carlo (esempio).

O_/

Re: Risoluzione rete resistiva di grandi dimensioni

MessaggioInviato: 20 feb 2018, 20:07
da DanteCpp
DarwinNE ha scritto:Non ho la risposta al quesito, però vorrei sapere come conti di rappresentare il problema nella memoria di un calcolatore. Hai un grafo con 10^{11} elementi? Oppure ne lasci perdere qualcuno per ridurre l'occupazione di memoria?


Anche per questo pensavo a metodi iterativi: i) carico riga, ii) carico colonna iii) salvo riga per colonna.

DarwinNE ha scritto:Da dove viene fuori il problema? Nanofili interconnessi? Puoi applicare metodi statistici?


film nanogranulari. Non so esattamente cosa si intende per per metodi statistici, riesco ad immaginarmi qualcosa solo se l'obbiettivo fosse calcolare la resistenza totale, ma a me servono le correnti in ogni ramo. Comunque approfondirò.

xyz ha scritto:Quale SPICE usi e sotto quale sistema operativo ?

Sicuramente sistemi unix-like, comunque non penso sia pane per i denti di SPICE!

DrCox ha scritto:Ti suggerisco la lettura di questo articolo, magari può darti qualche spunto:
https://ocw.mit.edu/courses/mathematics ... s/am36.pdf

Oltre alle tecniche lì indicate, io prenderei in considerazione anche lo sviluppo di un piccolo Monte Carlo (esempio).

O_/


Grazie!

Re: Risoluzione rete resistiva di grandi dimensioni

MessaggioInviato: 20 feb 2018, 20:32
da venexian
Facendo i conti della serva, 10^11 lati non sovrapposti si hanno con minimo 450 000 nodi che si rappresentano con ciascuno con 20 bit, obbligatoriamente 3 Byte. Ogni lato è rappresentato da due nodi più il suo valore. Se consideriamo solo i nodi (*), abbiamo 6x10^11 Byte. Sono 560 GB di RAM. La soluzione analitica mi sembra... difficile.

(*) Trascurando il valore resistivo.

Re: Risoluzione rete resistiva di grandi dimensioni

MessaggioInviato: 20 feb 2018, 21:23
da DanteCpp
:) il metodo con la migliore efficienza spaziale per memorizzare un circuito di questo tipo è per mezzo di una matrice! :mrgreen:

Re: Risoluzione rete resistiva di grandi dimensioni

MessaggioInviato: 20 feb 2018, 21:54
da PietroBaima
Sistemi lineari di dimensioni così grandi richiedono l’algebra multimodulare e non sono banali da risolvere perché l’efficienza del metodo diventa di una importanza maniacale.

Se si riesce a rendere il sistema di Hessemberg o triangolare o a striscia le cose si semplificano di molto perché si può utilizzare un metodo iterativo (il vantaggio consiste nel fatto che i metodi iterativi non “riempiono” le matrici mentre risolvono e quindi si può memorizzare solo la striscia diagonale della matrice).
Altrimenti la buona vecchia decomposizione LU può dare molto.

In generale però bisogna studiare il caso specifico e trovarne delle proprietà che permettano di adattare un metodo più generale e farlo diventare ad hoc per il problema.

Questo è un problema per esperti di calcolo numerico.

Re: Risoluzione rete resistiva di grandi dimensioni

MessaggioInviato: 20 feb 2018, 22:07
da DanteCpp
PietroBaima ha scritto:Questo è un problema per esperti di calcolo numerico.


Mi sa che è il caso di consultare il mio vecchio professore di matematica applicata, prima di provare ad implementare qualsiasi cosa!

Re: Risoluzione rete resistiva di grandi dimensioni

MessaggioInviato: 20 feb 2018, 22:16
da PietroBaima
No, nel tuo caso devi lavorare su tutti i fronti possibili.

Prima devi cercare di ridurre il problema dal punto di vista fisico, oppure renderlo scalabile.

Poi dopo pensiamo alla sua trattabilità numerica.