掘地求升-和存档脚本一起攻克难关

《和班尼特福迪一起攻克难关》// Getting over it with bennett foddy // 是一款令人抓狂的小游戏,为了您和他人以及您电脑的安全←_←,写了个可以存档的vbs脚本;
保存.vbs文件

set ws = Wscript.CreateObject("Wscript.Shell")
path = left(wscript.scriptfullname, instrrev(wscript.scriptfullname, "\") - 1)
regPath = "HKEY_CURRENT_USER\SOFTWARE\Bennett Foddy\Getting Over It"
If msgbox("YES FOR SAVING" & vbCrlf & "NO FOR READING",vbYesNo) = vbYes Then
    ws.run "reg export """ & regPath & """ """ & path & "\savREG.reg""", 0, True
Else
    If msgbox("R U SERIOUS?",vbYesNo) = vbYes Then
        ws.run "reg import """ & path & "\savREG.reg""", 0, True
    End If
End If

雷诺输运方程

在这里不做推导,只讨论结果的意义。

//当对一个领域理解的足够透彻,应该是先有结果再有推导论证过程。

拉格朗日方法与欧拉方法:

拉格朗日方法是一种随体描述,也就是以运动的对象作为参考系。

欧拉方法是一种空间描述,空间坐标系固定,空间内对象运动。

雷诺运输输运公式

雷诺输运公式是想在欧拉方法下描述运动流体体系的某强度量的时间变化速率。(?)

\Omega(t)为研究的流体体系的占据空间区域;

S(t)为改空间区域的包围曲面;

\mathcal{F}(x,y,z,t)为流体某物理强度量,强度量意味着其可叠加性。

I(t)=\iiint\limits_{\Omega(t)}{\mathcal{F}(x,y,z,t)dV}为该体系的\mathcal{F}的体积分,例如,若\mathcal{F}为流体密度\rho,则I为流体体系的总质量。

雷诺输运公式:

 \displaystyle{\frac{\mathrm{d}}{\mathrm{d}t}\iiint\limits_{\Omega(t)}\mathcal{F}(x,y,z,t)\mathrm{d}V & =\iiint\limits_{\Omega(t)}\lbrack\frac{\mathrm{d}\mathcal{F}}{\mathrm{d} t}+\mathcal{F}(\bm{\nabla\cdot v})\rbrack\mathrm{d}V}

随体导数:

先说一个重要的东西,随体导数: \displaystyle{\frac{\mathrm{d}\mathcal{F}}{\mathrm{d}t}=\frac{\partial \mathcal{F}}{\partial t}+\bm{v\cdot\nabla}\mathcal{F}}

当地导数\frac{\partial \mathcal{F}}{\partial t}表示该强度标量场对时间的偏微分,也就是固定点该强度随时间的变化。但是很明显其作为我们“随体”的要求还不够,因为是运动的流体,我们还要考虑运动带来的变化:当\mathcal{F}空间不均匀时,运动会使“包围圈”\Omega(t)内的该量发生变化,因此需要对流导数(位变导数)项\bm{v\cdot\nabla}\mathcal{F},相当于拿着个包围圈在不均匀的分布场内套流体,不均匀性和运动速度会使包围圈内该强度值的时间变化率产生变化。

例如,考虑简化一维情况,把三亚、广州、北京放到一条线上,PM2.5值从三亚->广州->北京线性增加,而你只是个收集空气的容器。你从广州跑到北京,你体内的霾空气肯定增多了,你跑的速度越快,你体内disgusting气体也增加地越快,这是位变导数项。当地导数更好理解,就是整个空气质量的变化,你体内气体的PM2.5值也会随着变化。

随体导数可以说是非常的“拉格朗日”了,但既然我们想用欧拉方法表达,这中间一定还差东西。

速度场不均匀产生的项

公式还有一项:\mathcal{F}(\bm{\nabla\cdot v})暂时没有看到这一项有什么好的名字…我读的书少,有知道的大神请告知一下。我猜可能叫形变项?随体导数很明显只管它自己运动时自己的变化,但是作为欧拉参考系的旁观者,作为外界的观察者,既然用欧拉方法表达某个流体体系某个强度量的时间变化率,只听姓“拉格朗日”的随体导数很明显是不够的。当速度场分布不均匀时,作为外界的观测者,我们很明显能观测到一个现象——那就是流体团的形状在变化(也就是包围网的形状在变)。如果速度场是恒定的,流体的形状不会发生变化,当速度场分布不均匀,例如体系里有些地方跑得快有些地方跑得慢,那我们研究的“包围圈”的形状自然发生变化。

还举那个雾霾的例子:你正在从广州匀速飞(头朝北)向北京,你的头突然跑得比脚快(即\displaystyle{\frac{\partial v}{\partial x}>0}),你发现你被拉长了,你的容量变大了,显然你体内的某某值也会增加。

通量形式

什么导数什么项的其实很繁琐,我们把随体导数公式带进去,可以把方程写成通量的形式:

 \displaystyle{\frac{\mathrm{d}}{\mathrm{d}t}\iiint\limits_{\Omega(t)}\mathcal{F}(x,y,z,t)\mathrm{d}V & =\displaystyle{\iiint\limits_{\Omega(t)}\lbrack\frac{\mathrm{\partial}\mathcal{F}}{\mathrm{\partial} t}+\bm{\nabla\cdot}(\mathcal{F}\bm{v}})\rbrack\mathrm{d}V}}

当通量\mathcal{F}\bm{v}}在区域内(包括边界)连续可微,根据高斯公式(下次再讨论)可得:

 \displaystyle{\frac{\mathrm{d}}{\mathrm{d}t}\iiint\limits_{\Omega(t)}\mathcal{F}(x,y,z,t)\mathrm{d}V & =\displaystyle{\iiint\limits_{\Omega(t)}\frac{\mathrm{\partial}\mathcal{F}}{\mathrm{\partial} t}\mathrm{d}V+\oiint\limits_{S(t)}\mathcal{F}\bm{v\cdot n}\mathrm{d}S}

通量的散度或者单位时间内通过边界S(t)流入的总通量明显好理解得多,把强度量和速度绑一块考虑,进来就是多,出去就是少。我更喜欢这个形式。


P.S.	1. 随体导数公式应该是舍掉了高阶项?

	2. 有什么错的地方或者建议,望不吝赐教。

	3. 酒精真是个好东西。

2017.10.26

WPF-悬浮按钮 /XAML

先贴效果图

用纯XAML的方法写成Style,便于重复利用:

  1. 正常状态下的阴影距离ShadowDepth,透明度Opacity。
  2. Trigger,状态为鼠标在上(IsMouseOver)时,增加阴影距离,相应的用Transform将按钮位置往左上角移动,确保阴影在原地,降低透明度。
  3. Trigger,状态为鼠标按下(IsPressed)时,阴影距离为0,相应地往右下移动位置。
<style x:key="bbtn" targettype="Button">
    <Setter Property="BorderThickness" Value="0"/>
    <Setter Property="Effect">
        <Setter.Value>
            <DropShadowEffect Opacity="0.5" BlurRadius="2" ShadowDepth="3"/>
        </Setter.Value>
    </Setter>
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="Effect">
                <Setter.Value>
                    <DropShadowEffect Opacity="0.4" BlurRadius="2" ShadowDepth="5"/>
                </Setter.Value>
            </Setter>
            <Setter Property="RenderTransform">
                <Setter.Value>
                    <TranslateTransform X="-2" Y="-2"/>
                </Setter.Value>
            </Setter>
        </Trigger>
        <Trigger Property="IsPressed" Value="True">
            <Setter Property="Effect">
                <Setter.Value>
                    <DropShadowEffect Opacity="1" BlurRadius="2" ShadowDepth="0"/>
                </Setter.Value>
                </Setter>
            <Setter Property="RenderTransform">
                <Setter.Value>
                    <TranslateTransform X="2" Y="2"/>
                </Setter.Value>
            </Setter>
        </Trigger>
    </Style.Triggers>
</style>

接着在Button控件中设置Style,绑定到静态资源

<Button Style="{StaticResource bbtn}" Content="[TEXT HERE]" />

涡度

涡度是指一个物理量的旋转属性,其方向的意义是:用右手法则,大拇指指向该方向,手指弯曲方向即为该旋转方向。


\bigtriangledown\times V=(\frac{\partial V_z}{\partial y} - \frac{\partial V_y} {\partial z })\vec{i} + (\frac{\partial V_x}{\partial z} - \frac{\partial V_z} {\partial x })\vec{j} + (\frac{\partial V_y}{\partial x} - \frac{\partial V_x} {\partial y })\vec{k}

为了理解公式,拆开一部分:(\frac{\partial V_y}{\partial x} - \frac{\partial V_x} {\partial y})\vec{k}

式中,\frac{\partial V_y}{\partial x}\vec{k}意思是,如果V_y在x正方向上有增加,意味着该量在沿着z轴正方向上(逆时针/手指方向)有旋转的变化。同理,若V_x在y正方向上有增加,意味着该量在沿着z轴负方向上有旋转的变化。所以要减去\frac{\partial V_x}{\partial y}\vec{k},最后,在z轴方向上的旋转变化为:

(\frac{\partial V_y}{\partial x} - \frac{\partial V_x} {\partial y})\vec{k}

x轴和y轴方向上的旋转变化同理。

多一点抽象记忆,少一些死记硬背。


TO BE CONTINUED

17.10.15

The Beginning

纪念一下自己的域名和blog。毕竟弄了两天,本来以为很容易,买个VPS搭服务器弄WordPrss再买个域名,真正做起来总是这儿那儿出问题,百度谷歌并不总能解决问题,基础不好的人就只能头脑灵活点了。

我打算这里什么都记,不论是科研/计算机的笔记或者是日记牢骚之类的,直接转载别人的就算了,真要转,那就数不过来了😏,消化透了才是自己的。有了vps,偶尔也弄点自己想做的东西。

经常想法很多却又患懒癌,难以走出自己的舒适区,就是所谓的眼高手低。当然眼高不是坏事,就是希望自己能不断去挑战新高度。

17/07/30 于 海南三亚