ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
IBSEBParams Struct Reference

#include <ERF_IBSEBParams.H>

Collaboration diagram for IBSEBParams:

Public Member Functions

void init_params ()
 

Public Attributes

bool enable = false
 Master switch. More...
 
int n_slab_layers = 4
 Conduction layers per face. More...
 
amrex::Real T_skin_init = 300.0
 Initial skin temperature [K]. More...
 
amrex::Real T_interior = 293.0
 Interior (deep) temperature [K]. More...
 
std::string csv_file = "ibseb_buildings.csv"
 Per-building report. More...
 
int csv_int = 100
 Steps between report rows; <= 0 disables. More...
 
bool debug = false
 [IBSEB DEBUG] prints: set description at build, per-step summary, per-building rows More...
 
std::string dump_faces_file
 Per-rank face dump at report time (empty = off); a refined level N adds ".levN". More...
 
bool dump_faces_tag_step = false
 Name each dump by its step (keeps every one) instead of overwriting. More...
 
std::string radiation = "prescribed"
 
std::string sun_mode = "fixed"
 
amrex::Real sun_zenith_deg = 45.0
 fixed: zenith angle [deg] More...
 
amrex::Real sun_azimuth_deg = 180.0
 fixed: azimuth clockwise from north [deg]; 180 = sun in the south More...
 
amrex::Real sw_direct_normal = 800.0
 fixed: direct-normal irradiance [W/m2] More...
 
amrex::Real sw_diffuse = 100.0
 fixed: diffuse irradiance on a horizontal surface [W/m2] More...
 
amrex::Real latitude_deg = 40.0
 solar: site latitude, north positive More...
 
amrex::Real longitude_deg = -105.0
 solar: site longitude, east positive More...
 
amrex::Real day_of_year = 172.0
 solar: day of year More...
 
amrex::Real time_zero_utc_s = 12.0 * 3600.0
 solar: seconds after 00:00 UTC at simulation time zero (the sun follows UTC and the longitude) More...
 
amrex::Real solar_constant = 1361.0
 solar: [W/m2] More...
 
amrex::Real sw_transmission = 0.7
 solar, two_stream: bulk clear-sky transmission (Bird) More...
 
amrex::Real sw_diffuse_coeff = 0.5
 solar, two_stream: share of the attenuated beam that arrives as diffuse light More...
 
amrex::Real albedo = 0.3
 Face shortwave albedo. More...
 
amrex::Real albedo_ground = 0.2
 Ground albedo for the reflected diffuse term. More...
 
amrex::Real emissivity = 0.9
 Face longwave emissivity. More...
 
amrex::Real emissivity_ground = 0.95
 Ground emissivity for the ground term. More...
 
int view_n_az = 16
 
int view_n_el = 8
 
std::string lw_mode = "gray"
 
amrex::Real lw_down = 300.0
 fixed: sky longwave [W/m2] More...
 
amrex::Real sky_emissivity = 0.83
 gray: effective clear-sky emissivity More...
 
amrex::Real T_ground = 300.0
 Ground temperature for the ground term [K]. More...
 
amrex::Real z0_wall = 0.01
 Momentum roughness of the faces [m]. More...
 
amrex::Real z0h_wall = 0.001
 Heat roughness of the faces [m]. More...
 
bool stability_correction = false
 
bool couple_heat = true
 Add the face flux to the temperature equation. More...
 
std::string material_file
 
int material_default = 1
 
std::vector< int > material_by_building
 
amrex::Real k_therm = 1.0
 Uniform conductivity [W/m/K]. More...
 
amrex::Real rho_cp = 1.6e6
 Uniform volumetric heat capacity [J/m3/K]. More...
 
amrex::Real thickness = 0.3
 Uniform slab thickness [m]. More...
 
bool prognostic = true
 
amrex::Real T_skin_min = 260.0
 Lower bound of the skin temperature [K]. More...
 
amrex::Real T_skin_max = 380.0
 Upper bound [K]; raise it for faces under a fire. More...
 
int newton_max_iter = 20
 Newton iteration cap per face and step. More...
 
