Python ve Julia programlarının doğrusal olmayan deprem analizleri ve paralel programlamaya uygunluklarının araştırılması
Applicability of Python and Julia languages to nonlinear seismic analysis of structures and parallel programing
Yazar: BARIŞ KASAPOĞLU
Danışman: YRD. DOÇ. DR. BARIŞ ERKUŞ
İstanbul Teknik Üniversitesi / Fen Bilimleri Enstitüsü / İnşaat Mühendisliği Ana Bilim Dalı / Yapı Mühendisliği Bilim Dalı
Derece: Yüksek Lisans, 2017
Konu: İnşaat Mühendisliği = Civil Engineering
Dizin: Deprem analizi = Earthquake analysis ; Doğrusal olmayan analiz = Nonlinear analysis ; Paralel programlama = Parallel programs

Özet:
Doğrusal olmayan analizler, deprem yükleri altındaki yapıların davranışını en iyi şekilde yansıtabilen yöntemler olarak kabul edilmektedir. Performansa dayalı tasarımda doğrusal olmayan analizler, doğrusal analizlere göre yapı hasar ve performansını daha iyi yansıttıklarından dolayı mühendislik alanında tercih edilmektedir. Bilimsel araştırmalarda ise her malzeme ve yapının doğrusal olmayan davranışının deneyler ile incelenmesi mümkün olmadığından, doğrusal olmayan analizler kullanılmaktadır. Fakat doğrusal olmayan analizlerin zorlukları vardır.
Doğrusal olmayan analizlerde karşılaşılan en önemli zorluk hata payı kabul edilebilir seviyedeki analizlerin çok vakit alıyor olmasıdır. Bunun bir nedeni, aynı zamanda doğrusal analizler ve benzer mühendislik problemleri için de geçerli olan yüksek ölçekli sistemlerde matris operasyonların fazla vakit alıyor olmasıdır. Bu operasyonların başında doğrusal denklem takımı çözümü gelmektedir. Büyük ölçekli sistemlerde elde edilen denklem takımları ve bunları ifade eden matrisler çok büyük olmaktadır. Özellikte deprem analizi gibi her zaman anı için denklem takımı çözümünün gerekli olduğu problemlerde bu süre oldukça yüksek olmaktadır.
Doğrusal olmayan analizlerin fazla vakit alıyor olmasının bir diğer nedeni, doğruluğu arttırmak amacıyla yayılı fiber modeller gibi doğrusal olmayan eleman sayısı fazla olan modellerin kullanılmasıdır. Doğrusal olmayan analizlerde, doğrusal analizlerden farklı olarak doğrusal olmayan elemanların iç kuvvetleri Newton-Raphson gibi yinelemeli yöntemler kullanılarak hesaplanmaktadır. Doğrusal olmayan eleman sayısı fazla ise, bu yinelemeler fazla olmakta ve bu durum analiz süresini oldukça arttırmaktadır. Bu problemden dolayı özellikle mühendislik alanında birçok durumda kabul edilebilir analiz süreleri elde edebilmek için modelin basitleştirilmesi gerekmektedir. Analiz sürelerini azaltmak amacıyla doğrusal olmayan eleman sayısını azaltmak, yayılı fiber modeller yerine yığılı plastisite modeller kullanmak, doğrusal olmayan malzeme davranışını parçalı doğrusal olarak ifade etmek ve yinemeli yöntemler yerine dengelenmemiş kuvvet düzeltmesi gibi yinelemesiz yöntemler kullanılabilmektedir. Ancak yapılan bilimsel çalışmalarda bu yaklaşımların analiz sürelerini azaltırken hata paylarını arttırdığı gözlemlenmiştir. Bilimsel araştırmalarda ise genellikle programlanması kolay ve geniş kütüphane imkanları olan Python ve Julia gibi betik diller kullanılmaktadır. Burada da büyük ölçekli problemlerde betik dillerin doğasından kaynaklı benzer süre sıkıntıları yaşanmaktadır.
Doğrusal olmayan analizlerde süreleri azaltmak maksadı ile kullanılan en önemli yaklaşım paralel programlamadır. Paralel programlama genellikle doğrusal denklem takımı çözümü için kullanılmaktadır. Doğrusal denklem takımı çözümü birçok mühendislik alanında karşılaşılan ortak bir problem olduğundan dolayı özellikle matematik ve bilgisayar alanında çalışan araştırmacılar denklem takımı çözüm sürelerini paralel programlama ile kısaltmışlardır (Intel, 2017; NAG, 2017). Bu yöntemlerde ana amaç büyük denklem takımını daha küçük takımlar ile ifade edip işlemcileri eş zamanlı paralel bir biçimde kullanarak toplam denklem takımının çözüm süresini kısaltmaktır. Sonuç olarak, doğrusal olmayan analizlerde denklem takımının çözümü paralel programlama ile hızlandırılabilmektedir. Ancak literatürde doğrusal olmayan eleman sayısının fazla olması durumunda oluşan süre maliyetini paralel programlama ile azaltacak bir araştırma bulunmamaktadır.
Bu çalışma kapsamında ilk aşamada, bilimsel araştırmalarda sıklıkla tercih edilen Python ve Julia programlama dilleri ile zaman tanım alanında doğrusal olmayan analiz programları geliştirilmiştir. Malzemenin eğilme etkisi altında doğrusal olmayan davranışı, yığılı plastisite modeli kullanılarak çubuk eleman uçlarında boyutsuz dönme yayları ile tanımlanmıştır. Yapı elemanlarının kesit özelliklerinden moment-eğrilik ilişkisi elde edilmiştir. Moment-eğrilik ilişkisinden plastik bölge uzunluğu kullanılarak moment-dönme ilişkileri belirlenmiştir. Plastik bölge uzunluğu elemanların eğilmeye çalışan boyutlarının yarısı olarak kabul edilmiştir. Kolon ve kiriş elemanların yüzeylerine moment-dönme ilişkisi belirlenmiş boyutsuz yay elemanları yerleştirilmiştir. Geri kalan eleman bölgeleri çubuk elemanlar ile modellenmiştir. Zaman tanım alanında doğrusal olmayan analizde Newmark-  ve  dengesiz kuvveti düzeltme yöntemleri kullanılmıştır. İkinci aşamada Python'da, doğrusal olmayan elemanların iç kuvvetlerinin hesaplandığı aşamada "multiprocessing" kütüphanesinin sağladığı araçlar kullanılarak paralel programlama uygulanmıştır. 
Birinci bölümde, tezin konusu, amacı ve kapsamından bahsedilmiştir.
İkinci bölümde, temel bilgilerden ve literatür araştırasından bahsedilmiştir. Betonarme yapılarda doğrusal olmayan davranış, betonarme malzemenin doğrusal olmayan davranışının modellenmesi, elemanlarda doğrusal olmayan davranışın modellenmesi, idealleştirme yöntemleri, doğrusal ve doğrusal olmayan statik ve dinamik analiz yöntemleri, seri ve paralel programlama, bellek yapısı, doğal ek süre etkisi ve inşaat mühendisliğinde paralel programlama uygulamaları hakkında bilgiler verilmiştir.
Üçüncü bölümde, tez kapsamında kullanılan yöntemlerden bahsedilmiştir. Bunlar, malzeme modelleri, kesit analizinde izlenen yöntemler, çift-doğrusal model, moment-dönme ilişkisi, çubuk ve yay eleman modelleri, doğrusal statik analiz yöntemi, zaman tanım alanında doğrusal ve doğrusal olmayan dinamik analiz yöntemleri, Python ve Julia ile geliştirilen zaman tanım alanında doğrusal olmayan analiz programlarının algoritması ve Python'da paralel programlama uygulamasıdır. 
Her biri 4 açıklıklı olan 10, 25, 50, 75 ve 100 katlı 5 adet çerçeve örnek için analizler yapılmıştır. Bir deprem kaydı için doğrusal olmayan elemanların iç kuvvetlerinin ardışık ve paralel hesaplanması durumunda sadece bu hesaplar için gerekli olan süreler elde edilerek karşılaştırılmıştır.
Dördüncü bölümde, incelenen örnek yapılar ve depremsellikten bahsedilmiştir. Her biri 4 açıklıklı olan 10, 25, 50, 75 ve 100 katlı 5 adet çerçeve yapı örneği için Darfield deprem ivme kaydı kullanılarak zaman tanım alanında doğrusal olmayan analizler yapılmıştır.
Beşinci bölümde, analiz sonuçları karşılaştırılmış ve değerlendirilmiştir. İlk aşamada Python ve Julia programları ile 10 katlı yapı örneği için zaman tanım alanında doğrusal ve doğrusal olmayan analizler yapılmıştır. SAP2000 programı ile aynı analizler gerçekleştirilerek sonuçları karşılaştırılmıştır. İkinci aşamada beş yapı modeli için Python'da seri ve paralel programlama ile hazırlanan yazılımlar ile zaman tanım alanında doğrusal olmayan analizler gerçekleştirilmiştir. Doğrusal olmayan elemanların iç kuvvetlerinin paralel ve seri hesaplanma süreleri karşılaştırılmıştır.
Altıncı bölümde sonuç ve yorum kısmı bulunmaktadır.

