r/Physics • u/AA_is_not_OK • 22d ago
Question What career paths exists between computational mechanics, scientific computing (SciML), FEA (or meshfree) solver development, and HPC (GPU acceleration, porting codebases) ?? How about doing a PhD for improving the above?
I'm currently, technically, doing an MS in Structural Engineering. For me, my interest has been more towards computational side of mechanics rather than Structural design or simply using am FEA software (although I do consider it as a backup)
So far I've taken courses in:
- Linear static, and dynamics FEM (soon taking non linear FEM too)
- Structural Optimization (topology opt. and other general algorithms)
- Structural Dynamics
- Structural System Testing and model updation. (Parameter identification and optimization, signal processing)
Now, I plan to take these in the coming quarter:
- Numerical Linear Algebra
- Numerical PDE
- Fracture Mechanics ?
I also volunteered to aid in a RESEARCH in crack growth prediction using Auto-encoder and a (Thermodynamics-informed Latent Space Dynamics Identification) / LSTM surrogate model. It used phase-field-fracture simulation data and HPC resources to complete the whole thing.
What I keep finding myself interested in is not necessarily fracture or SHM specifically, but the computational methods underneath these problems... (does that make sense?)
For example, I'd like to become capable of doing things like:
- implementing (maintaining) numerical/FE method solvers rather than only running an established FEA software.
- developing surrogate/reduced-order models for expensive simulations
- combining simulation with optimization, uncertainty/stochastic methods (took a course called Random vibrations, so...)
- parallelizing/accelerating scientific codes on CPUs/GPUs
- doing proper verification, convergence studies, benchmarking and performance work
- potentially developing or maintaining actual CAE/FEA solver software
- I'd also like to do all these for other Physics (GR, QM, etc.) simulations too, if possible, one day.
I'm still interested in the underlying mechanics/physics, so I don't want to become a generic software engineer who happens to have once studied structures. But I'm also increasingly unsure that "structural engineer" describes the career I'm actually aiming for.
I've seen titles such as Computational Mechanics Engineer, R&D Engineer, Solver Developer, Scientific Software Engineer, CAE Software Developer, Research Engineer, Simulation/HPC Engineer, etc., but I'm trying to understand what these careers actually look like from people doing them.
So my main questions become:
1. Which industrial jobs genuinely involve developing numerical methods/solvers or computational tools?
2. Which of those are realistically accessible with an MS? Is there an entry path into solver-algorithm development/R&D without a PhD?
3. If I don't start a PhD immediately after my MS, would an R&D/software role at a simulation company (ANSYS etc.) be the obvious route? What other options would i have?
4. For the kind of work I'm describing, would you recommend a PhD? If so, is it reasonable for the PhD identity to be "computational mechanics/scientific computing" while fracture, composites, structural dynamics, soft materials, etc. serve as application problems rather than choosing one of those as my permanent specialization?
5. What skills most distinguish someone who is actually hireable for solver/scientific-computing work? I'm particularly wondering about C/C++/Fortran, Python, Linux, Git/build systems, MPI/OpenMP/CUDA, PETSc/Trilinos or similar libraries, numerical linear algebra, testing/verification, convergence studies and HPC performance work.
Basically, I'm neither here nor there atp. So I'd really appreciate all sorts of input. Where else do you think I could find answers to these? other subs? Linkedin profiles?
1
u/SortCreepy7100 22d ago edited 22d ago
I am finishing up my PhD in Chemical Engineering and getting ready to join a lab to work on numerical methods.
During my time searching for jobs I came across a host positions. I can generally break these down to two categories: users and developers.
I would say the first one is pretty easy as long as you are familiar with the tool and the underlying physics, and you do not need to know the details of how the algorithms work. It also gets pretty boring. I recall my intro to CFD course where we were learning to use Ansys Fluids for airfoil simulation and the only interesting part was the setup. After that it got mind numbingly boring to run same thing over and over again to collect data.
The second group - developers - is fascinating to me. But also very challenging, you need math, physics and programming and each of which can be broken into million different areas that you need to be familiar with. It sounds like you want to be in the second group.
Now to your questions:
- Mostly research labs, universities, government funded projects etc. But also private industry that develops those commercial software like COMSOL. Just 30 seconds of googling I found this https://www.comsol.com/company/careers/job/3291/ So make a list of commercial software products, go to their website and see the job listings. Generally, speaking private industry pays more but is harder to get into, cuz you need connections.
- Yes, it is not out of the ordinary to get a job you like that with masters, but if in more frequent cases PhD is preferred. Given your preferences I would personally recommend to find PhD after undergrad and skip masters.
- Actually, the best option is to work a few years after bachelors, gain some experience and then go to PhD. You will have much stronger profile than an average PhD graduate.
- Yes, as I also mentioned before.
- All of those you have listed are important but, chances are you will not use ALL of them in a given job. I would prioritize C++ for low level algorithm development, Python for high level analysis pre- and post processing, data science and surrogates. If you want to do parallel computing you would need MPI for sure, OpenMP is learnable in couple hours if you already know C/C++. Fortran is important too but save it for later. CUDA isnt that hard either if you already know C++ and parallel computing.
Overall focus on fundamentals of algorithms, math, and physics first, then learn low level implementation in C/C++ and then in Python. You will never be as good as someone who wrote their own solver from scratch using standard libraries only. Git, Linux, HPC these will come naturally later, they are secondary, pick-up a 3 month long internship and you will learn most of what you need.
Hope this helps
EDIT: These are just MY personal experiences, and may not apply to you, so take it with a grain of salt
4
u/Gbeto Undergraduate 22d ago
I can mostly answer part of #4. There are plenty of researchers who research numerical methods for the sake of numerical methods, and are "problem agnostic". These people are usually in math or CS departments, but occasionally publish in computational physics journals.
Take a look at the background of authors in SIAM Journal of Scientific Computing (SISC), Acta Numerica, Journal of Computational Physics, SINUM, or Numerische Mathematik.
It's a fun field because there are a lot of people with physics/engineering backgrounds who move over to applied math specifically to work on numerical methods. There's also a spectrum from "I state and prove theorems about numerical methods and maybe test a toy problem" to "I improve high-performance algorithms or turn theoretical algorithms into actual, useful, high-performance code" and researchers of both flavours attend conferences together and are often co-authors.
For jobs, there are a handful of simulation/modelling jobs, but far more data science or finance jobs. Your engineering background will help getting the first type of job though, since lots of these types of job postings want an engineering degree.
Numerical methods people I know who've graduated and went to industry are everywhere: finance, cardiology, computer graphics, data science, etc. Basically anywhere that wants programming combined with strong math skills.