Simulate the Hypercane Yourself
The Inheritors: A Climate Fable is hard science fiction. This means it’s grounded in real scientific theory. I have even gone so far as to run a weather model simulation of the storm on which the novel is focused, for the purposes of having:
- A timeline for story events involving the storm
- A solid idea of certain intensities so that I know what events can and cannot unfold
- A defense against anyone claiming that this isn’t valid
In service of the last goal, I’m posting exactly what I did to get the storm simulation, so that anyone else could do the same if they chose.
Because this is a personal for-profit project, I used my own laptop, a gaming machine, to install the WRF-ARW model. I installed Linux Mint on a VirtualBox Virtual Machine first. I allocated it four processors. From there I installed all the required libraries for WRF (don’t ask me about this—it was a complicated process, and I didn’t take detailed notes on exactly what errors I encountered before successfully installing WRF and how I solved them, but it can be done) and then the model itself. I configured it for gfortran, smpar (option 33 in wrf-configure).
Because I was running what was, by definition, an ideal environmental situation, I built WRF as “wrf-ideal” for the tropical cyclone case. Instructions for this are described in the WRF User Guide. I changed the sea surface temperature in the code /WRF/dyn_em/module_initialize_tropical_cyclone.F from the default value (I think it’s 27°C) to 37°C, deleted the object file and ideal.exe executable, and recompiled.
The input sounding I used to configure the case is as follows. Note: This sounding is in WRF’s required format for the ideal tropical cyclone case. The temperature column is potential temperature. If you want to do this with a modified sounding, I recommend setting up a spreadsheet for pressure level, elevation, potential temperature, temperature, mixing ratio, vapor pressure, and maybe more. That’s what I did. The formulas are out there.
1015 297.880151832354 20.8549036 0 0
164 298.212 19.85 0.00E+00 0.00E+00
442.64 298.496543592629 19.52 0.00E+00 0.00E+00
610 299.58223068397 19.37 0.00E+00 0.00E+00
850 300.229396104895 15.37 0.00E+00 0.00E+00
914 302.146994335528 13.36 0.00E+00 0.00E+00
1303.42 301.878155385782 11.92 0.00E+00 0.00E+00
1583 302.426522236562 10.84 0.00E+00 0.00E+00
1829 303.275750223884 10.05 0.00E+00 0.00E+00
2070 304.231307452798 5.62 0.00E+00 0.00E+00
2438 304.353286164935 5.35 0.00E+00 0.00E+00
2482 306.894914680062 5.08 0.00E+00 0.00E+00
2743 307.968090192181 4.80 0.00E+00 0.00E+00
3228 307.47322871996 4.54 0.00E+00 0.00E+00
3658 307.461368498633 4.27 0.00E+00 0.00E+00
3942 308.643536803936 3.00 0.00E+00 0.00E+00
4267 309.630250701895 2.74 0.00E+00 0.00E+00
4465 311.544652635589 2.36 0.00E+00 0.00E+00
4877 311.736562454386 2.00 0.00E+00 0.00E+00
5182 313.007439041777 1.67 0.00E+00 0.00E+00
5770 311.897793704488 0.91 0.00E+00 0.00E+00
5940 314.718118766048 0.73 0.00E+00 0.00E+00
6401 315.087384325713 0.58 0.00E+00 0.00E+00
6773 316.488341045852 0.45 0.00E+00 0.00E+00
7315 316.50776260137 0.35 0.00E+00 0.00E+00
7650 318.773452109285 0.26 0.00E+00 0.00E+00
8230 318.949050361265 0.19 0.00E+00 0.00E+00
8839 318.3114 0.12 0.00E+00 0.00E+00
9144 321.5489 0.10 0.00E+00 0.00E+00
9760 321.6015 0.10 0.00E+00 0.00E+00
10526 320.2757 0.03 0.00E+00 0.00E+00
11030 322.7571 0.02 0.00E+00 0.00E+00
11882 321.5302 0.01 0.00E+00 0.00E+00
12500 324.2148 0.01 0.00E+00 0.00E+00
13382 324.4884 0.01 0.00E+00 0.00E+00
14290 325.8273 0.00 0.00E+00 0.00E+00
15363 326.7291 0.00 0.00E+00 0.00E+00
16660 326.9528 0.00 0.00E+00 0.00E+00
17983 397.4638 0.00 0.00E+00 0.00E+00
19737 467.0354 0.00 0.00E+00 0.00E+00
21946 541.0049 0.00 0.00E+00 0.00E+00
24070 598.1904 0.00 0.00E+00 0.00E+00
26086 627.3081 0.00 0.00E+00 0.00E+00
26670 678.3900 0.00 0.00E+00 0.00E+00
28651 762.9650 0.00 0.00E+00 0.00E+00
31290 858.278454102515 0.00 0.00E+00 0.00E+00
33921 1076.24347310025 0 0.00E+00 0.00E+00
It is a modification and combination of a real sounding from late August, Miami, FL, and the classic Jordan, J METEOR 15, 91-97, 1958 tropical cyclone sounding. The real-world Florida sounding, from 2021, had -78°C at the top and 29°C at the surface. The surface air was supersaturated, which mine is not.
It looks like this in skew-T log-P format. Close to saturation most of the way up, like the Jordan sounding. The lapse rate varies from 6.7 to 7.5.

