Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

9
voti

Dipolo con CST - I

Indice

Introduzione

CST MICROWAVE STUDIO® è uno dei programmi della suite CST®. Tra le tante cose che può fare è molto utile per progettare antenne: le si può modellare in 3D, simulare il loro comportamento e visualizzare a schermo un po' di tutto, tra cui il far field, il campo elettrico e quello magnetico, la matrice S e molto altro.

Interfaccia di CST MICROWAVE STUDIO all

Interfaccia di CST MICROWAVE STUDIO all'apertura di un nuovo progetto.

Lo scopo di questa serie di articoli è mostrare un minimo delle potenzialità del programma con un piccolo progetto dalle poche pretese. Nel mentre viene spiegato come creare una macro, come ingannare la history list del programma e come iniziare a smanettare un po'. L'approccio alla simulazione non è necessariamente il migliore, essendo frutto di considerazioni da (parzialmente) autodidatta impegnato a risolvere una lunga sequenza di problemi.
La prima parte illustra la creazione e l'unione di solidi su CST e la scrittura di una semplice macro. La seconda parte mostra una macro per creare un dipolo rototraslabile a piacere, la terza spiega come simularlo, ottimizzandolo. Questo primo articolo è stato scritto con l'intento di non saltare alcun passaggio.

La history list e la modellazione di semplici forme geometriche

History list: è l'elenco di tutti i comandi che sono stati eseguiti dall'utente, in ordine cronologico (il comando 1 è il più vecchio).
L'interfaccia grafica permette di creare semplici forme geometriche, usando la sezione Modeling. Per fare il dipolo abbiamo bisogno di due cilindri. Per ora non preoccupiamoci delle unità di misura: è possibile modificarle in seguito.

Comandi per spostare la visuale

Menù per la visuale.

Menù per la visuale.

Si trovano nel menù View. Usando la modalità rotate evidenziata in figura: il click sinistro del mouse ruota, la rotellina avanti e indietro fa da zoom, la pressione della rotellina trasla.

Creazione di un cilindro

Selezionare il cilindro dalla sezione Modeling.

Selezionare il cilindro dalla sezione Modeling.

Ad ogni doppio click blocchiamo una dimensione del cilidro. Qui è mostrato l

Ad ogni doppio click blocchiamo una dimensione del cilidro. Qui è mostrato l'ultimo passo, in cui sto per impostare il raggio interno.

Una volta terminato si aprirà questa finestra di dialogo.

Una volta terminato si aprirà questa finestra di dialogo.

Nella finestra di dialogo CST chiede come si chiamerà cilindro, l'orientamento rispetto agli assi e di che materiale sarà composto. Siccome lo cancelleremo in seguito l'ho chiamato "Cilindro_inutile". Lasciamo invariati i parametri geometrici settati coi doppi click poco fa. Notare la tendina: abbiamo due materiali disponibili, Vacuum e PEC (Perfect Electric Conductor) e la possibilità di caricare qualcosa dalla libreria. Lasciamo PEC, lo useremo anche dopo come prima approssimazione del rame. Clicchiamo OK terminando così di creare il cilindro.

CST procede a riempire il volume del cilindro, mostrandocelo pieno. Nei menù a sinistra comparirà il "Cilindro_inutile" in components. Useremo questi menù per recuperare, riesaminare e modificare i solidi creati.

Cilindro terminato e presente nei menù.

Cilindro terminato e presente nei menù.

Ora potremmo modificare il cilindro per far sì che diventi uno dei due cilindri che formeranno assieme il dipolo. In CST è possibile definire dei parametri e legarli alle dimensioni dei solidi, così da "ricostruirli rapidamente" settando un parametro differente; in basso a sinistra c'è la parameter list. Tali parametri sono molto utilizzati con l'optimizer.
Tuttavia questo approccio è puramente grafico; sarebbe molto più comodo potersi programmare un cilindro, modificando solo del codice. In tal modo creare una trentina di dipoli in pochi secondi sarebbe molto semplice, usando magari un ciclo for e i comandi per le traslazioni.
È possibile lavorare con del codice usando la history list e le macro, che sono "piccoli" script/programmi.

Estrapolazione del codice del cilindro dalla history list

Tutto il processo di creazione del cilindro, dal cliccare sul pulsante "Cylinder" ai vari doppi click per formarlo, fino alla scelta del materiale nella finestra di dialogo, è "dietro le quinte" l'esecuzione di un codice da parte del programma.
Per leggere questo codice usiamo la history list:

