Saturday, February 25, 2017

Эрдмийн ажлын график-дүрслэлийг Нюфлотоор зурах нь /Scientific plotting with gnuplot/

Эрдмийн ажлын график-дүрслэлийг Нюфлотоор зурах, дүрсжүүлэх

"Дөтгөөр хэсэг"

Нюфлоттой ажиллана гэдэг бол хаа нэгтэйгээс бичигдсэн кодуудыг нь цуглуулж олж ирж өөрийн зурах гэж байгаа графиктаа ашиглана гэсэн үг. Нюфлотын ажлын кодын алгоримтыг харуулбал:

 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
28
29
30
31
32
33
# gruplot algorithm 
reset #нюфлот дээр өмнө хийгдсэн ажлын 
#хадгалагдсан үлдэгдэлүүдийг арчих. 
set terminal #терминалаа шаардлагатай
#сонголтуудтай нь хийнэ. 

set output #хэвлэж гаргах файлын нэр,
#өргөтгөлөө өгнө. Терминалаас хамаарна. 

set axis, its range #Энд графикын талбарын
#тохиргоог хийнэ. Бүлэг графикуу, нэг
#графикуу, хэдэн тэнхлэгтэй байх уу?
#тэнхэгийн утгын хүрээ, яаж нэрлэх гэх мэт.

set line, point style #муруй шугам, 
#цэгнүүдийн тохиргоог хийж өнгө төрлийн 
#загвараа тохируулна. Гэхдээ үүнийг график 
#зурахдаа тохируулж болно.

set key position #Графикийн тэмдэглэгээний 
#байрлал энэ тэрийг тохируулна. 

plot data #энэ гол комманд бөгөөд мэдээг 
#дүрсжүүлэх ажил хийгдэнэ. Энд аль мэдээг 
#дүрсжүүлэхээ сонгож, зураас, өнгөний загвар 
#сонгох, тэмдэглэгээнд нэр өгөх гэх мэт 
#тохиргоо хийгдэж болно. 

unset terminal #Дүрсжүүлэх ажил дууссан бол 
#терминалаа чөлөөлж ажлыг дуусгана. 

unset output #Энд хэвлэж гаргаж байгаа 
#файлаа чөлөөлж эцсийн бүтээгдэхүүн болгоно. 



Том мэдээг дүрсжүүлэх тохиолдолд 23-р мөр жаахан уртсаж эхэлнэ. Уг нюфлотын файлын өргөтгөл нь *.р байдаг гэдгийг өмнө нь дурьдаж байсан байх. Нэг гоё тал нь нюфлотын дээрх кодыг фортран кодноос дуудаж ажиллуулах боломжтой байдаг. Ганц фортран гэлгүй С/С++, Пайтон, Жава дээр боломжтой. Энэ талаар дараа дурьдах болно. Энэ нийтлэлээр дараах хоёр графикийг авч үзнэ. Энэ хоёр нь Стефаны бодлогын үр дүнгүүд юм. 
Зурагт график: Энэ нь х ба у тэнхлэгт харгалзах тоон утгууд байх ба тэдгээрийг утгын хүрээнд нь өнгөний уусгалт өгч дүрслэн харуулахыг зурагт график гэнэ. Зурагт графикийг скаляр орон, вектор орны утгыг харуулахад ашиглана. Тэгэхээр хэрэглээний мат, физ, инженерчлэлд ач холбогдолтой гэсэн үг юм.
Дээрх графикт зурагт графикаас гадна, хоёр муруй шугаман график байна. Мөн хажуу талдаа өнгөний шугаман хуваарь байгааг харж байгаа байх. Газрын зургыг өндрийн ялгавараар зурж байна л гэсэн үг юм. Энэ графикийг дараах кодны тусламжтайгаар байгуулна. Дээрх ерөнхий алгоримтойгоо харьцуулж хараарай. 

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# grunplot script for scalar color map plot
# 1D classic Stefan problem
 reset
  set term postscript landscape enhanced font "Times-New-Roman, 25" # size 10,4
 set output 'melting.esp'