The namelist file I used for WRF is as follows.
&time_control
run_days = 4,
run_hours = 0,
run_minutes = 0,
run_seconds = 0,
start_year = 2024, 2024,
start_month = 09, 09,
start_day = 1, 2,
start_hour = 0, 0,
start_minute = 00, 00,
start_second = 00, 00,
end_year = 2024, 2024,
end_month = 09, 09,
end_day = 5, 5,
end_hour = 0, 0,
end_minute = 00, 00,
end_second = 00, 00,
history_interval = 60, 60,
frames_per_outfile = 1, 1,
restart = .false.,
restart_interval = 180,
io_form_history = 2
io_form_restart = 2
io_form_input = 2
io_form_boundary = 2
/
&domains
time_step = 60,
time_step_fract_num = 0,
time_step_fract_den = 1,
max_dom = 2,
s_we = 1,1,
e_we = 151, 201,
s_sn = 1, 1,
e_sn = 151, 201,
s_vert = 1, 1,
e_vert = 31, 31,
i_parent_start = 1, 55,
j_parent_start = 1, 55,
parent_grid_ratio = 1, 5,
parent_time_step_ratio = 1, 10,
feedback = 0,
grid_id = 1, 2,
parent_id = 0, 1,
dx = 15000,
dy = 15000,
ztop = 35000.,
/
&physics
mp_physics = 6, 6,
ghg_input = 0,
ra_lw_physics = 1, 1,
ra_sw_physics = 1, 1,
radt = 5, 5,
sf_sfclay_physics = 2, 2,
sf_surface_physics = 1, 1,
bl_pbl_physics = 2, 2,
bldt = 0, 0,
cu_physics = 94, 94,
cudt = 0, 0,
isftcflx = 2,
/
&fdda
/
&dynamics
hybrid_opt = 0,
rk_ord = 3,
diff_opt = 1, 1,
km_opt = 1, 1,
diff_6th_opt = 2, 2,
w_damping = 1,
damp_opt = 1,
dampcoef = .003,
zdamp = 5000.,
rad_nudge = 1,
khdif = 300, 300,
kvdif = 1, 1, 1,
smdiv = 0.1, 0.1,
emdiv = 0.01, 0.01,
epssm = 0.1, 0.1,
time_step_sound = 4, 4,
h_mom_adv_order = 5, 5,
v_mom_adv_order = 3, 3,
h_sca_adv_order = 5, 5,
v_sca_adv_order = 3, 3,
mix_full_fields = .false., .false.,
non_hydrostatic = .true., .true.,
/
&bdy_control
periodic_x = .true., .true.,
symmetric_xs = .false., .false.,
symmetric_xe = .false., .false.,
open_xs = .false., .false.,
open_xe = .false., .false.,
periodic_y = .true., .true.,
symmetric_ys = .false., .false.,
symmetric_ye = .false., .false.,
open_ys = .false., .false.,
open_ye = .false., .false.,
/
&grib2
/
&namelist_quilt
nio_tasks_per_group = 0,
nio_groups = 1,
/
Some notes on this namelist.
- The cumulus physics option I used for both the outer (15km) and inner (3km) nest is not described in the user’s guide, but it’s the cumulus parameterization from the HWRF model, an operational model used in hurricane forecasting. I was unable to install the HWRF itself, because it requires a supercomputer, so I decided to make the WRF look as much like the HWRF as I could. This was one component of that process.
- The vertical damping flag (w_damping) is on because otherwise the model becomes numerically unstable and crashes without completing the run. This occurs because of extreme updrafts, exactly what one would expect in a hypercane simulation. The w_damping flag is therefore probably inhibiting the storm’s simulated intensity somewhat. But as you see in the output images, it’s not preventing it from reaching an incredible intensity.
- For the same reason (numerical instability), feedback between nest 1 and nest 2 is turned off. I don’t have nest 1 uploaded to the viewer except for the first twelve hours of realistic output (hours 12-24), but its central pressures became about 50 mb higher than those of nest 2. Higher pressures (lower intensities) are to be expected for lower-resolution domains. But if there had been two-way feedback–nest 2 sending its crazy pressures back to nest 1, instead of just nest 1 to nest 2–it’s easy enough to see why the model would have become unstable. But again, this is probably artificially limiting the storm’s intensity.
- WRF, like all numerical weather models, has a “spin-up” time before its output can be taken seriously. In the ideal tropical cyclone simulation case, there’s really no point in looking at the output until at least hour 12. It’s not realistic until then. It takes the model that long to spin up a realistic tropical cyclone vortex. This is why I didn’t initialize the 3 km nest until day 2 hour 0. The vortex wasn’t mature until that time. This would mirror real-world development of a hypercane, which would have to be a tropical storm and hurricane first.
I’m happy to answer questions about the namelist or sounding, with the caveat that this is for a work of science fiction rather than a scientific journal article. I’m sure it wouldn’t pass muster in the latter. But that’s not the purpose of this. That purpose was to show that this was possible and to get a simulated timeline and intensity level for the outline of my story.