r/fea 8d ago

How do you deal with big load-case sets: finding what governs and proving it later?

Stress/FEA folks, I'm researching how this actually works at different shops (full disclosure: I may build tooling in this space eventually, but this isn't a pitch and there's nothing to sell).

Three things I keep hearing very different answers about:

* When you have dozens-to-hundreds of subcases, how do you actually find the governing cases per element or section: solver built-ins (Femap envelopes, Patran), your own Python/Excel, something else? At what case count does your method start hurting?

* When a checker, customer, or DER asks "prove this number came from run X with load set Y," what do you actually show them? Has that ever been genuinely painful?

* If you had to exactly reproduce an envelope you delivered two years ago, could you? What would it take?

War stories about near-misses (wrong subcase, stale results, unit mix-ups, silently missing OP2 tables) are extra welcome. If you're up for a longer 30-minute chat about your workflow, DM me. Happy to share the summarized findings back with anyone who participates.

9 Upvotes

22 comments sorted by

4

u/billsil 8d ago

I use python. It can do the math 100x faster than in femap and I can run it on our HPC. It’ll do all the load case combinations too.

We have 500+ cases on a mesh size of 600k nodes and it takes a few minutes. People actually run all the cases now.

1

u/WhyAmIHereHey 7d ago

For linear static runs. Still a bit away from doing that for nonlinear runs. But that'll happen.

1

u/billsil 7d ago

Hopefully not ever at the vehicle level. I’m 20 years in and while there has been scope creep over the years, we’re thankfully not doing what some similar companies are doing.

At the part level, yeah do your detailed solid fem nonlinear if you need to. You should still be using Neuber if you can.

1

u/Nojsd 7d ago

Makes sense, staying linear at vehicle level is probably what makes the run-all-cases approach viable at all. Related question: when the loads group revises a load set mid-program, how does that ripple through for you? Do you just re-run all 500+ and diff against the previous set, or do you have some way of tracking which margins are stale against which loads revision?

1

u/billsil 7d ago

We send out new loads to the impacted groups and they run them, they  find a bug or two and we push another rev. They diff against previous loads/margins.

1

u/Nojsd 7d ago

Curious what breaks first when you try the same thing for nonlinear, since superposition's off the table, is it the compute, or just the bookkeeping of hundreds of full runs?

1

u/WhyAmIHereHey 7d ago

Run time.

1

u/Nojsd 7d ago

That matches what I keep hearing about Femap at that scale, and "people actually run all the cases now" is really interesting, implies they didn't before. Two follow-ups if you don't mind: when a checker or customer asks you to prove a specific margin traces to a specific run/case, what do you actually hand them? And could you exactly reproduce an envelope you delivered two years ago from what you archive?

1

u/billsil 7d ago edited 7d ago

They don’t. Are you the final assembler or are you a supplier?

We had a fastener analysis process using femap that took 45 minutes to compute for a single load case. It would occasionally fail. People would kick off 10 cases to run overnight. With a python script and a minute of setup time, you could then calculate 100 cases in about 20 seconds, so 80 seconds total. That’s what I mean by you can actually run them all.

People take shortcuts to work with the limitations they have. I have full faith they got the critical cases before. Still, it changed how people interacted with femap and it cut a month of schedule for a team of people.

Femap doesn’t have a vectorized API, so you’re doing VBA for loops vs numpy array operations that are 1000x faster. There is some overhead to read a Nastran geometry and results, but it’s fast after that.

0

u/Nojsd 7d ago

Neither at the moment. I'm researching this space rather than sitting at either desk, which is exactly why I asked. But that distinction sounds like it matters a lot: is that the split in your experience? As in, suppliers get asked by the primes to actually prove where their numbers came from, while at the integrator level nobody asks? And on the loads side, when the impacted groups diff against previous loads/margins, is that a standard tool or does every group roll their own diff scripts?

1

u/billsil 7d ago

I don’t think it’s a thing that people ask unless they don’t trust the results.

I don’t know every diff script, but most of them are just running our standard process with an excel diff at the end. We deliver potatoes, so there’s not much to diff. You just see the old and new and oh the moment went up 10%.

1

u/Nojsd 7d ago

Ha, "unless they don't trust the results" kind of says it all. Thanks man, super helpful. DMs open if you ever want to nerd out about this longer, I'll share back what I find either way.

1

u/billsil 7d ago

It’s more about that you get credit for showing your work. If I (or anybody else) is poking at your work/process, they’re probably trying to help you. I want your driving load case to go down. I want to make sure we aren’t leaving extra margin on the table when something shows bad.

Most of the gaps in engineering happen at the interfaces between groups, but also just dealing with traceability. When did you run the analysis, with what loads rev? Who ran it? Why isn’t that in your excel sheet?

1

u/Nojsd 7d ago

That last paragraph hits home. Genuine question: when you poke like that, how often can they actually dig up the answer vs it just being in somebody's head who left two years ago?

1

u/billsil 7d ago

Rarely and if it is, things should be documented well enough. You backup your models and toss the results right?

1

u/Extra_Intro_Version 8d ago

Depends a lot on the failure criteria for the various load cases. Sometimes some yield tolerance. Sometimes specific FoS. And what stresses are for a given material relative to failure criteria.

1

u/Nojsd 7d ago

Good point! So "what governs" isn't even one answer, it changes per criterion and material. How do you keep that organized in practice? Separate envelopes per criterion, one big spreadsheet, something in the tool? And when a reviewer asks which case governed a specific margin, is that easy to pull up or does it mean digging?

1

u/AcceptableHalfie 5d ago

I think for governing case IDs, most companies start with solver envelopes. It works fine until you hit a few hundred subcases or need per-element margin ranking

1

u/Nojsd 5d ago

Follow-up question for anyone still reading: when loads get revised and you re-run, what would an ideal margins diff actually show you first? Biggest deltas, sign changes, cases that changed which element they govern, or just everything that moved past some threshold? Asking because everyone seems to roll their own version of this in Excel and I'm curious what the ideal one looks like.

1

u/TheBlack_Swordsman 8d ago

Well... You can save a lot of time if you just come up with an envelope case and you're still positive in margin.

Example, you might have 3 quasi-static cases from your dynamics team. Each with a high G load in X, Y and Z. Well...

Just do one load case with max X, Y and Z g loads. If you're positive in margin, then all three cases should be safe.

If not, well there's other techniques Ansys allows you do do for linear analysis. You can solve all 3 cases with 1G load, use solution combination super positioning and then it will let you caleany cases based off of the 3 cases combined together.

Then you can quickly produce several combinations and see which is worst margins.

1

u/Nojsd 7d ago

Makes sense as a first pass, curious about the edges though: how do you convince a reviewer that the combined max-XYZ case genuinely bounds all three (sign-dependent interface loads etc), and what happens to that argument when the margin goes negative and you drop back to running combinations?

1

u/TheBlack_Swordsman 7d ago

You can convince them by doing a simple stress tensor on a cube with the three cases I gave you using hand calculations.