From f22f0e30494acfb66d2993276313f9f24e40073e Mon Sep 17 00:00:00 2001 From: asalmgren Date: Wed, 27 Nov 2024 02:38:09 +0000 Subject: [PATCH] Deployed from erf-model/ERF --- ERF__ComputeTurbulentViscosity_8cpp.html | 8 +- ERF__DataStruct_8H_source.html | 1137 +++++++++++----------- ERF__DiffusionSrcForState__N_8cpp.html | 8 +- ERF__DiffusionSrcForState__T_8cpp.html | 8 +- ERF__Kessler_8H_source.html | 10 +- ERF__SAM_8H_source.html | 12 +- ERF__TI__substep__fun_8H_source.html | 2 +- ERF__make__buoyancy_8cpp.html | 8 +- ERF__make__mom__sources_8cpp.html | 42 +- ERF__make__sources_8cpp.html | 34 +- ERF__make__tau__terms_8cpp.html | 10 +- ERF__prob__common_8H_source.html | 2 +- ERF__slow__rhs__post_8cpp.html | 22 +- ERF__slow__rhs__pre_8cpp.html | 26 +- classERF.html | 94 +- classKessler.html | 10 +- classProblemBase.html | 2 +- classSAM.html | 12 +- structSolverChoice.html | 867 +++++++++-------- 19 files changed, 1162 insertions(+), 1152 deletions(-) diff --git a/ERF__ComputeTurbulentViscosity_8cpp.html b/ERF__ComputeTurbulentViscosity_8cpp.html index da84f1e9a..b9678b334 100644 --- a/ERF__ComputeTurbulentViscosity_8cpp.html +++ b/ERF__ComputeTurbulentViscosity_8cpp.html @@ -390,10 +390,10 @@

