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.
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
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
Ad ogni doppio click blocchiamo una dimensione del cilidro. Qui è mostrato l'ultimo passo, in cui sto per impostare il raggio interno.
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.
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:
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:
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:
Scrittura di una macro che costruisce un cilindro
Nel menù Home, a destra, c'è il pulsante Macros. Facciamo una 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.
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ì:
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.
Cambiando in .Xcenter 2 otterremo un cilindro traslato di 5 lungo x (precedentemente era.Xcenter "-3", le virgolette sono facoltative).
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:
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
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:
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:
Infine dare OK alla modifica del primo comando e premere Update.