Why LLMs Can’t Replace Domain Experts: A Software Engineer’s Hands-On Lesson in Geophysics
Today I woke up really early — before sunrise — and couldn’t fall back asleep. So I thought, “Why don’t I learn a bit of Geophysics by applying my knowledge in Computer Science?”
Don’t you all wake up like this?
Well, I started searching around to see what Geophysics-related jobs actually do, and I learned superficially that they try to find minerals, water, oil, or understand earthquakes — without digging everywhere.
Some of the typical steps involved are:
- Drill narrow holes in the ground to place different types of sensors.
- Inject signals (like electric current) into the ground to stimulate responses recorded by those sensors.
- Clean and process the recorded data.
- Create models to simulate what might be underground.
- Compare the simulation results with actual sensor data.
- Adjust the model to reduce the differences — a process called Inversion.
- Interpret the final results.
Sound familiar? Kinda like a Machine Learning loop, right?
There are software libraries that help with these steps. One example is SimPEG, which is Open Source.
I wanted to understand the basics, so I started my journey with the help of an LLM to build a very simple application that simulates a basic geophysical model — just to get a feel for how this process works.
So I asked:
Let’s say I want to build a very simple SimPEG-style app, but in Java. Let’s start with just the basics to understand how it works — and make it actually solve a simple problem using SimPEG as guidance.
The LLM answered (simplified, as it's actually a long read):
✅ Phase 1: Simulate a Simple DC Resistivity Problem
🎯 Goal: Simulate voltage at electrodes on the surface after injecting current into the ground — in 1D or 2D — using Ohm’s law and a basic PDE.📦 Key Components
- Mesh (Grid) – An array where each index has a conductivity value.
- PDE Solver – The math behind the app.
- Source – Where and how current is injected and withdrawn from the mesh.
- Receiver / Observation – What a voltmeter "reads" (useful for comparing to real-world data in the inversion step).
After coding around and asking several questions to understand better some of this stuff, I ended up plotting some results, which looked "good" when I injected electrical current at index 30 and withdrew it at index 70 (in a mesh/array of 100 cells):

Then I experimented further. I moved the injection point to index 1, and suddenly the plot showed something I didn’t quite understand:

Why is the potential near the injection point so small in magnitude compared to the previous experiment? And why is the value at the withdrawal point so much larger?
So I asked the LLM to explain this asymmetry, and here’s what it said:

After reading that, I realized: I have absolutely no idea what it’s talking about.
I’m not a physicist. I did enjoy science classes in high school and even got decent grades, but eventually I specialized in Computer Science.
And that’s okay.
This experience reminded me why LLMs and AI won’t replace domain experts anytime soon. But it also highlighted how powerful these tools can be for running fast experiments outside your comfort zone — in my case, stepping beyond software engineering into geophysics.
What do you think of this? Is my experiment app throwing random numbers? Be welcomed to review this experiment if you know about the subject in my GitHub repository here.
Comments
Login with GitHub to comment.