Tuesday, December 25, 2018

Микро-хэмжээст сүвэрхэг орчинг дурын түгэлтээр байгуулах тухай /Generation pore scale porous media by random distribution

Микро-хэмжээст сүвэрхэг орчинг дурын түгэлтээр байгуулах тухай (Generation of pore scale porous media by random distribution)

Шинжлэх ухаан, судалгааны ажилтай холбоотой нийтлэл бичилгүй зэвэрсэн нэг жилийг ардаа өнгөрөөжээ. Шинэ юм нэг ч хийгээгүй, шинэ зүйл нэг ч сураагүй юм байна. Гэхдээ хийсэн зүйл их байв ч сэтгэлд аз жаргал мэдрэгдэхгүй нь тун харамсалтай. Алдсан нэг жилээ нөхөхийн тулд хийж байсан бүх зүйлээ, хатуу дискнийхээ хавтас бүрийг шалгаж юу хийж байснаа эргэн харлаа. Гэтэл 2015 оны 10 сард нэг сонирхолтой програм бичсэн байж. Тэр үед сүвэрхэг орчин дотуурх шүүрэлтийн урсгалыг сүлжээний Больцманны арга ашиглан загварчлах гэж оролдож байсан ба тооцооны үндсэн өгөгдөл болох сүвэрхэг орчны геометрийн шинж чанарыг бий болгох програм бичсэн юм байна. Нээх хэрэгтэй програм биш ч дурын/санамсаргүй түгэлт (random distribution), дурын/санамсаргүй тоо үүсгэгчийг (random number generation) ашиглах нэг жишээ юм болов уу гэж бодоод хуваалцая. 
2 хэмжээст сүвэрхэг орчин. Улаан өнгөөр хатуу хэсгийг, хөх яагаан өнгөөр хоосон орон зайг харуулна. Эхний зураг нь 300 ширхэг 1-ийн тоог дурын байрлалаар байрлуулсан бол хоёр дахь зураг нь 3000 ширхэг 1-ийн тоог дурын байрлалаар байрлуулсан болно. Хоёр зургийг хажуу талаар нь нийлүүлэх тушаал: convert +append 300ran.bmp 3000ran.bmp 300com.png

Сүвэрхэг орчны хамгийн энгийн жишээ бол хөрс юм. Өөр энгийн жишээ гэвэл аяга, шил угаадаг бамбалзуур, хувцас хунар, янз бүрийн барилгын материал, цаас гэх мэт ус уудаг, нордог зүйлсийг л хэлнэ дээ. Инженерчлэлд бол сүвэрхэг орчинг, түүний дотор урсах шингэн, түүгээр дамжих дулаан зэргийг тооцон бодох загварчлах олон шаардлага гардаг. Математик болон тоон загвар зохиосоны дараагаар түүнийг турших шаардлага гарна. Янз бүрийн зохиомол бодлого бодох шаардлага гарна. Өгөгдлүүдээ өөрчлөх шаардлага гарна. Тухайлбал хөрсөн дотуур шүүрэх шүүрэлтэнд хөрсний ширхэглэл, барьцалдах чанар, ус шингээх чанар, ус нэвтрүүлэх чанар, сүвэрхэгшилт гээд олон зүйл нөлөөлнө. Эдгээр бүх зүйлийн янз бүрийн өөрчлөлтөнд загвар түйртэлгүй ажиллаж байвал амьдрал дээрх аливаа асуудлыг шийдэх боломжтой гэсэн үг л дээ.
Асуудал юу байсан бэ гэвэл загвараа туршихад надад олон төрлийн сүвэрхэгшилттэй, янз бүрийн хэлбэртэй хоосон орон зайтай сүвэрхэг орчин хэрэг болж л дээ. Түүнийг богино хугацаанд бий болгохын тулд санамсаргүй тоо үүсгэгч функцыг ашиглах санаа гарч. Тэгээд бичсэн программ нь энэ байна. 
 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
      program geogen
      parameter(nx=100, ny=50, m=300) ! m -ийн оронд дурын тооны хэмжээг өгнө.
      real x(m), y(m) ! m тооны дурын х, у координат
      integer s_in(nx,ny)
      integer c
      open(1,file='geodat.dat')
      open(2,file='geodat1.dat')
      call system_clock(count=c)
      call random_seed(put=(/c/))
      nn=0
      do n=1,m
      call random_number(xx)
      call random_number(yy)
      nn=nn+1
      x(n)=xx*100
      y(n)=yy*50
      enddo
      do n=1,m
      write(2,*) x(n), y(n)
      enddo 
      do i=1,nx
      do j=1,ny
      s_in(i,j)=0
      enddo
      enddo
      do n=1,m
      xp=int(x(n))
      yp=int(y(n))
      s_in(xp,yp)=1
      enddo

      do j=ny,1,-1
      write(1,100) (s_in(i,j), i=1,nx)