amrex::Real newton_tol_K = 1.0e-3
 Newton stops when a step changes T_skin by less than this [K]. More...
 
amrex::Real newton_max_step_K = 20.0
 Largest Newton step [K]. More...
 
amrex::Real Q_ext_uniform = 0.0
 Uniform external incident flux on every face [W/m2] (test hook) More...
 
std::string obukhov_seed = "ground"
 "ground" or "neutral" More...
 
std::string convective_velocity = "none"
 "none" or "deardorff" More...
 
amrex::Real beta_conv = 1.2
 Gustiness factor on w*. More...
 
std::string z_i_mode = "bulk_ri"
 "bulk_ri", "pblh" or "fixed" More...
 
amrex::Real z_i = 1000.0
 Fixed mixed-layer depth [m] (z_i_mode = fixed, and the fallback) More...
 
amrex::Real ri_crit = 0.25
 Critical bulk Richardson number of the diagnostic. More...
 
amrex::Real obukhov_relax = 0.5
 Under-relaxation of the roof's u*, theta* iteration (1 = none), as erf-model #3486. More...
 

Member Function Documentation

◆ init_params()

void IBSEBParams::init_params ( )
inline

Read the erf.ibseb.* inputs and validate them.

Only queried, never required: a deck without any erf.ibseb key gets the defaults above with the balance off. Validation is skipped when the balance is off so an unrelated deck cannot abort on an unused key.

