def set_initial_conditions(self):
# initial conditions
self.temp[:, :, :, 0:2] = ((1 - self.zt[None, None, :] / self.zw[0]) * 15 * self.maskT)[..., None]
self.salt[:, :, :, 0:2] = 35.0 * self.maskT[..., None]
# wind stress forcing
taux = np.zeros(self.ny + 1, dtype=self.default_float_type)
yt = self.yt[2:self.ny + 3]
taux = (.1e-3 * np.sin(np.pi * (self.yu[2:self.ny + 3] - yu_start) / (-20.0 - yt_start))) * (yt < -20) \
+ (.1e-3 * (1 - np.cos(2 * np.pi * (self.yu[2:self.ny + 3] - 10.0) / (yu_end - 10.0)))) * (yt > 10)
self.surface_taux[:, 2:self.ny + 3] = taux * self.maskU[:, 2:self.ny + 3, -1]
# surface heatflux forcing
self.t_star = 15 * np.invert((self.yt < -20) | (self.yt > 20)) \
+ 15 * (self.yt - yt_start) / (-20 - yt_start) * (self.yt < -20) \
+ 15 * (1 - (self.yt - 20) / (yt_end - 20)) * (self.yt > 20.)
self.t_rest = self.dzt[np.newaxis, -1] / (30. * 86400.) * self.maskT[:, :, -1]
if self.enable_tke:
self.forc_tke_surface[2:-2, 2:-2] = np.sqrt((0.5 * (self.surface_taux[2:-2, 2:-2] + self.surface_taux[1:-3, 2:-2]))**2
+ (0.5 * (self.surface_tauy[2:-2, 2:-2] + self.surface_tauy[2:-2, 1:-3]))**2)**(1.5)
if self.enable_idemix:
self.forc_iw_bottom[:] = 1.0e-6 * self.maskW[:, :, -1]
self.forc_iw_surface[:] = 0.1e-6 * self.maskW[:, :, -1]
评论列表
文章目录