A global FE model is a bookkeeper for load paths. Its whole job is to push internal loads around the airframe in the right proportions: how much axial through this cap, how much shear through that web, how the bending splits between skin and stringer. The stress it reports at a fillet or a hole is, honestly, fiction. CQUAD4s a centimetre across can’t resolve a gradient that decays over a couple of millimetres, and they were never meant to. So you take the grid-point forces and element loads you trust, and you carry them into a detail model that actually resolves the geometry.

Carrying them is the bit people get wrong, and mostly in three ways. You cut the boundary too close to the feature, so the artificial field you impose at the cut is still contaminating the hole stress (Saint-Venant isn’t a suggestion, put the cut a characteristic dimension away). Or you apply displacements when you should apply forces, which quietly inherits the coarse model’s stiffness errors, the fine mesh deforms exactly like the coarse one did, wrong and all. Force-driving lets the fine mesh find its own stiffness, but now equilibrium across the cut is your problem, so at least know which error you bought. Or the cases don’t commute: the detail has to see every sizing case the global saw, not just whatever was worst globally, because refining changes the membrane-to-bending split and the critical case can swap on you.

A coarse global FE model with a dashed cut boundary around a detail, grid-point forces carried across to a fine detail model that resolves the hole geometry.
The cut is the contract: place it a characteristic dimension out, carry the grid-point forces across, and reconcile ΣF and ΣM before trusting anything inside.

Here’s the thing nobody documents and it drives me slightly mad. Sum the loads crossing your sub-model boundary, integrate the grid forces and the section moments, and compare to the same cut in the GFEM. If they don’t reconcile to a percent or two, stop. Everything downstream sits on that. A detail model that quietly disagrees with the global load path is just a different problem in the same geometry, dressed up as more accuracy. A little pyNastran script that pulls GPFORCE at the boundary grids and tabs up ΣF and ΣM against the global free body is an afternoon of work and it pays for itself the first time. Automate the free-body check, not just the stress recovery.