166  {
167  amrex::ParmParse pp("erf.ibseb");
168  pp.query("enable", enable);
169  pp.query("n_slab_layers", n_slab_layers);
170  pp.query("T_skin_init", T_skin_init);
171  pp.query("T_interior", T_interior);
172  pp.query("csv_file", csv_file);
173  pp.query("csv_int", csv_int);
174  pp.query("debug", debug);
175  pp.query("dump_faces_file", dump_faces_file);
176  pp.query("dump_faces_tag_step", dump_faces_tag_step);
177  pp.query("radiation", radiation);
178  pp.query("sun_mode", sun_mode);
179  pp.query("sun_zenith_deg", sun_zenith_deg);
180  pp.query("sun_azimuth_deg", sun_azimuth_deg);
181  pp.query("sw_direct_normal", sw_direct_normal);
182  pp.query("sw_diffuse", sw_diffuse);
183  pp.query("latitude_deg", latitude_deg);
184  pp.query("longitude_deg", longitude_deg);
185  pp.query("day_of_year", day_of_year);
186  pp.query("time_zero_utc_s", time_zero_utc_s);
187  pp.query("solar_constant", solar_constant);
188  pp.query("sw_transmission", sw_transmission);
189  pp.query("sw_diffuse_coeff", sw_diffuse_coeff);
190  pp.query("albedo", albedo);
191  pp.query("albedo_ground", albedo_ground);
192  pp.query("emissivity", emissivity);
193  pp.query("emissivity_ground", emissivity_ground);
194  pp.query("view_n_az", view_n_az);
195  pp.query("view_n_el", view_n_el);
196  pp.query("lw_mode", lw_mode);
197  pp.query("lw_down", lw_down);
198  pp.query("sky_emissivity", sky_emissivity);
199  pp.query("T_ground", T_ground);
200  pp.query("z0_wall", z0_wall);
201  pp.query("z0h_wall", z0h_wall);
202  pp.query("stability_correction", stability_correction);
203  pp.query("couple_heat", couple_heat);
204  pp.query("material_file", material_file);
205  pp.query("material_default", material_default);
206  pp.queryarr("material_by_building", material_by_building);
207  pp.query("k_therm", k_therm);
208  pp.query("rho_cp", rho_cp);
209  pp.query("thickness", thickness);
210  pp.query("prognostic", prognostic);
211  pp.query("T_skin_min", T_skin_min);
212  pp.query("T_skin_max", T_skin_max);
213  pp.query("newton_max_iter", newton_max_iter);
214  pp.query("newton_tol_K", newton_tol_K);
215  pp.query("newton_max_step_K", newton_max_step_K);
216  pp.query("Q_ext_uniform", Q_ext_uniform);
217  pp.query("obukhov_seed", obukhov_seed);
218  pp.query("convective_velocity", convective_velocity);
219  pp.query("beta_conv", beta_conv);
220  pp.query("z_i_mode", z_i_mode);
221  pp.query("z_i", z_i);
222  pp.query("ri_crit", ri_crit);
223  pp.query("obukhov_relax", obukhov_relax);
224  if (enable) {
225  if (radiation != "prescribed" && radiation != "two_stream") {
226  amrex::Abort("erf.ibseb.radiation must be \"prescribed\" or \"two_stream\"");
227  }
228  // The column's longwave goes with its shortwave unless the deck says otherwise.
229  if (radiation == "two_stream" && !pp.contains("lw_mode")) { lw_mode = "two_stream"; }
230  // The columns bring the irradiances and the ground's reflection; the
231  // clear-sky formulas and the uniform ground albedo are not used.
232  if (radiation == "two_stream") {
233  for (const char* k : {"sw_direct_normal", "sw_diffuse", "sw_transmission", "sw_diffuse_coeff",
234  "solar_constant", "albedo_ground"}) {
235  if (pp.contains(k)) {
236  amrex::Abort(std::string("erf.ibseb.") + k + " is not used with erf.ibseb.radiation = two_stream:"
237  " the faces take the two-stream columns' irradiances and the ground's reflection;"
238  " remove it");
239  }
240  }
241  }
242  if (sun_mode != "fixed" && sun_mode != "solar" && sun_mode != "two_stream") {
243  amrex::Abort("erf.ibseb.sun_mode must be \"fixed\", \"solar\" or \"two_stream\"");
244  }
245  // The two-stream sun brings its own position, site, date and irradiance.
246  if (sun_mode == "two_stream") {
247  for (const char* k : {"latitude_deg", "longitude_deg", "day_of_year", "time_zero_utc_s", "solar_constant",
248  "sun_zenith_deg", "sun_azimuth_deg", "sw_direct_normal", "sw_diffuse"}) {
249  if (pp.contains(k)) {
250  amrex::Abort(std::string("erf.ibseb.") + k + " is not used with erf.ibseb.sun_mode = two_stream:"
251  " the faces take the two-stream sun (start_datetime, erf.rad_cons_lat / lon,"
252  " erf.fixed_total_solar_irradiance); remove it");
253  }
254  }
255  }
256  if (sun_zenith_deg < 0.0 || sun_zenith_deg > 180.0) { amrex::Abort("erf.ibseb.sun_zenith_deg must be in [0, 180]"); }
257  if (latitude_deg < -90.0 || latitude_deg > 90.0) { amrex::Abort("erf.ibseb.latitude_deg must be in [-90, 90]"); }
258  if (longitude_deg < -180.0 || longitude_deg > 180.0) { amrex::Abort("erf.ibseb.longitude_deg must be in [-180, 180]"); }
259  if (day_of_year < 1.0 || day_of_year > 366.0) { amrex::Abort("erf.ibseb.day_of_year must be in [1, 366]"); }
260  // The sun is computed from UTC (time_zero_utc_s) and the longitude; a
261  // time-zone offset has no place in that and used to cancel silently.
262  if (pp.contains("utc_offset_hours")) {
263  amrex::Abort("erf.ibseb.utc_offset_hours is not an input: the sun follows time_zero_utc_s (UTC) and longitude_deg; remove it");
264  }
265  if (sw_direct_normal < 0.0 || sw_diffuse < 0.0) { amrex::Abort("erf.ibseb.sw_direct_normal and sw_diffuse must be >= 0"); }
266  if (sw_transmission <= 0.0 || sw_transmission > 1.0) { amrex::Abort("erf.ibseb.sw_transmission must be in (0, 1]"); }
267  if (albedo < 0.0 || albedo > 1.0 || albedo_ground < 0.0 || albedo_ground > 1.0) {
268  amrex::Abort("erf.ibseb.albedo and albedo_ground must be in [0, 1]");
269  }
270  if (emissivity <= 0.0 || emissivity > 1.0 || emissivity_ground <= 0.0 || emissivity_ground > 1.0 ||
271  sky_emissivity <= 0.0 || sky_emissivity > 1.0) {
272  amrex::Abort("erf.ibseb emissivities must be in (0, 1]");
273  }
274  if (view_n_az < 1 || view_n_el < 1) { amrex::Abort("erf.ibseb.view_n_az and view_n_el must be >= 1"); }
275  if (lw_mode != "fixed" && lw_mode != "gray" && lw_mode != "two_stream") {
276  amrex::Abort("erf.ibseb.lw_mode must be \"fixed\", \"gray\" or \"two_stream\"");
277  }
278  if (lw_mode == "two_stream" && radiation != "two_stream") {
279  amrex::Abort("erf.ibseb.lw_mode = two_stream needs erf.ibseb.radiation = two_stream");
280  }
281  if (lw_mode == "two_stream") {
282  for (const char* k : {"lw_down", "sky_emissivity", "T_ground", "emissivity_ground"}) {
283  if (pp.contains(k)) {
284  amrex::Abort(std::string("erf.ibseb.") + k + " is not used with erf.ibseb.lw_mode = two_stream:"
285  " the faces take the two-stream columns' longwave down and the ground's longwave up;"
286  " remove it");
287  }
288  }
289  }
290  if (lw_down < 0.0 || T_ground <= 0.0) { amrex::Abort("erf.ibseb.lw_down must be >= 0 and T_ground > 0"); }
291  if (z0_wall <= 0.0 || z0h_wall <= 0.0) { amrex::Abort("erf.ibseb.z0_wall and z0h_wall must be positive [m]"); }
292  if (k_therm <= 0.0 || rho_cp <= 0.0 || thickness <= 0.0) { amrex::Abort("erf.ibseb.k_therm, rho_cp and thickness must be positive"); }
293  if (n_slab_layers > 32) { amrex::Abort("erf.ibseb.n_slab_layers must be <= 32 (the slab kernels keep their layers on the stack)"); }
294  if (n_slab_layers < 1) { amrex::Abort("erf.ibseb.n_slab_layers must be >= 1"); }
295  if (T_skin_init <= 0.0 || T_interior <= 0.0) {
296  amrex::Abort("erf.ibseb.T_skin_init and T_interior must be positive [K]");
297  }
298  if (T_skin_min <= 0.0 || T_skin_max <= T_skin_min) {
299  amrex::Abort("erf.ibseb.T_skin_min must be positive and below T_skin_max");
300  }
301  if (prognostic && (T_skin_init < T_skin_min || T_skin_init > T_skin_max)) {
302  amrex::Abort("erf.ibseb.T_skin_init must lie within [T_skin_min, T_skin_max]");
303  }
304  if (newton_max_iter < 1 || newton_tol_K <= 0.0 || newton_max_step_K <= 0.0) {
305  amrex::Abort("erf.ibseb.newton_max_iter must be >= 1, newton_tol_K and newton_max_step_K positive");
306  }
307  if (Q_ext_uniform < 0.0) { amrex::Abort("erf.ibseb.Q_ext_uniform must be >= 0"); }
308  if (obukhov_seed != "ground" && obukhov_seed != "neutral") { amrex::Abort("erf.ibseb.obukhov_seed must be \"ground\" or \"neutral\""); }
309  if (convective_velocity != "none" && convective_velocity != "deardorff") {
310  amrex::Abort("erf.ibseb.convective_velocity must be \"none\" or \"deardorff\"");
311  }
312  if (z_i_mode != "bulk_ri" && z_i_mode != "pblh" && z_i_mode != "fixed") {
313  amrex::Abort("erf.ibseb.z_i_mode must be \"bulk_ri\", \"pblh\" or \"fixed\"");
314  }
315  if (beta_conv <= 0.0 || z_i <= 0.0 || ri_crit <= 0.0) { amrex::Abort("erf.ibseb.beta_conv, z_i and ri_crit must be positive"); }
316  if (obukhov_relax <= 0.0 || obukhov_relax > 1.0) { amrex::Abort("erf.ibseb.obukhov_relax must be in (0, 1]"); }
317  }
318  }
ParmParse pp("prob")
amrex::Real newton_max_step_K
Largest Newton step [K].
Definition: ERF_IBSEBParams.H:134
std::string csv_file
Per-building report.
Definition: ERF_IBSEBParams.H:30
amrex::Real T_interior
Interior (deep) temperature [K].
Definition: ERF_IBSEBParams.H:29
std::string sun_mode
Definition: ERF_IBSEBParams.H:56
std::string convective_velocity
"none" or "deardorff"
Definition: ERF_IBSEBParams.H:151
amrex::Real T_ground
Ground temperature for the ground term [K].
Definition: ERF_IBSEBParams.H:90
amrex::Real Q_ext_uniform
Uniform external incident flux on every face [W/m2] (test hook)
Definition: ERF_IBSEBParams.H:135
amrex::Real day_of_year
solar: day of year
Definition: ERF_IBSEBParams.H:63
bool prognostic
Definition: ERF_IBSEBParams.H:129
int material_default
Definition: ERF_IBSEBParams.H:115
amrex::Real newton_tol_K
Newton stops when a step changes T_skin by less than this [K].
Definition: ERF_IBSEBParams.H:133
amrex::Real obukhov_relax
Under-relaxation of the roof's u*, theta* iteration (1 = none), as erf-model #3486.
Definition: ERF_IBSEBParams.H:156
amrex::Real z0_wall
Momentum roughness of the faces [m].
Definition: ERF_IBSEBParams.H:100
amrex::Real k_therm
Uniform conductivity [W/m/K].
Definition: ERF_IBSEBParams.H:117
amrex::Real sw_transmission
solar, two_stream: bulk clear-sky transmission (Bird)
Definition: ERF_IBSEBParams.H:66
bool enable
Master switch.
Definition: ERF_IBSEBParams.H:26
int n_slab_layers
Conduction layers per face.
Definition: ERF_IBSEBParams.H:27
amrex::Real rho_cp
Uniform volumetric heat capacity [J/m3/K].
Definition: ERF_IBSEBParams.H:118
std::string z_i_mode
"bulk_ri", "pblh" or "fixed"
Definition: ERF_IBSEBParams.H:153
amrex::Real thickness
Uniform slab thickness [m].
Definition: ERF_IBSEBParams.H:119
std::string material_file
Definition: ERF_IBSEBParams.H:114
int view_n_az
Definition: ERF_IBSEBParams.H:77
amrex::Real sky_emissivity
gray: effective clear-sky emissivity
Definition: ERF_IBSEBParams.H:89
bool couple_heat
Add the face flux to the temperature equation.
Definition: ERF_IBSEBParams.H:103
amrex::Real ri_crit
Critical bulk Richardson number of the diagnostic.
Definition: ERF_IBSEBParams.H:155
amrex::Real longitude_deg
solar: site longitude, east positive
Definition: ERF_IBSEBParams.H:62
int view_n_el
Definition: ERF_IBSEBParams.H:78
std::vector< int > material_by_building
Definition: ERF_IBSEBParams.H:116
std::string lw_mode
Definition: ERF_IBSEBParams.H:87
amrex::Real albedo_ground
Ground albedo for the reflected diffuse term.
Definition: ERF_IBSEBParams.H:70
bool dump_faces_tag_step
Name each dump by its step (keeps every one) instead of overwriting.
Definition: ERF_IBSEBParams.H:34
amrex::Real emissivity_ground
Ground emissivity for the ground term.
Definition: ERF_IBSEBParams.H:72
std::string radiation
Definition: ERF_IBSEBParams.H:46
int csv_int
Steps between report rows; <= 0 disables.
Definition: ERF_IBSEBParams.H:31
amrex::Real beta_conv
Gustiness factor on w*.
Definition: ERF_IBSEBParams.H:152
bool debug
[IBSEB DEBUG] prints: set description at build, per-step summary, per-building rows
Definition: ERF_IBSEBParams.H:32
amrex::Real solar_constant
solar: [W/m2]
Definition: ERF_IBSEBParams.H:65
amrex::Real sw_direct_normal
fixed: direct-normal irradiance [W/m2]
Definition: ERF_IBSEBParams.H:59
std::string dump_faces_file
Per-rank face dump at report time (empty = off); a refined level N adds ".levN".
Definition: ERF_IBSEBParams.H:33
amrex::Real albedo
Face shortwave albedo.
Definition: ERF_IBSEBParams.H:69
amrex::Real T_skin_min
Lower bound of the skin temperature [K].
Definition: ERF_IBSEBParams.H:130
amrex::Real time_zero_utc_s
solar: seconds after 00:00 UTC at simulation time zero (the sun follows UTC and the longitude)
Definition: ERF_IBSEBParams.H:64
amrex::Real sun_zenith_deg
fixed: zenith angle [deg]
Definition: ERF_IBSEBParams.H:57
amrex::Real lw_down
fixed: sky longwave [W/m2]
Definition: ERF_IBSEBParams.H:88
amrex::Real z_i
Fixed mixed-layer depth [m] (z_i_mode = fixed, and the fallback)
Definition: ERF_IBSEBParams.H:154
amrex::Real z0h_wall
Heat roughness of the faces [m].
Definition: ERF_IBSEBParams.H:101
amrex::Real sw_diffuse
fixed: diffuse irradiance on a horizontal surface [W/m2]
Definition: ERF_IBSEBParams.H:60
amrex::Real sun_azimuth_deg
fixed: azimuth clockwise from north [deg]; 180 = sun in the south
Definition: ERF_IBSEBParams.H:58
bool stability_correction
Definition: ERF_IBSEBParams.H:102
amrex::Real T_skin_init
Initial skin temperature [K].
Definition: ERF_IBSEBParams.H:28
amrex::Real latitude_deg
solar: site latitude, north positive
Definition: ERF_IBSEBParams.H:61
std::string obukhov_seed
"ground" or "neutral"
Definition: ERF_IBSEBParams.H:150
amrex::Real sw_diffuse_coeff
solar, two_stream: share of the attenuated beam that arrives as diffuse light
Definition: ERF_IBSEBParams.H:67
amrex::Real T_skin_max
Upper bound [K]; raise it for faces under a fire.
Definition: ERF_IBSEBParams.H:131
amrex::Real emissivity
Face longwave emissivity.
Definition: ERF_IBSEBParams.H:71
int newton_max_iter
Newton iteration cap per face and step.
Definition: ERF_IBSEBParams.H:132
Here is the call graph for this function:

