diff options
-rw-r--r-- | Tools/CodeGen/CalculationFunction.m | 59 |
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], "}", "", |