Quello evidenziato è il pulsante della history list.

Quello evidenziato è il pulsante della history list.

Si aprirà questa finestra di dialogo. Notare come nel mio progetto siano stati eseguiti 4 "comandi".

Si aprirà questa finestra di dialogo. Notare come nel mio progetto siano stati eseguiti 4 "comandi".

Ora selezioniamo il comando con cui abbiamo creato il cilindro, ovvero il numero 4 nel mio progetto. Poi clicchiamo sul pulsante Edit. Apparirà la seguente schermata:

Ecco il codice che ha creato il cilindro.

Ecco il codice che ha creato il cilindro.

Il codice è in un linguaggio chiamato VBA, che deriva dal VB = Visual Basic. Il codice è autoesplicativo, e quei numeri sono modificabili dall'utente. Addirittura, potremmo (e lo faremo) estendere il codice. Ora limitiamoci a modificarlo, cambiando il numero dell'inner radius (raggio interno): nel mio esempio c'è scritto
.InnerRadius "2"
Quelle virgolette sono facoltative. Per ottenere un cilindro pieno sostituisco quella riga con
.InnerRadius 0
e premo OK. Si chiude la finestra di edit; nella finestra della history list premo il pulsante Update. Ottengo un cilindro pieno:

Dopo aver cambiato a 0 l

Dopo aver cambiato a 0 l'inner radius (raggio interno), aver confermato e poi premuto update.

Scrittura di una macro che costruisce un cilindro

Nel menù Home, a destra, c'è il pulsante Macros. Facciamo una nuova macro:

Nuova macro.

Nuova macro.

Si aprirà questa piccola finestra, per dare il nome alla macro. Selezioniamo Structural in modo da far capire a CST che intendiamo modellare forme geometriche.

Si aprirà questa piccola finestra, per dare il nome alla macro. Selezioniamo Structural in modo da far capire a CST che intendiamo modellare forme geometriche.

Una volta confermata la schermata precedente CST passerà alla zona per modificare le macro.

Una volta confermata la schermata precedente CST passerà alla zona per modificare le macro.

La prima riga, che inizia con l'apostrofo, è un commento. I commenti verranno ignorati da CST.
Metteremo tutti i nostri codici tra la riga "Sub Main ()" e la riga "End Sub".

Ora torniamo alla history list, e copiamo tutto il codice. Incolliamolo nella macro, così:

Codice del cilindro creato in precedenza.

Codice del cilindro creato in precedenza.

Procediamo a modificare il codice. Questa macro non modificherà il cilindro creato in precedenza, bensì ne creerà un altro. Dobbiamo per forza cambiare il nome, altrimenti CST darà errore.

Il nome è cambiato, e anche .Xcenter

Il nome è cambiato, e anche .Xcenter

Cambiando in .Xcenter 2 otterremo un cilindro traslato di 5 lungo x (precedentemente era.Xcenter "-3", le virgolette sono facoltative).


Resa in 3D. Notare come tra i component vi sia il nuovo cilindro.

Resa in 3D. Notare come tra i component vi sia il nuovo cilindro.

Attenzione! Il nuovo cilindro non è stato aggiunto al precedente creando un nuovo solido. Per CST sono ancora separati.

Problemi con la history list, una semplice soluzione

Aprendo la history list ci si accorge che l'esecuzione della macro non è stata riconosciuta come un comando. Ci sarebbe modo di aggiungere il comando con la funzione .AddToHistory, ma è molto sconveniente, perché accetta in input delle stringhe.
Nella history list clicchiamo Update. Il nostro secondo cilindro, quello creato con la macro, sparirà. CST si è resettato allo stato precedente, rieseguendo passo passo tutti i comandi nella history list...però la macro non è stata inclusa.
È possibile lavorare creando delle macro, eseguendole in sequenza e poi impostando il simulatore (magari nelle macro stesse). Il problema è che chiudendo e riaprendo il progetto esso torna all'ultimo stato della history list, talvolta cancellando anche i risultati. Per cui bisogna lavorare "one shot", rieseguendo ad ogni riavvio tutte le macro; è piuttosto scomodo.

Siccome la history list ci dà problemi, inganniamola. Apriamo l'ultimo comando eseguito, quello che crea il primo cilindro, e ampliamolo copiandone il contenuto e incollandolo al fondo, ottenendo due pezzi di codice uguali. Poi modifichiamo il nome e l'.Xrange del secondo cilindro/pezzo di codice, come abbiamo fatto in precedenza con la macro:

Modifica del comando di creazione del cilindro.