Member Data Documentation

◆ albedo

amrex::Real IBSEBParams::albedo = 0.3

Face shortwave albedo.

Referenced by init_params().

◆ albedo_ground

amrex::Real IBSEBParams::albedo_ground = 0.2

Ground albedo for the reflected diffuse term.

Referenced by IBFaceSet::compute_shortwave(), and init_params().

◆ beta_conv

amrex::Real IBSEBParams::beta_conv = 1.2

Gustiness factor on w*.

Referenced by init_params().

◆ convective_velocity

std::string IBSEBParams::convective_velocity = "none"

"none" or "deardorff"

Referenced by init_params().

◆ couple_heat

bool IBSEBParams::couple_heat = true

Add the face flux to the temperature equation.

Referenced by init_params().

◆ csv_file

std::string IBSEBParams::csv_file = "ibseb_buildings.csv"

Per-building report.

Referenced by init_params(), IBFaceSet::print_debug_summary(), and IBFaceSet::report().

◆ csv_int

int IBSEBParams::csv_int = 100

Steps between report rows; <= 0 disables.

Referenced by init_params(), and IBFaceSet::print_debug_summary().

◆ day_of_year

amrex::Real IBSEBParams::day_of_year = 172.0

solar: day of year

Referenced by IBFaceSet::compute_shortwave(), and init_params().

