A global finite element model is a load-path bookkeeper. Its job is to push internal loads around the airframe in the right proportions — to tell you how much axial goes through this spar cap, how much shear through that web, how the bending splits between skin and stringer. The stresses it reports at a fillet, a cutout, or a fastener hole are, politely, fiction. The mesh is coarse on purpose; CQUAD4s a centimetre across cannot resolve a gradient that decays over a couple of millimetres. So you do not ask them to.
The workflow that respects this: trust the GFEM for grid-point forces and element internal loads, then carry those into a detailed model that actually resolves the geometry. The art is in the carrying.
Three ways sub-modelling goes wrong
- Cutting the boundary too close. Saint-Venant is not a suggestion. The artificial stress field you impose at a cut boundary is wrong locally and only heals as you move away from it. Put the cut where the field has calmed down — a rule of thumb is at least one characteristic dimension (a panel width, a couple of stringer pitches) away from the feature you care about. Cut next to the hole and the hole stress is contaminated by your boundary.
- Applying displacements when you should apply forces. Displacement-driven (cut-boundary-displacement) sub-models inherit the global mesh’s stiffness errors directly: you are forcing the fine model to deform exactly as the coarse model did, errors and all. They are convenient — equilibrium is automatic — but if the local geometry is stiffer or softer than the GFEM represented (and it usually is, because that is the point of refining), the imposed displacements are subtly wrong. Force-driven boundaries let the fine mesh find its own stiffness, which is what you wanted, but now you are responsible for equilibrium across the cut. Whichever you choose, know which error you are buying.
- Forgetting the cases don’t commute. The detailed model has to see every sizing case the global model saw, not just the one that was worst globally. Local geometry changes the stress ratio between membrane and bending, between bearing and bypass — so the critical case can swap once you refine. The globally benign 1-g case can govern a fitting that is mean-stress-sensitive in fatigue. Run them all through the detail, then pick the worst at the detail.
The check that saves you
Sum the loads crossing your sub-model boundary — integrate the grid-point forces, the running shears, the section moments — and compare them to the same section in the GFEM. If they don’t reconcile to a percent or two, stop. Everything downstream is built on that reconciliation. A detailed model that quietly disagrees with the global load path is not “more accurate”; it is a different problem wearing the same geometry.
This is also where unit and sign discipline earns its keep. A pyNastran script that pulls GPFORCE at the boundary grids, resolves them into the section axes, and tabulates ΣFx, ΣFy, ΣFz, ΣM against the global free body takes an afternoon to write and saves you every time you touch that model afterward. Automate the free-body check, not just the stress recovery.
Stiffness has to match before loads can
One failure I see repeatedly: the detail is meshed beautifully but its boundary stiffness does not represent what the surrounding structure provides. A fitting modelled as fixed at its lugs when the real backup structure is springy will over-stiffen the load path and mis-split the reactions. If you are force-driving the boundary this matters less; if you are displacement-driving it, the global stiffness is your boundary condition and any error in the GFEM near that cut walks straight into the detail. When in doubt, model a generous skirt of surrounding structure at intermediate fidelity so the transition from coarse to fine is gradual, not a cliff.
Don’t lose the load path you came for
The reason to sub-model at all is that the GFEM told you a true thing about how load flows, and you want to resolve the local stress without changing that flow. So after the detailed run, go back and confirm the detail did not rob a path the global model relied on — that a cutout you finally resolved did not shed so much load that the adjacent member is now carrying more than the GFEM assumed. If it did, the honest move is to feed that stiffness change back up to the global model and iterate. The global and the detail are not a one-way handoff; they are a loop that you close when the load path is the same at both scales.
Coarse-to-fine is a discipline of bookkeeping, not cleverness. Keep the load path honest at the cut and the stresses inside take care of themselves.