پس پردازش نتایج مدل مادفلو در Python
پس پردازش نتایج
یک بار دیگر، می توانیم از فایل خروجی باینری MODFLOW، با استفاده از ماژول flopy.utils.binaryfile، سطوح آب را بخوانیم. همراه با Object HeadFile چندین روش وجود دارد که ما در اینجا استفاده خواهیم کرد: get_times لیستی از بارهای موجود در فایل head file را بازگرداند. get_data آرایه سطح سه بعدی را برای زمان مشخص بازگرداند. get_ts آرایه سری زمانی [ntimes، headval] برای سلول مشخص شده را برمیگرداند.
با استفاده از این روش، می توانیم نتایج حاصل از مدل ها، نمونه های سطح آب و هیدروگراف را ایجاد کنیم:
# Imports import matplotlib.pyplot as plt import flopy.utils.binaryfile as bf # Create the headfile object headobj = bf.HeadFile(modelname+'.hds') times = headobj.get_times() # Setup contour parameters levels = np.arange(1, 10, 1) extent = (delr/2., Lx - delr/2., delc/2., Ly - delc/2.) print 'Levels: ', levels print 'Extent: ', extent # Well point wpt = ((float(ncol/2)-0.5)*delr, (float(nrow/2-1)+0.5)*delc) wpt = (450., 550.) # Make the plots mytimes = [1.0, 101.0, 201.0] for iplot, time in enumerate(mytimes): print '*****Processing time: ', time head = headobj.get_data(totim=time) #Print statistics print 'Head statistics' print ' min: ', head.min() print ' max: ', head.max() print ' std: ', head.std() #Create the plot #plt.subplot(1, len(mytimes), iplot + 1, aspect='equal') plt.subplot(1, 1, 1, aspect='equal') plt.title('stress period ' + str(iplot + 1)) plt.imshow(head[0, :, :], extent=extent, cmap='BrBG', vmin=0., vmax=10.) plt.colorbar() CS = plt.contour(np.flipud(head[0, :, :]), levels=levels, extent=extent, zorder=10) plt.clabel(CS, inline=1, fontsize=10, fmt='%1.1f', zorder=11) mfc = 'None' if (iplot+1) == len(mytimes): mfc='black' plt.plot(wpt[0], wpt[1], lw=0, marker='o', markersize=8, markeredgewidth=0.5, markeredgecolor='black', markerfacecolor=mfc, zorder=9) plt.text(wpt[0]+25, wpt[1]-25, 'well', size=12, zorder=12) plt.show() plt.show()
اگر همه چیز به درستی کار کرده باشد، باید خطوط زیر را ببینید.
سری زمانی سطح آب در مقابل زمان
با برداشتن سطوح دوتایی از headobj یک قطعه سطح آب در برابر زمان ایجاد کنید:
# Plot the head versus time idx = (0, nrow/2 - 1, ncol/2 - 1) ts = headobj.get_ts(idx) plt.subplot(1, 1, 1) ttl = 'Head at cell ({0},{1},{2})'.format(idx[0] + 1, idx[1] + 1, idx[2] + 1) plt.title(ttl) plt.xlabel('time') plt.ylabel('head') plt.plot(ts[:, 0], ts[:, 1]) plt.show()
برای یافتن تمامی مطالب مرتبط با این مطلب در سایت از جستجوی سایت در حاشیه سمت راست و بالای صفجه استفاده فرمایید.
ورود به بخش آموزش های متنی GMS
دانلود آخرین نسخه نرم افزار GMS
دریافت لایسنس ارزیابی (14 روزه)
برای سفارش انجام مدل سازی اینجا کلیک کنید
شناسه تلگرام مدیر سایت: SubBasin@
نشانی ایمیل: behzadsarhadi@gmail.com
(سوالات تخصصی را در گروه تلگرام ارسال کنید)
_______________________________________________________
پروژه تخصصی در لینکدین
با سلام
آیا مدل آب زیرزمینی ساخته شده در GMS را در پایتون فراخوانی کرد و تغییراتی را بر روی آن اعمال کرد؟ آیا لازم است پیش از فراخوانی مدل GMS، مدل را تغییر داد؟
با تشکر