◆ debug

bool IBSEBParams::debug = false

[IBSEB DEBUG] prints: set description at build, per-step summary, per-building rows

Referenced by IBFaceSet::compute_shortwave(), IBFaceSet::compute_shortwave_two_stream(), init_params(), IBFaceSet::load_state(), IBFaceSet::report(), and IBFaceSet::save_state().

◆ dump_faces_file

std::string IBSEBParams::dump_faces_file

Per-rank face dump at report time (empty = off); a refined level N adds ".levN".

Referenced by init_params(), and IBFaceSet::report().

◆ dump_faces_tag_step

bool IBSEBParams::dump_faces_tag_step = false

Name each dump by its step (keeps every one) instead of overwriting.

Referenced by init_params(), and IBFaceSet::report().

◆ emissivity

amrex::Real IBSEBParams::emissivity = 0.9

Face longwave emissivity.

Referenced by init_params().

◆ emissivity_ground

amrex::Real IBSEBParams::emissivity_ground = 0.95

Ground emissivity for the ground term.

Referenced by init_params().

◆ enable

bool IBSEBParams::enable = false

Master switch.

Referenced by ERF::ibseb_after_radiation(), and init_params().

◆ k_therm

amrex::Real IBSEBParams::k_therm = 1.0

Uniform conductivity [W/m/K].

