Η μορφή αρχείου Oghma.
1. Τι είναι το JSON;
sim.json που ανοίγει στο Firefox, το οποίο απεικονίζει την υποκείμενη δομή JSON μιας προσομοίωσης OghmaNano.Το OghmaNano αποθηκεύει τις πληροφορίες προσομοίωσής του σε ένα αρχείο JSON. Το JSON (JavaScript Object Notation) είναι μια πολύ απλή, μορφή βασισμένη σε κείμενο, για την αποθήκευση και τη μεταφορά δομημένων δεδομένων. Χρησιμοποιείται ευρέως σε επιστημονικό λογισμικό επειδή είναι ταυτόχρονα αναγνώσιμο από τον άνθρωπο και επεξεργάσιμο από μηχανή. Μπορείτε να δείτε γενικά παραδείγματα δομών JSON στη διεύθυνση https://json.org/example.html.
Για να καταδείξουμε πώς λειτουργεί το JSON, παρακάτω υπάρχει ένα απλό παράδειγμα. Ένα αρχείο JSON δημιουργείται από ενότητες που ξεκινούν και τελειώνουν με άγκιστρα { }. Κάθε ενότητα περιέχει στοιχεία ή ετικέτες, όπως "color_of_dog", "dog_age" ή "dogs_toys". Αυτά τα στοιχεία πρέπει πάντα να γράφονται μέσα σε διπλά εισαγωγικά και ακολουθούνται από μια άνω τελεία : και στη συνέχεια από την αντίστοιχη τιμή δεδομένων. Οι τιμές κειμένου τοποθετούνται μέσα σε διπλά εισαγωγικά, ενώ οι αριθμοί, όπως οι ακέραιοι ή οι δεκαδικοί, γράφονται χωρίς εισαγωγικά. Στο OghmaNano, οι τιμές που μοιάζουν με boolean αποθηκεύονται ως οι συμβολοσειρές "true" ή "false". Για να είναι έγκυρο το αρχείο, όλα τα ανοιγμένα και κλειστά άγκιστρα πρέπει να ευθυγραμμίζονται σωστά. Τα στοιχεία μέσα σε μια ενότητα διαχωρίζονται με κόμματα, εκτός από το τελευταίο στοιχείο, το οποίο δεν τελειώνει με κόμμα. ??.
{
"color_of_dog": "brown",
"dog_age": 5,
"dogs_toys":
{
"rabbit": "true",
"stick": "false"
}
}
JSON.Η OghmaNano χρησιμοποιεί τις ίδιες αρχές JSON για να αποθηκεύσει όλα τα δεδομένα προσομοίωσής της. Αυτές οι πληροφορίες περιέχονται σε ένα αρχείο με όνομα sim.json, το οποίο περιέχει όλες τις παραμέτρους της συσκευής, τις ρυθμίσεις προσομοίωσης και τη διαμόρφωση εξόδου. Κάθε προσομοίωση θα έχει το δικό της αρχείο sim.json. Ενώ μπορείτε να ανοίξετε αυτό το αρχείο σε οποιοδήποτε πρόγραμμα επεξεργασίας κειμένου, συχνά είναι ευκολότερο να χρησιμοποιήσετε ένα ειδικό πρόγραμμα προβολής JSON, καθώς αυτό θα μορφοποιήσει τα δεδομένα σε μια εύκολη στην ανάγνωση δενδρική δομή. Το Firefox διαθέτει ένα καλό ενσωματωμένο πρόγραμμα προβολής JSON. Ένα παράδειγμα ενός αρχείου sim.json που προβάλλεται στο Firefox εμφανίζεται παρακάτω στην εικόνα ??.
Ένα τελευταίο σημείο: αν και το sim.json είναι το βασικό αρχείο διαμόρφωσης, δεν αποθηκεύεται πάντα αυτόνομα. Αντίθετα, το OghmaNano συχνά το ενσωματώνει μέσα σε ένα αρχείο sim.oghma, το οποίο είναι απλώς ένα τυπικό αρχείο ZIP – αυτό γίνεται για εξοικονόμηση χώρου. Εάν μετονομάσετε το sim.oghma σε sim.zip, μπορείτε να το ανοίξετε με τον Windows Explorer ή οποιοδήποτε πρόγραμμα προβολής αρχείων ZIP και να εξαγάγετε το sim.json. Εάν τοποθετήσετε ένα αντίγραφο του sim.json στον ίδιο φάκελο προσομοίωσης και μετονομάσετε ξανά το αρχείο σε sim.oghma, το OghmaNano θα αγνοήσει την αρχειοθετημένη έκδοση του sim.json και θα χρησιμοποιήσει το απλό αρχείο κειμένου sim.json που έχετε. Αυτή η δυνατότητα είναι εξαιρετικά χρήσιμη για την αυτοματοποίηση, καθώς μπορείτε να επεξεργαστείτε απευθείας το sim.json χρησιμοποιώντας οποιαδήποτε γλώσσα προγραμματισμού, χωρίς να χρειάζεται να χειριστείτε αρχεία ZIP.
2. Η μορφή αρχείου OghmaNano.
Η OghmaNano εφαρμόζει ακριβώς αυτές τις αρχές στο αρχείο διαμόρφωσης προσομοίωσης, το οποίο ονομάζεται sim.json. Αυτό το αρχείο περιέχει όλα όσα απαιτούνται για την περιγραφή μιας δομής συσκευής, τον ορισμό των προσομοιώσεων που θα εκτελεστούν και τη διαμόρφωση των επιλυτών. Κάθε κατάλογος προσομοίωσης θα περιλαμβάνει το δικό του sim.json. Αν και μπορείτε να ανοίξετε αυτό το αρχείο σε οποιονδήποτε επεξεργαστή κειμένου, συχνά είναι πιο βολικό να χρησιμοποιήσετε ένα πρόγραμμα προβολής JSON, όπως το Firefox, το οποίο παρουσιάζει αυτόματα τα δεδομένα σε μια μορφοποιημένη δενδρική προβολή.
Στο υψηλότερο επίπεδο, το sim.json είναι οργανωμένο σε έναν μικρό αριθμό κύριων ενοτήτων. Αυτές οι ενότητες στη συνέχεια διακλαδίζονται σε λεπτομερέστερες υποενότητες, όπως οι σαρώσεις JV, οι εκτελέσεις EQE ή οι ορισμοί των στρωμάτων της συσκευής. Οι κύριες ενότητες που υπάρχουν στην τρέχουσα μορφή συνοψίζονται στον παρακάτω πίνακα: ??.
| Ενότητα | Σκοπός |
|---|---|
sim | Γενικά μεταδεδομένα (π.χ., έκδοση, τρόπος λειτουργίας, σημειώσεις) |
sims | Όλοι οι ορισμοί προσομοίωσης (JV, Suns-Voc, EQE, PL, χρονική περιοχή, ακτίνες, FDTD, κ.λπ.) |
epitaxy | Δομή της συσκευής: στρώματα, επαφές, γεωμετρία, υλικά. |
math | Ρυθμίσεις και όρια ανοχής για τον αριθμητικό επιλυτή. |
optical | Οπτικά μοντέλα, πηγές, ανιχνευτές, πλέγματα |
dump | Έλεγχοι εξόδου: επίπεδο λεπτομέρειας, έλεγχοι, μορφές αρχείων. |
server | Χρόνος εκτέλεσης/παραλληλοποίηση (νήματα, GPU, χρονικά όρια) |
sim.json.3. Ιδιαίτερα χαρακτηριστικά της μορφής JSON του OghmaNano.
-
Το αρχείο OghmaNano JSON δεν υποστηρίζει τις τυπικές λίστες JSON, π.χ. ["Κόκκινο", "Πράσινο", "Μπλε"]. Εάν υπάρχει μια λίστα στοιχείων, αυτή ορίζεται πρώτα δηλώνοντας τις μεταβλητές "τμήματα" και τον αριθμό των στοιχείων στη λίστα, για παράδειγμα "τμήματα", 0. Κάθε στοιχείο στη λίστα αποθηκεύεται στη συνέχεια κάτω από τις ετικέτες "τμήμα0", "τμήμα1" κ.λπ. Αυτή η μορφή επιτρέπει στο OghmaNano να διαθέσει τη μνήμη για την ανάγνωση των δομών πριν από την ίδια την ανάγνωση. Αυτό μπορεί να φανεί στην εικόνα 14.1, όπου υπάρχει μια λίστα με 1 τμήμα.
-
Πολλά από τα στοιχεία στο αρχείο JSON θα έχουν έναν αριθμό αναγνώρισης, ο οποίος είναι ένας δεκαεξαδικός κωδικός 16 ψηφίων. Αυτός ο κωδικός μπορεί να χρησιμοποιηθεί για να αναγνωριστεί με μοναδικό τρόπο κάθε στοιχείο. Ένας αριθμός αναγνώρισης μπορεί επίσης να φανεί στην εικόνα 14.1. Αυτοί οι αριθμοί αναγνώρισης δημιουργούνται τυχαία, αλλά κάθε αριθμός αναγνώρισης πρέπει να είναι μοναδικός. Οι αριθμοί αναγνώρισης επιτρέπουν την μοναδική αναγνώριση αντικειμένων, για παράδειγμα, στρώσεων επιταξίας, ακόμη και αν έχουν το ίδιο όνομα.
4. Κωδικοποίηση
Τα αρχεία .json που διαβάζει/εγγράφει το OghmaNano αποθηκεύονται πάντα σε μορφή UTF-8. Το OghmaNano δεν μπορεί να χειριστεί την κωδικοποίηση UTF-16 ή οποιαδήποτε άλλη μορφή κωδικοποίησης κειμένου. Σήμερα, το Windows Notepad και οι περισσότερες άλλες εφαρμογές χρησιμοποιούν από προεπιλογή την κωδικοποίηση UTF-8, οπότε αν δεν γνωρίζετε τι είναι αυτές οι μορφές αποθήκευσης κειμένου, πιθανότατα δεν έχει σημασία. Αυτό θα γίνει πρόβλημα μόνο αν αρχίσετε να δημιουργείτε προγραμματιστικά αρχεία .oghma σε μια γλώσσα όπως η C++ και χρησιμοποιείτε μια γλώσσα όπως η Κινεζική ή η Ρωσική, οι οποίες έχουν μη λατινικούς χαρακτήρες στο αλφάβητό τους.
5. Συμβατότητα του μορφότυπου αρχείου με παλαιότερες και νεότερες εκδόσεις.
Καταβάλλονται σημαντικές προσπάθειες για να διασφαλιστεί ότι οι νέες εκδόσεις του OghmaNano μπορούν να διαβάσουν αρχεία που δημιουργήθηκαν σε παλαιότερες εκδόσεις. Ωστόσο, οι παλαιότερες εκδόσεις του OghmaNano ενδέχεται να μην μπορούν να διαβάσουν αρχεία που δημιουργήθηκαν σε νεότερες εκδόσεις. Κάθε φορά που ο χρήστης ανοίγει ένα αρχείο sim.oghma χρησιμοποιώντας το GUI, ελέγχεται η μορφή του αρχείου και, εάν διαφέρει από αυτή που χρησιμοποιείται στην τρέχουσα έκδοση, το αρχείο ενημερώνεται και αποθηκεύεται ξανά στο δίσκο. Εάν χρησιμοποιείτε το OghmaNano σε μια διαμόρφωση χωρίς GUI, καλώντας απευθείας το \(oghma\_core.exe\), τότε, όταν χρησιμοποιείτε αρχεία sim.oghma από παλαιότερες εκδόσεις του μοντέλου, πριν εκτελέσετε το \(oghma\_core.exe\), βεβαιωθείτε ότι το έχετε ανοίξει πρώτα στο GUI, για να βεβαιωθείτε ότι το αρχείο είναι στη σωστή μορφή.
6. Συμβουλές
Εάν δεν είστε σίγουροι πού αποθηκεύεται μια συγκεκριμένη παράμετρος στο αρχείο OghmaNano sim.json, μια πολύ αποτελεσματική μέθοδος είναι να συγκρίνετε δύο εκδόσεις του αρχείου και να δείτε ποιες αλλαγές έχουν γίνει. Ένας τρόπος για να το κάνετε αυτό είναι να χρησιμοποιήσετε ένα εργαλείο σύγκρισης αρχείων, όπως το KDiff3.
Η διαδικασία είναι απλή:
- Ανοίξτε την προσομοίωσή σας στο περιβάλλον χρήστη του OghmaNano.
- Ρυθμίστε την παράμετρο που σας ενδιαφέρει (για παράδειγμα, αλλάξτε το πάχος της ενεργού στρώσης ή μια ρύθμιση τάσης) και αποθηκεύστε την προσομοίωση.
- Συγκρίνετε το νέο αρχείο
sim.jsonμε την προηγούμενη έκδοση χρησιμοποιώντας το KDiff3 (ή κάποιο άλλο εργαλείο σύγκρισης). - Εντοπίστε τις γραμμές που διαφέρουν: αυτές θα δείξουν ακριβώς πού, μέσα στη δομή JSON, είναι αποθηκευμένη η συγκεκριμένη παράμετρος.
Αυτή η τεχνική αποτελεί έναν γρήγορο και αξιόπιστο τρόπο για να εντοπίσετε παραμέτρους σε ένα αρχείο JSON, ακόμα και αν δεν είστε σίγουροι για τη διαδρομή τους μέσα στο αρχείο. Είναι ιδιαίτερα χρήσιμη για πολύπλοκες προσομοιώσεις με πολλές ενσωματωμένες ενότητες.
👉 Επόμενο βήμα: Συνεχίστε στην ενότητα Εξερεύνηση του εργαλείου Σάρωσης Παραμέτρων, όπου θα μάθετε πώς να τροποποιείτε συστηματικά τις παραμέτρους προσομοίωσης και να αναλύετε τα αποτελέσματα.