OpenSees için basit bir tanım yapmak gerekirse; sismik etkiler altındaki yapısal ve geoteknik sistemlerin deprem performansını simüle etmeye yarayan ve aynı zamanda bu konularda sonlu elemanlar uygulamaları geliştirebilen açık kaynak kodlu bir yazılım çerçevesidir. OpenSees açık kaynak kodlu olduğu için sürekli bir gelişim hâlindedir. Yani her kullanıcı aslında bir OpenSees geliştiricisidir. Programlar üretebilen bu program, PEER(Pasifik Deprem Mühendisliği Araştırma Merkezi)’de oluşturulmuştur. OpenSees’e bakıldığında görülen ilk ve en temel farklılık piyasada ve akademide kullanılan birçok yapısal analiz programlarının aksine bir kullanıcı dostu ara yüzünün bulunmayışıdır. Bunun yerine bizi bir komut ara yüzü karşılamaktadır. Yani bir malzeme tanımlamak için bir sekmeye tıklayıp malzeme özelliklerini tanımlayamıyoruz. Bunun yerine o malzeme için kullanılan kodu yazıp, içerisini komutlar ile doldurmak gerekiyor. Bu malzeme örneğini genişletebiliriz. Nokta, eleman veya kesit tanımlanmasından, analiz parametrelerine kadar her şeyin bir kodu var.
Program C++ ile yazılmış olup işletme dili olarak ilk etapta Tcl kullanılmıştır. İlerleyen süreçte Python programlama dilinin çok popüler ve kolay öğrenilebilir olmasıyla birlikte kodlar Python’a taşınmaktadır. Yani şu an OpenSees çerçevesini Python’da bir kütüphane olarak düşünebiliriz. Python programlama dili ile OpenSees kodlarını yazıp içerisini komutlar ile doldurunca etkileşim alıyoruz. Çünkü OpenSees nesne yönelimli bir çerçeve ve bu sayede girdi verip çıktı alabiliyoruz.
Bu kütüphaneyi kendi alanımıza çağırıp, kod blokları yazarak yapı mühendisliğinde istediğimiz analizi daha kısa sürede gerçekleştirebiliriz(Doğrusal veya doğrusal olmayan). Daha kısa dedim, çünkü Sap 2000 veya muadili programlar gibi bir kullanıcı ara yüzü yok. Ayrıca Sap2000 gibi programlar gerekli gereksiz bütün çıktıları kaydeder. Bu da ekstra zaman demektir. OpenSees’de ise sadece istediğimiz çıktıları kaydedebiliriz. Ayrıca bir kullanıcı ara yüzü olmamasından dolayı analiz süreleri oldukça kısalmaktadır.
OpenSees için komut ara yüzlü olduğunu söylemiştik. Bu sayede algoritma yeteneğinize bağlı olarak, özel programlar üretebilirsiniz. Hatta yapay zeka için veri hazırlayacak bir araç olarak kullanabiliriz ki bence bu seçenek daha önemlidir. Şöyle düşünelim, yapı mühendisliğinde bulunan bir problemi ele alarak başlayalım. Mesela kesit analizi; moment-eğrilik analizi veya kuvvet-moment etkileşimi. Normal şartlarda bu analizleri Xtract veya Sap 2000 aracılığıyla yapabiliriz. Ama her seferinde tek bir analiz yapabilirsiniz. Ve yapay zeka için veri hazırlıyorsanız, bu analizlerden çok sayıda yapmanız gerekecektir. Ne kadar sıkıcı demi, bir yerden sonra Sap veya Xtract operatörüne dönüşeceksiniz. Ama OpenSees komut ara yüzlü olduğu için, kullanıcının Python programlama yeteneğine bağlı olarak yazılacak bazı kod blokları sayesinde, aynı anda farklı malzeme ve kesit modelleri için istediğimiz sayıda analiz yapıp sadece istediğimiz çıktıları kaydedecektir. Yani OpenSees ile yapay zeka modeli için için daha kısa sürede veri hazırlayabiliriz. Tabi burada kesit analizi problemini değiştirebilirsiniz. İster bir yapının göreli kat ötelemesi sizin probleminiz olsun, isterseniz mevcut bir yapının sismik etkiler altındaki performansını bulmak.
Ayrıca bu çerçevenin kullanım yapısı içerisinde bulunan malzeme, eleman ve plastisite modelleri sayesinde çok çeşitli analizleri mümkün kılmaktadır. Özellikle doğrusal olmayan davranış ve analiz durumlarında sayısız çözümleri kısa sürede alıp, karşılaştırma imkânı vermektedir.
Ek olarak geliştirdiğiniz bir malzeme veya elaman modelini bu programın içerisine koyup, bu malzeme ve elaman ile analizler yapabilirsiniz. Tabi bunun için C++ bilmek gerek. Çünkü yukarıda dediğimiz gibi programı C++ ile yazmışlar. Tüm bu özelliklerinden dolayı daha ziyade akademik amaçlara hizmet ediyor olsa da piyasada kullanılmaması için hiçbir sebep yok.
Gelelim programın heyecan verici kısımlarına;
OpenSees kullanırken kendinizi her şeye hakim hissedebilirsiniz. Çünkü bu programı kullanırken her şey sadece sizin elinizdedir. Örnek olarak, betonarme basit bir çerçeve(tek kat, tek açıklık) için doğrusal olmayan bir itme analizi yaptığımızı düşünelim. Kesit için beton ve donatı modeli tanımlamamız gerekecektir. Donatı modelini 2 aşamada tanımlamamız gerekiyor.
İlk olarak akma dayanımı, kopma dayanımı ve birim şekil değiştirme değerlerinin yazılı olduğu normal bir donatı modeli yazarız.
İkinci olarak ise ilk modelde tanımladığımız donatı modelini MinMax isminde bir başka malzeme modelinin içine koyup, 2 tane birim şekil değiştirme(Min, Max) değeri yazarız. Bu şu anlama gelmektedir;
Eğer ilk tanımladığım donatı modeli ikinci modelde yazdığım birim şekil değiştirme(Min, Max) değerini geçerse donatıyı başarısız say demektir. Aksi takdirde program donatının koptuğunu anlamıyor ve gelen itme eğrisi sonuçlarında uzaya doğru pekleşerek giden bir eğri bulunmakta.
Ayrıca OpenSees’i kullanırken çok iyi bir teorik bilgi gerekmektedir. Çünkü bu programı kullanırken sizi uyaracak kimse yok. Programa girdi verirken kullanılacak(malzeme, eleman, plastisite, vs.) modellerinin matematiksel teorisi iyi bilinmelidir. Çünkü sonuçlar bu girdilere göre değişecektir.
Ayrıca OpenSees’de bir birim ayarı yok, ya siz hangi birimlerle çalıştığınızı bilip buna göre değerler girersiniz, programın birimden haberi olmaz. Ya da kendiniz bir birim dosyası oluşturur ve bu dosyayı kendi alanınıza çağırırsınız.
Daha nice sayılabilecek sebepten dolayı hakimiyet kullanıcıda toplanıyor ve elimizdeki program çok gelişmiş bir hesap makinesine dönüşüyor.
Örnek olması açısından OpenSees’te bulunan bir beton modelinin Python kodu;
uniaxialMaterial(‘Concrete01’, matTag, fpc, epsc0, fpcu, epsU)
‘Concrete01’ = Beton malzeme modelinin adı
Burada matTag için malzemenin etiket numarası diyebiliriz. Yani birden fazla malzeme tanımlarsanız bunları etiketlemek gerekir.(1, 2, vs.)
fpc = Malzemenin 28 günlük beton basınç dayanımı
epsc0 = Betonun maksimum dayanımda birim şekil değiştirmesi
fpcu = Betonun ezilme anındaki dayanımı
epsU = Betonun ezilme anındaki birim şekil değiştirmesi