void ComputeTurbulentViscosityLES(const MultiFab &Tau11, const MultiFab &Tau22, const MultiFab &Tau33, const MultiFab &Tau12, const MultiFab &Tau13, const MultiFab &Tau23, const MultiFab &cons_in, MultiFab &eddyViscosity, MultiFab &Hfx1, MultiFab &Hfx2, MultiFab &Hfx3, MultiFab &Diss, const Geometry &geom, const MultiFab &mapfac_u, const MultiFab &mapfac_v, const std::unique_ptr< MultiFab > &z_phys_nd, const TurbChoice &turbChoice, const Real const_grav, std::unique_ptr< ABLMost > &most, const bool &exp_most)
Definition: ERF_ComputeTurbulentViscosity.cpp:32
@ xvel
Definition: ERF_IndexDefines.H:130
@ yvel
Definition: ERF_IndexDefines.H:131
-
int RhoQr_comp
Definition: ERF_DataStruct.H:640
-
amrex::Real gravity
Definition: ERF_DataStruct.H:571
-
int RhoQv_comp
Definition: ERF_DataStruct.H:634
-
amrex::Vector< TurbChoice > turbChoice
Definition: ERF_DataStruct.H:535
+
int RhoQr_comp
Definition: ERF_DataStruct.H:645
+
amrex::Real gravity
Definition: ERF_DataStruct.H:576
+
int RhoQv_comp
Definition: ERF_DataStruct.H:639
+
amrex::Vector< TurbChoice > turbChoice
Definition: ERF_DataStruct.H:540
Definition: ERF_TurbStruct.H:29
PBLType pbl_type
Definition: ERF_TurbStruct.H:192
LESType les_type
Definition: ERF_TurbStruct.H:169
diff --git a/ERF__DataStruct_8H_source.html b/ERF__DataStruct_8H_source.html index 4a4e67c3b..4d36f7c3d 100644 --- a/ERF__DataStruct_8H_source.html +++ b/ERF__DataStruct_8H_source.html @@ -231,513 +231,518 @@
143 
144  // Is the terrain none, static or moving?
145  pp.query_enum_case_insensitive("terrain_type",terrain_type);
-
146 
-
147  // Use lagged_delta_rt in the fast integrator?
-
148  pp.query("use_lagged_delta_rt", use_lagged_delta_rt);
-
149 
-
150  // These default to true but are used for unit testing
-
151  pp.query("use_gravity", use_gravity);
- -
153 
-
154  pp.query("c_p", c_p);
-
155  rdOcp = R_d / c_p;
-
156 
-
157  read_int_string(max_level, "anelastic", anelastic, 0);
+
146  int n_zlevels = pp.countval("terrain_z_levels");
+
147  if (n_zlevels > 0 and terrain_type == TerrainType::None)
+
148  {
+
149  terrain_type = TerrainType::Static;
+
150  }
+
151 
+
152  // Use lagged_delta_rt in the fast integrator?
+
153  pp.query("use_lagged_delta_rt", use_lagged_delta_rt);
+
154 
+
155  // These default to true but are used for unit testing
+
156  pp.query("use_gravity", use_gravity);
+
158 
-
159  // *******************************************************************************
-
160  // Read substepping_type and allow for different values at each level
-
161  // *******************************************************************************
-
162  substepping_type.resize(max_level+1);
+
159  pp.query("c_p", c_p);
+
160  rdOcp = R_d / c_p;
+
161 
+
162  read_int_string(max_level, "anelastic", anelastic, 0);
163 
-
164  for (int i = 0; i <= max_level; i++) {
-
165  substepping_type[i] = SubsteppingType::Implicit;
-
166  }
-
167 
-
168  int nvals = pp.countval("substepping_type");
-
169  AMREX_ALWAYS_ASSERT(nvals == 0 || nvals == 1 || nvals >= max_level+1);
-
170 
-
171  if (nvals == 1) {
-
172  pp.query_enum_case_insensitive("substepping_type",substepping_type[0]);
-
173  for (int i = 1; i <= max_level; i++) {
- -
175  }
-
176  } else if (nvals > 1) { // in this case we have asserted nvals >= max_level+1
-
177  for (int i = 0; i <= max_level; i++) {
-
178  pp.query_enum_case_insensitive("substepping_type",substepping_type[i],i);
-
179  }
-
180  }
-
181 
-
182  // *******************************************************************************
-
183  // Error check on deprecated input
-
184  // *******************************************************************************
-
185  int nvals_old = pp.countval("no_substepping");
-
186  if (nvals_old > 0) {
-
187  amrex::Abort("The no_substepping flag is deprecated -- set substepping_type instead");
-
188  }
+
164  // *******************************************************************************
+
165  // Read substepping_type and allow for different values at each level
+
166  // *******************************************************************************
+
167  substepping_type.resize(max_level+1);
+
168 
+
169  for (int i = 0; i <= max_level; i++) {
+
170  substepping_type[i] = SubsteppingType::Implicit;
+
171  }
+
172 
+
173  int nvals = pp.countval("substepping_type");
+
174  AMREX_ALWAYS_ASSERT(nvals == 0 || nvals == 1 || nvals >= max_level+1);
+
175 
+
176  if (nvals == 1) {
+
177  pp.query_enum_case_insensitive("substepping_type",substepping_type[0]);
+
178  for (int i = 1; i <= max_level; i++) {
+ +
180  }
+
181  } else if (nvals > 1) { // in this case we have asserted nvals >= max_level+1
+
182  for (int i = 0; i <= max_level; i++) {
+
183  pp.query_enum_case_insensitive("substepping_type",substepping_type[i],i);
+
184  }
+
185  }
+
186 
+
187  // *******************************************************************************
+
188  // Error check on deprecated input
189  // *******************************************************************************
-
190 
-
191  bool any_anelastic = false;
-
192  for (int i = 0; i <= max_level; ++i) {
-
193  if (anelastic[i] == 1) any_anelastic = true;
-
194  }
+
190  int nvals_old = pp.countval("no_substepping");
+
191  if (nvals_old > 0) {
+
192  amrex::Abort("The no_substepping flag is deprecated -- set substepping_type instead");
+
193  }
+
194  // *******************************************************************************
195 
-
196  // If anelastic at all, we do not advect rho -- it is always == rho0
-
197  if (any_anelastic == 1) {
-
198  constant_density = true;
- -
200  buoyancy_type = 3; // (This isn't actually used when anelastic is set)
-
201  } else {
-
202  pp.query("project_initial_velocity", project_initial_velocity);
-
203 
-
204  constant_density = false; // We default to false but allow the user to set it
-
205  pp.query("constant_density", constant_density);
-
206  }
-
207 
-
208  // *******************************************************************************
-
209 
-
210  pp.query("ncorr", ncorr);
-
211  pp.query("poisson_abstol", poisson_abstol);
-
212  pp.query("poisson_reltol", poisson_reltol);
-
213 
-
214  for (int lev = 0; lev <= max_level; lev++) {
-
215  if (anelastic[lev] != 0)
-
216  {
-
217  substepping_type[lev] = SubsteppingType::None;
-
218  }
-
219  }
-
220 
-
221  pp.query("force_stage1_single_substep", force_stage1_single_substep);
-
222 
-
223  // Include Coriolis forcing?
-
224  pp.query("use_coriolis", use_coriolis);
+
196  bool any_anelastic = false;
+
197  for (int i = 0; i <= max_level; ++i) {
+
198  if (anelastic[i] == 1) any_anelastic = true;
+
199  }
+
200 
+
201  // If anelastic at all, we do not advect rho -- it is always == rho0
+
202  if (any_anelastic == 1) {
+
203  constant_density = true;
+ +
205  buoyancy_type = 3; // (This isn't actually used when anelastic is set)
+
206  } else {
+
207  pp.query("project_initial_velocity", project_initial_velocity);
+
208 
+
209  constant_density = false; // We default to false but allow the user to set it
+
210  pp.query("constant_density", constant_density);
+
211  }
+
212 
+
213  // *******************************************************************************
+
214 
+
215  pp.query("ncorr", ncorr);
+
216  pp.query("poisson_abstol", poisson_abstol);
+
217  pp.query("poisson_reltol", poisson_reltol);
+
218 
+
219  for (int lev = 0; lev <= max_level; lev++) {
+
220  if (anelastic[lev] != 0)
+
221  {
+
222  substepping_type[lev] = SubsteppingType::None;
+
223  }
+
224  }
225 
-
226  // Include Rayleigh damping (separate flags for each variable)
-
227  pp.query("rayleigh_damp_U", rayleigh_damp_U);
-
228  pp.query("rayleigh_damp_V", rayleigh_damp_V);
-
229  pp.query("rayleigh_damp_W", rayleigh_damp_W);
-
230  pp.query("rayleigh_damp_T", rayleigh_damp_T);
-
231  pp.query("rayleigh_dampcoef", rayleigh_dampcoef);
-
232  pp.query("rayleigh_zdamp", rayleigh_zdamp);
-
233 
-
234  // Flag to do explicit MOST formulation
-
235  pp.query("use_explicit_most",use_explicit_most);
-
236 
-
237  // Flag to do MOST rotations with terrain
-
238  pp.query("use_rotate_most",use_rotate_most);
-
239  if (use_rotate_most) {
-
240  AMREX_ASSERT_WITH_MESSAGE(terrain_type != TerrainType::None,"MOST stress rotations are only valid with terrain!");
-
241  AMREX_ASSERT_WITH_MESSAGE(use_explicit_most, "MOST Stress rotations are only valid with explicit MOST!");
-
242  }
-
243 
-
244  // Which external forcings?
-
245  abl_driver_type = ABLDriverType::None; // Default: no ABL driver for simulating classical fluid dynamics problems
-
246  pp.query_enum_case_insensitive("abl_driver_type",abl_driver_type);
-
247 
-
248  // Which type of inflow turbulent generation
-
249  pert_type = PerturbationType::None; // Default
-
250  pp.query_enum_case_insensitive("perturbation_type",pert_type);
-
251 
-
252  amrex::Vector<amrex::Real> abl_pressure_grad_in = {0.0, 0.0, 0.0};
-
253  pp.queryarr("abl_pressure_grad",abl_pressure_grad_in);
-
254  for(int i = 0; i < AMREX_SPACEDIM; ++i) abl_pressure_grad[i] = abl_pressure_grad_in[i];
-
255 
-
256  amrex::Vector<amrex::Real> abl_geo_forcing_in = {0.0, 0.0, 0.0};
-
257  if(pp.queryarr("abl_geo_forcing",abl_geo_forcing_in)) {
-
258  amrex::Print() << "Specified abl_geo_forcing: (";
-
259  for (int i = 0; i < AMREX_SPACEDIM; ++i) {
-
260  abl_geo_forcing[i] = abl_geo_forcing_in[i];
-
261  amrex::Print() << abl_geo_forcing[i] << " ";
-
262  }
-
263  amrex::Print() << ")" << std::endl;
-
264  }
-
265 
-
266  if (use_coriolis)
-
267  {
- +
226  pp.query("force_stage1_single_substep", force_stage1_single_substep);
+
227 
+
228  // Include Coriolis forcing?
+
229  pp.query("use_coriolis", use_coriolis);
+
230 
+
231  // Include Rayleigh damping (separate flags for each variable)
+
232  pp.query("rayleigh_damp_U", rayleigh_damp_U);
+
233  pp.query("rayleigh_damp_V", rayleigh_damp_V);
+
234  pp.query("rayleigh_damp_W", rayleigh_damp_W);
+
235  pp.query("rayleigh_damp_T", rayleigh_damp_T);
+
236  pp.query("rayleigh_dampcoef", rayleigh_dampcoef);
+
237  pp.query("rayleigh_zdamp", rayleigh_zdamp);
+
238 
+
239  // Flag to do explicit MOST formulation
+
240  pp.query("use_explicit_most",use_explicit_most);
+
241 
+
242  // Flag to do MOST rotations with terrain
+
243  pp.query("use_rotate_most",use_rotate_most);
+
244  if (use_rotate_most) {
+
245  AMREX_ASSERT_WITH_MESSAGE(terrain_type != TerrainType::None,"MOST stress rotations are only valid with terrain!");
+
246  AMREX_ASSERT_WITH_MESSAGE(use_explicit_most, "MOST Stress rotations are only valid with explicit MOST!");
+
247  }
+
248 
+
249  // Which external forcings?
+
250  abl_driver_type = ABLDriverType::None; // Default: no ABL driver for simulating classical fluid dynamics problems
+
251  pp.query_enum_case_insensitive("abl_driver_type",abl_driver_type);
+
252 
+
253  // Which type of inflow turbulent generation
+
254  pert_type = PerturbationType::None; // Default
+
255  pp.query_enum_case_insensitive("perturbation_type",pert_type);
+
256 
+
257  amrex::Vector<amrex::Real> abl_pressure_grad_in = {0.0, 0.0, 0.0};
+
258  pp.queryarr("abl_pressure_grad",abl_pressure_grad_in);
+
259  for(int i = 0; i < AMREX_SPACEDIM; ++i) abl_pressure_grad[i] = abl_pressure_grad_in[i];
+
260 
+
261  amrex::Vector<amrex::Real> abl_geo_forcing_in = {0.0, 0.0, 0.0};
+
262  if(pp.queryarr("abl_geo_forcing",abl_geo_forcing_in)) {
+
263  amrex::Print() << "Specified abl_geo_forcing: (";
+
264  for (int i = 0; i < AMREX_SPACEDIM; ++i) {
+
265  abl_geo_forcing[i] = abl_geo_forcing_in[i];
+
266  amrex::Print() << abl_geo_forcing[i] << " ";
+
267  }
+
268  amrex::Print() << ")" << std::endl;
269  }
270 
-
271  pp.query("add_custom_rhotheta_forcing", custom_rhotheta_forcing);
-
272  pp.query("add_custom_moisture_forcing", custom_moisture_forcing);
-
273  pp.query("add_custom_w_subsidence", custom_w_subsidence);
-
274  pp.query("add_custom_geostrophic_profile", custom_geostrophic_profile);
-
275  pp.query("custom_forcing_uses_primitive_vars", custom_forcing_prim_vars);
-
276 
-
277  pp.query("nudging_from_input_sounding", nudging_from_input_sounding);
-
278 
- -
280  AMREX_ALWAYS_ASSERT_WITH_MESSAGE(!(!abl_geo_wind_table.empty() && custom_geostrophic_profile),
-
281  "Should not have both abl_geo_wind_table and custom_geostrophic_profile set.");
-
282 
-
283  pp.query("Ave_Plane", ave_plane);
-
284 
-
285  pp.query("mp_clouds", do_cloud);
-
286  pp.query("mp_precip", do_precip);
-
287  pp.query("use_moist_background", use_moist_background);
-
288 
-
289  // Use numerical diffusion?
-
290  pp.query("use_NumDiff",use_NumDiff);
-
291  if(use_NumDiff) {
-
292  pp.query("NumDiffCoeff",NumDiffCoeff);
-
293  AMREX_ASSERT_WITH_MESSAGE(( (NumDiffCoeff >= 0.) && (NumDiffCoeff <= 1.) ),
-
294  "Numerical diffusion coefficient must be between 0 & 1.");
-
295  NumDiffCoeff *= std::pow(2.0,-6);
-
296  }
-
297 
-
298  // Use monotonic advection?
-
299  pp.query("use_mono_adv",use_mono_adv);
-
300 
- - - -
304 
-
305  turbChoice.resize(max_level+1);
-
306  for (int lev = 0; lev <= max_level; lev++) {
-
307  turbChoice[lev].init_params(lev,max_level);
-
308  }
+
271  if (use_coriolis)
+
272  {
+ +
274  }
+
275 
+
276  pp.query("add_custom_rhotheta_forcing", custom_rhotheta_forcing);
+
277  pp.query("add_custom_moisture_forcing", custom_moisture_forcing);
+
278  pp.query("add_custom_w_subsidence", custom_w_subsidence);
+
279  pp.query("add_custom_geostrophic_profile", custom_geostrophic_profile);
+
280  pp.query("custom_forcing_uses_primitive_vars", custom_forcing_prim_vars);
+
281 
+
282  pp.query("nudging_from_input_sounding", nudging_from_input_sounding);
+
283 
+ +
285  AMREX_ALWAYS_ASSERT_WITH_MESSAGE(!(!abl_geo_wind_table.empty() && custom_geostrophic_profile),
+
286  "Should not have both abl_geo_wind_table and custom_geostrophic_profile set.");
+
287 
+
288  pp.query("Ave_Plane", ave_plane);
+
289 
+
290  pp.query("mp_clouds", do_cloud);
+
291  pp.query("mp_precip", do_precip);
+
292  pp.query("use_moist_background", use_moist_background);
+
293 
+
294  // Use numerical diffusion?
+
295  pp.query("use_NumDiff",use_NumDiff);
+
296  if(use_NumDiff) {
+
297  pp.query("NumDiffCoeff",NumDiffCoeff);
+
298  AMREX_ASSERT_WITH_MESSAGE(( (NumDiffCoeff >= 0.) && (NumDiffCoeff <= 1.) ),
+
299  "Numerical diffusion coefficient must be between 0 & 1.");
+
300  NumDiffCoeff *= std::pow(2.0,-6);
+
301  }
+
302 
+
303  // Use monotonic advection?
+
304  pp.query("use_mono_adv",use_mono_adv);
+
305 
+ + +
309 
-
310  // YSU PBL: use consistent coriolis frequency
+
310  turbChoice.resize(max_level+1);
311  for (int lev = 0; lev <= max_level; lev++) {
-
312  if (turbChoice[lev].pbl_ysu_use_consistent_coriolis) {
-
313  if (use_coriolis) {
-
314  turbChoice[lev].pbl_ysu_coriolis_freq = coriolis_factor * sinphi;
-
315  if (lev == 0) {
-
316  amrex::Print() << "YSU PBL using ERF coriolis frequency: " << turbChoice[lev].pbl_ysu_coriolis_freq << std::endl;
-
317  }
-
318  } else {
-
319  amrex::Abort("YSU cannot use ERF coriolis frequency if not using coriolis");
-
320  }
-
321  }
-
322  }
-
323 
-
324 
-
325  // Which type of multilevel coupling
-
326  coupling_type = CouplingType::TwoWay; // Default
-
327  pp.query_enum_case_insensitive("coupling_type",coupling_type);
+
312  turbChoice[lev].init_params(lev,max_level);
+
313  }
+
314 
+
315  // YSU PBL: use consistent coriolis frequency
+
316  for (int lev = 0; lev <= max_level; lev++) {
+
317  if (turbChoice[lev].pbl_ysu_use_consistent_coriolis) {
+
318  if (use_coriolis) {
+
319  turbChoice[lev].pbl_ysu_coriolis_freq = coriolis_factor * sinphi;
+
320  if (lev == 0) {
+
321  amrex::Print() << "YSU PBL using ERF coriolis frequency: " << turbChoice[lev].pbl_ysu_coriolis_freq << std::endl;
+
322  }
+
323  } else {
+
324  amrex::Abort("YSU cannot use ERF coriolis frequency if not using coriolis");
+
325  }
+
326  }
+
327  }
328 
-
329  // Which type of windfarm model
-
330  windfarm_type = WindFarmType::None; // Default
-
331  pp.query_enum_case_insensitive("windfarm_type",windfarm_type);
-
332 
-
333  static std::string windfarm_loc_type_string = "None";
-
334  windfarm_loc_type = WindFarmLocType::None;
-
335  pp.query_enum_case_insensitive("windfarm_loc_type",windfarm_loc_type);
-
336 
-
337  pp.query("windfarm_loc_table", windfarm_loc_table);
-
338  pp.query("windfarm_spec_table", windfarm_spec_table);
-
339  pp.query("windfarm_blade_table", windfarm_blade_table);
-
340  pp.query("windfarm_airfoil_tables", windfarm_airfoil_tables);
-
341  pp.query("windfarm_spec_table_extra", windfarm_spec_table_extra);
-
342 
-
343  // Sampling distance upstream of the turbine to find the
-
344  // incoming free stream velocity as a factor of the diameter of the
-
345  // turbine. ie. the sampling distance will be this number multiplied
-
346  // by the diameter of the turbine
-
347  pp.query("sampling_distance_by_D", sampling_distance_by_D);
-
348  pp.query("turb_disk_angle_from_x", turb_disk_angle);
-
349 
-
350  pp.query("windfarm_x_shift",windfarm_x_shift);
-
351  pp.query("windfarm_y_shift",windfarm_y_shift);
-
352  // Test if time averaged data is to be output
-
353  pp.query("time_avg_vel",time_avg_vel);
+
329 
+
330  // Which type of multilevel coupling
+
331  coupling_type = CouplingType::TwoWay; // Default
+
332  pp.query_enum_case_insensitive("coupling_type",coupling_type);
+
333 
+
334  // Which type of windfarm model
+
335  windfarm_type = WindFarmType::None; // Default
+
336  pp.query_enum_case_insensitive("windfarm_type",windfarm_type);
+
337 
+
338  static std::string windfarm_loc_type_string = "None";
+
339  windfarm_loc_type = WindFarmLocType::None;
+
340  pp.query_enum_case_insensitive("windfarm_loc_type",windfarm_loc_type);
+
341 
+
342  pp.query("windfarm_loc_table", windfarm_loc_table);
+
343  pp.query("windfarm_spec_table", windfarm_spec_table);
+
344  pp.query("windfarm_blade_table", windfarm_blade_table);
+
345  pp.query("windfarm_airfoil_tables", windfarm_airfoil_tables);
+
346  pp.query("windfarm_spec_table_extra", windfarm_spec_table_extra);
+
347 
+
348  // Sampling distance upstream of the turbine to find the
+
349  // incoming free stream velocity as a factor of the diameter of the
+
350  // turbine. ie. the sampling distance will be this number multiplied
+
351  // by the diameter of the turbine
+
352  pp.query("sampling_distance_by_D", sampling_distance_by_D);
+
353  pp.query("turb_disk_angle_from_x", turb_disk_angle);
354 
-
355  check_params(max_level);
-
356  }
-
357 
-
358  void check_params(int max_level)
-
359  {
-
360  // Warn for PBL models and moisture - these may not yet be compatible
-
361  for (int lev = 0; lev <= max_level; lev++) {
-
362  if ((moisture_type != MoistureType::None) && (turbChoice[lev].pbl_type != PBLType::None)) {
-
363  amrex::Warning("\n*** WARNING: Moisture may not yet be compatible with PBL models, \n proceed with caution ***");
-
364  }
-
365  }
-
366  //
-
367  // Buoyancy type check
-
368  //
-
369  if (buoyancy_type != 1 && buoyancy_type != 2 && buoyancy_type != 3 && buoyancy_type != 4) {
-
370  amrex::Abort("buoyancy_type must be 1, 2, 3 or 4");
-
371  }
-
372 
-
373  if (!use_lagged_delta_rt && !(terrain_type == TerrainType::Moving)) {
-
374  amrex::Error("Can't turn off lagged_delta_rt when terrain not moving");
-
375  }
-
376 
-
377  //
-
378  // Wind farm checks
-
379  //
-
380  if (windfarm_type==WindFarmType::SimpleAD and sampling_distance_by_D < 0.0) {
-
381  amrex::Abort("To use simplified actuator disks, you need to provide a variable"
-
382  " erf.sampling_distance_by_D in the inputs which specifies the upstream"
-
383  " distance as a factor of the turbine diameter at which the incoming free stream"
-
384  " velocity will be computed at.");
-
385  }
-
386  if ( (windfarm_type==WindFarmType::SimpleAD ||
-
387  windfarm_type==WindFarmType::GeneralAD ) && turb_disk_angle < 0.0) {
-
388  amrex::Abort("To use simplified actuator disks, you need to provide a variable"
-
389  " erf.turb_disk_angle_from_x in the inputs which is the angle of the face of the"
-
390  " turbine disk from the x-axis. A turbine facing an oncoming flow in the x-direction"
-
391  " will have turb_disk_angle value of 90 deg.");
-
392  }
-
393  if (windfarm_loc_type == WindFarmLocType::lat_lon and (windfarm_x_shift < 0.0 or windfarm_y_shift < 0.0)) {
-
394  amrex::Abort("You are using windfarms with latitude-logitude option to position the turbines."
-
395  " For this you should provide the inputs erf.windfarm_x_shift and"
-
396  " erf.windfarm_y_shift which are the values by which the bounding box of the"
-
397  " windfarm is shifted from the x and the y axes.");
-
398  }
-
399  }
-
400 
-
401  void display(int max_level)
-
402  {
-
403  amrex::Print() << "SOLVER CHOICE: " << std::endl;
-
404  amrex::Print() << "force_stage1_single_substep : " << force_stage1_single_substep << std::endl;
-
405  for (int lev = 0; lev <= max_level; lev++) {
-
406  amrex::Print() << "anelastic at level : " << lev << " is " << anelastic[lev] << std::endl;
-
407  if (substepping_type[lev] == SubsteppingType::None) {
-
408  amrex::Print() << "No substepping at level " << lev << std::endl;
-
409  } else if (substepping_type[lev] == SubsteppingType::Explicit) {
-
410  amrex::Print() << "Explicit substepping at level " << lev << std::endl;
-
411  } else if (substepping_type[lev] == SubsteppingType::Implicit) {
-
412  amrex::Print() << "Implicit substepping at level " << lev << std::endl;
-
413  }
-
414  }
-
415  amrex::Print() << "use_coriolis : " << use_coriolis << std::endl;
-
416  amrex::Print() << "use_gravity : " << use_gravity << std::endl;
-
417 
-
418  amrex::Print() << "Terrain Type: " << std::endl;
-
419  if (terrain_type == TerrainType::Static) {
-
420  amrex::Print() << " Static" << std::endl;
-
421  } else if (terrain_type == TerrainType::Moving) {
-
422  amrex::Print() << " Moving" << std::endl;
-
423  } else {
-
424  amrex::Print() << " None" << std::endl;
-
425  }
-
426 
-
427  amrex::Print() << "ABL Driver Type: " << std::endl;
-
428  if (abl_driver_type == ABLDriverType::None) {
+
355  pp.query("windfarm_x_shift",windfarm_x_shift);
+
356  pp.query("windfarm_y_shift",windfarm_y_shift);
+
357  // Test if time averaged data is to be output
+
358  pp.query("time_avg_vel",time_avg_vel);
+
359 
+
360  check_params(max_level);
+
361  }
+
362 
+
363  void check_params(int max_level)
+
364  {
+
365  // Warn for PBL models and moisture - these may not yet be compatible
+
366  for (int lev = 0; lev <= max_level; lev++) {
+
367  if ((moisture_type != MoistureType::None) && (turbChoice[lev].pbl_type != PBLType::None)) {
+
368  amrex::Warning("\n*** WARNING: Moisture may not yet be compatible with PBL models, \n proceed with caution ***");
+
369  }
+
370  }
+
371  //
+
372  // Buoyancy type check
+
373  //
+
374  if (buoyancy_type != 1 && buoyancy_type != 2 && buoyancy_type != 3 && buoyancy_type != 4) {
+
375  amrex::Abort("buoyancy_type must be 1, 2, 3 or 4");
+
376  }
+
377 
+
378  if (!use_lagged_delta_rt && !(terrain_type == TerrainType::Moving)) {
+
379  amrex::Error("Can't turn off lagged_delta_rt when terrain not moving");
+
380  }
+
381 
+
382  //
+
383  // Wind farm checks
+
384  //
+
385  if (windfarm_type==WindFarmType::SimpleAD and sampling_distance_by_D < 0.0) {
+
386  amrex::Abort("To use simplified actuator disks, you need to provide a variable"
+
387  " erf.sampling_distance_by_D in the inputs which specifies the upstream"
+
388  " distance as a factor of the turbine diameter at which the incoming free stream"
+
389  " velocity will be computed at.");
+
390  }
+
391  if ( (windfarm_type==WindFarmType::SimpleAD ||
+
392  windfarm_type==WindFarmType::GeneralAD ) && turb_disk_angle < 0.0) {
+
393  amrex::Abort("To use simplified actuator disks, you need to provide a variable"
+
394  " erf.turb_disk_angle_from_x in the inputs which is the angle of the face of the"
+
395  " turbine disk from the x-axis. A turbine facing an oncoming flow in the x-direction"
+
396  " will have turb_disk_angle value of 90 deg.");
+
397  }
+
398  if (windfarm_loc_type == WindFarmLocType::lat_lon and (windfarm_x_shift < 0.0 or windfarm_y_shift < 0.0)) {
+
399  amrex::Abort("You are using windfarms with latitude-logitude option to position the turbines."
+
400  " For this you should provide the inputs erf.windfarm_x_shift and"
+
401  " erf.windfarm_y_shift which are the values by which the bounding box of the"
+
402  " windfarm is shifted from the x and the y axes.");
+
403  }
+
404  }
+
405 
+
406  void display(int max_level)
+
407  {
+
408  amrex::Print() << "SOLVER CHOICE: " << std::endl;
+
409  amrex::Print() << "force_stage1_single_substep : " << force_stage1_single_substep << std::endl;
+
410  for (int lev = 0; lev <= max_level; lev++) {
+
411  amrex::Print() << "anelastic at level : " << lev << " is " << anelastic[lev] << std::endl;
+
412  if (substepping_type[lev] == SubsteppingType::None) {
+
413  amrex::Print() << "No substepping at level " << lev << std::endl;
+
414  } else if (substepping_type[lev] == SubsteppingType::Explicit) {
+
415  amrex::Print() << "Explicit substepping at level " << lev << std::endl;
+
416  } else if (substepping_type[lev] == SubsteppingType::Implicit) {
+
417  amrex::Print() << "Implicit substepping at level " << lev << std::endl;
+
418  }
+
419  }
+
420  amrex::Print() << "use_coriolis : " << use_coriolis << std::endl;
+
421  amrex::Print() << "use_gravity : " << use_gravity << std::endl;
+
422 
+
423  amrex::Print() << "Terrain Type: " << std::endl;
+
424  if (terrain_type == TerrainType::Static) {
+
425  amrex::Print() << " Static" << std::endl;
+
426  } else if (terrain_type == TerrainType::Moving) {
+
427  amrex::Print() << " Moving" << std::endl;
+
428  } else {
429  amrex::Print() << " None" << std::endl;
-
430  } else if (abl_driver_type == ABLDriverType::PressureGradient) {
-
431  amrex::Print() << " Pressure Gradient "
-
432  << amrex::RealVect(abl_pressure_grad[0],abl_pressure_grad[1],abl_pressure_grad[2])
-
433  << std::endl;
-
434  } else if (abl_driver_type == ABLDriverType::GeostrophicWind) {
-
435  amrex::Print() << " Geostrophic Wind "
-
436  << amrex::RealVect(abl_geo_forcing[0],abl_geo_forcing[1],abl_geo_forcing[2])
-
437  << std::endl;
-
438  }
-
439 
-
440  if (max_level > 0) {
-
441  amrex::Print() << "Coupling Type: " << std::endl;
-
442  if (coupling_type == CouplingType::TwoWay) {
-
443  amrex::Print() << " Two-way" << std::endl;
-
444  } else if (coupling_type == CouplingType::OneWay) {
-
445  amrex::Print() << " One-way" << std::endl;
-
446  }
-
447  }
-
448 
-
449  amrex::Print() << "Buoyancy_type : " << buoyancy_type << std::endl;
-
450 
-
451  advChoice.display();
- - -
454 
-
455  for (int lev = 0; lev <= max_level; lev++) {
-
456  turbChoice[lev].display(lev);
-
457  }
-
458  }
+
430  }
+
431 
+
432  amrex::Print() << "ABL Driver Type: " << std::endl;
+
433  if (abl_driver_type == ABLDriverType::None) {
+
434  amrex::Print() << " None" << std::endl;
+
435  } else if (abl_driver_type == ABLDriverType::PressureGradient) {
+
436  amrex::Print() << " Pressure Gradient "
+
437  << amrex::RealVect(abl_pressure_grad[0],abl_pressure_grad[1],abl_pressure_grad[2])
+
438  << std::endl;
+
439  } else if (abl_driver_type == ABLDriverType::GeostrophicWind) {
+
440  amrex::Print() << " Geostrophic Wind "
+
441  << amrex::RealVect(abl_geo_forcing[0],abl_geo_forcing[1],abl_geo_forcing[2])
+
442  << std::endl;
+
443  }
+
444 
+
445  if (max_level > 0) {
+
446  amrex::Print() << "Coupling Type: " << std::endl;
+
447  if (coupling_type == CouplingType::TwoWay) {
+
448  amrex::Print() << " Two-way" << std::endl;
+
449  } else if (coupling_type == CouplingType::OneWay) {
+
450  amrex::Print() << " One-way" << std::endl;
+
451  }
+
452  }
+
453 
+
454  amrex::Print() << "Buoyancy_type : " << buoyancy_type << std::endl;
+
455 
+
456  advChoice.display();
+ +
459 
- -
461  {
-
462  amrex::ParmParse pp(pp_prefix);
-
463 
-
464  // Read the rotational time period (in seconds)
-
465  amrex::Real rot_time_period = 86400.0;
-
466  pp.query("rotational_time_period", rot_time_period);
-
467 
-
468  coriolis_factor = 2.0 * 2.0 * PI / rot_time_period;
-
469  amrex::Print() << "Coriolis factor = " << coriolis_factor << std::endl;
-
470 
-
471  amrex::Real latitude = 90.0;
-
472  pp.query("latitude", latitude);
-
473 
-
474  pp.query("coriolis_3d", coriolis_3d);
+
460  for (int lev = 0; lev <= max_level; lev++) {
+
461  turbChoice[lev].display(lev);
+
462  }
+
463  }
+
464 
+ +
466  {
+
467  amrex::ParmParse pp(pp_prefix);
+
468 
+
469  // Read the rotational time period (in seconds)
+
470  amrex::Real rot_time_period = 86400.0;
+
471  pp.query("rotational_time_period", rot_time_period);
+
472 
+
473  coriolis_factor = 2.0 * 2.0 * PI / rot_time_period;
+
474  amrex::Print() << "Coriolis factor = " << coriolis_factor << std::endl;
475 
-
476  // Convert to radians
-
477  latitude *= (PI/180.);
-
478  sinphi = std::sin(latitude);
-
479  if (coriolis_3d) {
-
480  cosphi = std::cos(latitude);
-
481  }
-
482 
-
483  amrex::Print() << "Coriolis frequency, f = " << coriolis_factor * sinphi << " 1/s" << std::endl;
-
484 
-
485  if (abl_driver_type == ABLDriverType::GeostrophicWind) {
-
486  // Read in the geostrophic wind -- we only use this to construct
-
487  // the forcing term so no need to keep it
-
488  amrex::Vector<amrex::Real> abl_geo_wind(3);
-
489  pp.queryarr("abl_geo_wind",abl_geo_wind);
-
490 
-
491  if(!pp.query("abl_geo_wind_table",abl_geo_wind_table)) {
-
492  abl_geo_forcing = {
-
493  -coriolis_factor * (abl_geo_wind[1]*sinphi - abl_geo_wind[2]*cosphi),
-
494  coriolis_factor * abl_geo_wind[0]*sinphi,
-
495  -coriolis_factor * abl_geo_wind[0]*cosphi
-
496  };
-
497  } else {
-
498  amrex::Print() << "NOTE: abl_geo_wind_table provided, ignoring input abl_geo_wind" << std::endl;
-
499  }
-
500  }
-
501  }
-
502 
-
503  void read_int_string (int max_level, const char* string_to_read,
-
504  amrex::Vector<int>& vec_to_fill, int default_int)
-
505  {
-
506  amrex::ParmParse pp("erf");
-
507  int nvals = pp.countval(string_to_read);
-
508  AMREX_ALWAYS_ASSERT(nvals == 0 || nvals == 1 || nvals >= max_level+1);
-
509  amrex::Vector<int> temp; temp.resize(nvals);
-
510  pp.queryarr(string_to_read,temp);
-
511  if (nvals == 0) {
-
512  for (int i = 0; i <= max_level; ++i) vec_to_fill.push_back(default_int);
-
513  } else if (nvals == 1) {
-
514  for (int i = 0; i <= max_level; ++i) vec_to_fill.push_back(temp[0]);
-
515  } else {
-
516  for (int i = 0; i <= max_level; ++i) vec_to_fill.push_back(temp[i]);
-
517  }
-
518  }
-
519 
-
520  inline static
-
521  bool terrain_is_flat = false;
-
522 
-
523  inline static
-
524  TerrainType terrain_type = TerrainType::None;
-
525 
-
526  static
- -
528  {
-
529  terrain_is_flat = true;
-
530  }
-
531 
- - - -
535  amrex::Vector<TurbChoice> turbChoice;
+
476  amrex::Real latitude = 90.0;
+
477  pp.query("latitude", latitude);
+
478 
+
479  pp.query("coriolis_3d", coriolis_3d);
+
480 
+
481  // Convert to radians
+
482  latitude *= (PI/180.);
+
483  sinphi = std::sin(latitude);
+
484  if (coriolis_3d) {
+
485  cosphi = std::cos(latitude);
+
486  }
+
487 
+
488  amrex::Print() << "Coriolis frequency, f = " << coriolis_factor * sinphi << " 1/s" << std::endl;
+
489 
+
490  if (abl_driver_type == ABLDriverType::GeostrophicWind) {
+
491  // Read in the geostrophic wind -- we only use this to construct
+
492  // the forcing term so no need to keep it
+
493  amrex::Vector<amrex::Real> abl_geo_wind(3);
+
494  pp.queryarr("abl_geo_wind",abl_geo_wind);
+
495 
+
496  if(!pp.query("abl_geo_wind_table",abl_geo_wind_table)) {
+
497  abl_geo_forcing = {
+
498  -coriolis_factor * (abl_geo_wind[1]*sinphi - abl_geo_wind[2]*cosphi),
+
499  coriolis_factor * abl_geo_wind[0]*sinphi,
+
500  -coriolis_factor * abl_geo_wind[0]*cosphi
+
501  };
+
502  } else {
+
503  amrex::Print() << "NOTE: abl_geo_wind_table provided, ignoring input abl_geo_wind" << std::endl;
+
504  }
+
505  }
+
506  }
+
507 
+
508  void read_int_string (int max_level, const char* string_to_read,
+
509  amrex::Vector<int>& vec_to_fill, int default_int)
+
510  {
+
511  amrex::ParmParse pp("erf");
+
512  int nvals = pp.countval(string_to_read);
+
513  AMREX_ALWAYS_ASSERT(nvals == 0 || nvals == 1 || nvals >= max_level+1);
+
514  amrex::Vector<int> temp; temp.resize(nvals);
+
515  pp.queryarr(string_to_read,temp);
+
516  if (nvals == 0) {
+
517  for (int i = 0; i <= max_level; ++i) vec_to_fill.push_back(default_int);
+
518  } else if (nvals == 1) {
+
519  for (int i = 0; i <= max_level; ++i) vec_to_fill.push_back(temp[0]);
+
520  } else {
+
521  for (int i = 0; i <= max_level; ++i) vec_to_fill.push_back(temp[i]);
+
522  }
+
523  }
+
524 
+
525  inline static
+
526  bool terrain_is_flat = false;
+
527 
+
528  inline static
+
529  TerrainType terrain_type = TerrainType::None;
+
530 
+
531  static
+ +
533  {
+
534  terrain_is_flat = true;
+
535  }
536 
-
537  // Default prefix
-
538  std::string pp_prefix {"erf"};
-
539 
- + + + +
540  amrex::Vector<TurbChoice> turbChoice;
541 
-
542  amrex::Vector<SubsteppingType> substepping_type;
-
543  amrex::Vector<int> anelastic;
+
542  // Default prefix
+
543  std::string pp_prefix {"erf"};
544 
- -
546  int ncorr = 1;
-
547  amrex::Real poisson_abstol = 1e-10;
-
548  amrex::Real poisson_reltol = 1e-10;
+ +
546 
+
547  amrex::Vector<SubsteppingType> substepping_type;
+
548  amrex::Vector<int> anelastic;
549 
-
550  bool test_mapfactor = false;
-
551 
-
552  int buoyancy_type = 1; // uses rhoprime directly
-
553 
-
554  // Specify what additional physics/forcing modules we use
-
555  bool use_gravity = false;
-
556  bool use_coriolis = false;
-
557  bool coriolis_3d = true;
+ +
551  int ncorr = 1;
+
552  amrex::Real poisson_abstol = 1e-10;
+
553  amrex::Real poisson_reltol = 1e-10;
+
554 
+
555  bool test_mapfactor = false;
+
556 
+
557  int buoyancy_type = 1; // uses rhoprime directly
558 
-
559  bool rayleigh_damp_U = false;
-
560  bool rayleigh_damp_V = false;
-
561  bool rayleigh_damp_W = false;
-
562  bool rayleigh_damp_T = false;
-
563  amrex::Real rayleigh_dampcoef = 0.2; // inverse time scale [1/s]
-
564  amrex::Real rayleigh_zdamp = 500.0; // damping layer depth [m]
-
565  amrex::Real rayleigh_ztop;
-
566 
-
567  // This defaults to true but can be set to false for moving terrain cases only
-
568  bool use_lagged_delta_rt = true;
-
569 
-
570  // Constants
-
571  amrex::Real gravity;
-
572  amrex::Real c_p = Cp_d; // specific heat at constant pressure for dry air [J/(kg-K)]
-
573  amrex::Real rdOcp;
+
559  // Specify what additional physics/forcing modules we use
+
560  bool use_gravity = false;
+
561  bool use_coriolis = false;
+
562  bool coriolis_3d = true;
+
563 
+
564  bool rayleigh_damp_U = false;
+
565  bool rayleigh_damp_V = false;
+
566  bool rayleigh_damp_W = false;
+
567  bool rayleigh_damp_T = false;
+
568  amrex::Real rayleigh_dampcoef = 0.2; // inverse time scale [1/s]
+
569  amrex::Real rayleigh_zdamp = 500.0; // damping layer depth [m]
+
570  amrex::Real rayleigh_ztop;
+
571 
+
572  // This defaults to true but can be set to false for moving terrain cases only
+
573  bool use_lagged_delta_rt = true;
574 
-
575  // Staggered z levels for vertical grid stretching
-
576  amrex::Real grid_stretching_ratio = 0;
-
577  amrex::Real zsurf = 0.0;
-
578  amrex::Real dz0;
+
575  // Constants
+
576  amrex::Real gravity;
+
577  amrex::Real c_p = Cp_d; // specific heat at constant pressure for dry air [J/(kg-K)]
+
578  amrex::Real rdOcp;
579 
- -
581 
-
582  // Coriolis forcing
-
583  amrex::Real coriolis_factor = 0.0;
-
584  amrex::Real cosphi = 0.0;
-
585  amrex::Real sinphi = 0.0;
+
580  // Staggered z levels for vertical grid stretching
+
581  amrex::Real grid_stretching_ratio = 0;
+
582  amrex::Real zsurf = 0.0;
+
583  amrex::Real dz0;
+
584 
+
586 
-
587  // User-specified forcings in problem definition
- - -
590  bool custom_w_subsidence = false;
- - -
593 
-
594  // Do we use source terms to nudge the solution towards
-
595  // the time-varying data provided in input sounding files?
- -
597 
-
598  // User specified MOST BC type
-
599  bool use_explicit_most = false;
-
600 
-
601  // MOST stress rotations
-
602  bool use_rotate_most = false;
-
603 
-
604  // User wishes to output time averaged velocity fields
-
605  bool time_avg_vel = false;
-
606 
-
607  // Type of perturbation
-
608  PerturbationType pert_type;
-
609 
-
610  // Numerical diffusion
-
611  bool use_NumDiff{false};
-
612  amrex::Real NumDiffCoeff{0.};
-
613 
-
614  // Monotonic advection limiter
-
615  bool use_mono_adv{false};
-
616 
-
617  CouplingType coupling_type;
-
618  MoistureType moisture_type;
-
619  WindFarmType windfarm_type;
-
620  WindFarmLocType windfarm_loc_type;
-
621  LandSurfaceType lsm_type;
-
622 
-
623  ABLDriverType abl_driver_type;
-
624  amrex::GpuArray<amrex::Real, AMREX_SPACEDIM> abl_pressure_grad;
-
625  amrex::GpuArray<amrex::Real, AMREX_SPACEDIM> abl_geo_forcing;
-
626  std::string abl_geo_wind_table;
-
627  bool have_geo_wind_profile {false};
-
628 
-
629  int ave_plane {2};
-
630  // Microphysics params
-
631  bool do_cloud {true};
-
632  bool do_precip {true};
-
633  bool use_moist_background {false};
-
634  int RhoQv_comp {-1};
-
635 
-
636  // This component will be model-dependent:
-
637  // if a model with no rain, this will stay -1
-
638  // if Kessler, then it will be set to RhoQ3
-
639  // if SAM, then it will be set to RhoQ4
-
640  int RhoQr_comp {-1};
-
641 
- - -
644  amrex::Real sampling_distance_by_D = -1.0;
-
645  amrex::Real turb_disk_angle = -1.0;
-
646  amrex::Real windfarm_x_shift = -1.0;
-
647  amrex::Real windfarm_y_shift = -1.0;
-
648 
-
649  // Flag for valid canopy model
-
650  bool do_forest {false};
-
651 };
-
652 #endif
+
587  // Coriolis forcing
+
588  amrex::Real coriolis_factor = 0.0;
+
589  amrex::Real cosphi = 0.0;
+
590  amrex::Real sinphi = 0.0;
+
591 
+
592  // User-specified forcings in problem definition
+ + +
595  bool custom_w_subsidence = false;
+ + +
598 
+
599  // Do we use source terms to nudge the solution towards
+
600  // the time-varying data provided in input sounding files?
+ +
602 
+
603  // User specified MOST BC type
+
604  bool use_explicit_most = false;
+
605 
+
606  // MOST stress rotations
+
607  bool use_rotate_most = false;
+
608 
+
609  // User wishes to output time averaged velocity fields
+
610  bool time_avg_vel = false;
+
611 
+
612  // Type of perturbation
+
613  PerturbationType pert_type;
+
614 
+
615  // Numerical diffusion
+
616  bool use_NumDiff{false};
+
617  amrex::Real NumDiffCoeff{0.};
+
618 
+
619  // Monotonic advection limiter
+
620  bool use_mono_adv{false};
+
621 
+
622  CouplingType coupling_type;
+
623  MoistureType moisture_type;
+
624  WindFarmType windfarm_type;
+
625  WindFarmLocType windfarm_loc_type;
+
626  LandSurfaceType lsm_type;
+
627 
+
628  ABLDriverType abl_driver_type;
+
629  amrex::GpuArray<amrex::Real, AMREX_SPACEDIM> abl_pressure_grad;
+
630  amrex::GpuArray<amrex::Real, AMREX_SPACEDIM> abl_geo_forcing;
+
631  std::string abl_geo_wind_table;
+
632  bool have_geo_wind_profile {false};
+
633 
+
634  int ave_plane {2};
+
635  // Microphysics params
+
636  bool do_cloud {true};
+
637  bool do_precip {true};
+
638  bool use_moist_background {false};
+
639  int RhoQv_comp {-1};
+
640 
+
641  // This component will be model-dependent:
+
642  // if a model with no rain, this will stay -1
+
643  // if Kessler, then it will be set to RhoQ3
+
644  // if SAM, then it will be set to RhoQ4
+
645  int RhoQr_comp {-1};
+
646 
+ + +
649  amrex::Real sampling_distance_by_D = -1.0;
+
650  amrex::Real turb_disk_angle = -1.0;
+
651  amrex::Real windfarm_x_shift = -1.0;
+
652  amrex::Real windfarm_y_shift = -1.0;
+
653 
+
654  // Flag for valid canopy model
+
655  bool do_forest {false};
+
656 };
+
657 #endif
constexpr amrex::Real Cp_d
Definition: ERF_Constants.H:12
@@ -784,88 +789,88 @@
void init_params()
Definition: ERF_DiffStruct.H:21
void display()
Definition: ERF_DiffStruct.H:56
Definition: ERF_DataStruct.H:78
-
bool rayleigh_damp_T
Definition: ERF_DataStruct.H:562
-
amrex::Real dz0
Definition: ERF_DataStruct.H:578
-
bool use_lagged_delta_rt
Definition: ERF_DataStruct.H:568
-
amrex::Real coriolis_factor
Definition: ERF_DataStruct.H:583
-
bool use_explicit_most
Definition: ERF_DataStruct.H:599
-
amrex::Real windfarm_x_shift
Definition: ERF_DataStruct.H:646
-
bool rayleigh_damp_V
Definition: ERF_DataStruct.H:560
-
int RhoQr_comp
Definition: ERF_DataStruct.H:640
-
amrex::Real poisson_reltol
Definition: ERF_DataStruct.H:548
-
amrex::Real rayleigh_zdamp
Definition: ERF_DataStruct.H:564
-
amrex::Real rdOcp
Definition: ERF_DataStruct.H:573
-
void read_int_string(int max_level, const char *string_to_read, amrex::Vector< int > &vec_to_fill, int default_int)
Definition: ERF_DataStruct.H:503
-
std::string windfarm_spec_table
Definition: ERF_DataStruct.H:642
-
bool use_mono_adv
Definition: ERF_DataStruct.H:615
-
DiffChoice diffChoice
Definition: ERF_DataStruct.H:533
-
static void set_flat_terrain_flag()
Definition: ERF_DataStruct.H:527
-
bool use_gravity
Definition: ERF_DataStruct.H:555
-
void build_coriolis_forcings()
Definition: ERF_DataStruct.H:460
-
int ncorr
Definition: ERF_DataStruct.H:546
-
int force_stage1_single_substep
Definition: ERF_DataStruct.H:540
-
std::string windfarm_spec_table_extra
Definition: ERF_DataStruct.H:642
-
amrex::Real cosphi
Definition: ERF_DataStruct.H:584
-
LandSurfaceType lsm_type
Definition: ERF_DataStruct.H:621
-
amrex::Real c_p
Definition: ERF_DataStruct.H:572
-
std::string windfarm_loc_table
Definition: ERF_DataStruct.H:642
-
amrex::Real gravity
Definition: ERF_DataStruct.H:571
-
std::string pp_prefix
Definition: ERF_DataStruct.H:538
-
void check_params(int max_level)
Definition: ERF_DataStruct.H:358
-
bool custom_rhotheta_forcing
Definition: ERF_DataStruct.H:588
-
amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > abl_geo_forcing
Definition: ERF_DataStruct.H:625
-
WindFarmLocType windfarm_loc_type
Definition: ERF_DataStruct.H:620
-
bool custom_w_subsidence
Definition: ERF_DataStruct.H:590
-
bool nudging_from_input_sounding
Definition: ERF_DataStruct.H:596
-
bool rayleigh_damp_U
Definition: ERF_DataStruct.H:559
-
bool custom_geostrophic_profile
Definition: ERF_DataStruct.H:591
-
amrex::Real rayleigh_ztop
Definition: ERF_DataStruct.H:565
-
amrex::Real grid_stretching_ratio
Definition: ERF_DataStruct.H:576
-
amrex::Real sinphi
Definition: ERF_DataStruct.H:585
-
bool have_geo_wind_profile
Definition: ERF_DataStruct.H:627
-
bool do_forest
Definition: ERF_DataStruct.H:650
-
amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > abl_pressure_grad
Definition: ERF_DataStruct.H:624
-
amrex::Real NumDiffCoeff
Definition: ERF_DataStruct.H:612
-
bool do_precip
Definition: ERF_DataStruct.H:632
-
amrex::Vector< SubsteppingType > substepping_type
Definition: ERF_DataStruct.H:542
-
bool coriolis_3d
Definition: ERF_DataStruct.H:557
+
bool rayleigh_damp_T
Definition: ERF_DataStruct.H:567
+
amrex::Real dz0
Definition: ERF_DataStruct.H:583
+
bool use_lagged_delta_rt
Definition: ERF_DataStruct.H:573
+
amrex::Real coriolis_factor
Definition: ERF_DataStruct.H:588
+
bool use_explicit_most
Definition: ERF_DataStruct.H:604
+
amrex::Real windfarm_x_shift
Definition: ERF_DataStruct.H:651
+
bool rayleigh_damp_V
Definition: ERF_DataStruct.H:565
+
int RhoQr_comp
Definition: ERF_DataStruct.H:645
+
amrex::Real poisson_reltol
Definition: ERF_DataStruct.H:553
+
amrex::Real rayleigh_zdamp
Definition: ERF_DataStruct.H:569
+
amrex::Real rdOcp
Definition: ERF_DataStruct.H:578
+
void read_int_string(int max_level, const char *string_to_read, amrex::Vector< int > &vec_to_fill, int default_int)
Definition: ERF_DataStruct.H:508
+
std::string windfarm_spec_table
Definition: ERF_DataStruct.H:647
+
bool use_mono_adv
Definition: ERF_DataStruct.H:620
+
DiffChoice diffChoice
Definition: ERF_DataStruct.H:538
+
static void set_flat_terrain_flag()
Definition: ERF_DataStruct.H:532
+
bool use_gravity
Definition: ERF_DataStruct.H:560
+
void build_coriolis_forcings()
Definition: ERF_DataStruct.H:465
+
int ncorr
Definition: ERF_DataStruct.H:551
+
int force_stage1_single_substep
Definition: ERF_DataStruct.H:545
+
std::string windfarm_spec_table_extra
Definition: ERF_DataStruct.H:647
+
amrex::Real cosphi
Definition: ERF_DataStruct.H:589
+
LandSurfaceType lsm_type
Definition: ERF_DataStruct.H:626
+
amrex::Real c_p
Definition: ERF_DataStruct.H:577
+
std::string windfarm_loc_table
Definition: ERF_DataStruct.H:647
+
amrex::Real gravity
Definition: ERF_DataStruct.H:576
+
std::string pp_prefix
Definition: ERF_DataStruct.H:543
+
void check_params(int max_level)
Definition: ERF_DataStruct.H:363
+
bool custom_rhotheta_forcing
Definition: ERF_DataStruct.H:593
+
amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > abl_geo_forcing
Definition: ERF_DataStruct.H:630
+
WindFarmLocType windfarm_loc_type
Definition: ERF_DataStruct.H:625
+
bool custom_w_subsidence
Definition: ERF_DataStruct.H:595
+
bool nudging_from_input_sounding
Definition: ERF_DataStruct.H:601
+
bool rayleigh_damp_U
Definition: ERF_DataStruct.H:564
+
bool custom_geostrophic_profile
Definition: ERF_DataStruct.H:596
+
amrex::Real rayleigh_ztop
Definition: ERF_DataStruct.H:570
+
amrex::Real grid_stretching_ratio
Definition: ERF_DataStruct.H:581
+
amrex::Real sinphi
Definition: ERF_DataStruct.H:590
+
bool have_geo_wind_profile
Definition: ERF_DataStruct.H:632
+
bool do_forest
Definition: ERF_DataStruct.H:655
+
amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > abl_pressure_grad
Definition: ERF_DataStruct.H:629
+
amrex::Real NumDiffCoeff
Definition: ERF_DataStruct.H:617
+
bool do_precip
Definition: ERF_DataStruct.H:637
+
amrex::Vector< SubsteppingType > substepping_type
Definition: ERF_DataStruct.H:547
+
bool coriolis_3d
Definition: ERF_DataStruct.H:562
void init_params(int max_level)
Definition: ERF_DataStruct.H:80
-
amrex::Real sampling_distance_by_D
Definition: ERF_DataStruct.H:644
-
int RhoQv_comp
Definition: ERF_DataStruct.H:634
-
bool test_mapfactor
Definition: ERF_DataStruct.H:550
-
void display(int max_level)
Definition: ERF_DataStruct.H:401
-
bool use_coriolis
Definition: ERF_DataStruct.H:556
-
bool use_NumDiff
Definition: ERF_DataStruct.H:611
-
bool custom_moisture_forcing
Definition: ERF_DataStruct.H:589
-
std::string windfarm_blade_table
Definition: ERF_DataStruct.H:643
-
amrex::Real zsurf
Definition: ERF_DataStruct.H:577
-
amrex::Vector< TurbChoice > turbChoice
Definition: ERF_DataStruct.H:535
-
bool project_initial_velocity
Definition: ERF_DataStruct.H:580
-
amrex::Vector< int > anelastic
Definition: ERF_DataStruct.H:543
-
int constant_density
Definition: ERF_DataStruct.H:545
-
AdvChoice advChoice
Definition: ERF_DataStruct.H:532
-
bool use_moist_background
Definition: ERF_DataStruct.H:633
-
MoistureType moisture_type
Definition: ERF_DataStruct.H:618
-
bool custom_forcing_prim_vars
Definition: ERF_DataStruct.H:592
-
std::string abl_geo_wind_table
Definition: ERF_DataStruct.H:626
-
static TerrainType terrain_type
Definition: ERF_DataStruct.H:524
-
ABLDriverType abl_driver_type
Definition: ERF_DataStruct.H:623
-
bool rayleigh_damp_W
Definition: ERF_DataStruct.H:561
-
PerturbationType pert_type
Definition: ERF_DataStruct.H:608
-
SpongeChoice spongeChoice
Definition: ERF_DataStruct.H:534
-
WindFarmType windfarm_type
Definition: ERF_DataStruct.H:619
-
int buoyancy_type
Definition: ERF_DataStruct.H:552
-
amrex::Real poisson_abstol
Definition: ERF_DataStruct.H:547
-
amrex::Real turb_disk_angle
Definition: ERF_DataStruct.H:645
-
amrex::Real windfarm_y_shift
Definition: ERF_DataStruct.H:647
-
static bool terrain_is_flat
Definition: ERF_DataStruct.H:521
-
bool time_avg_vel
Definition: ERF_DataStruct.H:605
-
bool do_cloud
Definition: ERF_DataStruct.H:631
-
bool use_rotate_most
Definition: ERF_DataStruct.H:602
-
amrex::Real rayleigh_dampcoef
Definition: ERF_DataStruct.H:563
-
CouplingType coupling_type
Definition: ERF_DataStruct.H:617
-
std::string windfarm_airfoil_tables
Definition: ERF_DataStruct.H:643
-
int ave_plane
Definition: ERF_DataStruct.H:629
+
amrex::Real sampling_distance_by_D
Definition: ERF_DataStruct.H:649
+
int RhoQv_comp
Definition: ERF_DataStruct.H:639
+
bool test_mapfactor
Definition: ERF_DataStruct.H:555
+
void display(int max_level)
Definition: ERF_DataStruct.H:406
+
bool use_coriolis
Definition: ERF_DataStruct.H:561
+
bool use_NumDiff
Definition: ERF_DataStruct.H:616
+
bool custom_moisture_forcing
Definition: ERF_DataStruct.H:594
+
std::string windfarm_blade_table
Definition: ERF_DataStruct.H:648
+
amrex::Real zsurf
Definition: ERF_DataStruct.H:582
+
amrex::Vector< TurbChoice > turbChoice
Definition: ERF_DataStruct.H:540
+
bool project_initial_velocity
Definition: ERF_DataStruct.H:585
+
amrex::Vector< int > anelastic
Definition: ERF_DataStruct.H:548
+
int constant_density
Definition: ERF_DataStruct.H:550
+
AdvChoice advChoice
Definition: ERF_DataStruct.H:537
+
bool use_moist_background
Definition: ERF_DataStruct.H:638
+
MoistureType moisture_type
Definition: ERF_DataStruct.H:623
+
bool custom_forcing_prim_vars
Definition: ERF_DataStruct.H:597
+
std::string abl_geo_wind_table
Definition: ERF_DataStruct.H:631
+
static TerrainType terrain_type
Definition: ERF_DataStruct.H:529
+
ABLDriverType abl_driver_type
Definition: ERF_DataStruct.H:628
+
bool rayleigh_damp_W
Definition: ERF_DataStruct.H:566
+
PerturbationType pert_type
Definition: ERF_DataStruct.H:613
+
SpongeChoice spongeChoice
Definition: ERF_DataStruct.H:539
+
WindFarmType windfarm_type
Definition: ERF_DataStruct.H:624
+
int buoyancy_type
Definition: ERF_DataStruct.H:557
+
amrex::Real poisson_abstol
Definition: ERF_DataStruct.H:552
+
amrex::Real turb_disk_angle
Definition: ERF_DataStruct.H:650
+
amrex::Real windfarm_y_shift
Definition: ERF_DataStruct.H:652
+
static bool terrain_is_flat
Definition: ERF_DataStruct.H:526
+
bool time_avg_vel
Definition: ERF_DataStruct.H:610
+
bool do_cloud
Definition: ERF_DataStruct.H:636
+
bool use_rotate_most
Definition: ERF_DataStruct.H:607
+
amrex::Real rayleigh_dampcoef
Definition: ERF_DataStruct.H:568
+
CouplingType coupling_type
Definition: ERF_DataStruct.H:622
+
std::string windfarm_airfoil_tables
Definition: ERF_DataStruct.H:648
+
int ave_plane
Definition: ERF_DataStruct.H:634
Definition: ERF_SpongeStruct.H:15
void display()
Definition: ERF_SpongeStruct.H:45
void init_params()
Definition: ERF_SpongeStruct.H:17
diff --git a/ERF__DiffusionSrcForState__N_8cpp.html b/ERF__DiffusionSrcForState__N_8cpp.html index f2e59c8b6..68197e254 100644 --- a/ERF__DiffusionSrcForState__N_8cpp.html +++ b/ERF__DiffusionSrcForState__N_8cpp.html @@ -1078,10 +1078,10 @@

