From 79d0779418daa31e5d1f9c16c41fb01c331a9f6f Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Fri, 17 Feb 2012 14:13:58 -0500 Subject: 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 --- Tools/CodeGen/CalculationFunction.m | 59 +++++++------------------------------ 1 file 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 ", "", - "/*** 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", - "#define "<>name<>"_weno_weights hrscc::WENOWeights", - "#define "<>name<>"_weno_stencil hrscc::WENOStencil", - "#define "<>name<>"_weno_limiter hrscc::WENOLimitername<>"_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", - "#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::ComponentSplitname<>", config_flux_split>", - "", - "/* Export definitions */", - "#define "<>name<>"_flux_split config_flux_split", - "#define "<>name<>"_system_split config_system_split", - "#define "<>name<>"_fd_method hrscc::FiniteDifferencename<>", "<>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::LaxFriedrichsRSname<>", 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", " inline void fluxes(hrscc::Observer & 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", @@ -644,9 +602,8 @@ DefFn[ " template<> int CLawname<>">::conserved_idx[DGFE_"<>name<>"::nvars] = {};", " template<> int CLawname<>">::primitive_idx[DGFE_"<>name<>"::nvars] = {};", " template<> int CLawname<>">::rhs_idx[DGFE_"<>name<>"::nvars] = {};", - " template<> int CLawname<>">::field_idx[0] = {};", + " template<> int CLawname<>">::field_idx[3*DGFE_"<>name<>"::nvars] = {};", " template<> int CLawname<>">::bitmask_idx[0] = {};", - "} // namespace hrscc", "", "", @@ -663,10 +620,14 @@ DefFn[ "DGFE_"<>name<>"::DGFE_"<>name<>"()", "{", " using namespace hrscc;", - " ", + "", Map[" CLawname<>">::conserved_idx[variables_t::i"<>ToString[#]<>"] = varindex(CCTK_THORNSTRING \"::"<>ToString[#]<>"\");" &, vars], Map[" CLawname<>">::primitive_idx[variables_t::i"<>ToString[#]<>"] = varindex(CCTK_THORNSTRING \"::"<>ToString[#]<>"\");" &, vars], - " ", + "", + Map[" CLawname<>">::field_idx[variables_t::i"<>ToString[#]<>" + 0*DGFE_"<>name<>"::nvars] = varindex(CCTK_THORNSTRING \"::flux"<>ToString[#]<>"1\");" &, vars], + Map[" CLawname<>">::field_idx[variables_t::i"<>ToString[#]<>" + 1*DGFE_"<>name<>"::nvars] = varindex(CCTK_THORNSTRING \"::flux"<>ToString[#]<>"2\");" &, vars], + Map[" CLawname<>">::field_idx[variables_t::i"<>ToString[#]<>" + 2*DGFE_"<>name<>"::nvars] = varindex(CCTK_THORNSTRING \"::flux"<>ToString[#]<>"3\");" &, vars], + "", Map[" CLawname<>">::rhs_idx[variables_t::i"<>ToString[#]<>"] = varindex(CCTK_THORNSTRING \"::"<>ToString[#]<>"rhs\");" &, vars], "}", "", -- cgit v1.2.3