Index

References are by chapter and section number.

  • !$acc parallel loop — 35.2
  • -c flag (compile only) — 2.3, 8.5
  • -fast (nvfortran) — 30.2
  • -fbacktrace — 13.3, 30.3
  • -fcheck=all — 13.3
  • -fcheck=all (removed for production) — 30.3
  • -fcheck=all (run-time checks) — 2.4
  • -fcheck=bounds — 13.3, 13.6
  • -fcoarray (single / lib) — 32.5
  • -fexternal-blas — 16.1
  • -ffast-math — 30.1
  • -ffast-math (FP reordering) — 27.1
  • -ffpe-trap — 13.3, 20.4, 30.3
  • -finit-real=snan — 13.3, 13.6, 30.3
  • -flto (link-time optimization) — 30.1
  • -fno-protect-parens — 30.1
  • -fopt-info / -fopt-info-vec / -fopt-info-vec-missed — 27.5
  • -fopt-info-optimized / -fopt-info-inline — 27.5
  • -fp-model precise / fast (Intel) — 30.2
  • -fprofile-generate / -fprofile-use — 30.4
  • -funroll-loops — 27.1
  • -g (debug info) — 2.4
  • -I flag (module search path) — 8.5
  • -ipo (Intel interprocedural optimization) — 30.2
  • -llapack / -lblas — 21.5
  • -march=native — 27.1, 27.5, 30.1, 30.5
  • -Minfo (nvfortran) — 30.2
  • -O0 (no optimization) — 30.1, 30.3
  • -O1 — 30.1
  • -O2 — 30.1, 30.3
  • -O2 (optimization) — 2.4
  • -O2 (production default) — 27.1
  • -O3 — 30.1, 30.3
  • -O3 (auto-vectorization) — 27.1, 27.5
  • -Ofast — 30.1
  • -Ofast (and -ffast-math danger) — 27.1, Spaced Review
  • -Os (optimize for size) — 30.1
  • -qopt-report (Intel) — 30.2
  • -qopt-report (Intel) / -Minfo (nvfortran) — 27.5
  • -std=f2018 — 2.4
  • -Wall — 2.4
  • -xHost (Intel) — 30.2
  • .and. / .or. / .not. — 4.1, 4.4
  • .eqv. / .neqv. — 4.1
  • .f90 file extension — 2.2, 2.5
  • .mod file — 8.5
  • .smod file — 8.5
  • 0.1 + 0.2 problem — 20.1
  • 80/20 rule (profiling) — 36.5
  • @assertEqual — 37.1
  • @test annotation — 37.1
  • _FillValue — 25.5
  • !$omp atomic — 33.4
  • !$omp critical — 33.4
  • !$omp do — 33.2
  • !$omp parallel do — 33.2, Project Checkpoint
  • !$omp parallel` / `!$omp end parallel — 33.1
  • !$omp sections` / `!$omp section — 33.2
  • !$omp single — 33.2, 33.4
  • !$omp task` / `!$omp taskwait — 33.5
  • !$omp workshare — 33.2
  • !f2py directive — 15.2, 15.3
  • -fopenmp (compile flag) — 33.1
  • -std=legacy (gfortran flag) — 17.1, 17.6
  • .f2py_f2cmap (custom kind mapping) — 15.5, Project Checkpoint
  • assert np.allclose (same-answer check) — 15.5
  • bind(c) (for FFIs) — 15.4
  • default(none) — 33.3
  • firstprivate clause — 33.3
  • intent(hide) / depend — 15.2
  • intent(inout) (F-contiguity requirement) — 15.3
  • lastprivate clause — 33.3
  • np.isfortran / np.asfortranarray — 15.3
  • omp_get_num_threads — 33.1
  • omp_get_thread_num — 33.1
  • omp_lib module — 33.1
  • OMP_NUM_THREADS — 33.1
  • order='F' — 15.3, Project Checkpoint
  • private clause — 33.3
  • reduction clause — 33.3
  • schedule(dynamic) — 33.4
  • schedule(guided) — 33.4
  • schedule(static) — 33.4
  • shared clause — 33.3
  • time.perf_counter — 15.5

A

  • A edit descriptor (character) — 7.1
  • A-stability — 23.5
  • abs — 3.5
  • absolute stability / stability region — 23.5
  • absorption — 20.3
  • abstract interface (for a deferred binding) — 10.4
  • abstract interface (for the RHS) — 23.1, 23.2, 23.4
  • abstract interface (pure) — 22.2, 22.3
  • abstract solver_t (framework) — 10.6
  • abstract type — 10.4
  • accelerator — 31.3, 35.1
  • action (open specifier) — 7.3
  • actual argument — 6.1
  • adaptive integration — 22.3
  • adaptive step size — 23.3
  • AddressSanitizer / -fsanitize=address — 13.4
  • adjustl — 12.2
  • adjustr — 12.2
  • aerospace (Fortran employers) — 40.1
  • aimag — 3.1
  • aliasing (pointers/targets) — 29.4
  • aliasing (rigorous) — 27.3
  • allocatable array — 5.5
  • allocatable array (replacing over-dimensioned static) — 19.1
  • allocatable component — 9.4
  • allocatable components self-deallocate — 10.4
  • allocatable vs pointer — 11.4
  • allocate / deallocate — 5.5
  • allocated — 5.5
  • allocated (for strings) — 12.1
  • alpha (thermal diffusivity) — Project Checkpoint
  • Amdahl's Law — 31.2, 31.4, 31.5, 38.4
  • amplification factor — 23.5, 24.4
  • amplification factor (G) — 38.3
  • analytical solution — 38.3
  • analytical solution (as oracle) — 37.2
  • app/ src/ test/ layout — 16.3
  • architectural role — 36.2
  • argument association — 6.1, 6.3
  • arithmetic IF — 17.4
  • arithmetic IF, translating — 19.2
  • arithmetic intensity — 16.1, 21.2, 28.3, 29.2, 35.4, 35.5, 38.4
  • arithmetic intensity (flop/byte) — Case Study 2
  • arithmetic operators — 3.3
  • array (first-class object) — 5.1
  • array bounds (custom) — 5.1
  • array constructor — 5.3
  • array descriptor — 6.6
  • array layout contract — 14.5
  • array of derived types — 9.1, 9.5
  • array section — 5.2
  • Array-of-Structures / Structure-of-Arrays — 9.5
  • asind / acosd / atand / atan2d — 39.1
  • assembled solver architecture — 38.1
  • assert harness (hand-rolled) — 37.1
  • assertion — 13.5
  • assertion (in testing) — 37.1
  • associated (intrinsic) — 11.2
  • associated (two-argument form) — 11.2
  • association status — 11.2
  • assumed-length character (len=*) — 12.1, 12.5
  • assumed-shape argument (requires explicit interface) — 8.2
  • assumed-shape array — 6.6
  • assumed-shape array (replacing assumed-size) — 19.3
  • assumed-size array — 6.6
  • assumed-size array, translating — 19.3
  • assumed-size to assumed-shape — 18.1
  • asterisk fill (field overflow) — 7.1
  • atomic operations (atomic_add) — 32.3
  • attributes(global) — 35.3
  • auto-vectorization — 29.3
  • automatic deallocation — 5.5, 9.4, 11.4
  • automatic reallocation on assignment — 12.1, 12.3
  • axpy (BLAS Level-1) — 28.3
  • axpy / daxpy kernel — 27.3, 27.4