Referenced by init_params().

◆ latitude_deg

amrex::Real IBSEBParams::latitude_deg = 40.0

solar: site latitude, north positive

Referenced by IBFaceSet::compute_shortwave(), and init_params().

◆ longitude_deg

amrex::Real IBSEBParams::longitude_deg = -105.0

solar: site longitude, east positive

Referenced by IBFaceSet::compute_shortwave(), and init_params().

◆ lw_down

amrex::Real IBSEBParams::lw_down = 300.0

fixed: sky longwave [W/m2]

Referenced by init_params().

◆ lw_mode

std::string IBSEBParams::lw_mode = "gray"

Referenced by init_params().

◆ material_by_building

std::vector<int> IBSEBParams::material_by_building

Referenced by init_params().

◆ material_default

int IBSEBParams::material_default = 1

Referenced by init_params().

◆ material_file

std::string IBSEBParams::material_file

Referenced by init_params().

◆ n_slab_layers

int IBSEBParams::n_slab_layers = 4

Conduction layers per face.

Referenced by init_params(), and IBFaceSet::n_layers().

◆ newton_max_iter

int IBSEBParams::newton_max_iter = 20

Newton iteration cap per face and step.

Referenced by init_params().

◆ newton_max_step_K

amrex::Real IBSEBParams::newton_max_step_K = 20.0