100   format (500I1)
      enddo  
      open(11,file='geo_out.dat')
      do j=ny,1,-1
      write(11,'(500e12.4)') (real(s_in(i,j)), i=1,nx)
      enddo
      close (11)
      end program

Жишээ нь бидний НӨӨӨТ-ийн татвар дээр байдаг QR код дахин давтагдашгүй хэв зүйтэй байдаг бөгөөд түүнийг мөн энэхүү дурын тоо үүсгэгчийн тусламжтайгаар гүйцэтгэх боломжтой. Дээрх кодны 8-р мөрөнд байгаа call system_clock нь фортран хэлний нэг функц бөгөөд процессорын тухайн цагнаас хамааралтай тоог авч байгаа юм. Тэгэхээр одоо явж байгаа цаг хугацаа бол давтагдашгүй учир уг тоо дахин давтагдах боломжгүй гэсэн үг. Харин дараагийн мөрний call random_seed нь уг цагнаас авсан тоог дурын бүхэл тоо болгоно. Кодны 12, 13-р мөрөнд байх функцууд нь дурын 0-1 хоорондох тоог дээрх цагний дурын тооноос хамааруулан гаргана. Өөрөөр хэлбэл цагийн дурын тоо байхгүй бол уг мөрнүүд ижил төрлийн тоонууд гаргах магадлалтай гэсэн үг. Ингээд кодны 15, 16-д байх мөрнүүд нь 50х100 гэсэн хүрээнд уг дурын тоонуудыг масштаблаж байгаа болно. Үүнээс дооших мөрнүүд нь 1 гэсэн дурын тоог 50х100 хэмжээтэй талбайд дурын координатаар байрлуулж байгаа юм. 
Үр дүнд нь 1, 2, 11 гэсэн файлууд хэвлэгдэн гарна. 
Тухайлбал 300 цэгийг (1 гэсэн цифрийг) өөр өөр профессорын цаг хугацаанд гаргавал:
Хэдэн секундын өмнөх түгэлт

Хэдэн секунтын дараах түгэлт
Дээрх хоёр сүвэрхэг орчинг гаргах хугацааны ялгаа 10 сек орчим л байсан. Гэтэл цэгийн тоо адил 300 байхад тэдгээрийн талбай дахь хуваарилалт буюу координатууд нь өөр өөр байгааг харж болно. 
Дээрх сүвэрхэг орчинг гаргасаны дараа түүний сүвэрхэгшилт хэр байгааг бодож олох шаардлага гарна. Үүнийг бодох програмыг бас бичсэн байна л даа. 

 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
      program porosity
      parameter n=99, m=49
      real por
      integer is(n,m), i_am0, i_am1
! мэдээний файлыг уншиж, мэдээллээ авах
      open(200,file='geodat3.dat')
      do j=m,1,-1
      read(200,'(800i1)') (is(i,j), i=1,n)
      enddo
      i_am0=0  ! void
      i_am1=0  ! solid
      izero=0
         ione=0   
      do i=1,n
         do j=1,m
       if(is(i,j).eq.1) then
                 ione=ione+1
             else
                 izero=izero+1
             endif
         enddo
      enddo
      i_am0=izero  ! void
      i_am1=ione  ! solid   
      por=float(i_am0)/(float(i_am1)+float(i_am0))
      print*, 'por', por, 'void', i_am0, 'solid', i_am1

      write(300,'(800i1)')
      stop
      end
Дээрх 300 цэгийг байрлуулсан 50х100 хавтгайн сүвэрхэгшилт нь дээрх програмаар бодуулахад 0.94 гарч байна. Өөрөөр хэлбэл талбайн 94 хувь нь хоосон орон зай байна гэсэн үг. Сүвэрхэгшилтийг тооцох олон жишээ байж болно. Ихэвчлэн сүвэрхэг орчны хоосон орон зайг тодорхойлоход ашиглах бол том хэмжээгээр газрын зураг дээр ойгүй газрын хэмжээ, хот дотор зам талбайн эзлэх хувь, томографийн зурагнаас тархины эзлэх хэмжээ гэх мэт олон зүйлийг тодорхойлж болно. Харин өгөгдөл нь хар цагаан эсвэл 0 ба 1 гэсэн зураг л байх ёстой. 
Гэхдээ дээрх хоёр програм бол микро-хэмжээст (хэдэн мм -ээс хэдэн нано метр хүртэл гэсэн үг) нүх сүвийн хэмжээнд шүүрэлтийн усны гидродинамикийг тооцоход л зориулан сүвэрхэг орчинг үйлдэж байгаа юм. Мэдээж сүвэрхэг орчинг макро хэмжээстэд авч үзвэл өөр хэрэг л дээ. 

No comments:

Post a Comment