Skip to content

Commit

Permalink
add WENO7 and WENO7Z advection types.
Browse files Browse the repository at this point in the history
  • Loading branch information
AMLattanzi committed Oct 7, 2024
1 parent 444a187 commit 7ffcbee
Show file tree
Hide file tree
Showing 9 changed files with 448 additions and 49 deletions.
2 changes: 1 addition & 1 deletion Docs/sphinx_doc/Inputs.rst
Original file line number Diff line number Diff line change
Expand Up @@ -771,7 +771,7 @@ and "Centered_6th".
The allowed advection types for the dry and moist scalars are
"Centered_2nd", "Upwind_3rd", "Blended_3rd4th", "Centered_4th", "Upwind_5th", "Blended_5th6th",
"Centered_6th" and in addition,
"WENO3", "WENOZ3", "WENOMZQ3", "WENO5", and "WENOZ5."
"WENO3", "WENOZ3", "WENOMZQ3", "WENO5", "WENOZ5", "WENO7", and "WENOZ7."

Note: if using WENO schemes, the horizontal and vertical advection types must be set to
the same string.
Expand Down
8 changes: 4 additions & 4 deletions Exec/RegTests/ScalarAdvDiff/inputs_WENO
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@ erf.cfl = 0.5 # cfl number for hyperbolic system

erf.dycore_horiz_adv_type = "Centered_2nd"
erf.dycore_vert_adv_type = "Centered_2nd"
erf.dryscal_horiz_adv_type = "WENO5"
erf.dryscal_vert_adv_type = "WENO5"
erf.moistscal_horiz_adv_type = "WENO5"
erf.moistscal_vert_adv_type = "WENO5"
erf.dryscal_horiz_adv_type = "WENO7"
erf.dryscal_vert_adv_type = "WENO7"
erf.moistscal_horiz_adv_type = "WENO7"
erf.moistscal_vert_adv_type = "WENO7"

# DIAGNOSTICS & VERBOSITY
erf.sum_interval = 1 # timesteps between computing mass
Expand Down
10 changes: 5 additions & 5 deletions Exec/RegTests/ScalarAdvDiff/inputs_WENO_Z
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,11 @@ erf.cfl = 0.5 # cfl number for hyperbolic system

# TEST WENO SCHEMES
erf.dycore_horiz_adv_type = "Centered_2nd"
erf.dycore_horiz_adv_type = "Centered_2nd"
erf.dryscal_vert_adv_type = "WENO3"
erf.dryscal_vert_adv_type = "WENO3"
erf.moistscal_vert_adv_type = "WENO3"
erf.moistscal_vert_adv_type = "WENO3"
erf.dycore_vert_adv_type = "Centered_2nd"
erf.dryscal_horiz_adv_type = "WENOZ7"
erf.dryscal_vert_adv_type = "WENOZ7"
erf.moistscal_horiz_adv_type = "WENOZ7"
erf.moistscal_vert_adv_type = "WENOZ7"

