Hi Neil, many thanks for your reply and your interest.
I was responding to you by developing a minimal example notebook to show (i) correct behaviour and (ii) the kernel crash. In doing so I extracted all the velocity solution method sections (which were very complicated) from the notebook and just read in the pre-calculated velocity solution from a dump file. Interestingly, as soon as I did this step, the kernel crash effect disappeared!
When dumping the solution I was very uncritical. After generating the velocity field I simply did the following:
DumpSave["velocity.mx","Global`"]
to save all entities in the Global context. Then in my blob Notebook just before the advection-diffusion code I read in the prior Global context using
<<"velocity.mx"
Then I go ahead to set parameter values and execute the NDSolveValue[] function as before. No problems!
As you can imagine I am both relieved and disturbed that this seems to avoid the kernel crash. Relieved because I can go ahead and calculate solutions with this work-around, but disturbed because I am no closer to understanding what the issue was in the first place.
Over the years I have encountered several issues where a notebook might get invisibly corrupted somehow, and I have had to manually copy and paste cells into a new notebook to get a clean working copy. Maybe my travails here are simply a different manifestation of this weirdness?
Cheers,
Mike