工位上换了新电脑,于是需要给新电脑安装 Linux 子系统(WSL 2)用来跑代码。
这里简单记录一下我的安装过程。

  1. 安装 WSL 2

这里主要是按照微软官方的教程[1][2]来做。

先在 powershell 里启用 WSL 和虚拟机功能

1
2
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart  
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

然后安装适用于 x64 计算机的 WSL2 Linux 内核更新包,并在 powershell 里将 WSL 2 设置为默认。

1
wsl --set-default-version 2

WSL 2 的自定义安装位置参考的是CSDN上给的做法:我下载了Ubuntu 24.04 的 AppxBundle,从包里提取 Ubuntu_2404.0.5.0_x64.Appx ,然后在我想要的位置将它当成 zip 解压。最后运行一下 ubuntu2404.exe 即可。

  1. 导入Windows系统的字体

这里主要参照知乎上给的方法[3],做了个软链接。

1
2
3
sudo mkdir /usr/share/fonts/win11 
sudo ln -s /mnt/c/Windows/Fonts/* /usr/share/fonts/win11
fc-cache -fv
  1. 安装CUDA

Nvidia 的安装教程 和它给的下载链接主要是针对 WSL-Ubuntu 的。

我用的网络下载,在shell里就应该是:

1
2
3
4
5
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-6
sudo apt-get -y install cuda

即使是这么安装完,还是会有非常幽默的 nvcc 找不到、 libcuda.so 找不到等问题。我就参照网上的做法[4][5]~/.bashrc 里补充了这么一段:

1
2
3
4
5
6
# >>> Nvidia CUDA initialize >>>
export CUDA_HOME=/usr/local/cuda
export PATH=${CUDA_HOME}/bin:${PATH}
export LD_LIBRARY_PATH=${CUDA_HOME}/lib64:${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export LD_LIBRARY_PATH=/usr/lib/wsl/lib/:${LD_LIBRARY_PATH}
# <<< Nvidia CUDA initialize <<<

搞定。


  1. https://learn.microsoft.com/zh-cn/windows/wsl/install ↩︎

  2. https://learn.microsoft.com/zh-cn/windows/wsl/install-manual ↩︎

  3. https://zhuanlan.zhihu.com/p/683470601 ↩︎

  4. https://stackoverflow.com/questions/68221962/nvcc-not-found-but-cuda-runs-fine ↩︎

  5. https://github.com/microsoft/WSL/issues/8587 ↩︎

题 1

一无限流体被单位质量力 μr3/2\mu r^{-3/2} 的力作用,方向指向原点。若开始时流体静止且其中有一个空腔 r=cr=c,证明:在过 (25μ)1/2c5/4(\frac{2}{5 \mu})^{1/2} c^{5/4} 时间之后,空腔被流体填满。

这里假设流体不可压缩。取球坐标系 (r,θ,ϕ)(r, \theta, \phi) 进行计算,并以空腔中心为原点。

思路1:功能关系

假设当 t=t0t=t_0 时,空腔边界的球壳形薄液面位于 r=r0r=r_0 处。该薄液面厚度为 dr0\mathrm{d}r_0, 液面速度 vr(r0,t0)=0v_r (r_0, t_0) = 0

t0t_0 时刻,位于 r=r0r=r_0 处且厚度为 dr0\mathrm{d}r_0 的液面向内推动了 dr\mathrm{d} r, 由于该液面的质量积为 dm=ρ(4πr02)dr0\mathrm{d}m = \rho (4 \pi r_0^2) \mathrm{d}r_0,则这一过程中体积力(Fbr=μr3/2F_{br} = -\mu r^{-3/2})所作的功为

dW=dmr0+Fbrdr=dm(2μr01/2)=8μρπr03/2dr0.\mathrm{d} W = \mathrm{d}m \cdot \int_{r_0}^{+\infty} F_{br} \mathrm{d}r = \mathrm{d}m \cdot (-2 \mu r_0^{-1/2}) = -8 \mu \rho \pi r_0^{3/2} \mathrm{d}r_0 .

t1=t0+δtt_1 = t_0 + \delta_t 时,该液面前进到 r=r1r=r_1 位置(r1r0r_1 \le r_0),此时液面速度为 vr(r1,t1)=dr1dtv_r(r_1, t_1) = \dfrac{\mathrm{d} r_1}{\mathrm{d} t}

所以薄液面从 r0r_0 运动到 r1r_1 过程中, FbrF_{br} 做的总功为:

W=r0r1dW=165μρπ(r05/2r15/2)W = \int_{r_0}^{r_1} \mathrm{d} W = \frac{16}{5} \mu \rho \pi (r_0^{5/2} - r_1^{5/2})

记速度 v=[vr,0,0]T\bold{v} = [v_r, 0, 0]^T。代入球坐标系下的连续性方程,化简得:

(r2vr)r=0\frac{\partial (r^2 v_r)}{\partial r} = 0

rr 积分,可得 r2vr=f(t)r^2 v_r = f(t) ,其中 f(t)f(t) 为待定函数。根据这一方程,可得在 t1t_1 时刻满足 r02vr(r0,t1)=r12vr(r1,t1)r_0^2 v_r(r_0, t_1) = r_1^2 v_r(r_1, t_1)

t1t_1 时刻, r=r0r=r_0 层液体的动能表示为

dE=12dmvr2(r0,t1)=2ρπr14r02vr2(r1,t1)dr0\mathrm{d} E = \frac{1}{2} \cdot \mathrm{d}m \cdot v_r^2(r_0, t_1) = 2 \rho \pi \cdot \frac{r_1^4}{r_0^2} \cdot v_r^2(r_1, t_1) \mathrm{d}r_0

这一时刻下整个系统的动能为:

E=r1+dE=2ρπr13vr2(r1,t1)E = \int_{r_1}^{+\infty} \mathrm{d} E = 2 \rho \pi r_1^3 \cdot v_r^2(r_1, t_1)

据此,我们令 t0t_0 时刻即为初始时刻(t0=0t_0=0),满足 r0=cr_0 = cvr(t=0)=0v_r(t=0)=0。所以 t0t_0 时刻的动能为 0。对 t0t_0t1t_1 时刻的过程, FbrF_{br} 所做的功 WW 全部转化为流场动能 EE,即:W=EW=E

165μρπ(c5/2r15/2)=2ρπr13vr2(r1,t1)0\frac{16}{5} \mu \rho \pi (c^{5/2} - r_1^{5/2}) = 2 \rho \pi r_1^3 \cdot v_r^2(r_1, t_1) - 0

也就有:

vr(r1,t1)=dr1dt=8μ5r13/2(c5/2r15/2)v_r(r_1, t_1) = \frac{\mathrm{d} r_1}{\mathrm{d} t} = \sqrt{\frac{8 \mu}{5}} \cdot \sqrt{r_1^{-3/2} (c^{5/2} - r_1^{5/2})}

分离变量后解得:

1625(c5/2r15/2)=(8μ5t+c1)2\frac{16}{25} (c^{5/2} - r_1^{5/2}) = \left( \sqrt{\frac{8 \mu}{5}} t + c_1 \right)^2

其中 c1c_1 为待定常数。当 t=0t=0 时, r1=cr_1 = c,所以 c1=0c_1 = 0

假设当 t=Tmt=T_{m}r1=0r_1=0, 则可解得: Tm=(25μ)1/2c5/4T_m = (\frac{2}{5 \mu})^{1/2} c^{5/4}

思路2:联立动量方程和连续性方程

记速度 v=[vr,0,0]T\bold{v} = [v_r, 0, 0]^T。代入连续性方程,化简得:

(r2vr)r=0\frac{\partial (r^2 v_r)}{\partial r} = 0

rr 积分,可得 r2vr=f(t)r^2 v_r = f(t) ,其中 f(t)f(t) 为待定函数。

该场景下的运动方程为

ρDvDt=ρFb\rho \frac{\mathrm{D} \bold{v}}{\mathrm{D} t} = \rho \bold{F}_b

所以,动量方程写作:

vrt+vrvrr=Fbr\frac{\partial v_r}{\partial t} + v_r \frac{\partial v_r}{\partial r} = F_{br}

由题目可知 Fbr=μr3/2F_{br} = - \mu r^{-3/2}。将 r2vr=f(t)r^2 v_r = f(t) 代入到运动方程中,得:

f(t)r2+vrvrr=μr3/2\frac{f'(t)}{r^2} + v_r \frac{\partial v_r}{\partial r} = -\mu r^{-3/2}

R(t)R(t) 为真空球面的半径变化,则 vr(r=R(t))=R(t)v_r (r=R(t)) = R'(t)。对 rr 积分,得到:

R(t)f(t)r2+vrvrrdr=μR(t)r3/2dr[f(t)r+(vr)22]R(t)=2μrR(t)\begin{aligned} \int_{\infty}^{R(t)} \frac{f'(t)}{r^2} + v_r \frac{\partial v_r}{\partial r} \mathrm{d}r &= -\mu \int_{\infty}^{R(t)} r^{-3/2} \mathrm{d}r \\ \left.\left[ -\frac{f'(t)}{r} + \frac{(v_r)^2}{2} \right]\right|_{\infty}^{R(t)} &= \left. \frac{2 \mu}{\sqrt{r}} \right|_{\infty}^{R(t)} \end{aligned}

代入 vr(r=)=0v_r (r=\infty)=0,整理得到:

f(t)R(t)+(R(t))22=2μR(t)-\frac{f'(t)}{R(t)} + \frac{(R'(t))^2}{2} = \frac{2 \mu}{\sqrt{R(t)}}

在边界上有 f(t)=R2(t)vr(r=R(t))=R2Rf(t) = R^2(t) \cdot v_r (r=R(t)) = R^2 \cdot R' , 所以 f(t)=2RR2+R2Rf'(t) = 2 R R'^{2} + R^2 \cdot R{''} 。上式化简为:

32R2RR=2μR-\frac{3}{2} R'^{2} -R \cdot R{''} = \frac{2 \mu}{\sqrt{R}}

由于 d(R1/2(R)2)dR=R1/22(R)2+2R1/2R\frac{\mathrm{d} (R^{1/2} (R')^{2})}{\mathrm{d} R} =\frac{R^{-1/2}}{2} (R')^{2} + 2 R^{1/2} R{''},上式整理得:

d(R1/2(R)2)8μ+5(R1/2(R)2)=dR2R-\frac{\mathrm{d}(R^{1/2} (R')^{2})}{8\mu + 5 (R^{1/2} (R')^{2})} = \frac{\mathrm{d}R}{2R}

分离变量后并整理出 RR' ,可表示为:

R=R1/25(c1R5/28μ)R' = \sqrt{\frac{R^{-1/2}}{5} (c_1 R^{-5/2} - 8 \mu) }

R(t=0)=cR(t=0)=cR(t=0)=0R'(t=0) = 0 代入,解得: c1=8μc5/2c_1 = 8 \mu c^{5/2} 。即:

R=R1/258μ(c5/2R5/21)=8μ5R1/2(c5/2R5/21)R' = \sqrt{\frac{R^{-1/2}}{5} 8 \mu (c^{5/2} R^{-5/2} - 1)} \\= \sqrt{\frac{8 \mu}{5}} \cdot \sqrt{R^{-1/2} (c^{5/2} R^{-5/2} - 1)}

综上,真空球面的总运动时长表示为:

T=0c1RdR=58μ0c[R1/2((cR)5/21)]1/2dRT = \int_{0}^{c} \frac{1}{R'} \mathrm{d}R = \sqrt{\frac{5}{8 \mu}} \int_{0}^{c} \left[ R^{-1/2} \left( \left(\frac{c}{R}\right)^{5/2} - 1 \right) \right]^{-1/2} \mathrm{d}R

因为:

0c[R1/2((cR)5/21)]1/2dR=0cR1/4[((cR)5/21)]1/2dR=450c[((cR)5/21)]1/2d(R5/4)=t=R5/4450c5/4[(c5/2t21)]1/2dt=450c5/4t[(c5/2t2)]1/2dt=45(12)0c5/4[(c5/2t2)]1/2d(c5/2t2)=45(12)2(c5/2t2)1/20c5/4=45c5/4\begin{aligned} & \int_{0}^{c} \left[ R^{-1/2} \left( \left(\frac{c}{R}\right)^{5/2} - 1 \right) \right]^{-1/2} \mathrm{d}R \\ =& \int_{0}^{c} R^{1/4} \left[ \left( \left(\frac{c}{R}\right)^{5/2} - 1 \right) \right]^{-1/2} \mathrm{d}R \\ =& \frac{4}{5} \int_{0}^{c} \left[ \left( \left(\frac{c}{R}\right)^{5/2} - 1 \right) \right]^{-1/2} \mathrm{d}(R^{5/4}) \\ \xlongequal{t=R^{5/4}} & \frac{4}{5} \int_{0}^{c^{5/4}} \left[ \left( c^{5/2} t^{-2} - 1 \right) \right]^{-1/2} \mathrm{d}t \quad= \frac{4}{5} \int_{0}^{c^{5/4}} t \left[ \left( c^{5/2} - t^2 \right) \right]^{-1/2} \mathrm{d}t \\ =& \frac{4}{5} \cdot \left(-\frac{1}{2}\right) \int_{0}^{c^{5/4}} \left[ \left( c^{5/2} - t^2 \right) \right]^{-1/2} \mathrm{d}(c^{5/2} - t^2) \\ =& \frac{4}{5} \cdot \left(-\frac{1}{2}\right) \left.2 (c^{5/2} - t^2)^{1/2}\right|_{0}^{c^{5/4}} = \frac{4}{5} c^{5/4} \end{aligned}

所以 T=58μ45c5/4=25μc5/4T = \sqrt{\frac{5}{8 \mu}} \cdot \frac{4}{5} c^{5/4} = \sqrt{\frac{2}{5 \mu}} c^{5/4} .

证毕。

题 2

体积为 43πa3\frac{4}{3} \pi a^3 的液体充满于两个同心球面之间,外球面有压强 π\pi 作用,无质量力,内球面压强为 0 。开始时液体静止,内球面半径为 2a2a 。证明:当内球面半径变为 aa 时,其速度为 (14π3ρ21/321/31)12\displaystyle \left(\frac{14 \pi}{3 \rho} \frac{2^{1/3}}{2^{1/3} - 1}\right)^{\frac{1}{2}}

这里假设流体不可压缩。取球坐标系 (r,θ,ϕ)(r, \theta, \phi) 进行计算,并以空腔中心为原点。

记初始状态下(即 t=0t=0 时刻),内球面半径为 R0=2aR_0=2 a,外球面半径为 R1R_1;当内球面半径变为 aa 时(即 t1t_1 时刻),此时的内、外球面半径为分别为 R01=aR_{01} = aR11R_{11}。由于流体体积 V=43πa3V = \frac{4}{3} \pi a^3,可得:

V=43π(R13R03)=43π(R113R013)\begin{aligned} V &= \frac{4}{3} \pi (R_1^3 - R_0^3) \\ &= \frac{4}{3} \pi (R_{11}^3 - R_{01}^3) \end{aligned}

解得: R1=91/3aR_1 = 9^{1/3} aR11=21/3aR_{11} = 2^{1/3} a

记速度 u=[vr,0,0]T\bold{u} = [v_r, 0, 0]^T。代入连续性方程,化简得:

(r2vr)r=0\frac{\partial (r^2 v_r)}{\partial r} = 0

rr 积分,可得 r2vr=f(t)r^2 v_r = f(t) ,其中 f(t)f(t) 为待定函数。

t[0,t1]t \in [0,t_1] 时间段,外界压强在外表面做的功为:

W=R1R11(π)S(r)dr=283π2a3W = \int_{R_{1}}^{R_{11}} (-\pi) S(r) \mathrm{d} r = \frac{28}{3} \pi^2 a^3

其中 S(r)=4πr2S(r) = 4 \pi r^2 为球的表面积公式。

t1t_1 时刻, r2vr=f(t1)r^2 v_r = f(t_1) 为定值。若记此时刻的内球面速度为 u0=[v0,0,0]T\bold{u}_0 = [v_0, 0, 0]^Trr 处的流体速度为 ur=[vr,0,0]T\bold{u}_r = [v_r, 0, 0]^Tr[R01,R11]r \in [R_{01}, R_{11}]),则 R012v0=r2vrR_{01}^2 v_0 = r^2 v_r 。 所以 vr=(R01r)2v0v_r = \left( \frac{R_{01}}{r} \right)^2 v_0

t1t_1 时刻的流场总动能表示为:

Et1=R01R1112vr2(ρS(r)dr)=2πρv02a321/3121/3E_{t_1} = \int_{R_{01}}^{R_{11}} \frac{1}{2} v_r^2 \cdot (\rho S(r) \mathrm{d}r) = 2 \pi \rho v_0^2 a^3 \frac{2^{1/3} - 1}{2^{1/3}}

由于初始时刻的动能 E0=0E_0 = 0,根据功能关系可知:

W=Et1E0W = E_{t_1} - E_0

解得 t1t_1 时刻的内球面速度为: v0=(14π3ρ21/321/31)12\displaystyle v_0= - \left(\frac{14 \pi}{3 \rho} \frac{2^{1/3}}{2^{1/3} - 1}\right)^{\frac{1}{2}} ,方向指向原点。

0%