Get desktop application:
View/edit binary Protocol Buffers messages
Next id: 7
Used in:
One might do Taylor expansion to any order, for the preconditioner matrix sum's inverse: (1 + x)^{-1} = 1 - x + x^2 - x^3 + ...
When there is no Taylor expansion, fall back to the symmetric version, or apply the operator in the donimating direction only.
Stores the boundary conditions of a variable for the 6 faces of the computational domain.
The name of the variable for which the boundary conditions belongs to.
The detailed information of each boundary.
Used in:
This controls the step_id when the buffer storing the boundary condition value is initialized to a desired value. The specific initialization will depend on the type of the boundary condition. Currently this is only used for NONREFLECTING boundary type.
This only applies for NONREFLECTING boundary condition type. It controls how the phase velocity in the convective nonreflecting boundary condition is determined. Specifically, ∂ϕ/∂t = - U* ∂ϕ/∂x, for the "high" side of the domain, and ∂ϕ/∂t = + U* ∂ϕ/∂x, for the "low" side of the domain, and for NONREFLECTING_LOCAL_MAX, the phase velocity is calculated on the boundary as local point-wise max: U* = abs(max(u + u0, 0)), for the "high" end, and U* = abs(min(u - u0, 0)), for the "low" end. For NONREFLECTING_GLOBAL_MEAN: U* = abs(global_mean(u) + u0), for the "high" end, and U* = abs(global_mean(u) - u0), for the "low" end. where `mean` is the global mean over the entire boundary. For NONREFLECTING_GLOBAL_MAX: U* = abs(max(global_max(u), 0) + u0), for the "high" end, and U* = abs(min(global_min(u), 0) - u0), for the "low" end. Note that `u0` is specified as the value in BoundaryInfo.
Used in:
The information of a boundary condition for a specific face. Next id: 6.
Used in:
The dimension of the boundary condition.
The location of the boundary: 1 indicates the `high` end, and 0 indicates the low end.
The type of the boundary condition.
The value associated with this boundary if `type` is `DIRICHLET`. TODO(wqing): make the value a 2D/3D array so that it can represent more complex boundary conditions.
Parameters associated with the specific boundary condition.
Defines the type of boundary condition to be used for each variable in a specific boundary. Next id: 7.
Used in: ,
The default option where no boundary condition is set. Results in an error if that direction is not periodic.
The Dirichlet boundary condition. A value needs to be specified for this type of boundary condition.
The Neumann boundary condition.
The Neumann boundary condition estimated with 2nd order scheme.
Maintains the current value for the specified boundary.
The periodic boundary condition.
The nonreflecting boundary condition. Using the "high" side of the domain as an example, a forward Euler with upwinding scheme is used to solve the boundary: ∂ϕ/∂t = - U* ∂ϕ/∂x In discrete form: ϕⱼⁿ⁺¹ = (1 - Δt U* /Δx) ϕⱼⁿ + (Δt U* /Δx) ϕⱼ₋₁ⁿ Similarly for "low" side of the domain boundary, we have a symmetric case: ∂ϕ/∂t = U* ∂ϕ/∂x In discrete form: ϕⱼⁿ⁺¹ = (1 - Δt U* /Δx) ϕⱼⁿ + (Δt U* /Δx) ϕⱼ₊₁ⁿ In the current implementation, U* is specified by the configuration through the value in the boundary condition and the mode (specified through `boundary_info.bc_params.nonreflecting_bc_mode`) setting as: For NONREFLECTING_LOCAL_MAX mode: U* = abs(max(u + u0, 0)) for the "high" side of the domain, and U* = abs(min(u - u0, 0)) for the "low" side of the domain. For NONREFLECTING_GLOBAL_MEAN mode: U* = abs(global_mean(u) + u0), for the "high" side of the domain, and U* = abs(global_mean(u) - u0), for the "low" side of the domain. For NONREFLECTING_GLOBAL_MAX mode: U* = abs(max(global_max(u), 0) + u0), for the "high" side of the domain, U* = abs(min(global_min(u), 0) - u0), for the "low" side of the domain. where u is the (spatially dependent) velocity field at the boundary (first inner fluid layer), while u0 is value specified for the boundary condition configuration.
When evaluating convergence, one can use componentwise or elementwise difference as a criterion. Given two vectors `lhs`, `rhs`: 1. Compute `tol = atol + rtol * abs(rhs)` 2. Compute `diff = lhs - rhs` 3. Define `distance = max(abs(diff) - tol)` This is based on `rtol` applied to `rhs` only. If `symmetric` is set, one will compute the distance similarly and final distance is the maximum. Note that this criterion is close to `L_INF` norm, but not exact, and they're different in 2 ways: 1. residual = abs(diff) - tol, without an `abs` for `residual` 2. Based on #1, the distance could be negative when `lhs` & `rhs` are close enough. Next id: 4
Used in:
Absolute tolerance, dominant for small values close to `0`.
Relative tolerance, dominant for large values far away from `0`.
Parameters required by the constant density model.
Used in:
(message has no fields)
Defines the types of convection schemes. Next id: 10
The default option where no scheme is used. Should results in an error.
The first order upwinding scheme.
The second order upwinding QUICK scheme.
The fifth order WENO scheme.
The third order WENO scheme.
The third order WENO scheme based on pre-trained neural network.
The second order central differencing shceme.
The fourth order central differencing shceme.
The Van Leer flux limiter.
The MUSCL scheme.
Used in: ,
Used in:
Used in:
Used in:
Messages encapsulating 3-D coordinates.
Used in: ,
Defines the types of diffusion schemes.
The default option where no scheme is used. Should results in an error.
The diffusion term computed with the second order central scheme at nodes. The width of the stencil is 5.
The diffusion term computed from diffusive fluxes on cell faces. The width of the stencil is 3.
The diffusion term computed with a 27-node stencil (3 in each direction) without interpolations.
Marks strings in proto messages as paths to files, so they can be treated as such (e.g., the path needs to point to an existing file). See file_io.py for functions that work on Files.
Used in:
A message that parameterizes a distributed simulation. Next id: 11
The shape or topology of compute cores.
The full grid length in each dimension. This is the length of the grid including padding, if any.
The grid size per core in each dimension.
The halo width.
The absolute time step per simulation finite difference step.
The convolutional kernel dimension.
The full grid size (over all cores) in each dimension. This is the physical grid size (padding is excluded).
The paths to files containing stretched grid data.
Specifies if the flow field is periodic in a direction.
Specifies the order of the axes for storing all the fields and mesh partitions. It should be a permutation of 'xyz'.
Parameters required by the ideal gas law. Next id: 6
Used in:
The surface temperature, K. The default value is provided in the CLIMA design doc.
The height of the domain, in units of meter. Default value roughly represents of Earth’s midlatitude atmosphere.
The temperature difference between the top and bottom of the domain, in units of K. Default value roughly represents of Earth’s midlatitude atmosphere.
An indicator of whether constant potential temperature is used to define the reference/hydrostatic pressure. Do not define this field if the potential temperature in the simulation setup is not a constant.
Isochoric specific heats of the dry air, J/kg/K. Sources for values below: 1. Pressel, Kyle G., Colleen M. Kaul, Tapio Schneider, Zhihong Tan, and Siddhartha Mishra. 2015. “Large-Eddy Simulation in an Anelastic Framework with Closed Water and Entropy Balances: LARGE-EDDY SIMULATION FRAMEWORK.” Journal of Advances in Modeling Earth Systems 7 (3): 1425–56. 2. https://www.engineeringtoolbox.com/water-properties-d_1508.html.
Parameters required by the linear mixing model.
Used in:
(message has no fields)
Defines the types of numerical fluxes.
The default option where no flux is used. Should results in an error.
The upwinding flux.
The Lax-Friedrich flux.
The Roe flux.
A message that stores the parameters required by the selected Poisson solver. Next id: 5
A solver that has exactly one type. New solvers can be added to this field.
The parameters used by the conjugate gradient solver. Next id: 8
Used in:
The maximum number of iterations to be performed before the solution converges.
The width of the halo cells.
There could be multiple metrics to be used as convergence criterion: 1. L2 norm, absolute or relative to rhs 2. Componentwise difference, close to L_INF but not exactly the same. - For more details, refer to `ComponentWiseConvergence` definition. When both are specified, the final convergence criterion is a logical OR of these 2 conditions. Convergence criterion #1: L2 norm The absolute tolerance as a metric of the solution convergence.
Orthogonal to `atol`, on the `L2` norm as the convergence criterion: - true: `L2` reduction relative to `rhs` - false: Absolute `L2`
Convergence criterion #2: componentwise, close to L_INF though not exact.
If true, subtracting off the mean of residual and iterate.
The parameters used by the fast diagonalization/direct solver. Next id: 6
Used in:
The width of the halo cells.
The threshold for the eigenvalues to prevent division by zero.
Boundary conditions of the lower end of a domain in each dimension.
Boundary conditions of the higher end of a domain in each dimension.
The parameters used by the Jacobi iterative solver. Next id: 3
Used in:
The maximum number of iterations to be performed before the solution converges.
The weight to be applied to the update in each iteration.
Next id: 8
Used in:
The number of multigrid cycle iterations.
The number of smoother iterations.
The weight in the smoother. The default smoother is Jacobi, and the default value for the weight, 2/3, results in the standard weighted Jacobi.
The number of coarse grid correction iterations. Use 1 for V-cycle.
The coarsest subgrid shape.
Controls whether A-inverse is used. If false, smoothing is done at the coarsest level, rather than solving exactly.
A specification of boundary condition types per dimension.
Conjugate gradient solver's preconditioner, to speed up convergence. Although Jacobi could be a good choice of precondition for e.g. diagonal dominant matrices, it does **NOT** apply for the Hessian matrix in Poisson solver, as its diagonal elements are all the same, and it doesn't help with convergence rate at all. Next id: 2
Used in:
A library of thermodynamics in a fluid simulation.
The model of the solver for density representation.
Used in:
Unsupported solver mode.
The mode for representing density in the low-Mach number variable density approach. In this approach, the thermodynamic density is used to compute all conservative variables, hence there's a strong coupling between the momentum and thermodynamical quantities.
The mode for representing density in the anelastic approach. In this approach, the reference density (constant with respect to time), is used to compute all conservative variables. The thermodynamic density is used to compute the buoyancy term only, which conforms with the Boussinesq approximation.
Defines the type of time integration schemes.
The default option where no scheme is used. Should result in an error.
The third order Runge Kutta scheme.
The semi-implicit Crank-Nicolson scheme with explicit subiterations.
A library for parameters required by the water thermodynamics. Next id: 29
Used in:
The gas constant of water vapor, in unit of J/kg/K. The default value is computed based on treating the molecular weight of water as 0.018 kg/mol.
The reference temperature, in units of K. The default value is set at 0 degree Celsius.
The minimum temperature allowed, in units of K.
The temperature at freezing condition, in units of K.
The triple point temperature, in units of K. Source for the triple point values: engineeringtoolbox.com/critical-point-water-steam-d_834.html
The nucleation temperature, in units of K. Default value obtained from CliMa: https://github.com/CliMA/CLIMAParameters.jl/blob/main/src/Planet/planet_parameters.jl
The triple point pressure, in units of Pa.
The reference pressure used in the definition of potential temperature, in units of Pa. TODO(sheide): Double check the consistency of this parameter with `p_thermal`.
The reference specific internal energy of water vapor, in units of J/kg. The default value derived based on CLIMA design doc, Eq. 2.11.
The reference specific internal energy of ice, in units of J/kg. The default value derived based on CLIMA design doc, Eq. 2.11.
The latent heat of vaporization, in unit of J/kg. The default value is taken from http://www.splung.com/content/sid/6/page/latentheat.
The latent heat of fusion, in unit of J/kg. The default value is taken from http://www.splung.com/content/sid/6/page/latentheat.
Specific heats of the dry air at constant volume, J/kg/K. Sources for values below: 1. Pressel, Kyle G., Colleen M. Kaul, Tapio Schneider, Zhihong Tan, and Siddhartha Mishra. 2015. “Large-Eddy Simulation in an Anelastic Framework with Closed Water and Entropy Balances: LARGE-EDDY SIMULATION FRAMEWORK.” Journal of Advances in Modeling Earth Systems 7 (3): 1425–56. 2. https://www.engineeringtoolbox.com/water-properties-d_1508.html.
Specific heats of water vapor at constant volume, J/kg/K.
Specific heats of liquid water at constant volume, J/kg/K.
Specific heats of ice at constant volume, J/kg/K.
Specific heats of water vapor at constant pressure, J/kg/K.
Specific heats of liquid water at constant pressure, J/kg/K.
Specific heats of ice at constant pressure, J/kg/K.
The maximum number of iterations for the secant solver for temperature.
The tolerance of the secant solver for temperature's function f.
The atol and rtol of temperature when running iterations with Newton method, recommended value is < 1e-6, down to machine precision 1e-7 (with tf.float32) or even totally turned off (by setting it to be non-positive), unless there is enough information about the `f` function. To be backward compatible, when unset it falls back to reuse `temperature_tolerance`, though it's not recommended.
The number of iterations for density computation.
Whether to use the fast thermodynamics solver (only applicable when the prognostic variables are theta_li and q_t; no effect otherwise.)
An option of the reference state. This option assumes the thermodynamic states are constants regardless of the height.
Used in:
The reference temperature in units of K, e.g. the sea surface temperature, the far field temperature.
An option of the reference state. This option assumes the potential temperature is a constant. Next id: 5
Used in:
An indicator of whether constant potential temperature is used to define the reference/hydrostatic pressure. Do not define this field if the potential temperature in the simulation setup is not a constant.
The total humidity in the reference state.
The liquid humidity in the reference state.
The ice humidity in the reference state.
An option of the reference state. This option assumes the hydrostatic temperature follows a tanh profile, as specified in CliMa design doc, p 50, Eq. 7.3. Next id: 4
Used in:
The surface temperature, in units of K. The default value is provided in the CliMa design doc.
The height of the domain, in units of meter. Default value roughly represents of Earth’s midlatitude atmosphere.
The temperature difference between the top and bottom of the domain, in units of K. Default value roughly represents of Earth’s midlatitude atmosphere.
An option of the reference state where the profiles for pressure and potential temperature is defined by the user. With this option, it is required that `p_ref` and `theta_ref` are provided as additional_states. If `q_t_init` is also in additional_states, it will be used to compute the reference state; otherwise it is assumed that q_t = 0 in the reference state. The recommended practice for setting these states is to enforce the hydrostatic balance condition for all thermodynamics variables.
Used in:
(message has no fields)