B

  • backward compatibility — 39.2
  • backward difference — 22.1
  • backward GOTO (loop) — 19.2
  • barrier (!$omp barrier) — 33.4
  • base case — 6.5
  • baseline -march (conservative target) — 30.5
  • benchmark methodology — 28.5
  • big-bang rewrite — 18.2
  • binary tree — 11.3
  • bind(c) — 14.2, 14.3, 14.4, 14.5
  • binding label — 14.2
  • bit-for-bit — 37.2
  • bit-for-bit reproducibility — 18.3
  • BLAS — 1.2, 16.1, 21.2, 21.5
  • BLAS (tuned; dgemm) — 29.2, 29.5
  • BLAS levels (1/2/3) — 16.1, 21.2
  • BLOCK DATA — 17.2
  • BLOCK DATA (mentioned) — 8.4
  • BLOCK DATA, translating — 19.1
  • blocked matrix multiply — 29.2
  • boundary vs interior points — Project Checkpoint
  • breakpoint — 13.4
  • build configuration — 36.3
  • build provenance / manifest — 30.4
  • build system — 36.3
  • building on the target node — 30.5
  • Butcher tableau — 23.2
  • by-reference passing — 14.4, 14.5
  • by-value passing — 14.3

C

  • C ABI — 15.4
  • C application binary interface (ABI) — 14.1, 14.2
  • C interoperability (Fortran 2023 additions) — 39.1
  • C linkage — 14.2
  • C struct interoperability — 14.5
  • C-contiguous — 15.3
  • C-interoperable kind — 14.1
  • c_associated — 14.1
  • c_bool — 14.1, 14.5
  • c_char — 14.1, 14.5
  • c_double — 14.1, 14.3, 14.4
  • c_f_pointer — 11.5, 14.1, 14.5
  • c_float — 14.1
  • c_funptr — 14.1
  • c_int — 14.1, 14.4
  • c_int64_t — 14.1
  • c_loc — 14.1, 14.5
  • c_null_char — 14.1, 14.5
  • c_null_ptr — 14.1
  • c_ptr — 14.1, 14.5
  • c_size_t — 14.1
  • c_sizeof — 14.1, 14.5
  • cache blocking — 21.2
  • cache blocking (tiling) — 29.2, Project Checkpoint
  • cache line — 5.6, 27.2, 29.1, 29.2, 33.5
  • cache miss rate — 28.4
  • cachegrind — 28.4
  • call graph — 28.2
  • call hoisting / common-subexpression elimination — 27.4
  • callback — 11.5
  • calling C from Fortran — 14.3
  • calling Fortran from C — 14.4
  • calling the parent's method — 10.1
  • Cannot open module file (error) — 8.5
  • capstone (heat solver) — 38.1, Project Checkpoint
  • career spectrum (science ↔ software) — 40.2
  • carriage control (history) — 7.1
  • case default — 4.2
  • case range — 4.2
  • catastrophic cancellation — 20.3
  • catastrophic cancellation (in differentiation) — 22.4
  • CELL_DATA (contrast) — 26.2
  • central difference — 22.1, 22.4
  • central second difference — 24.2
  • CESM (climate model) — 1.2, 36.1
  • CF conventions — 25.5
  • cffi — 15.4
  • CFL condition — 24.4, 38.2
  • CFL condition (as an ODE stability limit) — 23.4
  • cg_annotate — 28.4
  • character (type) — 3.1
  • character type — 12.1
  • characterization test — 18.2
  • chemical kinetics (reaction ODEs) — 23.6
  • chunking — 25.3
  • CI with two compilers — 30.5
  • circular module dependency — 8.5, 8.6
  • class (passed object) — 9.2
  • class (polymorphic declaration) — 10.2, 10.5, 10.6
  • class default (guard) — 10.3
  • class is (guard) — 10.3
  • classof — 39.1
  • clock speed plateau — 31.1
  • close statement — 7.3
  • close-enough (tolerance) comparison — 18.3
  • CMake — 16.5, 36.3
  • co_broadcast — 32.4
  • co_max / co_min — 32.4
  • co_reduce — 32.4
  • co_sum — 32.4
  • coalesced memory access — 35.5 (spaced review)
  • coarray — 32.1, 32.2, 32.3, 32.4, 32.5
  • coarrays (as parallel model) — 31.3
  • coarse-grained vs fine-grained polymorphism — 10.5, 10.6
  • codimension — 32.2
  • coindexed access — 32.2
  • collapse clause — 35.2 (project checkpoint)
  • collective communication — 34.3
  • collective subroutine — 32.4
  • colormap — 26.5
  • column-major / row-major (Python view) — 15.3
  • column-major loop order — 29.1, Project Checkpoint
  • column-major loop order (payoff of Ch.5) — 27.2, Project Checkpoint
  • column-major order — 1.3, 5.6
  • column-major order (as used by EQUIVALENCE) — 17.3
  • column-major storage (matrices) — 21.1
  • column-major vs row-major (interop) — 14.5
  • column-major write order — 26.2
  • comment (!) — 2.5
  • comment (C in column 1 vs !) — 19.4
  • comment line (C/* in column 1) — 17.1
  • commit hash (tie a result to) — 37.4
  • COMMON block — 1.4, 17.2
  • COMMON block (legacy) — 8.4
  • COMMON block to module — 18.1, 18.4
  • COMMON block, translating — 19.1
  • COMMON-to-module conversion — 8.4
  • communicator — 34.1
  • comparing floats with == (pitfall) — 20.1
  • compilation order — 8.5, 8.6
  • compile-link-run cycle — 2.3
  • compiler — 1.1
  • compiler (installing) — 2.1
  • compiler error vs linker error — 2.3
  • Compiler Explorer (godbolt) — 27.5, Further Reading
  • Compiler Explorer (godbolt.org) — 16.5
  • compiler flag — 2.4
  • compiler matrix — 37.3
  • compiler_options (intrinsic) — 37.5
  • compiler_options() — 30.4
  • compiler_version (intrinsic) — 37.5
  • compiler_version() — 30.4
  • complex (type) — 3.1
  • component — 9.1
  • component section (array%comp) — 9.1
  • compression — 25.3
  • computational scientist — 40.2
  • computational-science paper — 38.6
  • compute-bound — 28.3
  • compute-bound kernel — 29.2
  • computed GOTO — 17.4
  • computed GOTO, translating — 19.2
  • concatenation (//) — 12.1, 12.3
  • condition number — 20.5
  • conditional expression — 39.1, Project Checkpoint
  • conditional-compilation sentinel (!$) — 33.1
  • conditioning — 20.5
  • conditioning (linear solve) — 21.3
  • conformable / conformance — 5.3, 5.5
  • conjugate trick — 20.3
  • constructor (user-defined) — 9.4
  • contains — 6.5
  • contiguous (attribute) — 11.5
  • contiguous (foreshadowed) — 6.6
  • contiguous attribute — 29.4, Project Checkpoint
  • continuation (&) — 2.5
  • continuation (column 6 vs trailing &) — 19.4
  • continuation column (column 6) — 17.1
  • continuous integration — 37.3
  • Conventions attribute — 25.5
  • convergence — 22.4
  • convergence order (as test) — 37.2
  • convergence plot (log-log, slope 2) — 38.5
  • convergence study — 38.3
  • coordinate variable — 25.5
  • copy-in/copy-out — 29.4
  • corank — 32.2
  • coshape — 32.2
  • count — 5.4, 5.7
  • count_max (clock wrap-around) — 28.1
  • count_rate — 28.1
  • counted do loop — 4.3
  • Courant number — 24.4
  • cProfile (Python) — 28.2
  • CPU frequency scaling (turbo) — 28.5
  • CPU time — 28.1
  • cpu_time (intrinsic) — 28.1
  • critical construct — 32.3
  • ctags / tags index — 36.4
  • ctypes — 15.4
  • CUDA — 35.5
  • CUDA Fortran — 35.3
  • curse of dimensionality — 22.5
  • cycle — 4.4
  • cycle (replacing GOTO) — 19.2

D

  • D1 / LLd cache misses — 28.4
  • dangling pointer — 11.2
  • dangling pointer (revisited; owned Ch. 11) — 13.4
  • data clause (copyin/copyout/copy/create/present) — 35.2, 35.4
  • data flow — 36.5
  • data parallelism — 31.4
  • data race — 33.3
  • data race (previewed) — 31.3
  • data region (!$acc data) — 35.2, 35.4
  • data scoping — 33.3
  • DATA statement — 17.5
  • DATA statement, translating — 19.1
  • data-sharing attribute — 33.3
  • DataArray (VTK XML) — 26.2
  • dataset (HDF5) — 25.3
  • dead-code elimination (benchmark trap) — 28.5
  • dead-code elimination (checksum guard) — Case Study 2
  • deadlock (send/recv) — 34.2
  • declaration initializer — 19.1
  • declared type — 10.2
  • deep copy — 9.4
  • deep copy on assignment — 11.4
  • default initialization (component) — 9.1
  • defensive programming — 13.5
  • deferred binding — 10.4
  • deferred shape — 5.5
  • deferred-length character — 12.1, 12.3
  • deferred-length character component — 9.4
  • deferred/assumed type parameter — 9.3
  • definable entity — 6.2
  • deflate — 25.3
  • degree-valued trig (sind, cosd, tand) — 39.1, Project Checkpoint
  • deleted/removed feature — 19.5
  • Dennard scaling — 31.1
  • dependency graph — 8.6
  • dependency pinning (tag) — 16.3
  • derived type — 9.1
  • derived type (replacing EQUIVALENCE / COMMON) — 19.1
  • determinism (result vs. schedule) — Project Checkpoint
  • development build vs release build — 30.3
  • development vs release build — 2.4
  • device — 35.1
  • device array (device attribute) — 35.3
  • dgecon — 21.3
  • dgemm — 21.2
  • dgemm / tuned BLAS (compute-bound) — 28.3
  • dgesv — 16.1, 21.3
  • dgesvd — 16.1, 21.4
  • dgtsv (tridiagonal solve) — 21.6
  • diffusion equation — 24.1
  • diffusion number (mesh Fourier number) — 24.3, 24.4
  • diffusion number (r) — 38.2
  • diffusion number limit (r <= 1/4) — 24.4
  • digits (intrinsic) — 20.2
  • DIMENSIONS (VTK) — 26.2
  • diminishing returns — 29.5
  • direct access — 7.3
  • direct sparse solvers (SuperLU/MUMPS/PETSc) — 21.6
  • directive-based offload — 35.2
  • directory layout — 36.1
  • Dirichlet boundary condition — 24.5
  • disassociated pointer — 11.2
  • discrete maximum principle (convex-combination bound) — Project Checkpoint
  • dispatch cost / inlining barrier — 10.5
  • distributed memory — 31.3
  • distributed memory (MPI as) — 34.1
  • do concurrent — 4.6
  • do concurrent (performance use) — 29.3, Project Checkpoint
  • do concurrent (requires purity) — 27.4
  • do concurrent reduce — 39.4
  • do loop — 4.3
  • do while — 4.3
  • doc comment (!> / !!) — 37.4
  • domain decomposition — 34.4
  • domain decomposition (previewed) — 31.3, 31.5
  • domain decomposition (previewed; owned Ch.34) — 32.5, Project Checkpoint
  • domain scientist — 40.2
  • dot_product — 5.4, 21.1
  • double precision — 3.1, 3.2
  • double precision (binary64) — 20.1, 20.6
  • dp (double-precision kind) — 3.2
  • DPI (figure resolution) — 26.5
  • driver program — 36.2
  • dsyev — 16.1, 21.4
  • dtype — 15.3
  • dtype matching (NumPy ↔ Fortran kind) — 15.3
  • dummy argument — 6.1
  • dummy-argument association restriction — 27.3
  • dx (grid spacing) — Project Checkpoint
  • dynamic dispatch — 10.2, 10.5
  • dynamic type — 10.2

E

  • E edit descriptor (scientific) — 7.1
  • eager vs rendezvous protocol — 34.2
  • edit descriptor — 3.7, 7.1
  • edit descriptor i0 — 12.4
  • edit descriptor i6.6 — 12.4
  • eigenvalue problem — 21.4
  • eigenvector property (stencil) — 38.3
  • EISPACK — 16.1
  • elemental — 6.4
  • elemental (optimization implications) — 27.4
  • elementwise operation — 5.3
  • else if — 4.1
  • elsewhere — 4.5
  • embarrassingly parallel — Project Checkpoint
  • embedded Runge-Kutta pair (RKF45, Dormand-Prince) — 23.3
  • encapsulation — 8.2
  • end-of-file — 7.6
  • endianness — 7.5
  • endianness (portability) — 25.1, 25.3
  • energy drift / symplectic integrator — 23.4, 23.6
  • energy sector (seismic, reservoir, reactor codes) — 40.1
  • ENTRY — 17.4
  • entry point — 36.4
  • enum, bind(c) (Fortran 2003) — 39.1
  • enumeration type — 39.1, Project Checkpoint
  • epsilon (intrinsic) — 20.2
  • EQUIVALENCE — 17.3
  • EQUIVALENCE (modernizing) — 18.1
  • EQUIVALENCE, translating — 19.1
  • errmsg (allocation) — 13.1
  • error estimate (compare resolutions) — 22.3
  • error stop — 13.1, 13.2
  • error stop (I/O guard) — 7.6
  • error stop (in modernization) — 18.1, 18.4
  • error termination — 13.2
  • error_unit (standard error) — 13.1, 13.5
  • ES edit descriptor (scientific, mantissa 1-9) — 7.1
  • Euler's method — 23.1, 23.4, 23.5
  • Euler's method, backward (implicit) — 23.5
  • exact-zero comparison (arithmetic IF trap) — 19.2
  • exactness (test on polynomials) — 37.1
  • executable — 2.3
  • Exercise 1.28 (the sealed answer) — What's Next
  • exit — 4.3, 4.4
  • exit (replacing GOTO) — 19.2
  • exit code — 13.2
  • exit code (test failure) — 37.1, 37.3
  • explicit interface — 6.5, 6.6, 8.2
  • explicit scheme — 24.3
  • explicit-shape array — 6.6
  • exponent bias — 20.1
  • exponentiation — 3.3, 3.5
  • extends (attribute) — 10.1, 10.6
  • extension module — 15.2
  • extension type / child type — 10.1
  • extent — 5.1
  • external procedure — 6.5

F

  • F edit descriptor (fixed-point) — 7.1
  • F-contiguous — 15.3
  • f0.2 edit descriptor — 2.7
  • f2py — 15.2, 15.3, 15.5
  • f2py build command (-c -m) — 15.2
  • fall-through (absence of) — 4.2, 4.7
  • false sharing — 33.5
  • fast Fourier transform — 16.2
  • feature paper (committee) — 39.2
  • FFTW — 16.2
  • field width — 7.1
  • field-width overflow (asterisks) — 12.4
  • field_t (project) — 9.5, Project Checkpoint
  • final procedure (destructor) — 10.4
  • finalization — 10.4
  • findent / fprettify (conversion tools) — 18.1
  • finite difference — 22.1, 22.4
  • finite-difference method — 24.2
  • five-point stencil — 17.6, 24.2, 38.2
  • five-step reading method — 17.6
  • fixed-form source — 2.5, 17.1
  • fixed-form to free-form — 19.4
  • fixed-form to free-form conversion — 18.1
  • fixed-length character — 12.1, 12.6
  • flat profile — 28.2
  • floating-point exception — 13.3
  • floating-point exception trap — 13.3
  • floating-point representation — 20.1
  • forall (obsolescent) — 4.6
  • FORD — 16.5, 37.4
  • fork–join model — 33.1
  • form team / change team — 32.4
  • format string — 3.7, 7.1
  • formatted output — 3.7
  • fortls (Fortran Language Server) — 16.5, 39.3
  • fortls (Fortran language server) — 36.4
  • Fortran 2018 — 1.1, 1.6
  • Fortran 2023 — 1.1
  • Fortran 2023 (ISO/IEC 1539-1:2023) — 39.1, 39.2
  • Fortran 202Y (informal next revision) — 39.4
  • FORTRAN 77 — 1.1
  • FORTRAN 77 fixed-length strings — 12.6
  • Fortran 90 — 1.1
  • Fortran Discourse — 16.4
  • FORTRAN I (1957) — 1.1
  • Fortran Playground — 39.3
  • Fortran programmer shortage — 40.3
  • fortran-lang — 16.4, 39.3
  • forward difference — 22.1
  • forward-Euler (time stepping) — 24.3
  • fpm — 16.3
  • fpm (derives compile order) — 8.5, 8.6
  • fpm (Fortran Package Manager) — 36.3, 39.3
  • fpm new / build / run / test — 16.3
  • fpm.toml — 36.3
  • fpm.toml (manifest) — 16.3
  • frame_name (indexed filenames) — 26.3, Project Checkpoint
  • free lunch (end of) — 31.1
  • free-form source — 1.1, 1.4, 2.5
  • frozen interface (stable signature) — 38.1
  • FTCS (Forward-Time Centred-Space) — 24.3
  • FTCS scheme — 38.2
  • function — 6.1
  • fused multiply-add (FMA) — 30.1

G

  • Gauss-Legendre rule — 22.3
  • Gaussian quadrature — 22.3
  • gdb — 13.4
  • generics — 39.4
  • get (remote read) — 32.2
  • gfortran — 2.1, 2.2, 2.4
  • gfortran --version — 2.1
  • ghost cell — 24.5, 34.4
  • git dependency — 16.3
  • git tag (release / submission) — 37.4
  • GitHub Actions — 37.3
  • global order of accuracy (integrator) — 23.1, 23.2
  • global shared state — 17.2
  • global state — 36.5
  • gnuplot — 26.4
  • GO TO (unconditional) — 17.4
  • golden file / reference — 37.2
  • golden output / reference capture — 18.3
  • GOTO to structured control — 18.1, 18.4
  • GOTO, translating — 19.2
  • governing equation (heat equation) — 38.2
  • GPGPU (general-purpose GPU computing) — 35.5
  • gprof — 28.2
  • GPU (graphics processing unit) — 31.3, 35.1, 35.5
  • GPU offload (do concurrent) — 39.4
  • grep (navigation) — 36.4
  • grid cell (data structure) — 9.5
  • group (HDF5) — 25.3
  • Gustafson's Law — 31.2, 31.4

H

  • h5dcreate_f / h5dopen_f / h5dwrite_f / h5dread_f / h5dclose_f (dataset) — 25.3, 25.4
  • h5dump (header inspection) — 25.3
  • H5F_ACC_TRUNC_F / H5F_ACC_RDONLY_F — 25.3, 25.4
  • h5fc (compile helper) — 25.3
  • h5fcreate_f / h5fopen_f / h5fclose_f — 25.3, 25.4
  • h5gcreate_f / h5gopen_f / h5gclose_f / h5gn_members_f (group) — 25.3
  • h5open_f / h5close_f (library init) — 25.3
  • H5P_DATASET_CREATE_F — 25.3
  • h5pcreate_f / h5pset_chunk_f / h5pset_deflate_f / h5pset_shuffle_f / h5pclose_f (property list) — 25.3
  • h5screate_simple_f / h5sclose_f (dataspace) — 25.3
  • H5T_NATIVE_DOUBLE / H5T_IEEE_F64LE — 25.3
  • halo (halo cell) — 34.4
  • halo exchange — 32.2, 34.4, Project Checkpoint
  • halving test (measuring order) — 22.4
  • hand-tuning (SIMD intrinsics, manual unroll) — 29.4
  • harmonic oscillator (as a system) — 23.4
  • HDF5 — 16.2, 25.3, 25.4
  • hdf5 module — 25.3
  • heat (program / driver) — Project Checkpoint
  • heat equation — 1.6, 24.1, 24.3
  • heat_io module — 8.6, Project Checkpoint
  • heat_solver module — 8.6, Project Checkpoint
  • heat_types module — Project Checkpoint
  • Hello, world — 2.2
  • heterogeneous collection (array of boxes idiom) — 10.2
  • hid_t / hsize_t (HDF5 kinds) — 25.3
  • hidden bit — 20.1
  • high-level language — 1.1
  • high-performance computing (HPC) — 1.2
  • history attribute (provenance) — 25.5
  • Hollerith constant — 17.5
  • Hollerith constant, translating — 19.5
  • Homebrew (macOS) — 2.1
  • honest benchmarking — 15.5
  • honest performance claims — 38.6
  • host — 35.1
  • host association — 6.5
  • host association (submodule) — 8.3
  • host/device model — 35.1
  • host–device transfer — 35.4
  • hot kernel / hot loop — 15.1, 15.5
  • hot loop — 28.3
  • hot spot — 28.3
  • HPC engineer — 40.2
  • huge (intrinsic) — 20.2
  • hybrid MPI+OpenMP — 34.5

I

  • I edit descriptor (integer) — 7.1
  • I/O module — 36.2
  • I/O-bound — 28.1
  • IEEE 754 — 20.1
  • IEEE 754, relaxed by -Ofast — 30.1
  • ieee_arithmetic module — 20.4
  • ieee_is_finite — 20.4
  • ieee_is_nan — 20.4
  • ierr (error-code argument) — 34.1
  • if construct — 4.1
  • if, logical (single-line) — 4.1
  • ifort (Intel Fortran, deprecated) — 30.2
  • ifx (Intel Fortran, LLVM-based) — 30.2
  • illegal instruction (from -march=native) — 30.1, 30.5
  • image — 32.1, 32.2
  • image_index (intrinsic) — 32.2
  • ImageData — 26.1, 26.2
  • implicit heat step (backward Euler) — Project Checkpoint
  • implicit interface — 8.2
  • implicit method — 23.5
  • implicit none — 2.6
  • implicit none (in modernization) — 18.1
  • implicit none (replacing implicit typing) — 19.4
  • implicit save — 13.6
  • implicit SAVE — 17.5
  • implicit SAVE (initializer trap) — 19.1
  • implicit save (module variable) — 8.2
  • implicit scheme — 24.3
  • implicit typing — 2.6
  • implicit typing (I–N rule) — 17.5
  • implicit typing, translating — 19.4
  • implied-do — 5.3
  • implied-DO — 17.5
  • import (in an interface body) — 10.4, 10.6
  • import statement — 14.3
  • imshow (matplotlib) — 26.4, 26.5
  • INCLUDE — 17.2
  • INCLUDE (legacy) — 8.4
  • incremental modernization — 18.2
  • index (intrinsic) — 12.2, 12.3
  • index-based structure — 11.3
  • indexed output filename (heat_NNNNNN.vtk) — 12.4, Project Checkpoint
  • Inf (infinity) — 20.4
  • infinite do — 4.3
  • info — 21.3
  • initial-value problem (IVP) — 23.1
  • inlining — 27.1, 27.4
  • inquire statement — 7.3
  • int64 clock counters — 28.1
  • integer (type) — 3.1
  • integer division — 3.3, 3.4
  • integer loop counter — 4.3
  • integer overflow — 13.6
  • integer-division trap — 3.4
  • Intel MKL — 16.1, 21.5
  • intent — 6.2
  • intent (adding to legacy args) — 18.1
  • intent → Python signature — 15.2
  • intent(in) — 6.2
  • intent(inout) — 6.2
  • intent(out) — 6.2
  • intent, adding to legacy procedures — 19.3
  • interactive Fortran / REPL — 39.3
  • interface block (for C) — 14.3
  • interface checking (argument matching) — 8.2
  • interface vs implementation separation — 8.3
  • internal file — 12.4
  • internal procedure — 6.5
  • internal procedure (contrasted) — 8.1
  • internal procedure (replacing statement function) — 19.3
  • internal read (text to number) — 12.4
  • internal write (number to text) — 12.4
  • interoperable derived type — 14.5
  • intrinsic function — 3.2, 3.5
  • intrinsic module — 14.1
  • intrinsic type — 3.1
  • invariant (as test) — 37.1
  • iomsg — 7.6
  • iostat — 7.6
  • iostat_end — 7.6
  • iostat_eor — 7.6
  • ipiv (pivot array) — 21.3
  • is_contiguous — 11.5
  • ISO/IEC 1539-1 — 39.2
  • iso_c_binding — 14.1, 14.2, 14.3
  • iso_fortran_env — 3.2
  • iso_fortran_env / real64 — 2.7
  • iterative solvers (CG/GMRES) — 21.6

J

  • J3 committee — 39.2
  • Jacobi relaxation — 17.6
  • Jacobi relaxation (legacy PLATE) — 18.4
  • jump table — 4.2

K

  • Kahan (compensated) summation — 20.3, case study 2
  • Karp-Flatt metric — 31.5 (case study 1)
  • kernel — 35.3
  • keyword argument — 6.3
  • keyword argument (requires explicit interface) — 8.2
  • kind (intrinsic) — 3.2
  • kind parameter — 3.2
  • kind parameter (PDT) — 9.3
  • kinds module (dp) — 8.1, 8.6
  • kinds module (project) — Project Checkpoint

L

  • labeled DO / shared CONTINUE, translating — 19.2
  • labeled field (data structure) — 9.4, 9.5
  • Language Server Protocol (LSP) — 16.5
  • LAPACK — 1.2, 16.1, 16.2, 21.1, 21.2, 21.3, 21.4, 21.5, 21.6
  • LAPACK (used) — 29.2, 29.5
  • LAPACK routine naming — 16.1, 21.3, 21.4
  • Laplace's equation — 24.1, 24.6
  • Laplace's equation (steady state) — 17.6
  • laplacian (procedure) — 24.2, Project Checkpoint
  • Laplacian operator — 24.1, 24.2
  • launch configuration (<<>>) — 35.3
  • layered design (depend downward) — 8.6
  • ldb — 21.3
  • leading dimension (lda) — 21.3
  • leaked identifiers (HDF5 handles) — 25.3
  • least squares (dgels) — 21.4, case-study-02
  • legacy code — 1.4
  • Legendre polynomial (roots as nodes) — 22.3
  • len — 12.1, 12.2
  • len_trim — 12.1, 12.2
  • length parameter (PDT) — 9.3
  • LFortran — 16.4, 39.3
  • libgfortran (linking) — 14.4
  • link-time optimization — 30.1
  • linked list — 11.3
  • linker — 2.3
  • linking LAPACK/BLAS — 21.5
  • LINPACK — 16.1
  • LINPACK benchmark — 16.1
  • list-directed I/O — 7.2
  • list-directed internal read — 12.4
  • LLVM Flang — 39.3
  • local truncation error — 23.1
  • lock / unlock (lock_type) — 32.3
  • logical (type) — 3.1
  • logical operator — 4.1
  • longer source lines (Fortran 2023) — 39.1
  • loop fission (distribution) — 29.1
  • loop fusion (jamming) — 29.1, Project Checkpoint
  • loop interchange (compiler) — 27.2
  • loop order (cache locality) — 28.4
  • loop order (column-major habit) — 4.4
  • loop order (column-major) — 5.6
  • loop reordering (for column-major) — 29.1
  • loop trip count — 4.3
  • loop unrolling — 27.1
  • loop-carried dependency — 15.1, 15.5, 29.3
  • loop-invariant hoisting — 29.1, Project Checkpoint
  • LU factorization — 16.1, 21.3

M

  • machine balance — 29.5, 38.4
  • machine epsilon — 20.2
  • Make — 16.5
  • Make (build system) — 36.3
  • Makefile — 36.3
  • manufactured solution — 38.3
  • mask — 5.7
  • masked reduction — 5.7
  • masked whole-array assignment — 4.5
  • master thread — 33.1
  • matmul — 5.4
  • matplotlib (plotting the field) — Project Checkpoint
  • matplotlib post-processing — 26.5
  • matrix ASCII format — 26.4
  • matrix multiply (hand-rolled) — 21.2
  • matrix product (matmul) — 21.1
  • max / min (intrinsics) — 3.5
  • maximum principle (as test) — 37.1, 37.2
  • maxloc / minloc — 5.4
  • maxval / minval — 5.4
  • meaning-preserving optimization — 27.1
  • memory aliasing — 17.3
  • memory bandwidth / traffic — 27.2
  • memory overlay — 8.4
  • memory-bound — 27.2, 28.3, Project Checkpoint
  • memory-bound kernel — 29.2, 29.5, 38.4, Project Checkpoint
  • merge — 5.7
  • merge intrinsic (contrast) — 39.1
  • Meson — 16.5, 36.3
  • Meson build backend (f2py, Python 3.12+) — 15.2
  • message passing — 34.1
  • method — 9.2
  • method of lines — 23.4, 24.1, 24.3, Project Checkpoint
  • midpoint method (RK2) — 23.2
  • minimum vs median (statistic) — 28.5
  • mixed-language compile and link — 14.3, 14.4
  • mixed-mode arithmetic — 3.3
  • mod — 3.5
  • modern vs legacy string handling — 12.6
  • modernization recipe (eight steps) — 18.1
  • module — 1.4, 8.1, 8.2, 8.4, 8.6
  • module (replacing COMMON) — 19.1
  • module function / module subroutine prefix — 8.3
  • module hierarchy — 8.6, 36.1
  • module load (HPC) — 2.1
  • module map — 36.4
  • module map (final solver) — 38.1
  • module namespacing (f2py) — 15.2
  • module procedure — 8.1
  • module procedure shorthand (end procedure) — 8.3
  • module variable — 8.1, 8.2
  • module variable (as hidden input) — 36.5
  • modulo — 3.5
  • Monte Carlo integration — 22.5
  • Moore's Law — 31.1
  • move_alloc — 11.4
  • MPI — 16.2
  • MPI (Message Passing Interface) — 34.1, 34.5
  • MPI-IO — 34.5
  • mpi_allreduce — 34.3
  • mpi_bcast — 34.3
  • mpi_comm_rank — 34.1
  • mpi_comm_size — 34.1
  • MPI_COMM_WORLD — 34.1, 34.2, 34.3, 34.4
  • MPI_DOUBLE_PRECISION (datatype) — 34.2
  • mpi_finalize — 34.1
  • mpi_gather — 34.3, 34.4
  • mpi_init — 34.1
  • mpi_irecv — 34.4
  • mpi_isend — 34.4
  • MPI_PROC_NULL — 34.4
  • mpi_recv — 34.2
  • mpi_reduce — 34.3
  • mpi_scatter — 34.3
  • mpi_send — 34.2
  • mpi_sendrecv — 34.2, 34.4
  • MPI_STATUS_SIZE (status) — 34.2
  • MPI_SUM / MPI_MAX (reduce ops) — 34.3
  • mpi_wait / mpi_waitall — 34.4
  • mpif90 (compiler wrapper) — 34.5
  • mpirun (-np) — 34.5
  • MSYS2 (Windows) — 2.1
  • multi-GPU (one MPI rank per GPU) — project checkpoint
  • multicore (shift to) — 31.1
  • multidimensional array — 5.2
  • mutual exclusion — 33.4

N

  • name mangling — 14.2
  • name mangling (trailing underscore) — 15.4
  • name mangling (trailing underscore, MAIN__) — 28.2
  • name= clause — 14.2
  • named constant — 3.6
  • named constant in a module — 8.1
  • named construct — 4.4
  • named integer constant idiom ("poor man's enum") — 39.1
  • named loop / named construct — 19.2
  • namelist — 7.4
  • namelist group — 7.4
  • NaN — 20.4
  • NaN / Inf (used; owned Ch. 20) — 13.3, 13.6
  • national laboratories (as Fortran employers) — 40.1
  • ncdump (CDL header) — 25.2, 25.5
  • nearest (intrinsic) — 20.2
  • nested loops — 4.4
  • nested type — 9.1
  • NetCDF — 16.2, 25.2, 25.4, 25.5
  • netcdf module — 25.2
  • netcdf-fortran (Fortran interface) — 16.2
  • Neumann boundary condition — 24.5
  • never rewrite what you can refactor — 18.2
  • Newton's method (for implicit steps) — 23.5
  • newunit — 7.3
  • nf-config (compile helper) — 25.2
  • nf90_close — 25.2
  • nf90_create — 25.2
  • nf90_def_dim — 25.2
  • nf90_def_var — 25.2, 25.5
  • NF90_DOUBLE / NF90_GLOBAL / NF90_CLOBBER / NF90_NETCDF4 / NF90_UNLIMITED — 25.2, 25.4
  • nf90_enddef (define mode vs data mode) — 25.2
  • nf90_get_att — 25.4
  • nf90_get_var — 25.4
  • nf90_inq_dimid — 25.4
  • nf90_inq_varid — 25.4
  • nf90_inquire_dimension — 25.4
  • nf90_noerr / nf90_strerror (status check) — 25.2
  • nf90_open — 25.4
  • nf90_put_att — 25.2, 25.5
  • nf90_put_var — 25.2
  • nine-point stencil — 24.2
  • no-aliasing advantage — 1.3, 11.4
  • no-aliasing advantage (used) — 29.3, 29.4
  • node (quadrature) — 22.2, 22.3
  • node (self-referential derived type) — 11.3
  • non-associativity (floating point, in testing) — 37.2
  • non-associativity of addition — 20.3
  • non-blocking communication — 34.4
  • nopass — 9.2
  • normal equations — case-study-02
  • null-terminated string — 14.5
  • nullify — 11.2
  • num_images (intrinsic) — 32.1
  • numerical equivalence — 18.3
  • numerical stability — 20.5
  • numpy.loadtxt — 26.4, 26.5
  • nvfortran (-acc / -cuda / -Minfo=accel) — 35.2, 35.3
  • nvfortran (NVIDIA HPC SDK) — 30.2

O

  • Oak Ridge / Livermore / Los Alamos / Argonne / Sandia — 40.1
  • object file — 2.3
  • object file (.o) — 8.5
  • obsolescent feature — 4.6, 19.5, 39.2
  • offload — 35.1, 35.2
  • one module per file convention — 36.1, 36.4
  • one responsibility per module — 8.6
  • one-based indexing — 5.1
  • one-based thread index — 35.3
  • open statement — 7.3
  • open-source contribution — 40.5
  • OpenACC — 35.2
  • OpenBLAS — 16.1, 21.5
  • OpenCoarrays (caf / cafrun) — 32.5
  • OpenMP — 33.1, 33.2, 33.3, 33.4, 33.5
  • operator precedence — 3.3
  • optimal step size — 22.4
  • optimization exposes latent bugs — 30.3
  • optimization level — 30.1
  • optimization level (-O0/-O1/-O2/-O3) — 27.1
  • optimization license — 27.4
  • optimization report — 27.5
  • optimizing compiler — 27.1
  • optional argument — 6.3
  • optional argument (requires explicit interface) — 8.2
  • optional output argument — 6.3
  • oracle problem — 37.1
  • orbital motion (two-body / Kepler) — 23.6
  • order of accuracy — 22.4
  • order of accuracy (observed) — 38.3
  • order of accuracy (second-order) — 24.2
  • ORIGIN / SPACING (VTK) — 26.2
  • out-of-bounds access — 13.6
  • overflow — 20.4
  • overflow / NaN (from instability) — 24.4
  • overriding a type-bound procedure — 10.1

P

  • packed vs scalar instructions (…pd vs …sd) — 27.5
  • paper structure (IMRaD for simulation) — 38.6
  • parallel efficiency — 31.4
  • parallel overhead — 31.4
  • parallel region (!$omp parallel) — 33.1
  • parallelizable fraction — 31.2
  • parallelization plan — 31.5
  • parameter (named constant) — 2.7, 3.6
  • parameterized derived type (PDT) — 9.3
  • parametric polymorphism — 39.4
  • ParaView — 26.3, 26.5
  • parent component (self%parent_t) — 10.1
  • parent type / base type — 10.1
  • partial differential equation (PDE) — 24.1
  • partial pivoting — 21.3
  • particle (data structure) — 9.1, 9.5
  • partitioned global address space (PGAS) — 31.3, 32.1, 32.5
  • pass attribute — 9.2
  • pass by reference (Fortran) — 15.4
  • pass(name) — 9.2
  • passed-object dummy argument — 9.2
  • per-step transfer (pitfall) — 35.4 (case study 1)
  • percent operator (%) — 9.1
  • perceptually uniform colormap (viridis/inferno) — 26.5
  • perf (hardware counters) — 28.2, 28.4
  • performance analysis — 38.4
  • periodic boundary condition — 24.5
  • pFUnit — 16.5, 37.1
  • physics module — 36.2
  • PLATE (legacy kernel, modernized) — 19.1, 19.2, 19.3, Project Checkpoint
  • PLATE kernel — 17.6
  • PLATE kernel (modernized) — 18.4
  • playground (play.fortran-lang.org) — 16.4
  • pm3d (gnuplot) — 26.4
  • point ordering (x fastest) — 26.2
  • point-to-point communication — 34.2
  • POINT_DATA — 26.2
  • pointer — 11.1, 11.2, 11.4
  • pointer aliasing — 1.3
  • pointer assignment (=>) — 11.1
  • pointer chasing — 11.3
  • pointer component (vs allocatable) — 9.4
  • polyglot profile (Fortran + Python + HPC) — 40.4
  • polymorphic array (single dynamic type) — 10.2
  • polymorphic container — 11.5
  • polymorphism — 10.2
  • population dynamics (logistic, Lotka-Volterra) — 23.6
  • portability across compilers — 30.5
  • portable precision — 3.2
  • portfolio piece — 40.5, Project Checkpoint
  • positional association — 17.2
  • postcondition — 13.5
  • power density (thermal limit) — 31.1
  • precision (intrinsic) — 3.2, 20.2
  • precision loss — 13.6
  • precision vs accuracy — 20.6
  • precondition — 13.5
  • premature optimization — 28.5
  • premature optimization (Knuth) — 29.5, Overview
  • present (intrinsic) — 6.3
  • print '(a)' (formatted) — 2.2
  • print * (list-directed) — 2.2
  • print statement — 2.2, 7.2
  • private attribute — 8.2
  • private-by-default idiom — 8.2
  • problem statement (paper) — 38.2
  • procedure argument (integrand) — 22.2
  • procedure argument (RHS to a solver) — 23.1, 23.2, 23.4
  • procedure pointer — 11.5
  • process (MPI) — 34.1
  • product — 5.4
  • product rule (multidimensional) — 22.5
  • profile-guided optimization (PGO) — 30.4
  • profiling — 28.1, 28.2
  • profiling instrumentation (-pg) — 28.2
  • program / end program — 2.2
  • provenance — 37.5
  • public attribute — 8.2
  • publication-quality figure — 26.5
  • punch card (80 columns) — 17.1
  • pure — 6.4
  • pure (optimization implications) — 27.4
  • pure function (from statement function) — 19.3
  • put (remote write) — 32.2
  • PVD collection file (.pvd) — 26.3
  • Python orchestration layer — 15.1

Q

  • QUADPACK — 22.2, 22.3
  • quadratic formula (stable) — 20.3
  • quadrature — 22.2
  • quadruple precision (binary128) — 20.1, 20.6
  • Quantum ESPRESSO — 36.1
  • quick-reference table (Appendix E) — 19.5

R

  • race condition — 32.3
  • radians vs degrees — 3.5
  • rainbow / jet colormap (avoid) — 26.5
  • random seed (recording) — 37.5
  • range (intrinsic) — 3.2
  • rank — 5.1, 5.2, 34.1
  • rank (intrinsic) — 5.2
  • read statement — 7.2, 7.3
  • read_config (namelist) — Project Checkpoint
  • reading tracks — 1.6
  • README / LICENSE / abstract (packaging) — Project Checkpoint
  • real (type) — 3.1, 3.2
  • real do counter (deleted) — 4.3, 4.6
  • real equality pitfall — 4.1, 4.3
  • real(dp) / _dp suffix — 2.7
  • real64 — 3.2
  • reassociation (compiler) — 37.2
  • reassociation (floating-point) — 30.1
  • recl (record length) — 7.3
  • recompilation cascade — 8.3, 8.5
  • record — 7.3
  • record marker — 7.5
  • recording the flags — 30.4
  • RECTILINEAR_GRID / STRUCTURED_GRID / UNSTRUCTURED_GRID — 26.1
  • recursion — 6.5
  • recursive (attribute) — 6.5
  • reduction — 5.4
  • reduction (OpenACC clause) — 35.2 (case study 2)
  • reduction identity element — 33.3
  • reduction to first-order system — 23.4
  • refactoring — 18.1, 18.2
  • reference BLAS — 21.5
  • reference BLAS (Netlib) — 16.1
  • reference page (reading) — 21.4
  • register pressure — 29.1
  • regression reference (expected output) — 17.6
  • regression test — 18.3, 37.2
  • regression test (vs analytical) — 38.3
  • relational operator — 4.1
  • relational operators (.LT. vs <) — 19.4
  • rename on use (=>) — 8.1
  • repeat count (format) — 7.1
  • repeat count (in DATA) — 17.5
  • repeating binary fraction — 20.1
  • repetition (timing) — 28.5
  • reproducibility — 37.5, 38.6
  • reproducibility (metadata) — 25.5
  • reproducible build — 30.4
  • request handle — 34.4
  • research software engineer (RSE) — 40.2
  • reshape — 5.4
  • reshape (order=[2,1]) — 21.1
  • residency (keeping data on the device) — 35.4
  • residual (linear system) — 21.3
  • restrict (C keyword) — 1.3
  • restrict (C99) — 27.3
  • result clause — 6.1
  • result_image — 32.4
  • results and visualization — 38.5
  • revision cadence (five-year) — 39.2
  • Richardson extrapolation — 22.3
  • Richardson extrapolation (for integrators) — 23.3
  • right-hand-side function (RHS) — 23.1, 23.4
  • RK4 (classical fourth-order) — 23.2, 23.4, Project Checkpoint
  • Robertson problem (stiff benchmark) — 23.6
  • Romberg integration — 22.3
  • roofline intuition — Case Study 2
  • roofline model — 28.3, 29.2, 29.5, 38.4
  • round-off floor — 22.4
  • row-major vs column-major (tool display) — 25.2
  • Runge-Kutta method — 23.2
  • runtime aliasing check / loop versioning (C) — 27.3
  • résumé, presenting Fortran on — 40.4

S

  • save_every (output cadence) — 26.3, Project Checkpoint
  • SCALARS / LOOKUP_TABLE — 26.2
  • scaled speedup — 31.2
  • scan (intrinsic) — 12.2, 12.5
  • scarcity as leverage — 40.3
  • scheduling — 33.4
  • second difference (three-point) — 22.1, Project Checkpoint
  • second-difference (spatial) operator — 23.4, Project Checkpoint
  • segment (execution) — 32.3
  • segment ordering — 32.3
  • select case — 4.2
  • select case (replacing computed GOTO) — 19.2
  • select type — 10.3
  • selected_int_kind — 3.2
  • selected_real_kind — 3.2, 20.6
  • self time vs total time — 28.2
  • self-describing format — 7.5, 25.1, 25.3
  • separable solution (heat equation) — 37.2
  • separate memory spaces — 35.1, 35.4
  • separate module procedure — 8.3
  • separation of concerns (numerical) — 16.1
  • sequential access — 7.3
  • serial baseline — 38.4
  • serial fraction — 31.2, 31.4, 31.5
  • shallow copy / aliasing — 9.4
  • shape — 5.1, 5.2
  • shape (intrinsic) — 5.2, 5.4
  • shared memory — 31.3
  • short-circuit evaluation — 39.1
  • shuffle filter — 25.3
  • side effect — 6.4
  • sign / exponent / fraction fields — 20.1
  • significand (mantissa) — 20.1
  • silent copy (C-to-F) — 15.3
  • SIMD — 27.1, 27.5
  • SIMD (!$omp simd`, `!$omp do simd) — 33.5
  • SIMD (Single Instruction, Multiple Data) — 29.3
  • SIMD instruction set (AVX-512, native tuning) — 30.1
  • Simpson's rule — 22.2, 22.3
  • Simpson's-rule weights (in RK4) — 23.2
  • sin / cos / tan — 3.5
  • sind — 39.1, Project Checkpoint
  • single precision — 3.2
  • single precision (binary32) — 20.1, 20.6
  • singular value decomposition (SVD) — 21.4
  • size (intrinsic) — 5.1, 5.2, 5.4
  • slash edit descriptor (new record) — 7.1
  • slope field / direction field — 23.1
  • solver module — 36.2
  • source tree — 36.1, 36.4
  • sourced allocation (allocate source=) — 10.2
  • sp / dp / qp kinds — 20.6
  • spacing (intrinsic) — 20.2
  • sparse format (COO/CSR/CSC) — 21.6
  • sparse matrix — 21.6
  • speedup (10–100×, illustrative) — 15.5
  • speedup ceiling — 31.2
  • speedup ceiling (size of the prize) — 28.5
  • SPMD (Single Program, Multiple Data) — 32.1
  • SPMD (single program, multiple data) — 34.1
  • sqrt — 3.5
  • src/ app/ test/ layout — Project Checkpoint
  • stability (numerical) — 24.4
  • stable_dt (procedure) — 24.4, Project Checkpoint
  • standard_name / long_name — 25.5
  • standards process — 39.2
  • stat (allocation) — 13.1
  • statement function — 17.4
  • statement function (modernizing) — 18.4
  • statement function, translating — 19.3
  • statement label (columns 1–5) — 17.1
  • statistical sampling (profiler) — 28.2
  • status (open specifier) — 7.3
  • stdlib — 16.4
  • stdlib (Fortran standard library) — 39.3
  • stdlib_io — 16.4
  • stdlib_linalg (solve wrapper) — 21.3
  • stdlib_stats — 16.4
  • steady state — 24.1, 24.6, 38.5
  • steady state (as fixed-point test) — 37.2
  • steady-state hand-check (4x4 plate, 37.5/12.5) — Project Checkpoint
  • steady-state plate solution (37.5 / 12.5) — 18.4
  • stencil (1-D Laplacian) — 22.1, Project Checkpoint
  • stencil (procedure, optimized) — 29.1, 29.3, Project Checkpoint
  • step (procedure) — 24.3, Project Checkpoint
  • step doubling — 23.3
  • step size — 23.1, 23.3
  • step-size controller / safety factor — 23.3
  • stiffness — 23.5
  • stop code — 13.2
  • stop vs error stop — 13.2
  • storage_size (intrinsic) — 25.1
  • stream I/O — 7.5
  • stride — 5.2, 27.2
  • strong scaling — 31.4, 38.4
  • struct padding / alignment — 14.5
  • structure constructor — 9.1, 9.4
  • structure constructor for an extended type — 10.2
  • structured grid — 24.6
  • structured grid output — 26.1
  • STRUCTURED_POINTS dataset — 26.1, 26.2
  • submodule — 8.3
  • subnormal (denormal) — 20.4
  • subroutine — 6.1
  • subscript triplet — 5.2
  • substring — 12.3
  • sum — 5.4, 5.7
  • surface-to-volume ratio — 34.4
  • symmetry (as test) — 37.1
  • sync all — 32.3
  • sync images — 32.3
  • system of ODEs (first-order) — 23.4
  • system_clock (intrinsic) — 28.1

T

  • tag (message) — 34.2
  • target (attribute) — 11.1
  • task parallelism — 31.4
  • Taylor series (for error analysis) — 22.1
  • team — 32.4
  • team_type — 32.4
  • temporal blocking — 29.2
  • ternary operator (see conditional expression) — 39.1
  • test oracle — 37.1
  • test-drive — 16.5
  • text diff pitfall (compare numbers not text) — 18.3
  • text vs binary I/O (at scale) — 25.1
  • the 80/20 rule (Pareto principle) — 28.5
  • the no-aliasing advantage — 27.3
  • thermal diffusivity (alpha) — 24.1
  • this_image (cosubscripts form) — 32.2
  • this_image (intrinsic) — 32.1, 32.2
  • thread (team) — 33.1
  • threadIdx / blockIdx / blockDim — 35.3
  • threads per block — 35.3
  • throughput vs latency — 35.1
  • time-loop dependency — 31.5
  • time-series output — 26.3
  • time-stepping loop (heat solver) — Project Checkpoint
  • timers module (tic/toc) — 28.1, Project Checkpoint
  • tiny (intrinsic) — 20.2
  • token / delimiter — 12.5
  • tokenizer — 12.5
  • tolerance (floating-point comparison) — 37.1, 37.2
  • TOML — 16.3
  • TOP500 — 1.2
  • topological sort of dependencies — 8.5, 8.6
  • trailing-blank trap — 12.3, 12.6
  • transfer (intrinsic) — 17.3
  • transfer (intrinsic, replacing EQUIVALENCE) — 19.1
  • transfer intrinsic — 18.1
  • translation dictionary — 19.1, 19.5
  • transpose — 5.4, 21.1
  • trapezoidal rule — 22.2, 22.5
  • trim — 12.2, 12.3
  • truncation error — 22.1, 22.4
  • truncation toward zero — 3.4
  • tuned BLAS vs hand-rolled loop — 27.4
  • two-buffer update (parallel safety) — Project Checkpoint
  • two-language workflow — 15.1
  • two-pass variance — case study 2
  • type extension (inheritance) — 10.1
  • type is (guard) — 10.3
  • type promotion — 3.3
  • type vs class — 10.2
  • type-bound procedure — 9.2
  • typed allocation (allocate type ::) — 10.6
  • typeof — 39.1

U

  • ULP (unit in the last place) — 20.2
  • undefined behavior (aliasing violation) — 27.3, Case Study 1
  • undefined pointer — 11.2
  • undefined reference (link error) — 21.5
  • undefined reference (linker error) — 2.3
  • underflow — 20.4
  • unformatted I/O — 7.5
  • uninitialized variable — 13.6
  • unit — 7.3
  • unit roundoff — 20.2
  • unit stride — 29.1, 29.3, 29.4
  • unit test — 37.1
  • units (UDUNITS) — 25.5
  • unlimited dimension (time series) — 25.4 (exercises)
  • unlimited format repeat — 7.1, 7.4
  • unlimited-repeat format (*) — 26.4
  • unstructured grid — 24.6
  • unstructured grid (note) — 26.1
  • update self / update host — 35.4
  • use mpi vs mpi_f08 — 34.5
  • use statement — 8.1
  • use, only clause — 8.1, 8.5
  • utility module — 36.2

V

  • valgrind — 13.4
  • validate_config (heat solver) — 13 Project Checkpoint
  • validation — 38.3
  • validation (vs verification) — 37.2
  • value assignment through a pointer — 11.1
  • value attribute — 14.3, 14.4
  • value semantics — 9.4
  • variance / spread (timing) — 28.5
  • vector triad (STREAM) — Case Study 2
  • vector width (32-byte vectors, AVX) — 27.5
  • vectorization (intro) — 27.1, 27.2, 27.4, 27.5
  • vectorization report (-fopt-info-vec) — 29.3, 29.4
  • verification — 37.2, 38.3
  • verification and validation (V&V) — 38.3
  • verify (intrinsic) — 12.2, 12.5
  • version control (git, for science) — 37.4
  • version control (in migration) — 18.2
  • VisIt — 26.3
  • von Neumann stability analysis — 24.4
  • VTI (.vti XML ImageData) — 26.2
  • VTK (Visualization Toolkit) — 26.1, 26.2
  • VTK / ParaView (time series) — 38.5
  • VTK file format (legacy) — 26.1, 26.2
  • VTK magic string (# vtk DataFile Version 3.0) — 26.2
  • VTK XML format — 26.1, 26.2

W

  • wall-clock time — 28.1
  • warm-up — 28.5
  • warp — 35.1, 35.5
  • warp divergence — 35.5
  • wave equation — 24.1, 24.4
  • weak scaling — 31.4, 38.4
  • weather and climate services (NOAA, ECMWF, Met Office) — 40.1
  • weight (quadrature) — 22.2, 22.3
  • well-conditioned / ill-conditioned — 20.5
  • WG5 — 39.2
  • what reviewers check — 38.6
  • when GPUs help / when they don't — 35.5
  • when OOP helps / hurts — 10.5
  • where — 4.5, 5.7
  • where state lives — 36.5
  • where the time goes — 36.5
  • whole-array operation — 1.3, 5.3
  • WholeExtent (0-based) — 26.2
  • with-the-grain vs against-the-grain traversal — 27.2
  • work sharing — 33.2
  • workflow (CI, .yml) — 37.3
  • works-on-my-machine problem — 37.5
  • workspace query (lwork = -1) — 21.4
  • WRF (weather model) — 1.2, 36.1
  • write statement — 7.2, 7.3
  • write_field — Project Checkpoint
  • write_field_netcdf (project) — Project Checkpoint
  • write_vti — 26.2
  • write_vtk (canonical signature) — 26.2, Project Checkpoint
  • WSL (Windows) — 2.1

X

  • X edit descriptor (spaces) — 7.1