amrex::Real alpha_C
Definition: ERF_DiffStruct.H:80
MolecDiffType molec_diff_type
Definition: ERF_DiffStruct.H:76
amrex::Real B1
Definition: ERF_MYNNStruct.H:43
-
int RhoQr_comp
Definition: ERF_DataStruct.H:640
-
DiffChoice diffChoice
Definition: ERF_DataStruct.H:533
-
int RhoQv_comp
Definition: ERF_DataStruct.H:634
-
amrex::Vector< TurbChoice > turbChoice
Definition: ERF_DataStruct.H:535
+
int RhoQr_comp
Definition: ERF_DataStruct.H:645
+
DiffChoice diffChoice
Definition: ERF_DataStruct.H:538
+
int RhoQv_comp
Definition: ERF_DataStruct.H:639
+
amrex::Vector< TurbChoice > turbChoice
Definition: ERF_DataStruct.H:540
Definition: ERF_TurbStruct.H:29
MYNNLevel25 pbl_mynn
Definition: ERF_TurbStruct.H:194
PBLType pbl_type
Definition: ERF_TurbStruct.H:192
diff --git a/ERF__DiffusionSrcForState__T_8cpp.html b/ERF__DiffusionSrcForState__T_8cpp.html index d0dac52b3..c98038bb6 100644 --- a/ERF__DiffusionSrcForState__T_8cpp.html +++ b/ERF__DiffusionSrcForState__T_8cpp.html @@ -1246,10 +1246,10 @@

