Пример #1
0
    def compute(self, state):
        super().compute(state)

        return self.field.assign(
            thermodynamics.internal_energy(state.parameters,
                                           self.rho_averaged,
                                           self.T,
                                           r_v=self.r_v,
                                           r_l=self.r_l))
Пример #2
0
    def compute(self, state):
        theta = state.fields('theta')
        rho = state.fields('rho')
        w_v = state.fields('water_v')
        w_c = state.fields('water_c')
        pi = thermodynamics.pi(state.parameters, rho, theta)
        T = thermodynamics.T(state.parameters, theta, pi, r_v=w_v)

        return self.field.interpolate(thermodynamics.internal_energy(state.parameters, rho, T, r_v=w_v, r_l=w_c))
Пример #3
0
# Calculate hydrostatic fields
saturated_hydrostatic_balance(state, theta_e, water_t)

# make mean fields
theta_b = Function(Vt).assign(theta0)
rho_b = Function(Vr).assign(rho0)
water_vb = Function(Vt).assign(water_v0)
water_cb = Function(Vt).assign(water_t - water_vb)
pibar = thermodynamics.pi(state.parameters, rho_b, theta_b)
Tb = thermodynamics.T(state.parameters, theta_b, pibar, r_v=water_vb)
Ibar = state.fields("InternalEnergybar", Vt, dump=False)
Ibar.interpolate(
    thermodynamics.internal_energy(state.parameters,
                                   rho_b,
                                   Tb,
                                   r_v=water_vb,
                                   r_l=water_cb))

# define perturbation
xc = L / 2
zc = 2000.
rc = 2000.
Tdash = 2.0
r = sqrt((x - xc)**2 + (z - zc)**2)
theta_pert = Function(Vt).interpolate(
    conditional(r > rc, 0.0,
                Tdash * (cos(pi * r / (2.0 * rc)))**2))

# define initial theta
theta0.assign(theta_b * (theta_pert / 300.0 + 1.0))