Wednesday, January 2, 2019

График дүрслэлийн Нюфлот програмыг Фортранаас дуудах нь/Gnuplot plotting with Fortran/

График дүрслэлийн Нюфлот програмыг Фортранаас дуудаж ажиллуулах нь

"Тавдугаар хэсэг"

Нюфлот буюу Gnuplot гээд програмыг эрдэмтэд, судлаачид мэдээлэл, өгөгдөл, үр дүнгүүдээ дүрсжүүлэх, график зурахад өргөн ашигладаг. Нюфлотын тухай хэд хэдэн нийтлэл байгаагаас (Gnuplot posts) яг яаж ажиллуулах, яаж график зурах талаар энд нарийн дурьдсан байгаа. 
Сүүлийн үеийн дэвшилтэт програмчлалын хэлнүүд C++, Python, R, Java, C# болон бусад хэрэгсэлүүд болох Mathlab, Matematica, LabVIEW гэх мэт өөрсдөө мэдээллийг дүрсжүүлэх боломжуудтай байдаг. Гэтэл зорилгоосоо хамаараад зарим хэлнүүдэд мэдээллийг дүрсжүүлэх боломжгүй байдаг (Коммандын мөр дээр тоогоор зурахыг эс тооцвол шүү дээ). Ийм хэлнүүдийг ашиглаж мэдээ шинжлэх, тооцоолол үйлдэх зэрэг ажлууд хийж байгаа бол үр дүнгүүдийг өөр нэг програмын буюу дээр дурьдсан хэрэгслүүдийн тусламжтайгаар зураглах шаардлага гарна. Мэдээж мэдээг дүрсжүүлэх Нюфлоттой ижил маш олон нээлттэй, лицензтэй програмууд (жагсаалтын эндээс хар) байгаа гэдгийг мэдэж байх хэрэгтэй. Нюфлот бол нээлттэй, маш хүчирхэг, энгийн, олон програмтай хамтарч ажиллах боломжтой, сэтгүүлийн стандартад нийцсэн зураглал үйлдэх боломжтой гэх мэт давуу талуудаараа хэрэглэгчдийг их татдаг байх. Энэ ч утгаа анх Нюфлотыг сурж ашиглаж ирсэн юм. Гэхдээ Фортран дээр тооцоо хийж үр дүнгүүдээ хэвлэж файл болгоод уг файлуудаа дуудаж Нюфлот дээр график зурдаг байсан юм. Өөрөөр хэлбэл доорхи зурган дээрх шиг 2 консоль нээчихээд л үзэж дардаг байсан гэсэн үг.
Фортран болон Нюфлотын консолиуд.
Үнэндээ бол Нюфлотын кодыг фортранд шигтгэж өгөх, эсвэл Нюфлотыг фортранаас дуудах боломжтой гэдгийг мэддэг ч зүгээр л зориглож хийдэггүй байлаа л даа. Энэ удаад яаж Нюфлотыг фортранаас дуудаж ажиллуулах талаар тайлбарлана. Үнэндээ маш амархан эд байсан байна лээ. 
Жишээгээр нэгэн төрлийн шороон боомтын дотуурх шүүрэлтийн тооцоог хийж, бууралтын муруйг байгуулна. Шороон боомт гэж мэдэхгүй бол энд дарж уншаарай. 
Боомтын шүүрэлтийн тооцоогоор шүүрэлтийн усны бууралтын муруйг Дюпигийн тэгшитгэлээр (Dupuit equation) бодож, шүүрэлтийн усны хэмжээ болон бат бэхийг тус тус шалгана. 
Тооцоо хийх фортран кодыг оруулбал:

Дээрх кодны 11-25-р мөр тооцооны өгөгдлүүдийг оруулж байгаа бөгөөд 27, 28-д байгаа хоёр файлуудад бууралтын муруйн координатууд, боомтын геометр хэлбэрийн мэдээллийг тус тус бүртгэнэ. Ингээд бодолт яваад файланд үр дүнгээ бичсэний дараа хамгийн чухал үйл явдал буюу график зурах Нюфлотыг дуудаж байгаа хэсэг 78-р мөрөнд явж байна. Ер нь фортранаас ямар ч програмыг дуудаж ажиллуулж болно. Гол нь уг програмын exe файлын зам нь комны тань Environmental variables дотор орсон байх ёстой. Энэ мөрөнд нюфлотын xy.plt гэсэн файлыг дуудаж байна. Энэ файл нь график зурах кодуудтай файл бөгөөд харуулбал:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
 # Шүүрэлтийн муруйн ординат тодорхойлох график зурах
 reset
 set term pngcairo
 set output 'xy.png'
 m="./xy.dat"
 n="./damsize.dat"
 set ylabel "Шүүрэлтийн муруйн ординат, м"
 set xlabel "Тооцооны хэсгийн урт, м"
 set size ratio -1
 set grid
 set title 'Шүүрэлтийн усны бууралтын муруй'
 set key right
 
 plot n u 1:2 with linespoints ls 2 lw 2 title "Боомт", \
      m u 1:2 with linespoints ls 1 lc 3 title "h=f(l)"
 
 set term win
 unset output

Фортран ажиллаж байхдаа дээрх кодыг дуудна. Дуудсаны дагуу Нюфлот ажиллаж график зурж харуулна. Зурсан график нь xy.png гэсэн файл бөгөөд түүнийг харвал:
Нэгэн төрлийн шороон боомтын дотуурх шүүрэлтийн усны бууралтын муруй
Ийм л амархан эд байж.

3 comments:

  1. This comment has been removed by the author.

    ReplyDelete
    Replies
    1. This comment has been removed by the author.

      Delete
    2. Сайн уу. ФБ-ээр холбогдож програмаа асуусан хүн мөн үү. Би тун завгүй байгаа учир сайн зөвлөгөө өгч чадахгүй байхаа. Ямар ч байсан тасралтгүй оролдоод байвал хосолсон хөтөлбөрөө дуусгаж чадна шүү.

      Delete