amrex::Real alpha_C
Definition: ERF_DiffStruct.H:80
MolecDiffType molec_diff_type
Definition: ERF_DiffStruct.H:76
amrex::Real B1
Definition: ERF_MYNNStruct.H:43
-
int RhoQr_comp
Definition: ERF_DataStruct.H:640
-
DiffChoice diffChoice
Definition: ERF_DataStruct.H:533
-
int RhoQv_comp
Definition: ERF_DataStruct.H:634
-
amrex::Vector< TurbChoice > turbChoice
Definition: ERF_DataStruct.H:535
+
int RhoQr_comp
Definition: ERF_DataStruct.H:645
+
DiffChoice diffChoice
Definition: ERF_DataStruct.H:538
+
int RhoQv_comp
Definition: ERF_DataStruct.H:639
+
amrex::Vector< TurbChoice > turbChoice
Definition: ERF_DataStruct.H:540
Definition: ERF_TurbStruct.H:29
MYNNLevel25 pbl_mynn
Definition: ERF_TurbStruct.H:194
PBLType pbl_type
Definition: ERF_TurbStruct.H:192
diff --git a/ERF__Kessler_8H_source.html b/ERF__Kessler_8H_source.html index 124e43a5c..8b3abbe15 100644 --- a/ERF__Kessler_8H_source.html +++ b/ERF__Kessler_8H_source.html @@ -327,11 +327,11 @@
@ NumVars
Definition: ERF_Kessler.H:42
@ qv
Definition: ERF_Kessler.H:36
Definition: ERF_DataStruct.H:78
-
amrex::Real c_p
Definition: ERF_DataStruct.H:572
-
bool do_precip
Definition: ERF_DataStruct.H:632
-
MoistureType moisture_type
Definition: ERF_DataStruct.H:618
-
bool do_cloud
Definition: ERF_DataStruct.H:631
-
int ave_plane
Definition: ERF_DataStruct.H:629
+
amrex::Real c_p
Definition: ERF_DataStruct.H:577
+
bool do_precip
Definition: ERF_DataStruct.H:637
+
MoistureType moisture_type
Definition: ERF_DataStruct.H:623
+
bool do_cloud
Definition: ERF_DataStruct.H:636
+
int ave_plane
Definition: ERF_DataStruct.H:634
diff --git a/ERF__SAM_8H_source.html b/ERF__SAM_8H_source.html index 0869fe3bc..94c461bf0 100644 --- a/ERF__SAM_8H_source.html +++ b/ERF__SAM_8H_source.html @@ -536,12 +536,12 @@
@ qps
Definition: ERF_SAM.H:43
@ qp
Definition: ERF_SAM.H:41
Definition: ERF_DataStruct.H:78
-
amrex::Real rdOcp
Definition: ERF_DataStruct.H:573
-
amrex::Real c_p
Definition: ERF_DataStruct.H:572
-
bool do_precip
Definition: ERF_DataStruct.H:632
-
MoistureType moisture_type
Definition: ERF_DataStruct.H:618
-
bool do_cloud
Definition: ERF_DataStruct.H:631
-
int ave_plane
Definition: ERF_DataStruct.H:629
+
amrex::Real rdOcp
Definition: ERF_DataStruct.H:578
+
amrex::Real c_p
Definition: ERF_DataStruct.H:577
+
bool do_precip
Definition: ERF_DataStruct.H:637
+
MoistureType moisture_type
Definition: ERF_DataStruct.H:623
+
bool do_cloud
Definition: ERF_DataStruct.H:636
+
int ave_plane
Definition: ERF_DataStruct.H:634
diff --git a/ERF__TI__substep__fun_8H_source.html b/ERF__TI__substep__fun_8H_source.html index 34f2cd48c..b7c9d3185 100644 --- a/ERF__TI__substep__fun_8H_source.html +++ b/ERF__TI__substep__fun_8H_source.html @@ -290,7 +290,7 @@
@ cons
Definition: ERF_IndexDefines.H:139
@ zmom
Definition: ERF_IndexDefines.H:142
@ xmom
Definition: ERF_IndexDefines.H:140
-
static TerrainType terrain_type
Definition: ERF_DataStruct.H:524
+
static TerrainType terrain_type
Definition: ERF_DataStruct.H:529
diff --git a/ERF__make__buoyancy_8cpp.html b/ERF__make__buoyancy_8cpp.html index 50b43bd68..3fcb04588 100644 --- a/ERF__make__buoyancy_8cpp.html +++ b/ERF__make__buoyancy_8cpp.html @@ -386,10 +386,10 @@

@ th0_comp
Definition: ERF_IndexDefines.H:66
@ r0_comp
Definition: ERF_IndexDefines.H:63
@ cons
Definition: ERF_IndexDefines.H:139
-
amrex::Real rdOcp
Definition: ERF_DataStruct.H:573
-
amrex::Real gravity
Definition: ERF_DataStruct.H:571
-
MoistureType moisture_type
Definition: ERF_DataStruct.H:618
-
int buoyancy_type
Definition: ERF_DataStruct.H:552
+
amrex::Real rdOcp
Definition: ERF_DataStruct.H:578
+
amrex::Real gravity
Definition: ERF_DataStruct.H:576
+
MoistureType moisture_type
Definition: ERF_DataStruct.H:623
+
int buoyancy_type
Definition: ERF_DataStruct.H:557

Referenced by make_mom_sources().

diff --git a/ERF__make__mom__sources_8cpp.html b/ERF__make__mom__sources_8cpp.html index f0e4d3d6b..77d98676b 100644 --- a/ERF__make__mom__sources_8cpp.html +++ b/ERF__make__mom__sources_8cpp.html @@ -853,27 +853,27 @@

amrex::Vector< amrex::Real > input_sounding_time
Definition: ERF_InputSoundingData.H:315

amrex::Real tau_nudging
Definition: ERF_InputSoundingData.H:312
amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > U_inp_sound_d
Definition: ERF_InputSoundingData.H:326
-
amrex::Real coriolis_factor
Definition: ERF_DataStruct.H:583
-
bool rayleigh_damp_V
Definition: ERF_DataStruct.H:560
-
amrex::Real rayleigh_zdamp
Definition: ERF_DataStruct.H:564
-
amrex::Real cosphi
Definition: ERF_DataStruct.H:584
-
amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > abl_geo_forcing
Definition: ERF_DataStruct.H:625
-
bool custom_w_subsidence
Definition: ERF_DataStruct.H:590
-
bool nudging_from_input_sounding
Definition: ERF_DataStruct.H:596
-
bool rayleigh_damp_U
Definition: ERF_DataStruct.H:559
-
amrex::Real rayleigh_ztop
Definition: ERF_DataStruct.H:565
-
amrex::Real sinphi
Definition: ERF_DataStruct.H:585
-
bool have_geo_wind_profile
Definition: ERF_DataStruct.H:627
-
bool do_forest
Definition: ERF_DataStruct.H:650
-
bool use_coriolis
Definition: ERF_DataStruct.H:556
-
bool use_NumDiff
Definition: ERF_DataStruct.H:611
-
amrex::Vector< int > anelastic
Definition: ERF_DataStruct.H:543
-
bool custom_forcing_prim_vars
Definition: ERF_DataStruct.H:592
-
static TerrainType terrain_type
Definition: ERF_DataStruct.H:524
-
bool rayleigh_damp_W
Definition: ERF_DataStruct.H:561
-
SpongeChoice spongeChoice
Definition: ERF_DataStruct.H:534
-
amrex::Real rayleigh_dampcoef
Definition: ERF_DataStruct.H:563
-
int ave_plane
Definition: ERF_DataStruct.H:629
+
amrex::Real coriolis_factor
Definition: ERF_DataStruct.H:588
+
bool rayleigh_damp_V
Definition: ERF_DataStruct.H:565
+
amrex::Real rayleigh_zdamp
Definition: ERF_DataStruct.H:569
+
amrex::Real cosphi
Definition: ERF_DataStruct.H:589
+
amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > abl_geo_forcing
Definition: ERF_DataStruct.H:630
+
bool custom_w_subsidence
Definition: ERF_DataStruct.H:595
+
bool nudging_from_input_sounding
Definition: ERF_DataStruct.H:601
+
bool rayleigh_damp_U
Definition: ERF_DataStruct.H:564
+
amrex::Real rayleigh_ztop
Definition: ERF_DataStruct.H:570
+
amrex::Real sinphi
Definition: ERF_DataStruct.H:590
+
bool have_geo_wind_profile
Definition: ERF_DataStruct.H:632
+
bool do_forest
Definition: ERF_DataStruct.H:655
+
bool use_coriolis
Definition: ERF_DataStruct.H:561
+
bool use_NumDiff
Definition: ERF_DataStruct.H:616
+
amrex::Vector< int > anelastic
Definition: ERF_DataStruct.H:548
+
bool custom_forcing_prim_vars
Definition: ERF_DataStruct.H:597
+
static TerrainType terrain_type
Definition: ERF_DataStruct.H:529
+
bool rayleigh_damp_W
Definition: ERF_DataStruct.H:566
+
SpongeChoice spongeChoice
Definition: ERF_DataStruct.H:539
+
amrex::Real rayleigh_dampcoef
Definition: ERF_DataStruct.H:568
+
int ave_plane
Definition: ERF_DataStruct.H:634
std::string sponge_type
Definition: ERF_SpongeStruct.H:61
Here is the call graph for this function:
diff --git a/ERF__make__sources_8cpp.html b/ERF__make__sources_8cpp.html index 7326723bb..7d88bb78b 100644 --- a/ERF__make__sources_8cpp.html +++ b/ERF__make__sources_8cpp.html @@ -689,23 +689,23 @@

amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > theta_inp_sound_d
Definition: ERF_InputSoundingData.H:326
amrex::Vector< amrex::Real > input_sounding_time
Definition: ERF_InputSoundingData.H:315
amrex::Real tau_nudging
Definition: ERF_InputSoundingData.H:312
-
bool rayleigh_damp_T
Definition: ERF_DataStruct.H:562
-
amrex::Real rayleigh_zdamp
Definition: ERF_DataStruct.H:564
-
bool custom_rhotheta_forcing
Definition: ERF_DataStruct.H:588
-
bool custom_w_subsidence
Definition: ERF_DataStruct.H:590
-
bool nudging_from_input_sounding
Definition: ERF_DataStruct.H:596
-
amrex::Real rayleigh_ztop
Definition: ERF_DataStruct.H:565
-
amrex::Real NumDiffCoeff
Definition: ERF_DataStruct.H:612
-
bool use_NumDiff
Definition: ERF_DataStruct.H:611
-
bool custom_moisture_forcing
Definition: ERF_DataStruct.H:589
-
amrex::Vector< TurbChoice > turbChoice
Definition: ERF_DataStruct.H:535
-
MoistureType moisture_type
Definition: ERF_DataStruct.H:618
-
bool custom_forcing_prim_vars
Definition: ERF_DataStruct.H:592
-
static TerrainType terrain_type
Definition: ERF_DataStruct.H:524
-
PerturbationType pert_type
Definition: ERF_DataStruct.H:608
-
SpongeChoice spongeChoice
Definition: ERF_DataStruct.H:534
-
amrex::Real rayleigh_dampcoef
Definition: ERF_DataStruct.H:563
-
int ave_plane
Definition: ERF_DataStruct.H:629
+
bool rayleigh_damp_T
Definition: ERF_DataStruct.H:567
+
amrex::Real rayleigh_zdamp
Definition: ERF_DataStruct.H:569
+
bool custom_rhotheta_forcing
Definition: ERF_DataStruct.H:593
+
bool custom_w_subsidence
Definition: ERF_DataStruct.H:595
+
bool nudging_from_input_sounding
Definition: ERF_DataStruct.H:601
+
amrex::Real rayleigh_ztop
Definition: ERF_DataStruct.H:570
+
amrex::Real NumDiffCoeff
Definition: ERF_DataStruct.H:617
+
bool use_NumDiff
Definition: ERF_DataStruct.H:616
+
bool custom_moisture_forcing
Definition: ERF_DataStruct.H:594
+
amrex::Vector< TurbChoice > turbChoice
Definition: ERF_DataStruct.H:540
+
MoistureType moisture_type
Definition: ERF_DataStruct.H:623
+
bool custom_forcing_prim_vars
Definition: ERF_DataStruct.H:597
+
static TerrainType terrain_type
Definition: ERF_DataStruct.H:529
+
PerturbationType pert_type
Definition: ERF_DataStruct.H:613
+
SpongeChoice spongeChoice
Definition: ERF_DataStruct.H:539
+
amrex::Real rayleigh_dampcoef
Definition: ERF_DataStruct.H:568
+
int ave_plane
Definition: ERF_DataStruct.H:634
std::string sponge_type
Definition: ERF_SpongeStruct.H:61
Definition: ERF_TurbStruct.H:29
PBLType pbl_type
Definition: ERF_TurbStruct.H:192
diff --git a/ERF__make__tau__terms_8cpp.html b/ERF__make__tau__terms_8cpp.html index 231d97dac..875709885 100644 --- a/ERF__make__tau__terms_8cpp.html +++ b/ERF__make__tau__terms_8cpp.html @@ -758,11 +758,11 @@