Largest Newton step [K].

Referenced by init_params().

◆ newton_tol_K

amrex::Real IBSEBParams::newton_tol_K = 1.0e-3

Newton stops when a step changes T_skin by less than this [K].

Referenced by init_params().

◆ obukhov_relax

amrex::Real IBSEBParams::obukhov_relax = 0.5

Under-relaxation of the roof's u*, theta* iteration (1 = none), as erf-model #3486.

Referenced by init_params().

◆ obukhov_seed

std::string IBSEBParams::obukhov_seed = "ground"

"ground" or "neutral"

Referenced by init_params().

◆ prognostic

bool IBSEBParams::prognostic = true

Referenced by init_params().

◆ Q_ext_uniform

amrex::Real IBSEBParams::Q_ext_uniform = 0.0

Uniform external incident flux on every face [W/m2] (test hook)

Referenced by init_params().

◆ radiation

std::string IBSEBParams::radiation = "prescribed"

◆ rho_cp

amrex::Real IBSEBParams::rho_cp = 1.6e6

Uniform volumetric heat capacity [J/m3/K].

Referenced by init_params().

◆ ri_crit

amrex::Real IBSEBParams::ri_crit = 0.25

Critical bulk Richardson number of the diagnostic.

Referenced by init_params().

◆ sky_emissivity