# set title "Time history of interface location and temperature distribution"
 set xlabel "{{/Times-Italic Length} (m)}" offset -0,-0.0001
 set ylabel "{{/Times-Italic Time} (hours)}" offset 2,-0
 set xrange [0:100]
 set yrange [0:200]
 set ytics ("0.0" 0, "8.50" 50, "17.01" 100, "25.51" 150, "34.02" 200)
 set xtics ("0.0" 0, "0.02" 20, "0.04" 40, "0.06" 60, "0.08" 80, "0.01" 100)
 set key at 90, 200
 set palette defined ( 0 "blue", 1 "green", 2 "red")
 set cbrange [0:25]
 set cblab '{/Times-Italic Temperature} ({/Symbol \260}C)' offset 0,0
 plot 'temp2.dat' matrix with image notitle,\
      'interfaceAS.dat' u 2:1 w lp ls 10 pi -10 lc rgb 'black' lw 5 title 'Analytical solution' ,\
      'interfaceLB.dat' u 2:1 w lp ls 5 pi -10 lc rgb 'black' lw 5 title 'Present LB model' ,\
   
 unset multiplot
 set term win
 unset output 
Дээрх кодонд шинэ зүйл гэвэл х болон у тэнхлэгт өөр утга оноосныг 11 ба 12 мөрөнд харж болно. Тэнхлэгүүдийн үндсэн утгын хүрээг 9 ба 10 мөрөнд харж байгаа байх. 
13- мөрөнд тэмдэглэгээг координатаар байрлуулахыг харуулсан байна. 14-т зурагт графикийн өнгөний оноогдлыг өгч байгаа юм. Тоон өгөгдөл дундаас хамгийн их, дундаж, бага гэсэн гурван утгыг сонгож тус бүрд хөх, ногоон, улаан өнгийг энэ дарааллаар уусгаж бусад тоон өгөгдөлд хуваарилна гэсэн үг юм. 14-г яаж тохируулсанаас хамаарч зурагт графикийн өнгөний загвар шийдэгдэнэ. Маш олон хувилбараар зурж болох ба хамгийн царайлаг хувилбаруудыг
Энэ нөхрөөс харж болно. ----> github --- эсвэл сайтаас нь
Дараачийн 15-р мөрөнд шугаман хуваарийн утгыг оноож өгч байна. Жишээ нь манай графикт хамгийн их температур 25, бага нь 0 учир ингэж өгчээ. 
16-р мөрөнд шугаман хуваарийн гарчгийг өгч байна. Тэгээд зурагт графикаа 17-р мөрөнд матриц ... гэх маягаар байгуулсан байна. Үүнээс өөрөөр зурагт график байгуулах арга байгаа. 
18 ба 19-д ердийн шугаман график байгуулсан байна. Дээр байгаа хоёр хар шугам гэсэн үг.
Хоёр дахь график нь:
Хоёр хэвтээ тэнхлэгтэй, тэнхлэг дээрх хуваарь нь харгалзах муруйтайгаа ижил өнгөтэй, тэмдэглэгээ нь зөвхөн хараар тэмдэглэгдсэн ийм график байна. 
энэ графикийг дараах кодоор зурна. 


 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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# grunplot script for scalar color map plot
# 1D classic Stefan problem
 reset
  set term postscript landscape enhanced font "Times-New-Roman, 22" # size 10,4
 set output 'stef.esp'
# set title "Temperature profiles"
 set x2tics textcolor rgb "red"
 set xtics nomirror textcolor rgb "blue"
 set xlabel "{{/Times-Italic Length} (m)}" offset -0,-0.0001
 set x2label "{{/Times-Italic Time} (hours)}" offset -0,-0.0001# -10,-0.0001
 set ylabel "{{/Times-Italic Temperature} ({/Symbol \260}C)}" offset 2,-0
 set xrange [0:0.1]
 set x2range [0:30.0]
 set yrange [0:27]
#
 set label 1 "0.34, 3.06, 8.50, 27.6 hours" at 0.024, 23
 set arrow 1 from 0.0017, 15 to 0.023, 23
 
 set label 2 "1.0, 3.0, 5.0, 9.0 cm" at 0.07, 6
 set arrow 2 from 0.075, 23 to 0.085, 7