amrex::Real rho0_trans
Definition: ERF_DiffStruct.H:83
amrex::Real dynamicViscosity
Definition: ERF_DiffStruct.H:88
MolecDiffType molec_diff_type
Definition: ERF_DiffStruct.H:76
-
bool use_explicit_most
Definition: ERF_DataStruct.H:599
-
DiffChoice diffChoice
Definition: ERF_DataStruct.H:533
-
amrex::Vector< TurbChoice > turbChoice
Definition: ERF_DataStruct.H:535
-
static TerrainType terrain_type
Definition: ERF_DataStruct.H:524
-
bool use_rotate_most
Definition: ERF_DataStruct.H:602
+
bool use_explicit_most
Definition: ERF_DataStruct.H:604
+
DiffChoice diffChoice
Definition: ERF_DataStruct.H:538
+
amrex::Vector< TurbChoice > turbChoice
Definition: ERF_DataStruct.H:540
+
static TerrainType terrain_type
Definition: ERF_DataStruct.H:529
+
bool use_rotate_most
Definition: ERF_DataStruct.H:607
Definition: ERF_TurbStruct.H:29
PBLType pbl_type
Definition: ERF_TurbStruct.H:192
LESType les_type
Definition: ERF_TurbStruct.H:169
diff --git a/ERF__prob__common_8H_source.html b/ERF__prob__common_8H_source.html index 60d42552f..500e0d417 100644 --- a/ERF__prob__common_8H_source.html +++ b/ERF__prob__common_8H_source.html @@ -611,7 +611,7 @@
amrex::Real T_0
Definition: ERF_prob_common.H:16
amrex::Real rho_0
Definition: ERF_prob_common.H:15
Definition: ERF_DataStruct.H:78
-
static void set_flat_terrain_flag()
Definition: ERF_DataStruct.H:527
+
static void set_flat_terrain_flag()
Definition: ERF_DataStruct.H:532
diff --git a/ERF__slow__rhs__post_8cpp.html b/ERF__slow__rhs__post_8cpp.html index fcce66d3c..9e28dcac1 100644 --- a/ERF__slow__rhs__post_8cpp.html +++ b/ERF__slow__rhs__post_8cpp.html @@ -932,17 +932,17 @@

amrex::Real dryscal_horiz_upw_frac
Definition: ERF_AdvStruct.H:293
Definition: ERF_DiffStruct.H:19
MolecDiffType molec_diff_type
Definition: ERF_DiffStruct.H:76
-
bool use_explicit_most
Definition: ERF_DataStruct.H:599
-
bool use_mono_adv
Definition: ERF_DataStruct.H:615
-
DiffChoice diffChoice
Definition: ERF_DataStruct.H:533
-
amrex::Real gravity
Definition: ERF_DataStruct.H:571
-
amrex::Vector< TurbChoice > turbChoice
Definition: ERF_DataStruct.H:535
-
amrex::Vector< int > anelastic
Definition: ERF_DataStruct.H:543
-
AdvChoice advChoice
Definition: ERF_DataStruct.H:532
-
MoistureType moisture_type
Definition: ERF_DataStruct.H:618
-
static TerrainType terrain_type
Definition: ERF_DataStruct.H:524
-
bool use_rotate_most
Definition: ERF_DataStruct.H:602
-
CouplingType coupling_type
Definition: ERF_DataStruct.H:617
+
bool use_explicit_most
Definition: ERF_DataStruct.H:604
+
bool use_mono_adv
Definition: ERF_DataStruct.H:620
+
DiffChoice diffChoice
Definition: ERF_DataStruct.H:538
+
amrex::Real gravity
Definition: ERF_DataStruct.H:576
+
amrex::Vector< TurbChoice > turbChoice
Definition: ERF_DataStruct.H:540
+
amrex::Vector< int > anelastic
Definition: ERF_DataStruct.H:548
+
AdvChoice advChoice
Definition: ERF_DataStruct.H:537
+
MoistureType moisture_type
Definition: ERF_DataStruct.H:623
+
static TerrainType terrain_type
Definition: ERF_DataStruct.H:529
+
bool use_rotate_most
Definition: ERF_DataStruct.H:607
+
CouplingType coupling_type
Definition: ERF_DataStruct.H:622
Definition: ERF_TurbStruct.H:29
PBLType pbl_type
Definition: ERF_TurbStruct.H:192
bool use_KE
Definition: ERF_TurbStruct.H:206
diff --git a/ERF__slow__rhs__pre_8cpp.html b/ERF__slow__rhs__pre_8cpp.html index 81ba2feac..02d87523f 100644 --- a/ERF__slow__rhs__pre_8cpp.html +++ b/ERF__slow__rhs__pre_8cpp.html @@ -1276,19 +1276,19 @@

amrex::Real dycore_horiz_upw_frac
Definition: ERF_AdvStruct.H:291
Definition: ERF_DiffStruct.H:19
MolecDiffType molec_diff_type
Definition: ERF_DiffStruct.H:76
-
bool use_explicit_most
Definition: ERF_DataStruct.H:599
-
bool use_mono_adv
Definition: ERF_DataStruct.H:615
-
DiffChoice diffChoice
Definition: ERF_DataStruct.H:533
-
amrex::Real gravity
Definition: ERF_DataStruct.H:571
-
amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > abl_pressure_grad
Definition: ERF_DataStruct.H:624
-
amrex::Vector< TurbChoice > turbChoice
Definition: ERF_DataStruct.H:535
-
amrex::Vector< int > anelastic
Definition: ERF_DataStruct.H:543
-
int constant_density
Definition: ERF_DataStruct.H:545
-
AdvChoice advChoice
Definition: ERF_DataStruct.H:532
-
MoistureType moisture_type
Definition: ERF_DataStruct.H:618
-
static TerrainType terrain_type
Definition: ERF_DataStruct.H:524
-
bool use_rotate_most
Definition: ERF_DataStruct.H:602
-
CouplingType coupling_type
Definition: ERF_DataStruct.H:617
+
bool use_explicit_most
Definition: ERF_DataStruct.H:604
+
bool use_mono_adv
Definition: ERF_DataStruct.H:620
+
DiffChoice diffChoice
Definition: ERF_DataStruct.H:538
+
amrex::Real gravity
Definition: ERF_DataStruct.H:576
+
amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > abl_pressure_grad
Definition: ERF_DataStruct.H:629
+
amrex::Vector< TurbChoice > turbChoice
Definition: ERF_DataStruct.H:540
+
amrex::Vector< int > anelastic
Definition: ERF_DataStruct.H:548
+
int constant_density
Definition: ERF_DataStruct.H:550
+
AdvChoice advChoice
Definition: ERF_DataStruct.H:537
+
MoistureType moisture_type
Definition: ERF_DataStruct.H:623
+
static TerrainType terrain_type
Definition: ERF_DataStruct.H:529
+
bool use_rotate_most
Definition: ERF_DataStruct.H:607
+
CouplingType coupling_type
Definition: ERF_DataStruct.H:622
Definition: ERF_TurbStruct.H:29
PBLType pbl_type
Definition: ERF_TurbStruct.H:192
LESType les_type
Definition: ERF_TurbStruct.H:169
diff --git a/classERF.html b/classERF.html index 28ba6ff52..5cd21641a 100644 --- a/classERF.html +++ b/classERF.html @@ -1387,12 +1387,12 @@

@ cons
Definition: ERF_IndexDefines.H:129
@ zvel
Definition: ERF_IndexDefines.H:132
@ yvel
Definition: ERF_IndexDefines.H:131
-
int RhoQr_comp
Definition: ERF_DataStruct.H:640
-
int RhoQv_comp
Definition: ERF_DataStruct.H:634
-
MoistureType moisture_type
Definition: ERF_DataStruct.H:618
-
PerturbationType pert_type
Definition: ERF_DataStruct.H:608
-
WindFarmType windfarm_type
Definition: ERF_DataStruct.H:619
-
bool time_avg_vel
Definition: ERF_DataStruct.H:605
+
int RhoQr_comp
Definition: ERF_DataStruct.H:645
+
int RhoQv_comp
Definition: ERF_DataStruct.H:639
+
MoistureType moisture_type
Definition: ERF_DataStruct.H:623
+
PerturbationType pert_type
Definition: ERF_DataStruct.H:613
+
WindFarmType windfarm_type
Definition: ERF_DataStruct.H:624
+
bool time_avg_vel
Definition: ERF_DataStruct.H:610
void calc_tpi_update(const int lev, const amrex::Real dt, amrex::MultiFab &mf_xvel, amrex::MultiFab &mf_yvel, amrex::MultiFab &mf_cons)
Definition: ERF_TurbPertStruct.H:184
amrex::MultiFab pb_cell
Definition: ERF_TurbPertStruct.H:536
void apply_tpi(const int &lev, const amrex::Box &vbx, const int &comp, const amrex::IndexType &m_ixtype, const amrex::Array4< amrex::Real > &src_arr, const amrex::Array4< amrex::Real const > &pert_cell)
Definition: ERF_TurbPertStruct.H:245
@@ -1871,22 +1871,22 @@

@ r0_comp
Definition: ERF_IndexDefines.H:63
Definition: ERF_DiffStruct.H:19
MolecDiffType molec_diff_type
Definition: ERF_DiffStruct.H:76
-
bool rayleigh_damp_T
Definition: ERF_DataStruct.H:562
-
bool use_explicit_most
Definition: ERF_DataStruct.H:599
-
bool rayleigh_damp_V
Definition: ERF_DataStruct.H:560
-
DiffChoice diffChoice
Definition: ERF_DataStruct.H:533
-
bool custom_rhotheta_forcing
Definition: ERF_DataStruct.H:588
-
bool custom_w_subsidence
Definition: ERF_DataStruct.H:590
-
bool rayleigh_damp_U
Definition: ERF_DataStruct.H:559
-
bool custom_geostrophic_profile
Definition: ERF_DataStruct.H:591
-
amrex::Vector< SubsteppingType > substepping_type
Definition: ERF_DataStruct.H:542
-
bool use_NumDiff
Definition: ERF_DataStruct.H:611
-
bool custom_moisture_forcing
Definition: ERF_DataStruct.H:589
-
amrex::Vector< TurbChoice > turbChoice
Definition: ERF_DataStruct.H:535
-
amrex::Vector< int > anelastic
Definition: ERF_DataStruct.H:543
-
static TerrainType terrain_type
Definition: ERF_DataStruct.H:524
-
bool rayleigh_damp_W
Definition: ERF_DataStruct.H:561
-
SpongeChoice spongeChoice
Definition: ERF_DataStruct.H:534
+
bool rayleigh_damp_T
Definition: ERF_DataStruct.H:567
+
bool use_explicit_most
Definition: ERF_DataStruct.H:604
+
bool rayleigh_damp_V
Definition: ERF_DataStruct.H:565
+
DiffChoice diffChoice
Definition: ERF_DataStruct.H:538
+
bool custom_rhotheta_forcing
Definition: ERF_DataStruct.H:593
+
bool custom_w_subsidence
Definition: ERF_DataStruct.H:595
+
bool rayleigh_damp_U
Definition: ERF_DataStruct.H:564
+
bool custom_geostrophic_profile
Definition: ERF_DataStruct.H:596
+
amrex::Vector< SubsteppingType > substepping_type
Definition: ERF_DataStruct.H:547
+
bool use_NumDiff
Definition: ERF_DataStruct.H:616
+
bool custom_moisture_forcing
Definition: ERF_DataStruct.H:594
+
amrex::Vector< TurbChoice > turbChoice
Definition: ERF_DataStruct.H:540
+
amrex::Vector< int > anelastic
Definition: ERF_DataStruct.H:548
+
static TerrainType terrain_type
Definition: ERF_DataStruct.H:529
+
bool rayleigh_damp_W
Definition: ERF_DataStruct.H:566
+
SpongeChoice spongeChoice
Definition: ERF_DataStruct.H:539
Definition: ERF_SpongeStruct.H:15
std::string sponge_type
Definition: ERF_SpongeStruct.H:61
Definition: ERF_TurbStruct.H:29
@@ -1972,7 +1972,7 @@

12 }
LandSurface lsm
Definition: ERF.H:777
void Advance(const int &lev, const amrex::Real &dt_advance)
Definition: ERF_LandSurface.H:51
-
LandSurfaceType lsm_type
Definition: ERF_DataStruct.H:621
+
LandSurfaceType lsm_type
Definition: ERF_DataStruct.H:626
@@ -2160,7 +2160,7 @@

31  }
32 }
void AverageDownTo(int crse_lev, int scomp, int ncomp)
Definition: ERF_AverageDown.cpp:36
-
CouplingType coupling_type
Definition: ERF_DataStruct.H:617
+
CouplingType coupling_type
Definition: ERF_DataStruct.H:622
@@ -2662,7 +2662,7 @@

amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real > > stretched_dz_d
Definition: ERF.H:847
amrex::Vector< std::unique_ptr< amrex::MultiFab > > ax
Definition: ERF.H:824
amrex::Vector< std::unique_ptr< amrex::MultiFab > > ay
Definition: ERF.H:825
-
static bool terrain_is_flat
Definition: ERF_DataStruct.H:521
+
static bool terrain_is_flat
Definition: ERF_DataStruct.H:526
@@ -4623,8 +4623,8 @@

AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real getRhoThetagivenP(const amrex::Real p, const amrex::Real qv=0.0)
Definition: ERF_EOS.H:175
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real getExnergivenP(const amrex::Real P, const amrex::Real rdOcp)
Definition: ERF_EOS.H:144
@ pres
Definition: ERF_Kessler.H:33
-
amrex::Real rdOcp
Definition: ERF_DataStruct.H:573
-
amrex::Real gravity
Definition: ERF_DataStruct.H:571
+
amrex::Real rdOcp
Definition: ERF_DataStruct.H:578
+
amrex::Real gravity
Definition: ERF_DataStruct.H:576
Here is the call graph for this function:
@@ -4955,9 +4955,9 @@

void initializeMicrophysics(const int &)
Definition: ERF.cpp:1214

void ReSize(const int &nlev)
Definition: ERF_LandSurface.H:23
const char * buildInfoGetGitHash(int i)
-
amrex::Real dz0
Definition: ERF_DataStruct.H:578
-
amrex::Real grid_stretching_ratio
Definition: ERF_DataStruct.H:576
-
amrex::Real zsurf
Definition: ERF_DataStruct.H:577
+
amrex::Real dz0
Definition: ERF_DataStruct.H:583
+
amrex::Real grid_stretching_ratio
Definition: ERF_DataStruct.H:581
+
amrex::Real zsurf
Definition: ERF_DataStruct.H:582
Here is the call graph for this function:
@@ -5349,7 +5349,7 @@

amrex::Vector< amrex::Real > fixed_fast_dt
Definition: ERF.H:915

static amrex::Real cfl
Definition: ERF.H:909
@ rho
Definition: ERF_Kessler.H:30
-
int force_stage1_single_substep
Definition: ERF_DataStruct.H:540
+
int force_stage1_single_substep
Definition: ERF_DataStruct.H:545
Here is the call graph for this function:
@@ -8063,7 +8063,7 @@

amrex::Vector< amrex::IntVect > zero_yflux
Definition: ERF_AdvStruct.H:300

amrex::Vector< amrex::IntVect > zero_xflux
Definition: ERF_AdvStruct.H:299
amrex::Vector< amrex::IntVect > zero_zflux
Definition: ERF_AdvStruct.H:301
-
AdvChoice advChoice
Definition: ERF_DataStruct.H:532
+
AdvChoice advChoice
Definition: ERF_DataStruct.H:537
@@ -8211,7 +8211,7 @@

void make_physbcs(int lev)
Definition: ERF_make_new_arrays.cpp:550
void init_uniform(int lev)
Definition: ERF_init_uniform.cpp:17
void turbPert_amplitude(const int lev)
Definition: ERF_init_TurbPert.cpp:44
-
bool use_gravity
Definition: ERF_DataStruct.H:555
+
bool use_gravity
Definition: ERF_DataStruct.H:560
@@ -8615,7 +8615,7 @@

#define NDRY
Definition: ERF_IndexDefines.H:13
static AMREX_FORCE_INLINE int ComputeGhostCells(const AdvChoice &advChoice, bool use_num_diff)
Definition: ERF.H:1145
@ num_comps
Definition: ERF_IndexDefines.H:67
-
bool test_mapfactor
Definition: ERF_DataStruct.H:550
+
bool test_mapfactor
Definition: ERF_DataStruct.H:555
void init_tpi(const int lev, const amrex::IntVect &nx, const amrex::GpuArray< amrex::Real, 3 > dx, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm, const int ngrow_state)
Definition: ERF_TurbPertStruct.H:29
@@ -9411,10 +9411,10 @@

amrex::Vector< amrex::IntVect > samplepoint
Definition: ERF.H:1341
void setRecordSamplePointInfo(int i, int lev, amrex::IntVect &cell, const std::string &filename)
Definition: ERF.H:1297
static MoistureModelType modelType(const MoistureType a_moisture_type)
query if a specified moisture model is Eulerian or Lagrangian
Definition: ERF_Microphysics.H:64
-
bool have_geo_wind_profile
Definition: ERF_DataStruct.H:627
-
bool project_initial_velocity
Definition: ERF_DataStruct.H:580
-
std::string abl_geo_wind_table
Definition: ERF_DataStruct.H:626
-
bool use_rotate_most
Definition: ERF_DataStruct.H:602
+
bool have_geo_wind_profile
Definition: ERF_DataStruct.H:632
+
bool project_initial_velocity
Definition: ERF_DataStruct.H:585
+
std::string abl_geo_wind_table
Definition: ERF_DataStruct.H:631
+
bool use_rotate_most
Definition: ERF_DataStruct.H:607
void debug(amrex::Real)
Definition: ERF_TurbPertStruct.H:508
Here is the call graph for this function:
@@ -9649,7 +9649,7 @@