amrex::Real IBSEBParams::sky_emissivity = 0.83

gray: effective clear-sky emissivity

Referenced by init_params().

◆ solar_constant

amrex::Real IBSEBParams::solar_constant = 1361.0

solar: [W/m2]

Referenced by IBFaceSet::compute_shortwave(), and init_params().

◆ stability_correction

bool IBSEBParams::stability_correction = false

Referenced by init_params().

◆ sun_azimuth_deg

amrex::Real IBSEBParams::sun_azimuth_deg = 180.0

fixed: azimuth clockwise from north [deg]; 180 = sun in the south

Referenced by IBFaceSet::compute_shortwave(), and init_params().

◆ sun_mode

std::string IBSEBParams::sun_mode = "fixed"

◆ sun_zenith_deg

amrex::Real IBSEBParams::sun_zenith_deg = 45.0

fixed: zenith angle [deg]

Referenced by IBFaceSet::compute_shortwave(), and init_params().

◆ sw_diffuse

amrex::Real IBSEBParams::sw_diffuse = 100.0

fixed: diffuse irradiance on a horizontal surface [W/m2]

Referenced by IBFaceSet::compute_shortwave(), and init_params().

◆ sw_diffuse_coeff

amrex::Real IBSEBParams::sw_diffuse_coeff = 0.5

solar, two_stream: share of the attenuated beam that arrives as diffuse light

Referenced by IBFaceSet::compute_shortwave(), and init_params().

◆ sw_direct_normal

amrex::Real IBSEBParams::sw_direct_normal = 800.0

fixed: direct-normal irradiance [W/m2]

Referenced by IBFaceSet::compute_shortwave(), and init_params().

◆ sw_transmission

amrex::Real IBSEBParams::sw_transmission = 0.7

solar, two_stream: bulk clear-sky transmission (Bird)

Referenced by IBFaceSet::compute_shortwave(), and init_params().

◆ T_ground

amrex::Real IBSEBParams::T_ground = 300.0

Ground temperature for the ground term [K].

Referenced by init_params().

◆ T_interior

amrex::Real IBSEBParams::T_interior = 293.0

Interior (deep) temperature [K].

Referenced by init_params(), and IBFaceSet::print_debug_summary().

◆ T_skin_init

amrex::Real IBSEBParams::T_skin_init = 300.0

Initial skin temperature [K].

Referenced by init_params(), and IBFaceSet::print_debug_summary().

◆ T_skin_max

amrex::Real IBSEBParams::T_skin_max = 380.0

Upper bound [K]; raise it for faces under a fire.

Referenced by init_params().

◆ T_skin_min

amrex::Real IBSEBParams::T_skin_min = 260.0

Lower bound of the skin temperature [K].

Referenced by init_params().

◆ thickness

amrex::Real IBSEBParams::thickness = 0.3

Uniform slab thickness [m].

Referenced by init_params().

◆ time_zero_utc_s

amrex::Real IBSEBParams::time_zero_utc_s = 12.0 * 3600.0

solar: seconds after 00:00 UTC at simulation time zero (the sun follows UTC and the longitude)

Referenced by IBFaceSet::compute_shortwave(), and init_params().

◆ view_n_az

int IBSEBParams::view_n_az = 16

Referenced by init_params().

◆ view_n_el

int IBSEBParams::view_n_el = 8

Referenced by init_params().

◆ z0_wall

amrex::Real IBSEBParams::z0_wall = 0.01

Momentum roughness of the faces [m].

Referenced by init_params().

◆ z0h_wall

amrex::Real IBSEBParams::z0h_wall = 0.001

Heat roughness of the faces [m].

Referenced by init_params().

◆ z_i

amrex::Real IBSEBParams::z_i = 1000.0

Fixed mixed-layer depth [m] (z_i_mode = fixed, and the fallback)

Referenced by init_params().

◆ z_i_mode

std::string IBSEBParams::z_i_mode = "bulk_ri"

"bulk_ri", "pblh" or "fixed"

Referenced by init_params().


The documentation for this struct was generated from the following file: