the problem with "Problem"
See original GitHub issueI had a chat with @dougoldenburg today and he brought to light some of the confusion introduced by the term Problem
in the framework, in particular when first introducing the SimPEG framework to new community members, which is perhaps indication of a more systemic issue.
Points of confusion
- often a first association with the word “Problem” is the thing you are trying to solve: the application, the reason you are considering inversion in the first place.
- “Problem” is over-used already. “Forward Problem”, “Inverse Problem”
- even in the paper, we use “problem” to mean two different things \cite{SimPEGpaper}
Potential Alternatives
Physics
GoverningEquations
PartialDifferentialEquations
PDE
Equations
In looking at the current Problem.py
and considering the construction of a forward simulation, I am (first pass!) partial to Equations
.
BaseProblem
-->BaseEquations
BaseTimeProblem
-->BaseTimeEquations
- perhaps
Problem.py
-->GoverningEquations.py
Then in a module, if we consider EM
BaseEMequations
BaseFDEMequations
Maxwell3D_e(BaseFDEMequations)
from SimPEG.EM import FDEM
equations = FDEM.Maxwell3D_e(mesh)
survey = FDEM.Survey(srcList)
equations.pair(survey) # or fwdSim = simulation(equations, survey) down the road
I look forward to hearing thoughts!
Issue Analytics
- State:
- Created 7 years ago
- Reactions:1
- Comments:13 (13 by maintainers)
Top Results From Across the Web
The Problem with Problems: Rooney, Rachel, Hicks, Zehra
Find out in this bold, humorous, and surprisingly insightful picture book that personifies "problems" as creatures, and skillfully teaches readers (big and ...
Read more >The Problem with Problems by Rachel Rooney
Find out in this bold, humorous, and surprisingly insightful picture book that personifies “problems” as creatures, and skillfully teaches readers (big and ...
Read more >THE PROBLEM WITH PROBLEM SOLVING - Oakland University
in interdisciplinary studies, and yet problem solving is one of the central ... structed nature of problems, to Foucault's critique of problematization, ...
Read more >The Problem with Problems by Rachel Rooney | Goodreads
This one-of-a-kind picture book will help little ones and grown-ups alike deal with their pesky problems, from award-winning children's poet ...
Read more >The Problem With Problems - By Rachel Rooney (hardcover)
Find out in this bold, humorous, and surprisingly insightful picture book that personifies problems as creatures, and skillfully teaches readers (big and small ......
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
This is only loosely related to this issue. But I would very much appreciate your feedback.
I created an issue related to
Survey
andModel
classes in a potential future version ofempymod
: https://github.com/empymod/empymod/issues/14.I would highly appreciate any of your thoughts and ideas, specifically from you experience with
SimPEG
. One benefit could be that it would be easier to implementempymod
intoSimPEG
, if I follow a similar set-up asSimPEG
.If we go with an extra
Simulation
class this would remove thepair
function (which made an initial parallel implementation I did with @bsmithyman difficult, as I recall) as well as add some ambiguity about where to put the functionscalc_jvec
,calc_fields
,calc_dpred
etc. (maybe some better introduction of pep8 here? and standards ofcalc
ulating things?).It would probably help out with
simulation.validate()
which could do a whole lot of things to try and catch errors before running a simulation or inversion.Something weird about the introduction of multi-parameter inversions is that you actually need not even have a
model
. All parameters could be set directly and there are no mappings at all! Making the higher-level interface for fields/data etc be empty calls; i.e.calc_fields()
.Another thing that is bugging me right now is if the simulation object is “stateful”, that is, does it have a
simulation.model
or are those stored somewhere else? Maybe in a slightly more generic cache than we have right now on the inversion object - which doeswarm_starts
so as to skip some steps in the initiation of an inversion. This could also be a better way of doingdeleteTheseOnModelUpdate
by just sayingphysics.cache.set(model, 'MfSigma', MfSigma)
andphysics.cache.clear()
. The cache could have it’s own settings on it for how long to remember things. This is implemented in a bunch of places including the receivers, fields and timemesh etc. If there were some better standards around this, than we could callsimulation.cache.clear()
to do a hard reset on everything.This is a slightly bigger discussion obviously, and a bit undirected. Wanted to get my thoughts down somewhere though.