127 }
void ChopGrids2D(BoxArray &ba, const Box &domain, int target_size)
Definition: ERF_ChopGrids.cpp:21
void erf_enforce_hse(int lev, amrex::MultiFab &dens, amrex::MultiFab &pres, amrex::MultiFab &pi, amrex::MultiFab &th, std::unique_ptr< amrex::MultiFab > &z_cc)
Definition: ERF_init1d.cpp:149
-
bool use_moist_background
Definition: ERF_DataStruct.H:633
+
bool use_moist_background
Definition: ERF_DataStruct.H:638
Here is the call graph for this function:
@@ -9906,8 +9906,8 @@

44  }

45 }
amrex::Vector< amrex::Vector< amrex::Vector< amrex::Real > > > h_rayleigh_ptrs
Definition: ERF.H:1100
-
amrex::Real rayleigh_zdamp
Definition: ERF_DataStruct.H:564
-
amrex::Real rayleigh_ztop
Definition: ERF_DataStruct.H:565
+
amrex::Real rayleigh_zdamp
Definition: ERF_DataStruct.H:569
+
amrex::Real rayleigh_ztop
Definition: ERF_DataStruct.H:570
@@ -10497,7 +10497,7 @@

void init_zphys(int lev, amrex::Real time)
Definition: ERF_make_new_arrays.cpp:453
void init_stuff(int lev, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm, amrex::Vector< amrex::MultiFab > &lev_new, amrex::Vector< amrex::MultiFab > &lev_old, amrex::MultiFab &tmp_base_state, std::unique_ptr< amrex::MultiFab > &tmp_zphys_nd)
Definition: ERF_make_new_arrays.cpp:23
void Define_ERFFillPatchers(int lev)
Definition: ERF.cpp:1902
-
bool do_forest
Definition: ERF_DataStruct.H:650
+
bool do_forest
Definition: ERF_DataStruct.H:655
@@ -11892,7 +11892,7 @@

void solve_with_mlmg(int lev, amrex::Vector< amrex::MultiFab > &rhs, amrex::Vector< amrex::MultiFab > &p, amrex::Vector< amrex::Array< amrex::MultiFab, AMREX_SPACEDIM >> &fluxes)
Definition: ERF_solve_with_mlmg.cpp:40
void solve_with_gmres(int lev, amrex::Vector< amrex::MultiFab > &rhs, amrex::Vector< amrex::MultiFab > &p, amrex::Array< amrex::MultiFab, AMREX_SPACEDIM > &fluxes)
Definition: ERF_solve_with_gmres.cpp:12
@ omega
Definition: ERF_SAM.H:49
-
amrex::Real poisson_abstol
Definition: ERF_DataStruct.H:547
+
amrex::Real poisson_abstol
Definition: ERF_DataStruct.H:552
Here is the call graph for this function:
@@ -12161,8 +12161,8 @@

amrex::Array< amrex::LinOpBCType, AMREX_SPACEDIM > get_projection_bc(amrex::Orientation::Side side) const noexcept
Definition: ERF_solve_with_mlmg.cpp:17

bool projection_has_dirichlet(amrex::Array< amrex::LinOpBCType, AMREX_SPACEDIM > bcs) const
Definition: ERF_PoissonSolve_tb.cpp:8
amrex::Real volWgtSumMF(int lev, const amrex::MultiFab &mf, int comp, const amrex::MultiFab &mapfac, bool local, bool finemask)
Definition: ERF_WriteScalarProfiles.cpp:378
-
amrex::Real poisson_reltol
Definition: ERF_DataStruct.H:548
-
int ncorr
Definition: ERF_DataStruct.H:546
+
amrex::Real poisson_reltol
Definition: ERF_DataStruct.H:553
+
int ncorr
Definition: ERF_DataStruct.H:551
Here is the call graph for this function:
@@ -12921,9 +12921,9 @@

Definition: ERF_NOAH.H:20

Definition: ERF_NullSurf.H:8
Definition: ERF_SLM.H:26
-
std::string pp_prefix
Definition: ERF_DataStruct.H:538
+
std::string pp_prefix
Definition: ERF_DataStruct.H:543
void init_params(int max_level)
Definition: ERF_DataStruct.H:80
-
void display(int max_level)
Definition: ERF_DataStruct.H:401
+
void display(int max_level)
Definition: ERF_DataStruct.H:406
Here is the call graph for this function:
diff --git a/classKessler.html b/classKessler.html index f32023356..279b7c73b 100644 --- a/classKessler.html +++ b/classKessler.html @@ -682,7 +682,7 @@

@ qt
Definition: ERF_Kessler.H:35

@ rain_accum
Definition: ERF_Kessler.H:41
@ qv
Definition: ERF_Kessler.H:36
-
MoistureType moisture_type
Definition: ERF_DataStruct.H:618
+
MoistureType moisture_type
Definition: ERF_DataStruct.H:623

Referenced by Advance().

@@ -927,10 +927,10 @@

amrex::Real m_gOcp
Definition: ERF_Kessler.H:174

amrex::Real m_fac_fus
Definition: ERF_Kessler.H:172
int m_axis
Definition: ERF_Kessler.H:165
-
amrex::Real c_p
Definition: ERF_DataStruct.H:572
-
bool do_precip
Definition: ERF_DataStruct.H:632
-
bool do_cloud
Definition: ERF_DataStruct.H:631
-
int ave_plane
Definition: ERF_DataStruct.H:629
+
amrex::Real c_p
Definition: ERF_DataStruct.H:577
+
bool do_precip
Definition: ERF_DataStruct.H:637
+
bool do_cloud
Definition: ERF_DataStruct.H:636
+
int ave_plane
Definition: ERF_DataStruct.H:634
diff --git a/classProblemBase.html b/classProblemBase.html index 7cf263086..ed6fcec8e 100644 --- a/classProblemBase.html +++ b/classProblemBase.html @@ -636,7 +636,7 @@

335 
337  }
-
static void set_flat_terrain_flag()
Definition: ERF_DataStruct.H:527
+
static void set_flat_terrain_flag()
Definition: ERF_DataStruct.H:532
Here is the call graph for this function:
diff --git a/classSAM.html b/classSAM.html index a0d6cdd88..ba5875165 100644 --- a/classSAM.html +++ b/classSAM.html @@ -617,7 +617,7 @@

@ theta
Definition: ERF_SAM.H:31

@ qcl
Definition: ERF_SAM.H:38
@ tabs
Definition: ERF_SAM.H:32
-
MoistureType moisture_type
Definition: ERF_DataStruct.H:618
+
MoistureType moisture_type
Definition: ERF_DataStruct.H:623

Referenced by Advance().

@@ -1116,11 +1116,11 @@

constexpr amrex::Real CONST_GRAV
Definition: ERF_Constants.H:21

bool doprecip
Definition: ERF_SAM.H:311
bool docloud
Definition: ERF_SAM.H:311
-
amrex::Real rdOcp
Definition: ERF_DataStruct.H:573
-
amrex::Real c_p
Definition: ERF_DataStruct.H:572
-
bool do_precip
Definition: ERF_DataStruct.H:632
-
bool do_cloud
Definition: ERF_DataStruct.H:631
-
int ave_plane
Definition: ERF_DataStruct.H:629
+
amrex::Real rdOcp
Definition: ERF_DataStruct.H:578
+
amrex::Real c_p
Definition: ERF_DataStruct.H:577
+
bool do_precip
Definition: ERF_DataStruct.H:637
+
bool do_cloud
Definition: ERF_DataStruct.H:636
+
int ave_plane
Definition: ERF_DataStruct.H:634
diff --git a/structSolverChoice.html b/structSolverChoice.html index 5ead8f251..f924e7c8b 100644 --- a/structSolverChoice.html +++ b/structSolverChoice.html @@ -327,57 +327,57 @@

-
461  {
-
462  amrex::ParmParse pp(pp_prefix);
-
463 
-
464  // Read the rotational time period (in seconds)
-
465  amrex::Real rot_time_period = 86400.0;
-
466  pp.query("rotational_time_period", rot_time_period);
-
467 
-
468  coriolis_factor = 2.0 * 2.0 * PI / rot_time_period;
-
469  amrex::Print() << "Coriolis factor = " << coriolis_factor << std::endl;
-
470 
-
471  amrex::Real latitude = 90.0;
-
472  pp.query("latitude", latitude);
-
473 
-
474  pp.query("coriolis_3d", coriolis_3d);
+
466  {
+
467  amrex::ParmParse pp(pp_prefix);
+
468 
+
469  // Read the rotational time period (in seconds)
+
470  amrex::Real rot_time_period = 86400.0;
+
471  pp.query("rotational_time_period", rot_time_period);
+
472 
+
473  coriolis_factor = 2.0 * 2.0 * PI / rot_time_period;
+
474  amrex::Print() << "Coriolis factor = " << coriolis_factor << std::endl;
475 
-
476  // Convert to radians
-
477  latitude *= (PI/180.);
-
478  sinphi = std::sin(latitude);
-
479  if (coriolis_3d) {
-
480  cosphi = std::cos(latitude);
-
481  }
-
482 
-
483  amrex::Print() << "Coriolis frequency, f = " << coriolis_factor * sinphi << " 1/s" << std::endl;
-
484 
-
485  if (abl_driver_type == ABLDriverType::GeostrophicWind) {
-
486  // Read in the geostrophic wind -- we only use this to construct
-
487  // the forcing term so no need to keep it
-
488  amrex::Vector<amrex::Real> abl_geo_wind(3);
-
489  pp.queryarr("abl_geo_wind",abl_geo_wind);
-
490 
-
491  if(!pp.query("abl_geo_wind_table",abl_geo_wind_table)) {
-
492  abl_geo_forcing = {
-
493  -coriolis_factor * (abl_geo_wind[1]*sinphi - abl_geo_wind[2]*cosphi),
-
494  coriolis_factor * abl_geo_wind[0]*sinphi,
-
495  -coriolis_factor * abl_geo_wind[0]*cosphi
-
496  };
-
497  } else {
-
498  amrex::Print() << "NOTE: abl_geo_wind_table provided, ignoring input abl_geo_wind" << std::endl;
-
499  }
-
500  }
-
501  }
+
476  amrex::Real latitude = 90.0;
+
477  pp.query("latitude", latitude);
+
478 
+
479  pp.query("coriolis_3d", coriolis_3d);
+
480 
+
481  // Convert to radians
+
482  latitude *= (PI/180.);
+
483  sinphi = std::sin(latitude);
+
484  if (coriolis_3d) {
+
485  cosphi = std::cos(latitude);
+
486  }
+
487 
+
488  amrex::Print() << "Coriolis frequency, f = " << coriolis_factor * sinphi << " 1/s" << std::endl;
+
489 
+
490  if (abl_driver_type == ABLDriverType::GeostrophicWind) {
+
491  // Read in the geostrophic wind -- we only use this to construct
+
492  // the forcing term so no need to keep it
+
493  amrex::Vector<amrex::Real> abl_geo_wind(3);
+
494  pp.queryarr("abl_geo_wind",abl_geo_wind);
+
495 
+
496  if(!pp.query("abl_geo_wind_table",abl_geo_wind_table)) {
+
497  abl_geo_forcing = {
+
498  -coriolis_factor * (abl_geo_wind[1]*sinphi - abl_geo_wind[2]*cosphi),
+
499  coriolis_factor * abl_geo_wind[0]*sinphi,
+
500  -coriolis_factor * abl_geo_wind[0]*cosphi
+
501  };
+
502  } else {
+
503  amrex::Print() << "NOTE: abl_geo_wind_table provided, ignoring input abl_geo_wind" << std::endl;
+
504  }
+
505  }
+
506  }
constexpr amrex::Real PI
Definition: ERF_Constants.H:6
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real pp(amrex::Real y)
Definition: ERF_Microphysics_Utils.H:219
-
amrex::Real coriolis_factor
Definition: ERF_DataStruct.H:583
-
amrex::Real cosphi
Definition: ERF_DataStruct.H:584
-
std::string pp_prefix
Definition: ERF_DataStruct.H:538
-
amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > abl_geo_forcing
Definition: ERF_DataStruct.H:625
-
amrex::Real sinphi
Definition: ERF_DataStruct.H:585
-
bool coriolis_3d
Definition: ERF_DataStruct.H:557
-
std::string abl_geo_wind_table
Definition: ERF_DataStruct.H:626
-
ABLDriverType abl_driver_type
Definition: ERF_DataStruct.H:623
+
amrex::Real coriolis_factor
Definition: ERF_DataStruct.H:588
+
amrex::Real cosphi
Definition: ERF_DataStruct.H:589
+
std::string pp_prefix
Definition: ERF_DataStruct.H:543
+
amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > abl_geo_forcing
Definition: ERF_DataStruct.H:630
+
amrex::Real sinphi
Definition: ERF_DataStruct.H:590
+
bool coriolis_3d
Definition: ERF_DataStruct.H:562
+
std::string abl_geo_wind_table
Definition: ERF_DataStruct.H:631
+
ABLDriverType abl_driver_type
Definition: ERF_DataStruct.H:628

Referenced by init_params().

@@ -424,58 +424,58 @@

-
359  {
-
360  // Warn for PBL models and moisture - these may not yet be compatible
-
361  for (int lev = 0; lev <= max_level; lev++) {
-
362  if ((moisture_type != MoistureType::None) && (turbChoice[lev].pbl_type != PBLType::None)) {
-
363  amrex::Warning("\n*** WARNING: Moisture may not yet be compatible with PBL models, \n proceed with caution ***");
-
364  }
-
365  }
-
366  //
-
367  // Buoyancy type check
-
368  //
-
369  if (buoyancy_type != 1 && buoyancy_type != 2 && buoyancy_type != 3 && buoyancy_type != 4) {
-
370  amrex::Abort("buoyancy_type must be 1, 2, 3 or 4");
-
371  }
-
372 
-
373  if (!use_lagged_delta_rt && !(terrain_type == TerrainType::Moving)) {
-
374  amrex::Error("Can't turn off lagged_delta_rt when terrain not moving");
-
375  }
-
376 
-
377  //
-
378  // Wind farm checks
-
379  //
-
380  if (windfarm_type==WindFarmType::SimpleAD and sampling_distance_by_D < 0.0) {
-
381  amrex::Abort("To use simplified actuator disks, you need to provide a variable"
-
382  " erf.sampling_distance_by_D in the inputs which specifies the upstream"
-
383  " distance as a factor of the turbine diameter at which the incoming free stream"
-
384  " velocity will be computed at.");
-
385  }
-
386  if ( (windfarm_type==WindFarmType::SimpleAD ||
-
387  windfarm_type==WindFarmType::GeneralAD ) && turb_disk_angle < 0.0) {
-
388  amrex::Abort("To use simplified actuator disks, you need to provide a variable"
-
389  " erf.turb_disk_angle_from_x in the inputs which is the angle of the face of the"
-
390  " turbine disk from the x-axis. A turbine facing an oncoming flow in the x-direction"
-
391  " will have turb_disk_angle value of 90 deg.");
-
392  }
-
393  if (windfarm_loc_type == WindFarmLocType::lat_lon and (windfarm_x_shift < 0.0 or windfarm_y_shift < 0.0)) {
-
394  amrex::Abort("You are using windfarms with latitude-logitude option to position the turbines."
-
395  " For this you should provide the inputs erf.windfarm_x_shift and"
-
396  " erf.windfarm_y_shift which are the values by which the bounding box of the"
-
397  " windfarm is shifted from the x and the y axes.");
-
398  }
-
399  }
-
bool use_lagged_delta_rt
Definition: ERF_DataStruct.H:568
-
amrex::Real windfarm_x_shift
Definition: ERF_DataStruct.H:646
-
WindFarmLocType windfarm_loc_type
Definition: ERF_DataStruct.H:620
-
amrex::Real sampling_distance_by_D
Definition: ERF_DataStruct.H:644
-
amrex::Vector< TurbChoice > turbChoice
Definition: ERF_DataStruct.H:535
-
MoistureType moisture_type
Definition: ERF_DataStruct.H:618
-
static TerrainType terrain_type
Definition: ERF_DataStruct.H:524
-
WindFarmType windfarm_type
Definition: ERF_DataStruct.H:619
-
int buoyancy_type
Definition: ERF_DataStruct.H:552
-
amrex::Real turb_disk_angle
Definition: ERF_DataStruct.H:645
-
amrex::Real windfarm_y_shift
Definition: ERF_DataStruct.H:647
+
364  {
+
365  // Warn for PBL models and moisture - these may not yet be compatible
+
366  for (int lev = 0; lev <= max_level; lev++) {
+
367  if ((moisture_type != MoistureType::None) && (turbChoice[lev].pbl_type != PBLType::None)) {
+
368  amrex::Warning("\n*** WARNING: Moisture may not yet be compatible with PBL models, \n proceed with caution ***");
+
369  }
+
370  }
+
371  //
+
372  // Buoyancy type check
+
373  //
+
374  if (buoyancy_type != 1 && buoyancy_type != 2 && buoyancy_type != 3 && buoyancy_type != 4) {
+
375  amrex::Abort("buoyancy_type must be 1, 2, 3 or 4");
+
376  }
+
377 
+
378  if (!use_lagged_delta_rt && !(terrain_type == TerrainType::Moving)) {
+
379  amrex::Error("Can't turn off lagged_delta_rt when terrain not moving");
+
380  }
+
381 
+
382  //
+
383  // Wind farm checks
+
384  //
+
385  if (windfarm_type==WindFarmType::SimpleAD and sampling_distance_by_D < 0.0) {
+
386  amrex::Abort("To use simplified actuator disks, you need to provide a variable"
+
387  " erf.sampling_distance_by_D in the inputs which specifies the upstream"
+
388  " distance as a factor of the turbine diameter at which the incoming free stream"
+
389  " velocity will be computed at.");
+
390  }
+
391  if ( (windfarm_type==WindFarmType::SimpleAD ||
+
392  windfarm_type==WindFarmType::GeneralAD ) && turb_disk_angle < 0.0) {
+
393  amrex::Abort("To use simplified actuator disks, you need to provide a variable"
+
394  " erf.turb_disk_angle_from_x in the inputs which is the angle of the face of the"
+
395  " turbine disk from the x-axis. A turbine facing an oncoming flow in the x-direction"
+
396  " will have turb_disk_angle value of 90 deg.");
+
397  }
+
398  if (windfarm_loc_type == WindFarmLocType::lat_lon and (windfarm_x_shift < 0.0 or windfarm_y_shift < 0.0)) {
+
399  amrex::Abort("You are using windfarms with latitude-logitude option to position the turbines."
+
400  " For this you should provide the inputs erf.windfarm_x_shift and"
+
401  " erf.windfarm_y_shift which are the values by which the bounding box of the"
+
402  " windfarm is shifted from the x and the y axes.");
+
403  }
+
404  }
+
bool use_lagged_delta_rt
Definition: ERF_DataStruct.H:573
+
amrex::Real windfarm_x_shift
Definition: ERF_DataStruct.H:651
+
WindFarmLocType windfarm_loc_type
Definition: ERF_DataStruct.H:625
+
amrex::Real sampling_distance_by_D
Definition: ERF_DataStruct.H:649
+
amrex::Vector< TurbChoice > turbChoice
Definition: ERF_DataStruct.H:540
+
MoistureType moisture_type
Definition: ERF_DataStruct.H:623
+
static TerrainType terrain_type
Definition: ERF_DataStruct.H:529
+
WindFarmType windfarm_type
Definition: ERF_DataStruct.H:624
+
int buoyancy_type
Definition: ERF_DataStruct.H:557
+
amrex::Real turb_disk_angle
Definition: ERF_DataStruct.H:650
+
amrex::Real windfarm_y_shift
Definition: ERF_DataStruct.H:652

