Bilgisayarda Grafen Yapmak | Moleküler Modellemeye Giriş | Python ile Bilimsel Programlama

Herkese merhaba, bugünkü yazımda moleküler modellemeye ufak bir giriş niteliğinde olması için grafeni nasıl modelleyebileceğimizi anlatmaya çalışacağım.

Öncelikle böyle bir yazı yazma nedenimden bahsetmek istiyorum. Birkaç ay önce ben de günlerce bu konuyu araştırmıştım. Ne yazık ki ne Türkçe, ne de İngilizce istediğim gibi bir kaynak bulamamıştım. Ben de bunun sonucunda en azından benim aracılığımla diğer insanlar aynı zorluğu çekmesin diye düşündüm.

İsterseniz önce temel birkaç şeyden bahsedeyim. Modelleyeceğimiz şey, 2 boyutlu olarak kabul ettiğimiz bir molekül olan grafen. 2 boyutlu kabul etmemizin sebebi ise kalınlığının sadece bir atom kadar olması. Grafeni daha önce internette görmüş olmanız mümkün.
Gördüğünüz gibi karbon atomlarından oluşan ve altıgen biçiminde bir molekülü modelleyeceğiz. Başta da bahsettiğim gibi; grafen, 2 boyutlu bir molekül. 2 boyutlu bir şekli geometrik olarak ifade edebilmek için iki tane vektöre ihtiyaç duyarız. Mesela bir kareyi ifade edebilmek için kenarları ile aynı uzunlukta ve doğrultuda iki vektörü kullanabiliriz. Fakat grafen altıgen şeklinde. Bir altıgeni iki vektörle nasıl ifade edebiliriz?

Bir görsel ile anlatmaya çalışayım isterseniz.
Burada gördüğünüz a1 ve a2 vektörleri ile iki atomu tanımlayabiliyoruz. Görseldeki mavi dikdörtgenin içindeki atomlar gibi mesela. Biz bu iki vektörü taşıyarak tüm tabakayı elde edebiliriz. Temelde bilmemiz gereken son bir şey daha kaldı. O da "basis" kavramı. Basisi temelde bir molekülün en küçük yapı taşındaki atomlar olarak düşünebilirsiniz.

Temel bilgileri öğrendiğimize göre artık algoritmamızı belirleyebiliriz. Çünkü ne kodu yazıyor olursanız olun, algoritma olmadan sistematik bir iş ortaya koymak çok zordur. İsterseniz aşama aşama yazalım.

1. Basis'i Tanımlamak: Burada basis'imizi bir matris ile tanımlıyoruz. Hatırladığınız üzere bizim basisimizde iki atom vardı. 3 boyutlu koordinatlarla ifade edersek, birinci atomu (0, 0, 0) noktasında; ikinci atomu da (a, 0, 0) noktasında düşünebiliriz. Burada a dediğimiz uzunluk atomlar arası uzaklıktır ve yaklaşık 1.42 angstromdur.

2. Vektörleri Tanımlamak: Şimdi de daha önce söylediğimiz a1 ve a2 vektörlerini 1x3 matrisler halinde tanımlayalım. Vektörlerin x, y ve z bileşenlerinin uzunlukları temel geometri ile bulunabilir.

3. Atomlar İçin Bir Dizi Oluşturmak

4. For Döngüsü Yardımıyla İstediğimiz Oranda Basis'i Büyütmek

5. "graphene.xyz" Adında Bir Dosya Oluşturmak

6. Tüm Atomların Koordinatlarını Dosyamıza Yazdırmak

Kodumuzu yazdıktan sonra çalıştırdığımızda sadece bir dosyaya yazılmış koordinatlar elde ederiz. Bu koordinat dosyasını JMol denilen bir görselleştirme programı ile çalıştırdığımızda görsel bir sonuç da elde edebiliriz.
Gördüğünüz üzere grafeni oluşturmayı başardık. Algoritmayı koda dökme konusunda zorlananlar için Octave ile yazdığım kodun Github linkini aşağı bırakıyorum. Diğer yazılarda görüşmek dileğiyle...


Yorumlar

  1. Merhaba, lise 3. sınıfa geçtim. Eskişehir Fatih Fen Lisesi'nde okuyorum ve ODTÜ'de fizik okumayı düşünüyorum ancak fizik deyince herkes işsiz kalacaksın, okulu bitiremezsin gözüyle bakıyorlar. Acaba deneyimlerinizi paylaşabilir misiniz?

    YanıtlaSil
    Yanıtlar
    1. Merhaba, öncelikle şunu belirtmeliyim ki ben 1. sınıfa henüz geçtim. Geçtiğimiz yıl İngilizce hazırlık eğitimi aldım. Bu nedenle paylaşacağım deneyimler ve vereceğim öneriler üst sınıflardaki öğrencilere göre çok daha kısıtlı olacaktır. Bölüme çok fazla araştırarak ve çok isteyerek gelmemin sonucu olarak elbette aktarabileceğim bazı noktalar olabilir. Fakat bunu burada yapmak yerine benimle mail ya da sosyal medya aracılığıyla iletişime geçersen çok daha verimli bir şekilde sorularını yanıtlayabilirim. Blogumun "Ben Kimim?" sayfasındaki iletişim bilgilerimi kullanabilirsin. İyi günler. http://tilsimlikuark.blogspot.com/p/ben-kimim.html

      Sil

Yorum Gönder

Bu blogdaki popüler yayınlar

Diferansiyel Denklemlerde İntegral Çarpanını Anlamak

Trapezoid Kuralı ile Nümerik İntegrasyon | Python ile Bilimsel Programlama

Nedir Bu Tılsımlı Kuark? | Standart Model ve Temel Parçacıklar