SeyrüseferİhbarnameEmare → Mühendishane için Kod Renklendirme Altyapısı vs.

Mühendishane için Kod Renklendirme Altyapısı vs.

İhbarname - Emare
Cuma, 17 Şubat 2017

Site için gelecekteki bazı çalışmalarda okuyucular açısından verimi artırabilmek amacıyla kod renklendirme altyapısı kuruldu. Bu ne işe yarar diyenler için kısaca ifade etmek gerekirse; herhangi bir yazılım dilinde hazırlanmış kaynak kodlarının uygun şekilde renklendirilmesi suretiyle daha kolay okunabilir hâle gelmesini sağlar.

Bu vesîle ile tahmin edilebileceği gibi Üsküdar Mühendishanesinde gelecekte yazılım temelli çalışmalara daha fazla yer verilmesi muhtemeldir. Tabii ölüm var, kalım var kesin konuşmak mümkün değil ama en azından böyle bir niyet mevcut. Bunun yanında giderek artan ekran çözünürlüklerinden kaynaklanabilecek olası okuma zorluklarına karşı, kullanılmakta olan yazıyüzlerinde bazı değişiklikler de yapıldı.

Öncelikle son birkaç senedir temel içerik için kullanılmakta olan Monda bugünden itibaren sabit-genişlik sınıfından Inconsolata ile değiştirildi ve harf büyüklükleri ile de oynandı.

Bunun yanında cebir ifadelerinin sayfa içinde doğrudan gösterilebilmesi yönünde de bazı yenilikler olabilir. Şimdilik değişik yaklaşımlar inceleniyor, biri tercih edilebildiğinde yeni bir güncelleme yayınlanabilir.

Son olarak bahsi geçecek olan husus çalışır hâle getirilen yeni kod renklendirme altyapısı. Bu sayede daha sonra ele alınmaya çalışılacak bazı yazılım konularına ki büyük ölçüde sadece mühendislik amaçlarına yönelik ihtiyaçlar çerçevesinde belirlenecek, daha fazla ağırlık vermek söz konusu olabilecek. İlk safhanın gnuplot, ggplot2, GNU/Octave, Scilab, gmsh, C++ (OpenFOAM vs) ve matplotlib gibi Python türevlerini kapsayabileceği söylenebilir.

Aşağıda görülen birkaç numune sadece kurulan altyapının gerçek sunucu şartlarında farklı işletim sistemi ve tarayıcılarda nasıl davranacağını anlama amaçladır. Gerekli ince ayarlar tamamlanabildikten sonra ilgili içeriklerde bu altyapı kullanılabilecektir. Bununla birlikte henüz tam olarak çözülememiş bazı küçük sorunlar mevcut, mesela sabit-genişlik yazı yüzlerinin (burada şimdilik monospace kullanılmakta) bazı tarayıcılarda doğru çalışmaması gibi...

Söz konusu altyapının oluşturulması için açık kaynaklı GeSHi [1] yazılımı tercih edilmiştir ve herhangi bir javascript betiği kullanılmamaktadır. İlk denemeler aşağıda görülebilir.


♦ gnuplot:
  1. set logscale y
  2. set title "Bakiyeler"
  3. set ylabel 'Artık Değer'
  4. set xlabel 'Tekerrür'
  5. set grid
  6. plot "< cat log | grep 'Solving for Ux' | cut -d' ' -f9 | tr -d ','" title 'Ux' with lines,\
  7. "< cat log | grep 'Solving for Uy' | cut -d' ' -f9 | tr -d ','" title 'Uy' with lines,\
  8. "< cat log | grep 'Solving for p' | cut -d' ' -f9 | tr -d ','" title 'p' with lines,\
  9. "< cat log | grep 'Solving for k' | cut -d' ' -f9 | tr -d ','" title 'k' with lines,\
  10. "< cat log | grep 'Solving for omega' | cut -d' ' -f9 | tr -d ','" title 'omega' with lines
  11. pause 1
  12. reread

Kod.1) OpenFOAM artık değerlerinin yakın-gerçek zamanlı izlenebilmesi kullanılabilecek bir numune gnuplot betiği. Bu küçük kod, 2 Boyutlu bir çözüm ve k omega temelli türbülans modeli için izlenecek değişkenlere sahiptir. 3. boyut veya farklı türbülans modelleri için bazı değişiklikler gerekir, sonuç ise aşağıdaki gibidir.


k omega SSt için artık değerler

Resim.1) Yukarıdaki [kod.1] kullanılarak elde edilen bir artık değer grafiği.


♦ gmsh:
/********************************************************************* * * Gmsh tutorial 1 * * Variables, elementary entities (points, lines, surfaces), physical * entities (points, lines, surfaces) * *********************************************************************/ // The simplest construction in Gmsh's scripting language is the // `affectation'. The following command defines a new variable `lc':   lc = 1e-2;   Point(1) = {0, 0, 0, lc}; Point(2) = {.1, 0, 0, lc} ; Point(3) = {.1, .3, 0, lc} ; Point(4) = {0, .3, 0, lc} ;   Line(1) = {1,2} ; Line(2) = {3,2} ; Line(3) = {3,4} ; Line(4) = {4,1} ; Line Loop(5) = {4,1,-2,3} ;   Plane Surface(6) = {5} ;   Physical Point(1) = {1,2} ;   MyLine = 99; Physical Line(MyLine) = {1,2,4} ;   Physical Surface("My fancy surface label") = {6} ;

Kod.2) Örgü tanımlamak için kullanılabilecek bir numune gmsh betiği. Satır renklendirme ve numaralandırma kapalı.


♦ OpenFOAM:
  1. /*---------------------------------------------------------------------------*\
  2.   ========= | |
  3.   \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
  4.   \\ / O peration | |
  5.   \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation |
  6.   \\/ M anipulation | |
  7. -------------------------------------------------------------------------------
  8.   This file is part of OpenFOAM.
  9. \*---------------------------------------------------------------------------*/
  10.  
  11. #include "SpalartAllmaras.H"
  12. #include "bound.H"
  13. #include "wallDist.H"
  14.  
  15. // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
  16.  
  17. template
  18. tmp SpalartAllmaras::fw
  19. (
  20. const volScalarField&amp; Stilda
  21. ) const
  22. {
  23. volScalarField r
  24. (
  25. min
  26. (
  27. nuTilda_
  28. /(
  29. max
  30. (
  31. Stilda,
  32. dimensionedScalar("SMALL", Stilda.dimensions(), SMALL)
  33. )
  34. *sqr(kappa_*y_)
  35. ),
  36. scalar(10.0)
  37. )
  38. );
  39. r.boundaryField() == 0.0;
  40.  
  41. const volScalarField g(r + Cw2_*(pow6(r) - r));
  42.  
  43. return g*pow((1.0 + pow6(Cw3_))/(pow6(g) + pow6(Cw3_)), 1.0/6.0);
  44. }

Kod.3) OpenFOAM'da kullanılan öntanımlı Spalart-Allmaras türbülans modeli uyarlamasına (SA-fv3) ait kaynak kodundan rastgele seçilmiş küçük bir bölüm.


Durum şimdilik bundan ibâret...

♦ Kaynaklar

1. GeSHi - Generic Syntax Highlighter - http://qbnz.com/highlighter/
 







Telif Hakkı © 1997-2017 [uskudar.biz] - sürüm 5.5.1 - Bütün Hakları Saklıdır. Kullanım şartları için tıklayın!
Joomla! GNU/GPL lisansı altında özgür bir yazılımdır.