# DIAGNOSTICS & VERBOSITY
erf.sum_interval = 1 # timesteps between computing mass
Expand Down
10 changes: 10 additions & 0 deletions Source/Advection/ERF_AdvectionSrcForState.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,11 @@ AdvectionSrcForScalars (const Real& dt,
avg_xmom, avg_ymom, avg_zmom,
horiz_upw_frac, vert_upw_frac);
break;
case AdvType::Weno_7:
AdvectionSrcForScalarsWrapper<WENO7,WENO7>(bx, ncomp, icomp, flx_arr, cell_prim,
avg_xmom, avg_ymom, avg_zmom,
horiz_upw_frac, vert_upw_frac);
break;
case AdvType::Weno_3Z:
AdvectionSrcForScalarsWrapper<WENO_Z3,WENO_Z3>(bx, ncomp, icomp, flx_arr, cell_prim,
avg_xmom, avg_ymom, avg_zmom,
Expand All @@ -250,6 +255,11 @@ AdvectionSrcForScalars (const Real& dt,
avg_xmom, avg_ymom, avg_zmom,
horiz_upw_frac, vert_upw_frac);
break;
case AdvType::Weno_7Z:
AdvectionSrcForScalarsWrapper<WENO_Z7,WENO_Z7>(bx, ncomp, icomp, flx_arr, cell_prim,
avg_xmom, avg_ymom, avg_zmom,
horiz_upw_frac, vert_upw_frac);
break;
default:
AMREX_ASSERT_WITH_MESSAGE(false, "Unknown advection scheme!");
}
Expand Down
26 changes: 21 additions & 5 deletions Source/DataStructs/ERF_AdvStruct.H
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,9 @@ struct AdvChoice {
(dryscal_horiz_adv_string == "WENOZ3" ) ||
(dryscal_horiz_adv_string == "WENOMZQ3" ) ||
(dryscal_horiz_adv_string == "WENO5" ) ||
(dryscal_horiz_adv_string == "WENOZ5" ) )
(dryscal_horiz_adv_string == "WENOZ5" ) ||
(dryscal_horiz_adv_string == "WENO7" ) ||
(dryscal_horiz_adv_string == "WENOZ7" ) )
{
dryscal_horiz_adv_type = adv_type_convert_string_to_advtype(dryscal_horiz_adv_string);
}
Expand All @@ -134,9 +136,11 @@ struct AdvChoice {
(dryscal_vert_adv_string == "Centered_6th") ||
(dryscal_vert_adv_string == "WENO3" ) ||
(dryscal_vert_adv_string == "WENOZ3" ) ||
(dryscal_vert_adv_string == "WENOMZQ3" ) ||
(dryscal_vert_adv_string == "WENOMZQ3" ) ||
(dryscal_vert_adv_string == "WENO5" ) ||
(dryscal_vert_adv_string == "WENOZ5" ) )
(dryscal_vert_adv_string == "WENOZ5" ) ||
(dryscal_vert_adv_string == "WENO7" ) ||
(dryscal_vert_adv_string == "WENOZ7" ))
{
dryscal_vert_adv_type = adv_type_convert_string_to_advtype(dryscal_vert_adv_string);
}
Expand All @@ -152,7 +156,9 @@ struct AdvChoice {
(moistscal_horiz_adv_string == "WENOZ3" ) ||
(moistscal_horiz_adv_string == "WENOMZQ3" ) ||
(moistscal_horiz_adv_string == "WENO5" ) ||
(moistscal_horiz_adv_string == "WENOZ5" ) )
(moistscal_horiz_adv_string == "WENOZ5" ) ||
(moistscal_horiz_adv_string == "WENO7" ) ||
(moistscal_horiz_adv_string == "WENOZ7" ))
{
moistscal_horiz_adv_type = adv_type_convert_string_to_advtype(moistscal_horiz_adv_string);
}
Expand All @@ -168,7 +174,9 @@ struct AdvChoice {
(moistscal_vert_adv_string == "WENOZ3" ) ||
(moistscal_vert_adv_string == "WENOMZQ3" ) ||
(moistscal_vert_adv_string == "WENO5" ) ||
(moistscal_vert_adv_string == "WENOZ5" ) )
(moistscal_vert_adv_string == "WENOZ5" ) ||
(moistscal_vert_adv_string == "WENO7" ) ||
(moistscal_vert_adv_string == "WENOZ7" ))
{
moistscal_vert_adv_type = adv_type_convert_string_to_advtype(moistscal_vert_adv_string);
}
Expand Down Expand Up @@ -224,6 +232,10 @@ struct AdvChoice {
return "WENOZ5";
} else if (adv_int == AdvType::Weno_3MZQ) {
return "WENOMZQ3";
} else if (adv_int == AdvType::Weno_7) {
return "WENO7";
} else if (adv_int == AdvType::Weno_7Z) {
return "WENOZ7";
} else {
return "Unknown";
}
Expand Down Expand Up @@ -251,6 +263,10 @@ struct AdvChoice {
return AdvType::Weno_5Z;
} else if (adv_string == "WENOMZQ3") {
return AdvType::Weno_3MZQ;
} else if (adv_string == "WENO7") {
return AdvType::Weno_7;
} else if (adv_string == "WENOZ7") {
return AdvType::Weno_7Z;
} else {
return AdvType::Unknown;
}
Expand Down
10 changes: 10 additions & 0 deletions Source/ERF.H
Original file line number Diff line number Diff line change
Expand Up @@ -1094,6 +1094,16 @@ private:
|| (advChoice.dryscal_horiz_adv_type == AdvType::Weno_5Z)
|| (advChoice.dryscal_vert_adv_type == AdvType::Weno_5Z) )
{ return 3; }
else if (
(advChoice.dryscal_horiz_adv_type == AdvType::Weno_7)
|| (advChoice.dryscal_vert_adv_type == AdvType::Weno_7)
|| (advChoice.moistscal_horiz_adv_type == AdvType::Weno_7)
|| (advChoice.moistscal_vert_adv_type == AdvType::Weno_7)
|| (advChoice.moistscal_horiz_adv_type == AdvType::Weno_7Z)
|| (advChoice.moistscal_vert_adv_type == AdvType::Weno_7Z)
|| (advChoice.dryscal_horiz_adv_type == AdvType::Weno_7Z)
|| (advChoice.dryscal_vert_adv_type == AdvType::Weno_7Z) )
{ return 4; }
else
{ return 2; }
}
Expand Down
4 changes: 3 additions & 1 deletion Source/ERF_IndexDefines.H
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,8 @@ enum struct AdvType : int {
Weno_5 = 108,
Weno_5Z = 109,
Weno_3MZQ = 110,
Unknown = 111
Weno_7 = 111,
Weno_7Z = 112,
Unknown = 113
};
#endif
Loading

0 comments on commit 7ffcbee

Please sign in to comment.