diff --git a/.github/scripts/preflight.sh b/.github/scripts/preflight.sh index 2b017075f6..e5dc652698 100755 --- a/.github/scripts/preflight.sh +++ b/.github/scripts/preflight.sh @@ -151,7 +151,8 @@ run_probe() { # reasons -- no input file, no restart data, a missing module -- and none of them # say anything about the node. Treating any non-zero status as a fault here would # exclude every healthy node in the cluster. 132 is 128+4, a child killed by -# SIGILL; bash reports signals that way, and mpirun/srun forward it. +# SIGILL; bash reports signals that way, and mpirun/srun forward it. Some +# launchers do not pass 132 on, so the "Illegal instruction" text is matched too. isa_probe() { isa_bin=$(newest_for_device pre_process) [ -n "$isa_bin" ] || return 0 diff --git a/.github/scripts/submit-slurm-job.sh b/.github/scripts/submit-slurm-job.sh index 1db3bb5306..5736550f58 100755 --- a/.github/scripts/submit-slurm-job.sh +++ b/.github/scripts/submit-slurm-job.sh @@ -322,7 +322,7 @@ while :; do # 34183404644 exactly this way. sacct knows the node whether or not the # .out exists, so identification no longer depends on the marker. if [ -z "$faulted_node" ]; then - faulted_node=$(sacct -j "$job_id" -X -n -o NodeList 2>/dev/null | head -n1 | tr -d ' ') + faulted_node=$(sacct -j "$job_id" -X -n -o NodeList 2>/dev/null | head -n1 | tr -d ' ' || true) case "$faulted_node" in ""|None*|*[,\[]*) faulted_node="" ;; esac fi if [ "$node_attempt" -lt "$MFC_MAX_NODE_RESUBMITS" ]; then diff --git a/CMakeLists.txt b/CMakeLists.txt index 5495f62088..de51f4894d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -116,7 +116,7 @@ if (CMAKE_Fortran_COMPILER_ID STREQUAL "Cray") list(PREPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/toolchain/cmake/cce") endif() -if (CMAKE_Fortran_COMPILER_ID STREQUAL "LLVMFlang") +if (CMAKE_Fortran_COMPILER_ID STREQUAL "LLVMFlang" AND MFC_OpenMP) # Otherwise the GPU targets are never up to date and every build redoes the # whole-image device LTO link -- ~20 minutes on Frontier, paid on each mfc.sh # invocation even when nothing changed. CMake asks the linker for its @@ -133,7 +133,8 @@ if (CMAKE_Fortran_COMPILER_ID STREQUAL "LLVMFlang") # Directory scope, not a target property: LINK_DEPENDS_USE_LINKER exists only as # a variable, and set_target_properties would silently create a custom property # that does nothing. Setting it inside MFC_SETUP_TARGET would be function-scoped - # and equally silent. + # and equally silent. MFC_OpenMP is the amdflang offload build; CPU builds keep + # the linker's dependency tracking. set(CMAKE_LINK_DEPENDS_USE_LINKER OFF) endif() diff --git a/docs/documentation/case.md b/docs/documentation/case.md index 259b0bed47..fc8d68d3bc 100644 --- a/docs/documentation/case.md +++ b/docs/documentation/case.md @@ -1405,7 +1405,7 @@ The entries labeled "Characteristic." are characteristic boundary conditions bas This boundary condition can be used for subsonic inflow (`bc_[x,y,z]%[beg,end]` = -7) and subsonic outflow (`bc_[x,y,z]%[beg,end]` = -8) characteristic boundary conditions. These are based on \cite Pirozzoli13. This enables to provide inflow and outflow conditions outside the computational domain. -`bc_[x,y,z]%%vel_in_ramp` starts the inflow smoothly instead of holding it constant, which is what a jet or a tunnel accelerating from rest requires: the start-up is the event of interest, not a transient to be discarded. The inflow velocity is scaled by \f$f(t) = f_0 + (1 - f_0)\left[1 + \tanh\left(6 (t - t_0)/\tau - 3\right)\right]/2\f$, with \f$\tau\f$ = `vel_in_ramp`, \f$t_0\f$ = `vel_in_t0` and \f$f_0\f$ = `vel_in_frac0`, so it leaves \f$f_0\f$ of the final velocity at \f$t_0\f$ and is within half a percent of it at \f$t_0 + \tau\f$. A boundary with `vel_in_ramp = 0` is held constant, as before. The ramp acts on a GRCBC inflow (`grcbc_in`) or on the ghost-cell velocity of a Dirichlet (-17) boundary or boundary patch normal to that direction, such as a nozzle set into a wall. +`bc_[x,y,z]%%vel_in_ramp` starts the inflow smoothly instead of holding it constant, which is what a jet or a tunnel accelerating from rest requires: the start-up is the event of interest, not a transient to be discarded. The inflow velocity is scaled by \f$f(t) = f_0 + (1 - f_0)\left[1 + \tanh\left(6 (t - t_0)/\tau - 3\right)\right]/2\f$, with \f$\tau\f$ = `vel_in_ramp`, \f$t_0\f$ = `vel_in_t0` and \f$f_0\f$ = `vel_in_frac0`, so it leaves \f$\approx f_0\f$ of the final velocity at \f$t_0\f$ and is within half a percent of it at \f$t_0 + \tau\f$. A boundary with `vel_in_ramp = 0` is held constant, as before. The ramp acts on a GRCBC inflow (`grcbc_in`) or on the ghost-cell velocity of a Dirichlet (-17) boundary or boundary patch normal to that direction, such as a nozzle set into a wall. ### Patch types {#patch-types} diff --git a/docs/index.html b/docs/index.html index 6987653079..a3e8117935 100644 --- a/docs/index.html +++ b/docs/index.html @@ -48,52 +48,52 @@