Referenced by init_params().

@@ -513,75 +513,75 @@

-
402  {
-
403  amrex::Print() << "SOLVER CHOICE: " << std::endl;
-
404  amrex::Print() << "force_stage1_single_substep : " << force_stage1_single_substep << std::endl;
-
405  for (int lev = 0; lev <= max_level; lev++) {
-
406  amrex::Print() << "anelastic at level : " << lev << " is " << anelastic[lev] << std::endl;
-
407  if (substepping_type[lev] == SubsteppingType::None) {
-
408  amrex::Print() << "No substepping at level " << lev << std::endl;
-
409  } else if (substepping_type[lev] == SubsteppingType::Explicit) {
-
410  amrex::Print() << "Explicit substepping at level " << lev << std::endl;
-
411  } else if (substepping_type[lev] == SubsteppingType::Implicit) {
-
412  amrex::Print() << "Implicit substepping at level " << lev << std::endl;
-
413  }
-
414  }
-
415  amrex::Print() << "use_coriolis : " << use_coriolis << std::endl;
-
416  amrex::Print() << "use_gravity : " << use_gravity << std::endl;
-
417 
-
418  amrex::Print() << "Terrain Type: " << std::endl;
-
419  if (terrain_type == TerrainType::Static) {
-
420  amrex::Print() << " Static" << std::endl;
-
421  } else if (terrain_type == TerrainType::Moving) {
-
422  amrex::Print() << " Moving" << std::endl;
-
423  } else {
-
424  amrex::Print() << " None" << std::endl;
-
425  }
-
426 
-
427  amrex::Print() << "ABL Driver Type: " << std::endl;
-
428  if (abl_driver_type == ABLDriverType::None) {
+
407  {
+
408  amrex::Print() << "SOLVER CHOICE: " << std::endl;
+
409  amrex::Print() << "force_stage1_single_substep : " << force_stage1_single_substep << std::endl;
+
410  for (int lev = 0; lev <= max_level; lev++) {
+
411  amrex::Print() << "anelastic at level : " << lev << " is " << anelastic[lev] << std::endl;
+
412  if (substepping_type[lev] == SubsteppingType::None) {
+
413  amrex::Print() << "No substepping at level " << lev << std::endl;
+
414  } else if (substepping_type[lev] == SubsteppingType::Explicit) {
+
415  amrex::Print() << "Explicit substepping at level " << lev << std::endl;
+
416  } else if (substepping_type[lev] == SubsteppingType::Implicit) {
+
417  amrex::Print() << "Implicit substepping at level " << lev << std::endl;
+
418  }
+
419  }
+
420  amrex::Print() << "use_coriolis : " << use_coriolis << std::endl;
+
421  amrex::Print() << "use_gravity : " << use_gravity << std::endl;
+
422 
+
423  amrex::Print() << "Terrain Type: " << std::endl;
+
424  if (terrain_type == TerrainType::Static) {
+
425  amrex::Print() << " Static" << std::endl;
+
426  } else if (terrain_type == TerrainType::Moving) {
+
427  amrex::Print() << " Moving" << std::endl;
+
428  } else {
429  amrex::Print() << " None" << std::endl;
-
430  } else if (abl_driver_type == ABLDriverType::PressureGradient) {
-
431  amrex::Print() << " Pressure Gradient "
-
432  << amrex::RealVect(abl_pressure_grad[0],abl_pressure_grad[1],abl_pressure_grad[2])
-
433  << std::endl;
-
434  } else if (abl_driver_type == ABLDriverType::GeostrophicWind) {
-
435  amrex::Print() << " Geostrophic Wind "
-
436  << amrex::RealVect(abl_geo_forcing[0],abl_geo_forcing[1],abl_geo_forcing[2])
-
437  << std::endl;
-
438  }
-
439 
-
440  if (max_level > 0) {
-
441  amrex::Print() << "Coupling Type: " << std::endl;
-
442  if (coupling_type == CouplingType::TwoWay) {
-
443  amrex::Print() << " Two-way" << std::endl;
-
444  } else if (coupling_type == CouplingType::OneWay) {
-
445  amrex::Print() << " One-way" << std::endl;
-
446  }
-
447  }
-
448 
-
449  amrex::Print() << "Buoyancy_type : " << buoyancy_type << std::endl;
-
450 
-
451  advChoice.display();
- - -
454 
-
455  for (int lev = 0; lev <= max_level; lev++) {
-
456  turbChoice[lev].display(lev);
-
457  }
-
458  }
+
430  }
+
431 
+
432  amrex::Print() << "ABL Driver Type: " << std::endl;
+
433  if (abl_driver_type == ABLDriverType::None) {
+
434  amrex::Print() << " None" << std::endl;
+
435  } else if (abl_driver_type == ABLDriverType::PressureGradient) {
+
436  amrex::Print() << " Pressure Gradient "
+
437  << amrex::RealVect(abl_pressure_grad[0],abl_pressure_grad[1],abl_pressure_grad[2])
+
438  << std::endl;
+
439  } else if (abl_driver_type == ABLDriverType::GeostrophicWind) {
+
440  amrex::Print() << " Geostrophic Wind "
+
441  << amrex::RealVect(abl_geo_forcing[0],abl_geo_forcing[1],abl_geo_forcing[2])
+
442  << std::endl;
+
443  }
+
444 
+
445  if (max_level > 0) {
+
446  amrex::Print() << "Coupling Type: " << std::endl;
+
447  if (coupling_type == CouplingType::TwoWay) {
+
448  amrex::Print() << " Two-way" << std::endl;
+
449  } else if (coupling_type == CouplingType::OneWay) {
+
450  amrex::Print() << " One-way" << std::endl;
+
451  }
+
452  }
+
453 
+
454  amrex::Print() << "Buoyancy_type : " << buoyancy_type << std::endl;
+
455 
+
456  advChoice.display();
+ + +
459 
+
460  for (int lev = 0; lev <= max_level; lev++) {
+
461  turbChoice[lev].display(lev);
+
462  }
+
463  }
void display()
Definition: ERF_AdvStruct.H:189
void display()
Definition: ERF_DiffStruct.H:56
-
DiffChoice diffChoice
Definition: ERF_DataStruct.H:533
-
bool use_gravity
Definition: ERF_DataStruct.H:555
-
int force_stage1_single_substep
Definition: ERF_DataStruct.H:540
-
amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > abl_pressure_grad
Definition: ERF_DataStruct.H:624
-
amrex::Vector< SubsteppingType > substepping_type
Definition: ERF_DataStruct.H:542
-
bool use_coriolis
Definition: ERF_DataStruct.H:556
-
amrex::Vector< int > anelastic
Definition: ERF_DataStruct.H:543
-
AdvChoice advChoice
Definition: ERF_DataStruct.H:532
-
SpongeChoice spongeChoice
Definition: ERF_DataStruct.H:534
-
CouplingType coupling_type
Definition: ERF_DataStruct.H:617
+
DiffChoice diffChoice
Definition: ERF_DataStruct.H:538
+
bool use_gravity
Definition: ERF_DataStruct.H:560
+
int force_stage1_single_substep
Definition: ERF_DataStruct.H:545
+
amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > abl_pressure_grad
Definition: ERF_DataStruct.H:629
+
amrex::Vector< SubsteppingType > substepping_type
Definition: ERF_DataStruct.H:547
+
bool use_coriolis
Definition: ERF_DataStruct.H:561
+
amrex::Vector< int > anelastic
Definition: ERF_DataStruct.H:548
+
AdvChoice advChoice
Definition: ERF_DataStruct.H:537
+
SpongeChoice spongeChoice
Definition: ERF_DataStruct.H:539
+
CouplingType coupling_type
Definition: ERF_DataStruct.H:622
void display()
Definition: ERF_SpongeStruct.H:45
Here is the call graph for this function:
@@ -686,217 +686,222 @@

143 

144  // Is the terrain none, static or moving?
145  pp.query_enum_case_insensitive("terrain_type",terrain_type);
-
146 
-
147  // Use lagged_delta_rt in the fast integrator?
-
148  pp.query("use_lagged_delta_rt", use_lagged_delta_rt);
-
149 
-
150  // These default to true but are used for unit testing
-
151  pp.query("use_gravity", use_gravity);
- -
153 
-
154  pp.query("c_p", c_p);
-
155  rdOcp = R_d / c_p;
-
156 
-
157  read_int_string(max_level, "anelastic", anelastic, 0);
+
146  int n_zlevels = pp.countval("terrain_z_levels");
+
147  if (n_zlevels > 0 and terrain_type == TerrainType::None)
+
148  {
+
149  terrain_type = TerrainType::Static;
+
150  }
+
151 
+
152  // Use lagged_delta_rt in the fast integrator?
+
153  pp.query("use_lagged_delta_rt", use_lagged_delta_rt);
+
154 
+
155  // These default to true but are used for unit testing
+
156  pp.query("use_gravity", use_gravity);
+
158 
-
159  // *******************************************************************************
-
160  // Read substepping_type and allow for different values at each level
-
161  // *******************************************************************************
-
162  substepping_type.resize(max_level+1);
+
159  pp.query("c_p", c_p);
+
160  rdOcp = R_d / c_p;
+
161 
+
162  read_int_string(max_level, "anelastic", anelastic, 0);
163 
-
164  for (int i = 0; i <= max_level; i++) {
-
165  substepping_type[i] = SubsteppingType::Implicit;
-
166  }
-
167 
-
168  int nvals = pp.countval("substepping_type");
-
169  AMREX_ALWAYS_ASSERT(nvals == 0 || nvals == 1 || nvals >= max_level+1);
-
170 
-
171  if (nvals == 1) {
-
172  pp.query_enum_case_insensitive("substepping_type",substepping_type[0]);
-
173  for (int i = 1; i <= max_level; i++) {
- -
175  }
-
176  } else if (nvals > 1) { // in this case we have asserted nvals >= max_level+1
-
177  for (int i = 0; i <= max_level; i++) {
-
178  pp.query_enum_case_insensitive("substepping_type",substepping_type[i],i);
-
179  }
-
180  }
-
181 
-
182  // *******************************************************************************
-
183  // Error check on deprecated input
-
184  // *******************************************************************************
-
185  int nvals_old = pp.countval("no_substepping");
-
186  if (nvals_old > 0) {
-
187  amrex::Abort("The no_substepping flag is deprecated -- set substepping_type instead");
-
188  }
+
164  // *******************************************************************************
+
165  // Read substepping_type and allow for different values at each level
+
166  // *******************************************************************************
+
167  substepping_type.resize(max_level+1);
+
168 
+
169  for (int i = 0; i <= max_level; i++) {
+
170  substepping_type[i] = SubsteppingType::Implicit;
+
171  }
+
172 
+
173  int nvals = pp.countval("substepping_type");
+
174  AMREX_ALWAYS_ASSERT(nvals == 0 || nvals == 1 || nvals >= max_level+1);
+
175 
+
176  if (nvals == 1) {
+
177  pp.query_enum_case_insensitive("substepping_type",substepping_type[0]);
+
178  for (int i = 1; i <= max_level; i++) {
+ +
180  }
+
181  } else if (nvals > 1) { // in this case we have asserted nvals >= max_level+1
+
182  for (int i = 0; i <= max_level; i++) {
+
183  pp.query_enum_case_insensitive("substepping_type",substepping_type[i],i);
+
184  }
+
185  }
+
186 
+
187  // *******************************************************************************
+
188  // Error check on deprecated input
189  // *******************************************************************************
-
190 
-
191  bool any_anelastic = false;
-
192  for (int i = 0; i <= max_level; ++i) {
-
193  if (anelastic[i] == 1) any_anelastic = true;
-
194  }
+
190  int nvals_old = pp.countval("no_substepping");
+
191  if (nvals_old > 0) {
+
192  amrex::Abort("The no_substepping flag is deprecated -- set substepping_type instead");
+
193  }
+
194  // *******************************************************************************
195 
-
196  // If anelastic at all, we do not advect rho -- it is always == rho0
-
197  if (any_anelastic == 1) {
-
198  constant_density = true;
- -
200  buoyancy_type = 3; // (This isn't actually used when anelastic is set)
-
201  } else {
-
202  pp.query("project_initial_velocity", project_initial_velocity);
-
203 
-
204  constant_density = false; // We default to false but allow the user to set it
-
205  pp.query("constant_density", constant_density);
-
206  }
-
207 
-
208  // *******************************************************************************
-
209 
-
210  pp.query("ncorr", ncorr);
-
211  pp.query("poisson_abstol", poisson_abstol);
-
212  pp.query("poisson_reltol", poisson_reltol);
-
213 
-
214  for (int lev = 0; lev <= max_level; lev++) {
-
215  if (anelastic[lev] != 0)
-
216  {
-
217  substepping_type[lev] = SubsteppingType::None;
-
218  }
-
219  }
-
220 
-
221  pp.query("force_stage1_single_substep", force_stage1_single_substep);
-
222 
-
223  // Include Coriolis forcing?
-
224  pp.query("use_coriolis", use_coriolis);
+
196  bool any_anelastic = false;
+
197  for (int i = 0; i <= max_level; ++i) {
+
198  if (anelastic[i] == 1) any_anelastic = true;
+
199  }
+
200 
+
201  // If anelastic at all, we do not advect rho -- it is always == rho0
+
202  if (any_anelastic == 1) {
+
203  constant_density = true;
+ +
205  buoyancy_type = 3; // (This isn't actually used when anelastic is set)
+
206  } else {
+
207  pp.query("project_initial_velocity", project_initial_velocity);
+
208 
+
209  constant_density = false; // We default to false but allow the user to set it
+
210  pp.query("constant_density", constant_density);
+
211  }
+
212 
+
213  // *******************************************************************************
+
214 
+
215  pp.query("ncorr", ncorr);
+
216  pp.query("poisson_abstol", poisson_abstol);
+
217  pp.query("poisson_reltol", poisson_reltol);
+
218 
+
219  for (int lev = 0; lev <= max_level; lev++) {
+
220  if (anelastic[lev] != 0)
+
221  {
+
222  substepping_type[lev] = SubsteppingType::None;
+
223  }
+
224  }
225 
-
226  // Include Rayleigh damping (separate flags for each variable)
-
227  pp.query("rayleigh_damp_U", rayleigh_damp_U);
-
228  pp.query("rayleigh_damp_V", rayleigh_damp_V);
-
229  pp.query("rayleigh_damp_W", rayleigh_damp_W);
-
230  pp.query("rayleigh_damp_T", rayleigh_damp_T);
-
231  pp.query("rayleigh_dampcoef", rayleigh_dampcoef);
-
232  pp.query("rayleigh_zdamp", rayleigh_zdamp);
-
233 
-
234  // Flag to do explicit MOST formulation
-
235  pp.query("use_explicit_most",use_explicit_most);
-
236 
-
237  // Flag to do MOST rotations with terrain
-
238  pp.query("use_rotate_most",use_rotate_most);
-
239  if (use_rotate_most) {
-
240  AMREX_ASSERT_WITH_MESSAGE(terrain_type != TerrainType::None,"MOST stress rotations are only valid with terrain!");
-
241  AMREX_ASSERT_WITH_MESSAGE(use_explicit_most, "MOST Stress rotations are only valid with explicit MOST!");
-
242  }
-
243 
-
244  // Which external forcings?
-
245  abl_driver_type = ABLDriverType::None; // Default: no ABL driver for simulating classical fluid dynamics problems
-
246  pp.query_enum_case_insensitive("abl_driver_type",abl_driver_type);
-
247 
-
248  // Which type of inflow turbulent generation
-
249  pert_type = PerturbationType::None; // Default
-
250  pp.query_enum_case_insensitive("perturbation_type",pert_type);
-
251 
-
252  amrex::Vector<amrex::Real> abl_pressure_grad_in = {0.0, 0.0, 0.0};
-
253  pp.queryarr("abl_pressure_grad",abl_pressure_grad_in);
-
254  for(int i = 0; i < AMREX_SPACEDIM; ++i) abl_pressure_grad[i] = abl_pressure_grad_in[i];
-
255 
-
256  amrex::Vector<amrex::Real> abl_geo_forcing_in = {0.0, 0.0, 0.0};
-
257  if(pp.queryarr("abl_geo_forcing",abl_geo_forcing_in)) {
-
258  amrex::Print() << "Specified abl_geo_forcing: (";
-
259  for (int i = 0; i < AMREX_SPACEDIM; ++i) {
-
260  abl_geo_forcing[i] = abl_geo_forcing_in[i];
-
261  amrex::Print() << abl_geo_forcing[i] << " ";
-
262  }
-
263  amrex::Print() << ")" << std::endl;
-
264  }
-
265 
-
266  if (use_coriolis)
-
267  {
- +
226  pp.query("force_stage1_single_substep", force_stage1_single_substep);
+
227 
+
228  // Include Coriolis forcing?
+
229  pp.query("use_coriolis", use_coriolis);
+
230 
+
231  // Include Rayleigh damping (separate flags for each variable)
+
232  pp.query("rayleigh_damp_U", rayleigh_damp_U);
+
233  pp.query("rayleigh_damp_V", rayleigh_damp_V);
+
234  pp.query("rayleigh_damp_W", rayleigh_damp_W);
+
235  pp.query("rayleigh_damp_T", rayleigh_damp_T);
+
236  pp.query("rayleigh_dampcoef", rayleigh_dampcoef);
+
237  pp.query("rayleigh_zdamp", rayleigh_zdamp);
+
238 
+
239  // Flag to do explicit MOST formulation
+
240  pp.query("use_explicit_most",use_explicit_most);
+
241 
+
242  // Flag to do MOST rotations with terrain
+
243  pp.query("use_rotate_most",use_rotate_most);
+
244  if (use_rotate_most) {
+
245  AMREX_ASSERT_WITH_MESSAGE(terrain_type != TerrainType::None,"MOST stress rotations are only valid with terrain!");
+
246  AMREX_ASSERT_WITH_MESSAGE(use_explicit_most, "MOST Stress rotations are only valid with explicit MOST!");
+
247  }
+
248 
+
249  // Which external forcings?
+
250  abl_driver_type = ABLDriverType::None; // Default: no ABL driver for simulating classical fluid dynamics problems
+
251  pp.query_enum_case_insensitive("abl_driver_type",abl_driver_type);
+
252 
+
253  // Which type of inflow turbulent generation
+
254  pert_type = PerturbationType::None; // Default
+
255  pp.query_enum_case_insensitive("perturbation_type",pert_type);
+
256 
+
257  amrex::Vector<amrex::Real> abl_pressure_grad_in = {0.0, 0.0, 0.0};
+
258  pp.queryarr("abl_pressure_grad",abl_pressure_grad_in);
+
259  for(int i = 0; i < AMREX_SPACEDIM; ++i) abl_pressure_grad[i] = abl_pressure_grad_in[i];
+
260 
+
261  amrex::Vector<amrex::Real> abl_geo_forcing_in = {0.0, 0.0, 0.0};
+
262  if(pp.queryarr("abl_geo_forcing",abl_geo_forcing_in)) {
+
263  amrex::Print() << "Specified abl_geo_forcing: (";
+
264  for (int i = 0; i < AMREX_SPACEDIM; ++i) {
+
265  abl_geo_forcing[i] = abl_geo_forcing_in[i];
+
266  amrex::Print() << abl_geo_forcing[i] << " ";
+
267  }
+
268  amrex::Print() << ")" << std::endl;
269  }
270 
-
271  pp.query("add_custom_rhotheta_forcing", custom_rhotheta_forcing);
-
272  pp.query("add_custom_moisture_forcing", custom_moisture_forcing);
-
273  pp.query("add_custom_w_subsidence", custom_w_subsidence);
-
274  pp.query("add_custom_geostrophic_profile", custom_geostrophic_profile);
-
275  pp.query("custom_forcing_uses_primitive_vars", custom_forcing_prim_vars);
-
276 
-
277  pp.query("nudging_from_input_sounding", nudging_from_input_sounding);
-
278 
- -
280  AMREX_ALWAYS_ASSERT_WITH_MESSAGE(!(!abl_geo_wind_table.empty() && custom_geostrophic_profile),
-
281  "Should not have both abl_geo_wind_table and custom_geostrophic_profile set.");
-
282 
-
283  pp.query("Ave_Plane", ave_plane);
-
284 
-
285  pp.query("mp_clouds", do_cloud);
-
286  pp.query("mp_precip", do_precip);
-
287  pp.query("use_moist_background", use_moist_background);
-
288 
-
289  // Use numerical diffusion?
-
290  pp.query("use_NumDiff",use_NumDiff);
-
291  if(use_NumDiff) {
-
292  pp.query("NumDiffCoeff",NumDiffCoeff);
-
293  AMREX_ASSERT_WITH_MESSAGE(( (NumDiffCoeff >= 0.) && (NumDiffCoeff <= 1.) ),
-
294  "Numerical diffusion coefficient must be between 0 & 1.");
-
295  NumDiffCoeff *= std::pow(2.0,-6);
-
296  }
-
297 
-
298  // Use monotonic advection?
-
299  pp.query("use_mono_adv",use_mono_adv);
-
300 
- - - -
304 
-
305  turbChoice.resize(max_level+1);
-
306  for (int lev = 0; lev <= max_level; lev++) {
-
307  turbChoice[lev].init_params(lev,max_level);
-
308  }
+
271  if (use_coriolis)
+
272  {
+ +
274  }
+
275 
+
276  pp.query("add_custom_rhotheta_forcing", custom_rhotheta_forcing);
+
277  pp.query("add_custom_moisture_forcing", custom_moisture_forcing);
+
278  pp.query("add_custom_w_subsidence", custom_w_subsidence);
+
279  pp.query("add_custom_geostrophic_profile", custom_geostrophic_profile);
+
280  pp.query("custom_forcing_uses_primitive_vars", custom_forcing_prim_vars);
+
281 
+
282  pp.query("nudging_from_input_sounding", nudging_from_input_sounding);
+
283 
+ +
285  AMREX_ALWAYS_ASSERT_WITH_MESSAGE(!(!abl_geo_wind_table.empty() && custom_geostrophic_profile),
+
286  "Should not have both abl_geo_wind_table and custom_geostrophic_profile set.");
+
287 
+
288  pp.query("Ave_Plane", ave_plane);
+
289 
+
290  pp.query("mp_clouds", do_cloud);
+
291  pp.query("mp_precip", do_precip);
+
292  pp.query("use_moist_background", use_moist_background);
+
293 
+
294  // Use numerical diffusion?
+
295  pp.query("use_NumDiff",use_NumDiff);
+
296  if(use_NumDiff) {
+
297  pp.query("NumDiffCoeff",NumDiffCoeff);
+
298  AMREX_ASSERT_WITH_MESSAGE(( (NumDiffCoeff >= 0.) && (NumDiffCoeff <= 1.) ),
+
299  "Numerical diffusion coefficient must be between 0 & 1.");
+
300  NumDiffCoeff *= std::pow(2.0,-6);
+
301  }
+
302 
+
303  // Use monotonic advection?
+
304  pp.query("use_mono_adv",use_mono_adv);
+
305 
+ + +
309 
-
310  // YSU PBL: use consistent coriolis frequency
+
310  turbChoice.resize(max_level+1);
311  for (int lev = 0; lev <= max_level; lev++) {
-
312  if (turbChoice[lev].pbl_ysu_use_consistent_coriolis) {
-
313  if (use_coriolis) {
-
314  turbChoice[lev].pbl_ysu_coriolis_freq = coriolis_factor * sinphi;
-
315  if (lev == 0) {
-
316  amrex::Print() << "YSU PBL using ERF coriolis frequency: " << turbChoice[lev].pbl_ysu_coriolis_freq << std::endl;
-
317  }
-
318  } else {
-
319  amrex::Abort("YSU cannot use ERF coriolis frequency if not using coriolis");
-
320  }
-
321  }
-
322  }
-
323 
-
324 
-
325  // Which type of multilevel coupling
-
326  coupling_type = CouplingType::TwoWay; // Default
-
327  pp.query_enum_case_insensitive("coupling_type",coupling_type);
+
312  turbChoice[lev].init_params(lev,max_level);
+
313  }
+
314 
+
315  // YSU PBL: use consistent coriolis frequency
+
316  for (int lev = 0; lev <= max_level; lev++) {
+
317  if (turbChoice[lev].pbl_ysu_use_consistent_coriolis) {
+
318  if (use_coriolis) {
+
319  turbChoice[lev].pbl_ysu_coriolis_freq = coriolis_factor * sinphi;
+
320  if (lev == 0) {
+
321  amrex::Print() << "YSU PBL using ERF coriolis frequency: " << turbChoice[lev].pbl_ysu_coriolis_freq << std::endl;
+
322  }
+
323  } else {
+
324  amrex::Abort("YSU cannot use ERF coriolis frequency if not using coriolis");
+
325  }
+
326  }
+
327  }
328 
-
329  // Which type of windfarm model
-
330  windfarm_type = WindFarmType::None; // Default
-
331  pp.query_enum_case_insensitive("windfarm_type",windfarm_type);
-
332 
-
333  static std::string windfarm_loc_type_string = "None";
-
334  windfarm_loc_type = WindFarmLocType::None;
-
335  pp.query_enum_case_insensitive("windfarm_loc_type",windfarm_loc_type);
-
336 
-
337  pp.query("windfarm_loc_table", windfarm_loc_table);
-
338  pp.query("windfarm_spec_table", windfarm_spec_table);
-
339  pp.query("windfarm_blade_table", windfarm_blade_table);
-
340  pp.query("windfarm_airfoil_tables", windfarm_airfoil_tables);
-
341  pp.query("windfarm_spec_table_extra", windfarm_spec_table_extra);
-
342 
-
343  // Sampling distance upstream of the turbine to find the
-
344  // incoming free stream velocity as a factor of the diameter of the
-
345  // turbine. ie. the sampling distance will be this number multiplied
-
346  // by the diameter of the turbine
-
347  pp.query("sampling_distance_by_D", sampling_distance_by_D);
-
348  pp.query("turb_disk_angle_from_x", turb_disk_angle);
-
349 
-
350  pp.query("windfarm_x_shift",windfarm_x_shift);
-
351  pp.query("windfarm_y_shift",windfarm_y_shift);
-
352  // Test if time averaged data is to be output
-
353  pp.query("time_avg_vel",time_avg_vel);
+
329 
+
330  // Which type of multilevel coupling
+
331  coupling_type = CouplingType::TwoWay; // Default
+
332  pp.query_enum_case_insensitive("coupling_type",coupling_type);
+
333 
+
334  // Which type of windfarm model
+
335  windfarm_type = WindFarmType::None; // Default
+
336  pp.query_enum_case_insensitive("windfarm_type",windfarm_type);
+
337 
+
338  static std::string windfarm_loc_type_string = "None";
+
339  windfarm_loc_type = WindFarmLocType::None;
+
340  pp.query_enum_case_insensitive("windfarm_loc_type",windfarm_loc_type);
+
341 
+
342  pp.query("windfarm_loc_table", windfarm_loc_table);
+
343  pp.query("windfarm_spec_table", windfarm_spec_table);
+
344  pp.query("windfarm_blade_table", windfarm_blade_table);
+
345  pp.query("windfarm_airfoil_tables", windfarm_airfoil_tables);
+
346  pp.query("windfarm_spec_table_extra", windfarm_spec_table_extra);
+
347 
+
348  // Sampling distance upstream of the turbine to find the
+
349  // incoming free stream velocity as a factor of the diameter of the
+
350  // turbine. ie. the sampling distance will be this number multiplied
+
351  // by the diameter of the turbine
+
352  pp.query("sampling_distance_by_D", sampling_distance_by_D);
+
353  pp.query("turb_disk_angle_from_x", turb_disk_angle);
354 
-
355  check_params(max_level);
-
356  }
+
355  pp.query("windfarm_x_shift",windfarm_x_shift);
+
356  pp.query("windfarm_y_shift",windfarm_y_shift);
+
357  // Test if time averaged data is to be output
+
358  pp.query("time_avg_vel",time_avg_vel);
+
359 
+
360  check_params(max_level);
+
361  }
constexpr amrex::Real CONST_GRAV
Definition: ERF_Constants.H:21
constexpr amrex::Real R_d
Definition: ERF_Constants.H:10
#define RhoQ4_comp
Definition: ERF_IndexDefines.H:45
@@ -904,53 +909,53 @@

