1、身高比较器,是一款手机身高比较软件,用户可以输入自己的身高和体重,应用会根据输入值计算用户的BMI指数(身体质量指数)。快速的为用户测量出结果,用户们也能将自己达标的结果分享出去。
2、身高比较模拟器,是款抖音上很火的手机身高软件,直接就能在手机上来测量身高,针对最全的 *** 作更快了解,实时享受到的在线测量身高 *** 作更中的便利化。同时针对身高信息进行更好的在线分析,用户了解不同的数据信息也会更加的精准化,其内容更加的全面。
3、抖音身高对比软件,是方便大家测量身高和体重是否是完美比例的软件,有了这款神器,就能一键测量出来了,又快捷又省事,这样用户也可以实时了解自己的体重变化。
4、身高对比软件,界面简洁,更加清晰的 *** 作,直接就能在手机上来测量身高,看看是否达标。各项身高以及体重方面的信息也可以对比,为用户们提供一款优质的测量平台。
5、日本身高比较软件,是一款身高互动类手机软件,可以很好的享受在手机上测量身高的便捷,提供多种数据进行分析。针对最新的测量分析表格可以及时的查看,用户了解各类不同的测量信息也会更加的精准化。
3.3.4.1 模拟结果分析
在模拟过程中,由于EOS1 程序在给定的模拟时间范围内,如果模拟结果能达到稳定,模拟便自动中止,并给出模拟结果,因此在本次模拟中,最终模拟结束时间是190.3d,而不是预先给定的 300d;另一方面,为便于与 THAMES-DRTANS 所得的模拟结果比对,选取了与其相同的模拟时间段输出模拟结果。下面就整个模拟过程中,回填材料的体积含水率、模型中的温度(T)、压力(P)、液体流速(V)以及氯化钠的质量分数(XNaCl)等随模拟时间(t)和距顶部的距离(Z)的变化规律进行分析讨论。
如图3.5 所示,由于盐水从顶部的不断渗入,回填材料的体积含水率随着模拟时间的增加而增加,到 190.3d,模型基本饱和。由此可知,如果时间足够长,整个模型将会被饱和,也说明了由温度梯度引起的蒸汽运动并不明显。
图3.5 不同时间含水率与距离关系图
Fig.3.5 Graph of volumetric water content and distance from top at different time
图3.6 t在150d,180d,190.3d不同时间含水率与距离关系图
Fig.3.6 Graph of volumetric water content and distance from top at different time
(zoom up at t=150d,180d,190.3d)
由于在模拟后期(150d以后),整个模型接近饱和,使得含水率随距离变化曲线基本重合,含水率随距离变化的放大图3.6 则清晰地展示了其变化,在 150d 时,模型最终的体积含水率为 0.40283,而在 180d、190.3d 时为 0.40295,与孔隙度非常接近。而在图3.7 中则展示了不同位置处温度与时间之间的关系,从该图可以看出,在模拟开始后,整个模型中温度能很快(1d内)达到平衡。
图3.7 温度与时间关系图
Fig.3.7 Graph of temperature and time
图3.8 不同时间速度与距离关系图
Fig.3.8 Graph of velocity and distance from top at different time
由图3.8 可以看出在不同时间水分运移速度随距顶部距离的变化规律,并且在同一时间顶部处流速最大而后在某一迁移距离处锐减(速度的负值是因为其方向与所取坐标方向相反的缘故,即流动的方向是从A11 1,A11 2,…,BF1 1)。从对水流运动的研究可以知道,非饱和状态下水流动的驱动力主要来自水的势能与重力,并且非饱和状态下水总是从水势能高的地方流向水势能低的地方。当干燥多孔的介质变得潮湿时,湿润前锋处的驱动力最大,因而水分流速在此处会发生突变。也就说,水分流速发生突变的地方就是湿润前锋所在的位置,那里也是氯化钠可能沉淀的地方。然而,水分的运移速度在近饱和的地方发生了变化,如图3.9 所示,这里运移速度随距离的增加而略有增加,这与非饱和带中的变化趋势是相反的。换句话说,在这里同样条件下饱和带中的水分运移速度比非饱和带中的要小。
图3.9 t=150d,180d,190.3d时速度与时间的放大图
Fig.3.9 Velocity and distance from top(zoom up att=150d,180d,190.3d)
从图3.10可以看出,NaCl质量百分数的变化趋势与含水率变化规律是相同的,即在同一迁移位置NaCl质量百分数是随时间的增加而增加的,而在同一时间是随着迁移距离的增加而减少。在本次模拟分析过程中,地球化学反应仅考虑NaCl的溶解和沉淀。然而,在接近饱和状态时,存在一些奇怪的变化规律,如图3.10(b)所示。从顶部z=0处到z=0.07m附近,在180d和190.3d时的NaCl质量百分数比在120d和150d的略低,主要是由于在相同时间下速度的不寻常变化(图3.9)所引起的,从z=0到z=0.07m段,由于速度的增加使得从顶部进入模型的盐水少于流失的盐水,而流失的盐水带走了NaCl,从而使得这个范围内的NaCl质量百分数降低。
图3.11表示了在模拟时间(ST)为1.7d和30d时氯化钠浓度在模型中的变化情况,图中是用颜色的深浅来表示氯化钠质量百分数(XNaCl)(注:图中的D即指模型的宽度)。根据模拟结果可知,在1.7d和30d时氯化钠质量百分数的最大值分别为3.2204%和3.2784%。浓度差和在湿润前锋处较强的负压是模型中盐水的运移动力。
从图3.10和图3.11可以看出,整个过程中氯化钠都没有沉淀,主要原因有二,一是蒸发作用并不强,且底部和侧面边界是封闭的,因此没有水分从模型中流出;二是顶部边界处氯化钠的浓度不高,而且其入渗速率非常小。
图3.10 不同时间NaCl质量百分数与距离关系图
Fig.3.10 Concentration of NaCl(wt%)with distance from top at different time
图3.11 1.7d和30d时NaCl浓度变化示意图
Fig.3.11 Distribution of NaCl in the model after 1.7d and 30d of simulation time
如图3.12所示,单元格A91 1(0.05m,0.05m,0.017m)和AA1 1(0.05m,0.05m,0.019m)的含水率随时间的增加而增加,而压力随时间的增加略有减少,在非饱和带的各个单元中,氯化钠浓度的改变很小。
图3.12 ‘A91 1’和‘AA1 1’的饱和度(SL)、NaCl质量百分数
(XNaCl)、压力与时间关系图
Fig.3.12 Liquid saturation(SL),salt mass fraction(XNaCl)and pressure in the grid block
‘A9 11’and ‘AA 11’during 190.3d of brine infiltration
注:1bar=105Pa。
从以上模拟和分析可以看出,由温度梯度引起的蒸汽运动并不明显,对非饱和回填材料中氯化钠浓度的影响也不大,因而,回填材料中盐的富集并不如想象得那么重要,整个模拟过程中盐的沉淀都始终没有出现。
3.3.4.2 与THAMES-DRTANS模拟结果的比较
如图3.13所示的结果是Akira Ito用THAMES-DRTANS软件计算所得的,具体的分析模拟过程见“GeoPro 2003 conference”题为“A Research Program for Numerical Experiments on the Coupled Thermo-Hydro-Mechanical and Chemical Processes in the Near-field of a High-level Radioactive Waste Repository”的论文(Akira Ito,2003)。
从图3.13(a)与图3.5、图3.13(c)与图3.8 及图3.13(d)与图3.10 的对比可以看出,含水率、水分运移速度和氯化钠质量百分数的变化规律是相同的,同时,整个模型中都没有出现氯化钠富集沉淀和氯化钠质量百分数的大幅增长。
但是,通过图3.13(b)也给出了两种模拟结果的差异。在模型靠近底部处(z=0.00~0.03m,这里的z是从底部算起),在模拟时间的前15d含水率是降低的,并且这种降低在第5d降到最小,这与图3.6所示的在模拟初期底部含水率基本不变是不一致的;由于在底部处含水率的降低,同时引起在这部分氯化钠质量百分数的增加,如图3.13(e)所示。这种区别主要是因为THAMES-DRTANS在同样的条件下,能更好地处理水蒸气的运动。
图3.13 THAMES-DRTANS软件的模拟结果
(据 Akira Ito et al.,2003)
Fig.3.13 Analytical results of volumetric water contents,liquid velocity and dissolved concentration of NaCl with THAMES-DRTANS
(Akira Ito et al.,2003)
import mediadef red_average(pic):
'''Return an integer that represents the average red of the picture.
'''
total=0
for pixel in pic:
total = total + media.get_red(pixel)
red_average = total / (media.get_width(pic)*media.get_height(pic))
return red_average
def green_average(pic):
'''Return an integer that represents the average green of the picture
'''
total = 0
for pixel in pic:
total = total + media.get_green(pixel)
green_average = total / (media.get_width(pic)*media.get_height(pic))
return green_average
def blue_average(pic):
'''Return an integer that represents the average blue of the picture
'''
total = 0
for pixel in pic:
total = total + media.get_blue(pixel)
blue_average = total / (media.get_width(pic)*media.get_height(pic))
return blue_average
def scale_red(pic, value):
'''Return the picture that the average of the red is value which has been set.
'''
averaged = red_average(pic)
factor = float(value) / averaged
for pixel in pic:
new_red = min(255, int(factor * media.get_red(pixel)))
media.set_red(pixel,new_red)
return pic
def scale_green(pic, value):
'''Return the picture that the average of the green is value which has been set.
'''
averaged = green_average(pic)
factor = float(value) / averaged
for pixel in pic:
new_green = min(255, int(factor * media.get_green(pixel)))
media.set_green(pixel,new_green)
return pic
def scale_blue(pic, value):
'''Return the picture that the average of the blue is value which has been set.
'''
averaged = blue_average(pic)
factor = float(value) / averaged
for pixel in pic:
new_blue = min(255, int(factor * media.get_blue(pixel)))
media.set_blue(pixel,new_blue)
return pic
def expand_height(pic, factor):
'''Return a newpicture that has been vertically stretched by the factor which has been set.
'''
new_width = pic.get_width()
new_height = pic.get_height()*factor
newpic = media.create_pic(new_width, new_height, media.black)
for pixel in pic:
x = media.get_x(pixel)
y = media.get_y(pixel)
newpixel = media.get_pixel(newpic, x, y*factor)
for newpixel in newpic:
new_red = media.get_red(pixel)
new_green = media.get_green(pixel)
new_blue = media.get_blue(pixel)
media.set_red(newpixel,new_red)
media.set_green(newpixel,new_green)
media.set_blue(newpixel,new_blue)
return newpic
def expand_width(pic,factor):
'''Return a newpicture that has been horizontally stretched by the factor which has been set.
'''
new_width = pic.get_width() * factor
new_height = pic.get_height()
newpic = media.create_pic(new_width,new_height,media.black)
for newpixel in newpic:
x = media.get_x(newpixel)
y = media.get_y(newpixel)
pixel = media.get_pixel(pic,x / factor, y)
new_red = media.get_red(pixel)
new_green = media.get_green(pixel)
new_blue = media.get_blue(pixel)
media.set_red(newpixel,new_red)
media.set_green(newpixel,new_green)
media.set_blue(newpixel,new_blue)
return newpic
def reduce_height(pic, factor):
'''return a new pic that has been compressed vertically by the factor which has been set
'''
# Create a new, all-black pic with the appropriate new height and
# old width(all colour components are zero).
new_width = pic.get_width
new_height = (pic.get_height() - 1) / factor + 1
newpic = media.create_pic(new_width, new_height, media.black)
# Iterate through all the pixels in the original (large) image, and copy
# a portion of each pixel's colour components into the correct
# pixel position in the smaller image.
for pixel in pic:
# Find the corresponding pixel in the new pic.
x = media.get_x(pixel)
y = media.get_y(pixel)
newpixel = media.get_pixel(newpic, x, y / factor)
# Add the appropriate fraction of this pixel's colour components
# to the components of the corresponding pixel in the new pic.
new_red = newpixel.get_red()+pixel.get_red()/factor
new_green = newpixel.get_green()+pixel.get_green()/factor
new_blue = newpixel.get_blue()+pixel.get_blue()/fctor
media.set_red(newpixel,new_red)
media.set_green(newpixel,new_green)
media.set_blue(newpixel,new_blue)
return newpic
def reduce_width(pic,factor):
'''Return a newpic that has been horizontally compressed by the factor which has been set.
'''
new_width = (media.get_width() - 1) / factor + 1
new_height = media.get_height()
newpic = media.create_pic(new_width, new_height, media.black)
for pixel in pic:
x = media.get_x(pixel)
y = media.get_y(pixel)
new_pixel = media.get_pixel(newpic, x / factor, y)
new_red = newpixel.get_red() + pixel.get_red() / factor
new_green = newpixel.get_green() + pixel.get() / factor
new_blue = newpixel.get_blue() + pixel.get()/factor
media.set_red(newpixel, new_red)
media.set_green(newpixel, new_green)
media.set_blue(newpixel, new_blue)
return newpic
def distance(pixel1, pixel2):
red1 = media.get_red(pixel1)
green1 = media.get_green(pixel1)
blue1 = media.get_blue(pixel1)
red2 = media.get_red(pixel2)
green2 = media.get_green(pixel2)
blue2 = media.get_blue(pixel2)
sum = abs(red1 -red2) + abs(green1 - green2) + abs(blue1 - blu2)
return sum
def simple_difference(pic1, pic2):
for pixel in pic1:
x = media.get_x(pixel)
y = media.get_y(pixel)
pixel2 = media.get_pixel(pic2, x, y)
sum = media.distance(pixel, pixel2)
return sum
def smart_difference(pic1,pic2):
height1 = media.get_height(pic1)
height2 = media.get_height(pic2)
factorh = float(height1 / height2)
if factorh >= 1:
height1 = media.reduce_height(pic1, factorh)
else:
height2 = media.reduce_height(pic2, 1 / factorh)
width1 = media.get_width(pic1)
width2 = media.get_width(pic2)
factorw = float(width1 / width2)
if factorw >= 1:
width1 = reduce_width(pic1, factorw)
else:
width2 = reduce_width(pic2, 1 / factorw)
red1 = red_average(pic1)
green1 = green_average(pic1)
blue1 = blue_average(pic1)
red2 = media.scale_red(pic2, red1)
green2 = media.scale_green(pic2, green1)
blue2 = media.scale_blue(pic2, blue1)
#if __name__ == '__main__':
#media.show(newpic)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)