Modifica del comando di creazione del cilindro.

Dato l'OK al comando clicchiamo su Update. Il risultato 3D sarà identico al precedente! Il nome che ha il comando nella history list non ha alcuna importanza, quello che importa è il codice che contiene.
Un metodo conveniente per lavorare è il seguente:

  • Per ogni azione di cui non si conosce il codice, come la creazione di un parallelepipedo o la traslazione di un solido, eseguire l'azione nell'interfaccia grafica. Aprendo la history list è possibile visualizzarne il codice. Trafficando un po' sull'interfaccia grafica e variando i parametri che compaiono sulle finestre di dialogo si riesce spesso a dedurre il significato delle parti del codice su cui si è incerti.
  • Scrivere la propria "macro da history list" su un editor di testo (come l'ottimo Notepad++)
  • Una volta terminata la macro, eseguire un'azione di nessuna importanza sull'interfaccia grafica, ad esempio creare un cubo.
  • Aprire la history list, editare il comando del cubo: eliminare tutto il codice del cubo e sostituirlo col codice della propria "macro da history list". Confermare la modifica al comando.
  • Cliccando Update CST rieseguirà tutti i comandi in sequenza, incluso l'ultimo, quello modificato. In tal modo la propria "macro da history list" rimarrà permanentemente all'interno della history list.
  • L'unico inconveniente è l'impossibilità di rinominare i comandi, per cui bisogna ricordarsi come si chiamano i "comandi fantasma" creati apposta per inserire le proprie "macro da history list".

Attenzione: scrivere macro vere e proprie è una cosa diversa, i comandi della history list non hanno un main, sono semplici codici a se stante. Le "macro da history list" funzionano perfettamente con commenti, cicli for, eccetera.
Al solito per imparare conviene sperimentare col codice il più possibile.

Esempio: scrittura del codice per unire un parallelepipedo ed un tronco di cono in un unico solido

Solidi creati con l

Solidi creati con l'interfaccia grafica ed i rispettivi comandi in history list.


Con l'interfaccia grafica creare entrambi i solidi. I rispettivi comandi appariranno in history list; modificarli per copiare i rispettivi codici nel proprio editor di testo.

Il comando per unire due solidi si trova nel menù Modeling:

Unire due solidi

Unire due solidi

Dopo averlo eseguito, aprire la history list, copiare il suo codice e incollarlo al fondo dell'editor di testo, dopo il codice del tronco di cono e quello del parallelepipedo.
Col pulsante Delete della history list, cancellare tutti i comandi eccetto il primo. Poi modificare il primo comando (che sarà l'unico rimasto) ed incollare al suo interno tutto il codice dell'editor di testo, ottenendo:

Eventualmente cambiare i numeri (qui o nell

Eventualmente cambiare i numeri (qui o nell'editor di testo) per ottenere solidi a piacere.

Infine dare OK alla modifica del primo comando e premere Update.

Seconda parte

3

Commenti e note

Inserisci un commento

di ,

Very good! Lo proverò :) Grazie

Rispondi

di ,

Rimando alla sezione del sito CST con le specifiche tecniche dei solver:
https://www.cst.com/Products/CSTMWS/TechnicalSpecification
Utilizzano diverse tecniche proprietarie brevettate, che probabilmente espandono e adattano MoM o FEM. Al link indicato prima dicono che il modulo l'Integral Equation Solver Module è basato sul MoM e sul MLFMM.
È possibile selezionare tra più mesh differenti e adattarle manualmente alla geometria in esame, c'è anche un motore che per un numero di iterazioni specificato dall'utente procede a raffinare la mesh.
Per le condizioni ai bordi, ad esempio quando si passa da un dielettrico (es. vetronite di un PCB) ad un conduttore (es. linea del PCB), hanno diverse "mesh proprietarie", tipo le PBA® che lavorano sulle boundaries. Ho dovuto usare le PBA per un prototipo su cui stavo lavorando.

Rispondi

di ,

Ciao Fedhman, interessante CAD. Due domande: 1) Che tu sappia, che tipo di approccio numerico (o approcci) implementa per la simulazione elettromagnetica (MoM, FDM, FEM, FDTD, ...)? 2) E' possibile selezionare eventualmente tra più meshing o meglio ancora "customizzarli" per una caratterizzazione più accurata (tipo spigoli, bordi) ? Grazie :)

Rispondi

Inserisci un commento

Per inserire commenti è necessario iscriversi ad ElectroYou. Se sei già iscritto, effettua il login.