GRHydro updates

Create issue
Issue #1531 closed
Roland Haas created an issue

A large number of GRHydro updates have accumulated. Attached please find them all as well as a required update to EOS_Omni.

Patches to follow in a bit.

Keyword: GRHydro
Keyword: EOS_Omni

Comments (4)

  1. Roland Haas reporter
    • changed status to open
    • removed comment

    0001-add-barotropic-tabular-EOS-functionality-for-initial.patch:: this adds tabulated EOS that only depend on density (ie that are cold) 0002-Major-bug-fix-in-EOS_Omni-nuc_eos.-In-the-code-befor.patch:: this fixes a bug where incosistent values were returned for the tabulated EOS when data was outside of the table bounds 0003-EOS_Omni-re-add-poly_gamma_initial.patch:: poly_gamma_ini used to exist in EOS_Omni and cause problems for unwary users. It was removed some time ago, but apparently still used. poly_gamma_initial is a tame version of poly_gamma_ini which defaults to poly_gamma and thus does not have to be set whenever poly_gamma is changed away from its default 0004-new-nuc_eos-backend-in-c.patch:: complete rewrite of tabulated EOS driver. Changes internal layout of table in memory, optimizes how data is stored. Should be a drop in replacement for user code. 0005-improved-checking-of-keytemp.patch:: changes keytemp to a enumeration of values rather than a boolean 0006-EOS_Omni-use-CCTK_ERROR-add-STOP-after-CCTK_ERROR.patch:: tries to help the compiler notice thta CCTK_ERROR never returns since we do not provide an attribute((noreturn)) for CCTK_Error (since there is no prototype for it) 0007-EOS_Omni-remove-unnecessary-make.code.deps.patch:: removes explicitly listed dependencies that Cactus can compute itself 0008-EOS_Omni-remove-restrict-in-favor-of-restrict-si.patch:: search and replace for __restrict__ 0009-EOS_Omni-use-Cactus-error-reporting-functions-in-rea.patch:: changes fprintf(stderr,...) to CCTK_VError 0010-EOS_Omni-declare-global-variables-restrict.patch:: adds restrict to the EOS tables 0011-EOS_Omni-add-comments-and-TODOs.patch:: not code change, just comments 0012-EOS_Omni-use-explicit-temporary-for-loop-upper-bound.patch:: low level optimization to tell the compiler that the upper bound in constant 0013-EOS_Omni-always-set-anyerr-when-an-error-is-detected.patch:: bugfix to correclyt report error when the eos call fails 0014-EOS_Omni-low-level-optimizations.patch:: various low level optimizations that do not affect the returned values beyond roundoff level 0015-EOS_Omni-move-actual-table-data-into-namespace-of-it.patch:: code cleanup 0016-make-new-EOS-call-that-returns-press-and-cs2-and-eps.patch:: add optimized EOS call that is used by GRHydro to compute speed of sound and pressure at the same time, this removes the EOS call from the Riemann solvers 0017-EOS_Omni-add-code-for-test-case-to-C-version.patch:: adds the test case back to the thorn, same data, just different code 0018-EOS_Omni-nuc_eos_cxx-ensure-cs2-is-0-or-positive.patch:: this makes sure that the results are not unphysical

    10001-GRHydro-rewrite-HLLEM-without-if-flux_direction-in-i.patch:: this removes if statements at the expense of having non-constant integer offsets added to i,j,k 10002-GRHydro-remove-divergence-cleaning-code-from-Avec-ev.patch:: the vector potential evolution cannot use divergence cleaning 10003-GRHydro-add-STOP-statement-after-CCTK_ERROR.patch:: tell the compiler that CCTK_ERROR never returns 10004-GRHydro-Simplify-logical-expression.patch:: turns an if-else into a boolean operation 10005-GRHydro-remove-unused-source-file-GRHydro_PPM.c.patch:: removes unused (and uncompiled) file leftover from first attempt at PPM 10006-GRHydro-change-prim2con-EOS-calls-to-calls-for-x-sli.patch:: call EOS on slices rather than the full grid function. This avoids having to have an OMP version of the EOS routines. 10007-GRHydro-start-changes-for-improved-EOS-and-HLLE-hand.patch:: computes cs2 along with pressure 10008-GRHydro-compute-pressure-in-prim2con-only-where-need.patch:: changes loop boundaries from "everything" to "interior" 10009-GRHydro-add-hllc-solver.patch:: adds a hllc riemann solver. Based on Matt Duez' notes. 10010-GRHydro-add-hllc-shock-tube-test.patch:: test case for hllc 10011-GRHydro-New-C-ePPM-algorithm.patch:: add enhanced PPM to C++ PPM code 10012-GRHydro-adjust-loop-bounds-in-C-PPM-to-match-F90-cod.patch:: bugfixes 10013-GRHydro-correct-vel-slicing-in-optimized-C-PPM-recon.patch:: bugfixes 10014-GRhydro-correct-argument-types-for-oned_slice-and-un.patch:: bugfixes 10015-GRHydro-fix-z-direction-in-optimized-C-PPM.patch:: bugfixes 10016-GRHydro-add-MHD-multipatch-support-to-optimized-C-PP.patch:: adds the multipatch boilerplate code to set up g11 etc 10017-GRHydro-support-array-padding-in-optimized-C-PPM.patch:: use cctk_ash for memory allocation and indexing 10018-GRHydro-remove-string-comparisons-from-C-PPM-driver.patch:: optimization 10019-GRHydro-unify-usage-of-a-0-vs-a.patch:: code cleanup 10020-GRHydro-C-PPM-enable-OMP-bugfixes.patch:: code cleanup and OpenMP code (mostly just moving array allocation inside the OMP parallel part) 10021-GRHydro-reconstruct_Wv-for-ePPM-oPPM.patch:: adds possibility to reconstruct w_lorentz*vel[] which is not constrained so cannot be superluminal to C++ PPM code 10022-GRHydro-C-version-of-HLLE.patch:: re-implements HLLE in C++ adds MHD to HLLE 10024-GRHydro-New-reconstruction-interface.-All-in-templat.patch:: framework to handle all reconstruction operators in C++. Independent (and different) from what was used for PPM. 10025-GRHydro-add-MP5-reconstruct.patch:: MP5 reconstruction in C++ framework 10026-GRHydro-add-WENO-reconstruct.patch:: WENO (as in WHAM paper, WENO-Z) in C++ framework 10027-GRHydro-add-Trivial-copy-reconstruct.patch:: trivial reconstruction is just a copy from cell centers to the edges, used to initialize edge values (was an explict copy in F90 code) 10028-GRHydro-add-TVD-reconstruct.patch:: TVD reconstruction in C++ framework 10029-GRHydro-implement-sources-in-C.patch:: GRHydro source terms in C++ code 10030-GRHydro-rewrite-MHD-rhs-in-symmetric-way.patch:: reshuffles expressions, also a bit faster since it reduces the number of divisions 10031-GRHydro-fix-reconstruct_Wv-in-F90-PPMM-routine.patch:: the options if off by default. Using the option would have resulted in incorrectly reconstructed velocity profiles. This affects only the MHD code. 10032-GRHydro-ignore-transport_constraints-unless-evolve_m.patch:: this avoids a segfault if transport_constraints is set without evolving a magnetic field 10033-GRHydro-low-level-optimizations.patch:: replace a division by CCTK_DELTA_SPACE() a mulitplication by the reciprocal number 10034-GRHydro-remove-unused-variables.patch:: remove some unused variables in F90 MHD code 10035-GRHydro-make-routine-to-compute-speed-of-sound-calla.patch:: the C++ code expects the speed of sound in a grid function. This routine computes it. I used to be embedded in the C++ prim2con for non-MHD but since it is independent of MHD or non-MHD one can re-use it for both cases. 10036-GRHydro-use-temperature-in-MHD-prim2con.patch:: when temperature is reconstructed then use it to compute the conservatives (and eps) at the cell interfaces. This is already done in the hydro code.

    To use the C++ code one currently has to set use_cxx_code to true. Otherwise the old F90 code is used. Currently the two codes are similar (since the C++ code often started out as a transcription of the F90 code) but they are beginning to diverge. I expect that the F90 will be abandoned and most new deveopment will happen on the C++ code.

  2. Roland Haas reporter
    • removed comment

    0001 to 0018 applied as rev 88-105 of EOS_Omni, documentation update in rev 106.

  3. Log in to comment