Thursday, November 26, 2015

Цэгэн мэдээллийг Нюфлотоор дүрсжүүлэх /Plotting point data using Gnuplot/

Цэгэн мэдээллийг Нюфлотоор дүрсжүүлэх
Plotting point data using Gnuplot


Хүндийн хүчний үйлчлэл дор тээвэрлэгдэж буй хагшаасны ширхэглэлийн хурдны орон
Тооцон бодох ухааны тооцооллын эцсийн үйлдэл бол төгсгөл үйлдэмж /post-processing/ юм. Ялангуяа шингэний динамикт Лагранжийн аргачлалаар шингэний хөдөлгөөнийг загварчилах эсвэл молекул динамикт молекулуудын хөдөлгөөнийг Ньютоны хоёрдугаар хуулиар загварчилах гэх мэт тохиолдолд гарч байгаа үр дүн болох цэгэн/эгэл хэсэг дээрх физикийн утгыг ялган харуулах шаардлага гардаг. 
Ялангуяа, Гөлгөржүүлсэн эгэл хэсгийн гидродинамик, хөдлөх эгэл хэсгийн хагас илэрхий арга гэх мэт Лагранжийн эгэл хэсэгт суурилсан аргуудаар шингэний хөдөлгөөнийг тооцоолж байгаа үед яалтачгүй цэгийн мэдээллийг янз бүрийн байдлаар дүрсжүүлж бичлэгжүүлэх шаардлага гарна. Одон орон судлалд одод, одонцоруудын мөргөлдөөн гэх мэт зүйлс мөн л цэгийн мэдээллээр л өгөгдөнө. За олон юм нуршилгүй яаж цэгэн мэдээллээ дүрсжүүлэх Нюфлотын кодыг авч үзье.

Дүрсжүүлэх цэгийн өгөгдөл дараах форматтай байх ёстой. 
           х-коорд            у-коорд         u хурд               v хурд             хурдны утга г.м
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
   1.848457       49.90200     -4.5617670E-03  0.4317524      0.4317766    
   1.069589       49.48754     -4.0310090E-03  0.4320677      0.4320865    
   1.148008       50.39544     -3.7596901E-03  0.4432321      0.4432481    
   1.789454       50.03515     -4.4172662E-03  0.4320339      0.4320565    
   1.479118       49.88972     -4.3432880E-03  0.4357119      0.4357335    
   1.909410       50.53201     -4.1229133E-03  0.4313111      0.4313308    
   1.366603       50.48363     -3.8172128E-03  0.4329630      0.4329798    
   1.057175       51.05782     -3.3803233E-03  0.4348930      0.4349062    
   1.535821       51.21601     -3.5088395E-03  0.4341601      0.4341743    
   1.024988       50.86665     -3.4499625E-03  0.4345306      0.4345443    
   1.467661       51.15146     -3.2306374E-03  0.4258817      0.4258939    
   1.508411       51.80827     -3.0785487E-03  0.4320947      0.4321057    
   1.490205       51.79824     -2.9764872E-03  0.4289348      0.4289452    
   1.346225       51.31340     -3.2362386E-03  0.4292993      0.4293115    
   1.397864       52.43371     -2.7079552E-03  0.4326916      0.4327000    
   1.346421       52.71415     -2.5073697E-03  0.4290131      0.4290204    
   1.931909       53.25024     -1.9664604E-03  0.4342334      0.4342378    
   1.432166       52.72320     -2.4806915E-03  0.4289750      0.4289821    
   1.782661       52.55309     -2.5718026E-03  0.4310014      0.4310091    
   1.169831       52.67693     -2.6085621E-03  0.4318948      0.4319027    
   1.163386       53.70313     -2.0054306E-03  0.4253627      0.4253675    
   1.193735       52.92964     -2.3666953E-03  0.4262797      0.4262863    
   1.096532       53.65016     -2.1459244E-03  0.4282845      0.4282899    
   1.198880       53.65632     -2.0779141E-03  0.4282452      0.4282503    
   1.396080       53.64140     -1.9542461E-03  0.4279432      0.4279477    
   1.106996       54.02559     -1.8376508E-03  0.4228870      0.4228910    
   1.031372       54.81067     -1.6790556E-03  0.4260052      0.4260086    
Дээрхи мэдээ нь .txt эсвэл .dat гэх мэт мэдээний өргөтгөлтэй хадгалагдах хэрэгтэй бай фортран дээр дараах маягаар бичнээ.


1
2
3
4
5
6
7
8
      write(rr,300) 10000+np
300   format(i6)
      open(2000,file='pvel'//TRIM(rr)//'.dat')
   
      do n=1,npmax

      write(2000,*) x(n), y(n), up(n), vp(n), sqrt(up(n)**2+vp(n)**2)
      enddo
Дээрхээс зөвхөн давталтыг л анхаараарай. Бусад нь цуваа мэдээлэл үүсгэх командууд юм. 
За дээрх цэгийн мэдээлэл шиг наг файл байлаа гэхэд Нюфлот дээр дараах командыг бичих эсхүл терминал дээр дуудаж оруулж ирнэ.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
 #gnuplot script for ploting particle velocity.
 reset
 set term pngcairo size 2000,1000
 set output 'pval10098.png'
 set size ratio 0.5
 set pm3d
 set xrange [1:200]
 set yrange [1:100]
 set palette rgb 33,13,10
 unset key
 plot 'pvel 10098.dat'u 1:2:5 with points palette pt 7 ps 0.4
 
 set term win
 unset output
Дээрхийг тайлбарлавал set pm3d  гэдэг нь өнгөтөөр гурав эсвэл дөрвөн хэмжигдэхүүнт график зурахад туслах загвар юм. Харин set palette rgb 33,13,10 гэдэг нь өнгөний кодыг солонгон байлгах комманд юм. Үүнийг оруулах бол өгөгдмөл өнгөний код нь хараас ягаанлуу ууссан байдалтай байна. Хэвлэх коммандын мөрөнд мэдээний багануудыг u 1:2:5 зааж өгсөнийг харж байгаа байх. Энд цэгэнд өнгө өгч байгаа мэдээ нь гурав дахь багана буюу 5 гэсэн дугаартай багана байна. Энэ нь манай жишээний хувьд Хурдны утга гэдэг 5-дугаар багана байна. 
Үр дүнд дараах зургийг гаргаж авах болно. 
Энэ мэтчилэн олон цуваа зургуудыг үүсгэсэний дараа хөдөлгөөнт бичлэг хийх шаардлага гарч магадгүй. Үүнийг Нюфлот дээр хийдэг боловч одоогоор сурж амжаагүй байгаа учир ImageMagick ашиглан хийе ээ. Үүний тулд мөн терминал дээрээ дараах коммандыг өгнө. 

convert -loop 0 pval*.png pami.gif

Хэрэв зураг хоорондын шилжих хугацааг удаан байлгахыг хүсвэл -delay гэж удаашруулах утгатай нь бичиж болно. pval*.png гэдэг нь зургийн цуваануудыг илэрхийлэх ба * нь нэрсийн өөрчлөгдөж байгаа тэмдэгтийг харуулна. Жишээ нь 

Эдгээр зургуудаар л хөдөлгөөнт зураг хийж нийтлэлийн дээр харуулав. 
Ташрамд хэлэхэд DEM, DTM болон DSМ гэх мэт газрын гадаргын тоон загваруудын мэдээллийг дүрслэн харуулж болох юм. 

Нюфлотыг ойлгохгүй бол өмнөх холбоотой нийтлэлүүдийг сонирхоно уу. 

No comments:

Post a Comment