Abstract:
More detailed analyses can be conducted in recent years with better understanding of building   behavior through scientific studies, the progress of construction technology and the development of computers with high computational power. The target performance for classical structures in the 2007 earthquake regulations is expressed as "no damage to the structural and non-structural system elements of buildings in mild intensity earthquakes, limited and repairable level of potential damage in structural and non-structural elements in moderate intensity earthquakes, and provision of life safety and limitation of permanent structural damage in severe earthquakes" (s. 1). 
The performance targets for the potential earthquake scenarios are determined in more detail according to the type and importance of the buildings in the Earthquake Regulations of the Buildings in Turkey of which draft has been published and which is scheduled to come into force in year 2017. The performance targets in the regulations are tried to be met through calculations made during the project design stage, by taking into consideration the design objectives of the buildings, their strategic importance and the post-earthquake expectations of the building owners. Linear analyses remain inadequate because the objective in performance-based design is to predict the trans-elastic behavior. It is important to use nonlinear analysis methods at this point. 
Nonlinear analyses are accepted as methods that can best reflect the behavior of structures under earthquake loads. Nonlinear analyses in performance-based design are preferred in engineering because they reflect structure damage and performance better when compared to linear analyses. For scientific research, nonlinear analysis is used because it is not possible to examine nonlinear behavior of each material and structure with experiments. 
In nonlinear analyses, lumped plasticity models are the most used nonlinear models. In lumped plasticity models, the strength and stiffness degradation modes are expressed by a macro model. Due to the fact that lumped plasticity models are a macro model, the analysis time is fast, but since non-linear modes are not explicitly modeled, it is difficult to use them outside of the projected behavior. If the lumped plasticity models are to be analyzed on an element basis, a good calibration can give results with high accuracy. However, in all structural analyses, accuracy is reduced because the calibrations become very difficult or impossible and effects that the model does not anticipate occur. In this case, depending on the nature of the problem, it is preferable to use modeling and analysis methods with higher accuracy.
It is accepted that the distributed plasticity models have higher accuracy than the lumped models with correct calibration, since the degradation modes are explicitly modeled. Fiber models can be shown as an example of distributed plasticity models. In fiber models, the section is divided into many fibers and with each of these fibers, non dimensional springs representing the nonlinear behavior of the material are expressed. Therefore, one non-linear element in the lumped model must be expressed by tens, or even hundreds of non-linear elements in the distributed model. The practical engineering approach is to use lumped models for truss elements in large-scale structures, and to use distributed models for the points that nonlinear behavior is most anticipated. For example, in high buildings, while lumped models are used in columns and beams, distributed models are only used in lower floors where nonlinear behavior is anticipated for reinforced concrete partition walls. Distributed models which are considered to better reflect behavior in all elements for both elemental and structural analysis can be used for scientific studies. 
The most important obstacle in nonlinear analyses is that analyses of acceptable levels take a great deal of time. One reason for this is that matrix operations, which also apply to linear analysis and similar engineering problems, take a lot of time in high-scale systems. The solution of a set of linear equations is leading these operations. In large scale systems, the sets of equations that are obtained and the matrices expressing them are very large. Especially in problems such as earthquake analysis where the solution of the equation set is always necessary for each moment, this duration is quite high.
Another reason why non-linear analyses take too much time is using models with a large number of non-linear elements, such as distributed fiber models, to increase accuracy. In non-linear analyses, unlike linear analyses, the internal forces of nonlinear elements are calculated using recursive methods such as Newton-Raphson. If the number of nonlinear elements is large, these recursions become too many and this greatly increases the duration of the analysis. Due to this problem, the model needs to be simplified in order to obtain acceptable analysis times, especially in the engineering field. In order to reduce the analysis time, it is possible to use non-recursive methods such as decreasing the number of nonlinear elements, using lumped plasticity models instead of distributed fiber models, expressing nonlinear material behavior piecewise linearly, and unbalanced force correction instead of recursive methods. However, in scientific studies, it has been observed that these approaches increase error rates while reducing analysis times. While for scientific research, scripting languages are used such as Python and Julia, which are generally easy to program and have extensive library options. In the case of large scale problems, similar duration problems are experienced due to the nature of the script languages.
In nonlinear analysis, the most important approach used to reduce durations is parallel programming. Parallel programming is usually used for solution of a set of linear equations. Since the solution of the linear equation set is a common problem encountered in many engineering fields, to solve this common problem, researchers working especially in the field of mathematics and computer have shortened the solution times of the linear equation sets by parallel programming (Intel, 2017; NAG, 2017). In these methods, the main purpose is to shorten the solution time of the total equation set by expressing the large equation set with smaller sets and using the processors in parallel concurrently. As a result, the solution of the equation set in nonlinear analysis can be accelerated by parallel programming. However, in the literature, there is no research to reduce the time cost that occurs with parallel programming if the number of nonlinear elements is large.
In the first stage of this study, nonlinear analysis programs in time history are developed with Python and Julia programming languages which are frequently preferred in scientific researches. Nonlinear behavior of the material under the flexure effect is defined by the dimensionless rotation springs at the ends of the truss elements using the lumped plasticity model. The moment-curvature relationship is obtained from the cross-sectional properties of the structural elements. Moment-rotation relations were determined by using the plastic zone length in relation to the moment-curvature relationship. The plastic zone length is considered to be half of the flexural dimensions of the elements. Dimensionless spring elements with undefined moment-rotation relationship are placed on the surfaces of the column and beam elements. The rest of the element zone is modeled with truss elements. Newmark-  and  unbalanced force correction methods are used for nonlinear analysis in time history. In the second stage, parallel programming is implemented in Python using the tools provided by the "multiprocessing" library during the computation of the internal forces of the nonlinear elements. 
In the first chapter, the subject, the aim and the scope of the thesis are mentioned.
In the second chapter, essential information and literature research are mentioned. Information was given about nonlinear behavior in reinforced concrete structures, modeling nonlinear behavior of reinforced concrete materials, modeling of nonlinear behavior in elements, idealization methods, linear and nonlinear static and dynamic analysis methods, serial and parallel programming, memory structure, natural addition time effect and parallel programming applications in civil engineering.
In the third chapter, the methods used in the thesis are mentioned. These are material models, methods used in section analysis, double-linear model, moment-rotation relation, truss and spring element models, linear static analysis method, linear and nonlinear analysis methods in time history, algorithm of nonlinear analysis programs developed in time history with Python and Julia and parallel programming application in Python. 
Analyzes were made for 5 frame samples of 10, 25, 50, 75 and 100 stories, each with 4 spans. For an earthquake recording, in case of sequential and parallel calculation of the internal forces of nonlinear elements, only the times required for these calculations are obtained and compared.
In the fourth chapter, examined structural examples and seismicity are mentioned. Nonlinear analyzes were performed in the time history using Darfield earthquake acceleration records for 5 frame samples of 10, 25, 50, 75 and 100 stories, each with 4 spans.
In the fifth chapter, the analysis results are compared and evaluated. In the first stage, Python and Julia programs were used to perform linear and nonlinear analyses in the time history for the 10-storey structure sample. The same analyses were performed with the SAP2000 program and the results were compared. In the second stage, nonlinear analysis in time history was performed with software made by serial and parallel programming in Python for five building models. The parallel and serial calculation times of the internal forces of the nonlinear elements are compared.
The sixth chapter contains the results and comments section.