|
ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
|
Prescribed bulk aerosol/turbidity optical depth diagnosis. More...
#include <AMReX_GpuControl.H>#include <AMReX_Math.H>#include <AMReX_FArrayBox.H>#include <cmath>

Go to the source code of this file.
Functions | |
| AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real | diagnose_tau_aerosol_constant (amrex::Real tau_aerosol_const) |
| Diagnose aerosol optical depth for Constant profile. More... | |
| AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real | diagnose_tau_aerosol_exponential (amrex::Real z_level, amrex::Real dz, amrex::Real tau_surface, amrex::Real scale_height_m) |
| Diagnose aerosol optical depth for Exponential profile. More... | |
| AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real | diagnose_tau_aerosol_table (int k) |
| Diagnose aerosol optical depth for the Table profile. More... | |
Prescribed bulk aerosol/turbidity optical depth diagnosis.
Implements profile-based aerosol optical depth diagnosis for use in TwoStream radiation. Supports Constant, Exponential, and Table (future) profile types.
Aerosol optical depth is added on top of existing tau contributions (tau_base + tau_cloud + tau_dynamic).
Constant profile: tau_aerosol(k) = aerosol_tau_per_layer [uniform at all levels]
Exponential profile: tau_aerosol(k) = aerosol_tau_surface * exp(-z(k) / aerosol_scale_height_m) [decay with height]
Table profile (future): tau_aerosol(k) = lookup_table[k] [per-level prescribed values]
| AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real diagnose_tau_aerosol_constant | ( | amrex::Real | tau_aerosol_const | ) |
Diagnose aerosol optical depth for Constant profile.
Returns uniform aerosol tau_per_layer (independent of height/level). Clamped to [0, 100] for physical reasonableness.
| [in] | tau_aerosol_const | Constant aerosol optical depth per layer [dimensionless] |
Referenced by diagnose_layer_tau().

| AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real diagnose_tau_aerosol_exponential | ( | amrex::Real | z_level, |
| amrex::Real | dz, | ||
| amrex::Real | tau_surface, | ||
| amrex::Real | scale_height_m | ||
| ) |
Diagnose aerosol optical depth for Exponential profile.
Returns the optical depth of one layer of an exponentially decaying aerosol profile, i.e. the profile integrated across that layer, tau_aerosol(k) = (tau_surface / scale_height) * dz * exp(-z(k) / scale_height) so the column sum approaches tau_surface once the domain is much deeper than the scale height. This is a per-layer contribution, not the column value above z(k).
Clamped to [0, 100] for physical reasonableness. Handles invalid parameters safely with fallback to 0.
| [in] | z_level | Height at level k [m] |
| [in] | dz | Thickness of layer k [m] |
| [in] | tau_surface | Total-column aerosol optical depth at surface [dimensionless] |
| [in] | scale_height_m | Decay scale height [m] |
Referenced by diagnose_layer_tau().

| AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real diagnose_tau_aerosol_table | ( | int | k | ) |
Diagnose aerosol optical depth for the Table profile.
Not implemented: a per-level table lookup would be supplied through a fixed-size array or a MultiFab. RadChoice::init_params() rejects this profile type, so this function is unreachable from a configured run.
| [in] | k | Level index |
Referenced by diagnose_layer_tau().