#define RhoQ1_comp
Definition: ERF_IndexDefines.H:42

void init_params()
Definition: ERF_AdvStruct.H:21
void init_params()
Definition: ERF_DiffStruct.H:21
-
bool rayleigh_damp_T
Definition: ERF_DataStruct.H:562
-
amrex::Real dz0
Definition: ERF_DataStruct.H:578
-
bool use_explicit_most
Definition: ERF_DataStruct.H:599
-
bool rayleigh_damp_V
Definition: ERF_DataStruct.H:560
-
int RhoQr_comp
Definition: ERF_DataStruct.H:640
-
amrex::Real poisson_reltol
Definition: ERF_DataStruct.H:548
-
amrex::Real rayleigh_zdamp
Definition: ERF_DataStruct.H:564
-
amrex::Real rdOcp
Definition: ERF_DataStruct.H:573
-
void read_int_string(int max_level, const char *string_to_read, amrex::Vector< int > &vec_to_fill, int default_int)
Definition: ERF_DataStruct.H:503
-
std::string windfarm_spec_table
Definition: ERF_DataStruct.H:642
-
bool use_mono_adv
Definition: ERF_DataStruct.H:615
-
void build_coriolis_forcings()
Definition: ERF_DataStruct.H:460
-
int ncorr
Definition: ERF_DataStruct.H:546
-
std::string windfarm_spec_table_extra
Definition: ERF_DataStruct.H:642
-
LandSurfaceType lsm_type
Definition: ERF_DataStruct.H:621
-
amrex::Real c_p
Definition: ERF_DataStruct.H:572
-
std::string windfarm_loc_table
Definition: ERF_DataStruct.H:642
-
amrex::Real gravity
Definition: ERF_DataStruct.H:571
-
void check_params(int max_level)
Definition: ERF_DataStruct.H:358
-
bool custom_rhotheta_forcing
Definition: ERF_DataStruct.H:588
-
bool custom_w_subsidence
Definition: ERF_DataStruct.H:590
-
bool nudging_from_input_sounding
Definition: ERF_DataStruct.H:596
-
bool rayleigh_damp_U
Definition: ERF_DataStruct.H:559
-
bool custom_geostrophic_profile
Definition: ERF_DataStruct.H:591
-
amrex::Real grid_stretching_ratio
Definition: ERF_DataStruct.H:576
-
bool have_geo_wind_profile
Definition: ERF_DataStruct.H:627
-
amrex::Real NumDiffCoeff
Definition: ERF_DataStruct.H:612
-
bool do_precip
Definition: ERF_DataStruct.H:632
-
int RhoQv_comp
Definition: ERF_DataStruct.H:634
-
bool test_mapfactor
Definition: ERF_DataStruct.H:550
-
bool use_NumDiff
Definition: ERF_DataStruct.H:611
-
bool custom_moisture_forcing
Definition: ERF_DataStruct.H:589
-
std::string windfarm_blade_table
Definition: ERF_DataStruct.H:643
-
amrex::Real zsurf
Definition: ERF_DataStruct.H:577
-
bool project_initial_velocity
Definition: ERF_DataStruct.H:580
-
int constant_density
Definition: ERF_DataStruct.H:545
-
bool use_moist_background
Definition: ERF_DataStruct.H:633
-
bool custom_forcing_prim_vars
Definition: ERF_DataStruct.H:592
-
bool rayleigh_damp_W
Definition: ERF_DataStruct.H:561
-
PerturbationType pert_type
Definition: ERF_DataStruct.H:608
-
amrex::Real poisson_abstol
Definition: ERF_DataStruct.H:547
-
bool time_avg_vel
Definition: ERF_DataStruct.H:605
-
bool do_cloud
Definition: ERF_DataStruct.H:631
-
bool use_rotate_most
Definition: ERF_DataStruct.H:602
-
amrex::Real rayleigh_dampcoef
Definition: ERF_DataStruct.H:563
-
std::string windfarm_airfoil_tables
Definition: ERF_DataStruct.H:643
-
int ave_plane
Definition: ERF_DataStruct.H:629
+
bool rayleigh_damp_T
Definition: ERF_DataStruct.H:567
+
amrex::Real dz0
Definition: ERF_DataStruct.H:583
+
bool use_explicit_most
Definition: ERF_DataStruct.H:604
+
bool rayleigh_damp_V
Definition: ERF_DataStruct.H:565
+
int RhoQr_comp
Definition: ERF_DataStruct.H:645
+
amrex::Real poisson_reltol
Definition: ERF_DataStruct.H:553
+
amrex::Real rayleigh_zdamp
Definition: ERF_DataStruct.H:569
+
amrex::Real rdOcp
Definition: ERF_DataStruct.H:578
+
void read_int_string(int max_level, const char *string_to_read, amrex::Vector< int > &vec_to_fill, int default_int)
Definition: ERF_DataStruct.H:508
+
std::string windfarm_spec_table
Definition: ERF_DataStruct.H:647
+
bool use_mono_adv
Definition: ERF_DataStruct.H:620
+
void build_coriolis_forcings()
Definition: ERF_DataStruct.H:465
+
int ncorr
Definition: ERF_DataStruct.H:551
+
std::string windfarm_spec_table_extra
Definition: ERF_DataStruct.H:647
+
LandSurfaceType lsm_type
Definition: ERF_DataStruct.H:626
+
amrex::Real c_p
Definition: ERF_DataStruct.H:577
+
std::string windfarm_loc_table
Definition: ERF_DataStruct.H:647
+
amrex::Real gravity
Definition: ERF_DataStruct.H:576
+
void check_params(int max_level)
Definition: ERF_DataStruct.H:363
+
bool custom_rhotheta_forcing
Definition: ERF_DataStruct.H:593
+
bool custom_w_subsidence
Definition: ERF_DataStruct.H:595
+
bool nudging_from_input_sounding
Definition: ERF_DataStruct.H:601
+
bool rayleigh_damp_U
Definition: ERF_DataStruct.H:564
+
bool custom_geostrophic_profile
Definition: ERF_DataStruct.H:596
+
amrex::Real grid_stretching_ratio
Definition: ERF_DataStruct.H:581
+
bool have_geo_wind_profile
Definition: ERF_DataStruct.H:632
+
amrex::Real NumDiffCoeff
Definition: ERF_DataStruct.H:617
+
bool do_precip
Definition: ERF_DataStruct.H:637
+
int RhoQv_comp
Definition: ERF_DataStruct.H:639
+
bool test_mapfactor
Definition: ERF_DataStruct.H:555
+
bool use_NumDiff
Definition: ERF_DataStruct.H:616
+
bool custom_moisture_forcing
Definition: ERF_DataStruct.H:594
+
std::string windfarm_blade_table
Definition: ERF_DataStruct.H:648
+
amrex::Real zsurf
Definition: ERF_DataStruct.H:582
+
bool project_initial_velocity
Definition: ERF_DataStruct.H:585
+
int constant_density
Definition: ERF_DataStruct.H:550
+
bool use_moist_background
Definition: ERF_DataStruct.H:638
+
bool custom_forcing_prim_vars
Definition: ERF_DataStruct.H:597
+
bool rayleigh_damp_W
Definition: ERF_DataStruct.H:566
+
PerturbationType pert_type
Definition: ERF_DataStruct.H:613
+
amrex::Real poisson_abstol
Definition: ERF_DataStruct.H:552
+
bool time_avg_vel
Definition: ERF_DataStruct.H:610
+
bool do_cloud
Definition: ERF_DataStruct.H:636
+
bool use_rotate_most
Definition: ERF_DataStruct.H:607
+
amrex::Real rayleigh_dampcoef
Definition: ERF_DataStruct.H:568
+
std::string windfarm_airfoil_tables
Definition: ERF_DataStruct.H:648
+
int ave_plane
Definition: ERF_DataStruct.H:634
void init_params()
Definition: ERF_SpongeStruct.H:17
Here is the call graph for this function:
@@ -1016,20 +1021,20 @@

-
505  {
-
506  amrex::ParmParse pp("erf");
-
507  int nvals = pp.countval(string_to_read);
-
508  AMREX_ALWAYS_ASSERT(nvals == 0 || nvals == 1 || nvals >= max_level+1);
-
509  amrex::Vector<int> temp; temp.resize(nvals);
-
510  pp.queryarr(string_to_read,temp);
-
511  if (nvals == 0) {
-
512  for (int i = 0; i <= max_level; ++i) vec_to_fill.push_back(default_int);
-
513  } else if (nvals == 1) {
-
514  for (int i = 0; i <= max_level; ++i) vec_to_fill.push_back(temp[0]);
-
515  } else {
-
516  for (int i = 0; i <= max_level; ++i) vec_to_fill.push_back(temp[i]);
-
517  }
-
518  }
+
510  {
+
511  amrex::ParmParse pp("erf");
+
512  int nvals = pp.countval(string_to_read);
+
513  AMREX_ALWAYS_ASSERT(nvals == 0 || nvals == 1 || nvals >= max_level+1);
+
514  amrex::Vector<int> temp; temp.resize(nvals);
+
515  pp.queryarr(string_to_read,temp);
+
516  if (nvals == 0) {
+
517  for (int i = 0; i <= max_level; ++i) vec_to_fill.push_back(default_int);
+
518  } else if (nvals == 1) {
+
519  for (int i = 0; i <= max_level; ++i) vec_to_fill.push_back(temp[0]);
+
520  } else {
+
521  for (int i = 0; i <= max_level; ++i) vec_to_fill.push_back(temp[i]);
+
522  }
+
523  }

Referenced by init_params().

@@ -1075,10 +1080,10 @@

-
528  {
-
529  terrain_is_flat = true;
-
530  }
-
static bool terrain_is_flat
Definition: ERF_DataStruct.H:521
+
533  {
+
534  terrain_is_flat = true;
+
535  }
+
static bool terrain_is_flat
Definition: ERF_DataStruct.H:526

Referenced by ProblemBase::init_custom_terrain().