Some physics lists, such as Shielding (which includes NeutronHP) require that all of the materials in your geometry are created in advance. This is awkward, and makes dynamcially building your geometry more difficult.
I ended up creating a singleton container with a long series of nist->FindOrBuildMaterial() calls (as well as new G4Material calls for composites) for every material my geometry “might need.”
FTFP_BERT shouldn’t require advance material creation (at least it didn’t up to G4 10.3).
Is it possible your user is running a job where they switch materials, or change their geometry in some other way, between runs in the same job? If so, they need to set the runManager->GeometryHasBeenModified(); flag, so that the various physics tables get rebuilt.
Just to follow up with some more information. To observe the warning I set the environmental variable to: export G4CASCADE_VERBOSE=3
Using the FTFP_BERT reference physics list (same for QGSP_BERT).
The geometry is very simple just a box of lquid Argon in Vacuum. Then when I shoot pi+ on to the target I get the warnings that David Rivera was seeing.
*** Warning from HadronicInteraction::GetMinEnergy*
material G4_lAr not found in min energy List*
*** Warning from HadronicInteraction::GetMaxEnergy*
material G4_lAr not found in min energy List*
I suspect it’s ignorable, if it only appears with verbosity enabled. I looked into the code, but that message is way up in the base class. I suspect its important if you have a complex geometry where you’ve set different thresholds or model validity ranges in different parts. If your geometry is that simple, this shouldn’t be a problem.
I still suspect that something is wrong, because we do not see such warnings in other applications. This should not connect with material definition, because it is printout from energy range manager.
Note, that in 10.6 there was clean-up of this class and some fixes.