The Fortran standard does not define a specific Fortran module file format.
Each compiler vendor has a unique incompatible Fortran module file format.
Fortran module files are not portable between different compilers or even different versions of the same compiler.
Intel oneAPI .mod files are
a proprietary binary format.
It is possible to determine the version of the .mod file by using
od
to look at the first 2 bytes of the .mod file.
od -An -N4 -d <moduleName>.mod
The first number is like “13” and is the module format version.
This version may change over time as oneAPI internals change.
The second number is the update version, which is fixed at “1”.
There is an undocumented “ifx” compiler option -switch:fe_module_dump that outputs the module and submodule data in text format.
NVIDIA HPC SDK (NVHPC) and AOCC compilers generate .mod files that are text files.
The format for legacy Flang module files is distinct from LLVMFlang Fortran module files.
The .mod file is a text file, beginning with the version number.
By default, Cray Fortran stores uppercase DUMMY.mod filenames.
This can be made lowercase with the ftn -ef flag.
The
Cray Fortran .mod format
is proprietary, but the version number might be seen like:
At WWDC25 on June 9 2025, Apple announced that macOS 27 would no longer support Intel CPUs.
In August 2025, Homebrew announced under
Future macOS Support
that by the end of summer 2026, Intel CPU Macs would no longer receive binary “bottles” and would be deprioritized to Tier 3 in general.
Homebrew Tier 3 status implications includes:
Homebrew may work, but with a poor and unstable experience
Migration to a Tier 1 or 2 configuration or to a non-Homebrew tool is strongly recommended
Homebrew is
not distributing binary “bottles” for Intel CPU
Mac hardware.
This means that commands “brew upgrade” or “brew install” may take a long time (hours) as packages are compiled from source - or may even fail.
The
Fortran 202x standard
raises the individual Fortran source code line limit to 10000 characters.
The new limits also include unlimited continuation lines and a maximum statement length of one million characters.
These are stated as “hard limits”.
As has historically been the case, many compilers continue to allow going beyond the line limit in a line or beyond even ten million characters in a statement.
LLVMFlang is explicitly designed without a particular character limit per line.
Fortran standard
source code line length limit
202x
10000
90
132
77
72
Compiler differences in default maximum source code line length can lead to portability issues.
For example, Linux workstations or Linux HPC may default to a GCC Gfortran older than version 14 that has a default Fortran source code line length maximum of 132 characters, which is too short for say generated source code containing a data path on a networked HPC drive.
It’s important to be cognizant of the maximum Fortran line length across compilers as developer laptops often default to a recent Flang or Gfortran that both have effectively unlimited line length.
Use Poppler to extract the original high-resolution images from the PDF.
This generally yields better quality images than screenshoting
Note: only raster images can be exported with Poppler
tools.
List all PDF images:
pdfimages -list in.pdf
Extract PDF images from all pages, dumping all images in mydoc.pdf to the same directory.
Filenames start with out-.
There might be a lot of images.
pdfimages -all in.pdf out
Extract PDF images from specific pages: example is for page 3 only:
The free Poppler library includes command line
tools
that can easily extract pages from a PDF file, or combine pages from multiple PDF files into one PDF file.
To do so with Adobe Acrobat or FoxIt generally requires a paid license, but Poppler is a free open-source library.
Extracting page(s) from a PDF into a series of separate PDF files is done with
pdfseparate.
For example, extract pages 2 to 4 from “in.pdf” to files “out-2.pdf”, “out-3.pdf” and “out-4.pdf” using Poppler:
pdfseparate -f 2 -l 4 in.pdf out-%d.pdf
Combining multiple PDF files into one PDF file is done with
pdfunite.
For example, combine “in1.pdf”, “in2.pdf” and “in3.pdf” into “out.pdf” using Poppler:
The company
Live Sports Radio
has been using low-band (channel 2-5)
VHF TV channels
for no-delay live FM broadcasts within sports areas.
They have been issued hundreds of STAs (Special Temporary Authorizations) by the FCC under FRN 0017507716 to operate on these channels, which are normally reserved for television.
The broadcasts are intended to be received by fans in stadiums and arenas, providing live commentary and updates during sporting events.
They generally use separate video (to tell people how to tune in) and audio (the actual sports broadcast) channels, with the audio being transmitted as analog FM compatible with broadcast receivers capable of tuning.
Wide-band multi-digital decode chips like the
NXP TEF6688
cost about $5 in production quantities and radios containing the TEF6686 retail for around $70, covering the 65 - 108 MHz range plus extensive shortwave and mediumwave AM coverage.
This type of chip is too expensive for a give-away promotion radio, so less expensive receivers, using chips like the RDA5807 covering 50 MHz to 108 MHz would be used.
Off the shelf radios selling in the $10 range cover 64 MHz to 108 MHz, and with slight customization I believe the vendor could obtain $5 radios covering 50 MHz to 108 MHz, which would be ideal for this application.
The ERP of the transmissions is typically STA authorized at 5 watts.
They have been specified to use the
Trival AD-44/CW-AH2
which is quite inefficient at these frequencies and only rated for 10 watts input power.
They should consider using a more efficient transmit antenna.
Qi 2.2 or
Qi2 25W
finally makes wireless charging universal for supported phones with Magnetic Power Profile (MPP).
For phones / devices having built in MPP magnets - or a case with magnets - the alignment issues are solved, and the 25 watt charging speed is fast enough to remove most need for plug-in charging of phones.
The Google Pixel 11, iPhone 17, and similar flagship phones natively support Qi2 25W, which allows true corded-like charging speeds with a robust magnetic interface.
Qi 1.x has been widely available for over a decade, and has long been plagued in practical use with problems associated with a need for tight physical alignment, heat, and slow charging speeds.
Note that while Qi2 25W devices are generally backward compatible, there are some older Qi 1.x devices including the Pixel Stand 2 that may not charge newer devices due to mechanical alignment issues.
The original 5 watt Qi was OK for overnight charging.
USB-PD wired quick charging can yield charging in 30 minutes for 50%.
Qi 1.3 Extended Power Profile (EPP)
can yield 15 watt charge with appropriate devices and a 30 watt USB-PD power adapter.
15 to 25 watts is close enough to wired USB-PD, useful for top-off charging.
Having adequate USB-PD input power (e.g. 30 watt wall power USB-PD adapter) to the Qi wireless charger is vital to meet full power charging specs.
The closer the phone (thinner the case) and better aligned the phone is, the faster and cooler it will charge.
If the device is getting too hot, it will backoff the charge rate to maintain appropriate temperature.
The thermal insulating effect of the phone case retains extra heat from charging.
MPI on Windows with C and Fortran is
best accomplished with Windows Subsystem for Linux (WSL) using OpenMPI or MPICH,
which gives full performance MPI.
For x86_64 CPUs,
Intel MPI library
has full MPI support including the Fortran “mpi_f08” interface.
Using WSL to use MPI on Windows is especially important for
ARM64 CPUs,
which are not supported by Microsoft MS-MPI at the time of writing.
We use WSL on Windows for MPI because the “mpi_f08” interface is
not yet natively available on Windows
via
Microsoft MS-MPI
whether with or without MSYS2.
Neither OpenMPI or MPICH is buildable or available with native Windows.
To install Microsoft MPI on an x86_64 CPU machine, one can use the Windows Package Manager (winget) to install MS-MPI:
winget search Microsoft.msmpi
The MSYS2 MS-MPI library can be installed from the MSYS2 Terminal:
pacman -S mingw-w64-ucrt-x86_64-msmpi
Upon installing or updating Intel oneAPI compilers and libraries on Windows, you may experience CMake failing to find MPI for MinGW.
This happens because Intel compilers put Intel MPI on the system PATH.
Fix this by removing Intel MPI from the system PATH and use the Intel Compiler shell instead, which provides all the needed directories.