aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@gmail.com>2012-02-17 14:13:58 -0500
committerErik Schnetter <schnetter@gmail.com>2012-02-17 14:13:58 -0500
commit79d0779418daa31e5d1f9c16c41fb01c331a9f6f (patch)
tree94d3325eff5dde5dfe397fcf7ffe1b802903cc4e
parent1ab860f4a74d37423f44450ea9d67023a68adb80 (diff)
A few small fixes
* Remove the need to use "CCTK_ARGUMENTS" in the flux method (yields a speedup of a factor 100 on the wave toy) * Fix the sign convention on the fluxes * Removed unneeded boiler plate code for the WENO part of the HRSCCore library
-rw-r--r--Tools/CodeGen/CalculationFunction.m59
1 files changed, 10 insertions, 49 deletions
diff --git a/Tools/CodeGen/CalculationFunction.m b/Tools/CodeGen/CalculationFunction.m
index 4d77c2b..b4d62fe 100644
--- a/Tools/CodeGen/CalculationFunction.m
+++ b/Tools/CodeGen/CalculationFunction.m
@@ -516,41 +516,6 @@ DefFn[
"",
"#include <hrscc.hh>",
"",
- "/*** WENO reconstruction ***/", (* TODO: do we need this? *)
- "",
- "/* Configuration */",
- "#define config_eno_width 3",
- "#define config_weno_type hrscc::policy::standard",
- "#define config_weno_optim hrscc::policy::order",
- "#define config_weno_limiter hrscc::policy::dummy",
- "#define config_tvd_limiter hrscc::limiters::minmod",
- "",
- "/* Export definitions */",
- "#define "<>name<>"_eno_stencil hrscc::ENOStencil<config_eno_width>",
- "#define "<>name<>"_weno_weights hrscc::WENOWeights<config_eno_width>",
- "#define "<>name<>"_weno_stencil hrscc::WENOStencil<config_eno_width, config_weno_type, config_weno_optim>",
- "#define "<>name<>"_weno_limiter hrscc::WENOLimiter<config_eno_width, "<>name<>"_weno_stencil::width, config_weno_limiter>",
- "#define "<>name<>"_weno_reconstruction hrscc::WENOReconstruction<"<>name<>"_eno_stencil, "<>name<>"_weno_limiter, "<>name<>"_weno_stencil, "<>name<>"_weno_weights>",
- "#define "<>name<>"_tvd_reconstruction hrscc::TVDReconstruction<config_tvd_limiter>",
- "#define "<>name<>"_mp5_reconstruction hrscc::MP5Reconstruction",
- "#define "<>name<>"_upwind_reconstruction hrscc::UpwindReconstruction",
- "#define "<>name<>"_reconstruction "<>name<>"_weno_reconstruction",
- "",
- "/*** Flux splitting ***/", (* TODO: do we need this? *)
- "",
- "/* Configuration */",
- "#define config_entropy_fix hrscc::NoEntropyFix",
- "#define config_flux_split hrscc::RoeFS<"<>name<>"_reconstruction, config_entropy_fix>",
- "#define config_system_split hrscc::ComponentSplit<DGFE_"<>name<>", config_flux_split>",
- "",
- "/* Export definitions */",
- "#define "<>name<>"_flux_split config_flux_split",
- "#define "<>name<>"_system_split config_system_split",
- "#define "<>name<>"_fd_method hrscc::FiniteDifference<DGFE_"<>name<>", "<>name<>"_system_split>",
- "",
- "/*** SDG method ***/", (* TODO: do we need this? *)
- "",
- "/* Configuration */",
"#define config_sdg_order 5", (* TODO: make this a parameter *)
"#define config_riemann_solver hrscc::LaxFriedrichsRS<DGFE_"<>name<>", false>",
"",
@@ -577,7 +542,7 @@ DefFn[
" // All state vector variables",
" enum state_t {" <> Map["i"<>ToString[#]<>", " &, vars] <> "nvars};",
" enum {nequations = nvars};",
- " enum {nexternal = 0};",
+ " enum {nexternal = 3*nvars};",
" enum {nbitmasks = 0};",
" static bool const pure = false;",
" };",
@@ -601,20 +566,13 @@ DefFn[
" template<hrscc::policy::direction_t dir>",
" inline void fluxes(hrscc::Observer<claw> & observer) const",
" {",
- " cGH const *const cctkGH = observer.cctkGH;",
- " DECLARE_CCTK_ARGUMENTS;",
- " ",
- " int const i = observer.index[0];",
- " int const j = observer.index[1];",
- " int const k = observer.index[2];",
- " int const ind3d = CCTK_GFINDEX3D(cctkGH, i,j,k);",
" ",
Map[" CCTK_REAL flux"<>ToString[#]<>"L;" &, vars],
" ",
" switch (dir) {",
Table[{
" case hrscc::policy::" <> {"x", "y", "z"}[[dir]] <> ": {",
- Map[" flux"<>ToString[#]<>"L = flux"<>ToString[#]<>ToString[dir]<>"[ind3d];" &, vars],
+ Map[" flux"<>ToString[#]<>"L = *observer.field[variables_t::i"<>ToString[#]<>" + "<>ToString[dir-1]<>"*DGFE_"<>name<>"::nvars];" &, vars],
" break;",
" }"},
{dir, 1, 3}],
@@ -622,7 +580,7 @@ DefFn[
" assert(0);",
" }",
" ",
- Map[" observer.flux[dir][variables_t::i"<>ToString[#]<>"] = - flux"<>ToString[#]<>"L;" &, vars],
+ Map[" observer.flux[dir][variables_t::i"<>ToString[#]<>"] = flux"<>ToString[#]<>"L;" &, vars],
" }",
" ",
" template<hrscc::policy::direction_t dir>",
@@ -644,9 +602,8 @@ DefFn[
" template<> int CLaw<DGFE_"<>name<>">::conserved_idx[DGFE_"<>name<>"::nvars] = {};",
" template<> int CLaw<DGFE_"<>name<>">::primitive_idx[DGFE_"<>name<>"::nvars] = {};",
" template<> int CLaw<DGFE_"<>name<>">::rhs_idx[DGFE_"<>name<>"::nvars] = {};",
- " template<> int CLaw<DGFE_"<>name<>">::field_idx[0] = {};",
+ " template<> int CLaw<DGFE_"<>name<>">::field_idx[3*DGFE_"<>name<>"::nvars] = {};",
" template<> int CLaw<DGFE_"<>name<>">::bitmask_idx[0] = {};",
-
"} // namespace hrscc",
"",
"",
@@ -663,10 +620,14 @@ DefFn[
"DGFE_"<>name<>"::DGFE_"<>name<>"()",
"{",
" using namespace hrscc;",
- " ",
+ "",
Map[" CLaw<DGFE_"<>name<>">::conserved_idx[variables_t::i"<>ToString[#]<>"] = varindex(CCTK_THORNSTRING \"::"<>ToString[#]<>"\");" &, vars],
Map[" CLaw<DGFE_"<>name<>">::primitive_idx[variables_t::i"<>ToString[#]<>"] = varindex(CCTK_THORNSTRING \"::"<>ToString[#]<>"\");" &, vars],
- " ",
+ "",
+ Map[" CLaw<DGFE_"<>name<>">::field_idx[variables_t::i"<>ToString[#]<>" + 0*DGFE_"<>name<>"::nvars] = varindex(CCTK_THORNSTRING \"::flux"<>ToString[#]<>"1\");" &, vars],
+ Map[" CLaw<DGFE_"<>name<>">::field_idx[variables_t::i"<>ToString[#]<>" + 1*DGFE_"<>name<>"::nvars] = varindex(CCTK_THORNSTRING \"::flux"<>ToString[#]<>"2\");" &, vars],
+ Map[" CLaw<DGFE_"<>name<>">::field_idx[variables_t::i"<>ToString[#]<>" + 2*DGFE_"<>name<>"::nvars] = varindex(CCTK_THORNSTRING \"::flux"<>ToString[#]<>"3\");" &, vars],
+ "",
Map[" CLaw<DGFE_"<>name<>">::rhs_idx[variables_t::i"<>ToString[#]<>"] = varindex(CCTK_THORNSTRING \"::"<>ToString[#]<>"rhs\");" &, vars],
"}",
"",