#
 set key top right #at 0.1, 31
 plot '1cm101224.dat' u 1:2 w lp ls 10 pi -5 lc rgb 'blue' lw 5 notitle axes x1y1,\
      '3cm111021.dat' u 1:2 w lp ls 10 pi -5 lc rgb 'blue' lw 5 notitle axes x1y1,\
      '5cm130614.dat' u 1:2 w lp ls 10 pi -5 lc rgb 'blue' lw 5 notitle axes x1y1,\
      '9cm199189.dat' u 1:2 w lp ls 10 pi -5 lc rgb 'blue' lw 5 notitle axes x1y1,\
      '1cmlb.dat' u 1:2 w lp ls 5 pi -5 lc rgb 'blue' lw 5 notitle axes x1y1,\
      '3cmlb.dat' u 1:2 w lp ls 5 pi -5 lc rgb 'blue' lw 5 notitle axes x1y1,\
      '5cmlb.dat' u 1:2 w lp ls 5 pi -5 lc rgb 'blue' lw 5 notitle axes x1y1,\
      '9cmlb.dat' u 1:2 w lp ls 5 pi -5 lc rgb 'blue' lw 5 notitle axes x1y1,\
      '1cmtan.dat' u 1:2 w lp ls 10 pi -10 lc rgb 'red' lw 5 notitle axes x2y1,\
      '3cmtan.dat' u 1:2 w lp ls 10 pi -10 lc rgb 'red' lw 5 notitle axes x2y1,\
      '5cmtan.dat' u 1:2 w lp ls 10 pi -10 lc rgb 'red' lw 5 notitle axes x2y1,\
      '9cmtan.dat' u 1:2 w lp ls 10 pi -10 lc rgb 'red' lw 5 notitle axes x2y1,\
      '1cmtlb.dat' u 1:2 w lp ls 5 pi -10 lc rgb 'red' lw 5 notitle axes x2y1,\
      '3cmtlb.dat' u 1:2 w lp ls 5 pi -10 lc rgb 'red' lw 5 notitle axes x2y1,\
      '5cmtlb.dat' u 1:2 w lp ls 5 pi -10 lc rgb 'red' lw 5 notitle axes x2y1,\
      '9cmtlb.dat' u 1:2 w lp ls 5 pi -10 lc rgb 'red' lw 5 notitle axes x2y1,\
      'titlean.dat' u 1:2 w lp ls 10 pi -10 lc rgb 'black' lw 5 title 'Analytical solution' axes x1y1,\
      'titlelb.dat' u 1:2 w lp ls 5 pi -10 lc rgb 'black' lw 5 title 'Present LB model' axes x2y1
   
 unset multiplot
 set term win
 unset output 
Кодонд 7-14 хүртэл тэнхлэгүүдийн тохиргоог хийж байна. 7 ба 8-д тэнхлэгийг зарлаж тоон утгыг нь өнгөөр илэрхийлэхийг заасан байна. 16-20 мөрөнд хоёр сум, хоёр тайлбарыг оруулсан байна. Ингээд 23-аас эхлэн графикаа зурж байна. 39 ба 40 нь зөвхөн тэмдэглэгээнд зориулсан хуурамч мэдээнүүд юм. Нэг хэсэг график нь улаанаар, нэг хэсэг нь хөхөөр, гэхдээ хоёр өөр төрлийн цэгтэй шугам байгааг харж байгаа байх. Муруй бүрийг тэмдэглэнэ гэвэл мань графикийн талбар хүрэлцэхүй, тиймээс зөвхөн муруйн төрлөөр нь тэмдэглээд улаан, хөхөөс өөр өнгө ашиглах нь хамгийн ойлгомжтой болох хувилбар юм. Ингээд 39 ба 40-г зөвхөн тэмдэглэгээнд ашиглаж байгаа юм. Энэ хоёроор байгуулагдах график нь х-ийн тэг, у-ийн тэг дээр харагдаж байгаа. Гэхдээ хүмүүс анзаарахгүй. 

Ийм хоёр график зураг кодноос өөр бусад графикт ашиглах мөрнүүд олон бий. 

No comments:

Post a Comment