Time discretization revisited

Hi all,

One more question to the time discretization – is there a rule of thumb on how to set the time discretization?

I’ve tried to use several discretizations on a simple half-space model but the results are completely different. The test script is here home_honza_.config_spyder-py3_temp.pdf (57.0 KB)

The model obrazek

and detail

The discretization

prb.timeSteps = [(1e-8, 20), (1e-7, 20), (2e-7, 10), (1e-6, 10), (2e-6, 10), (1e-5, 10), (3e-5, 10), (1e-4, 10), (5e-4, 10), (1e-3, 10)]

gives the following


whereas uniform fine discretization
prb.timeSteps = [(1e-5, 1500)]

yields completely different image

a discretization used elswhere
prb.timeSteps = [(1e-3, 5), (1e-4, 5), (5e-5, 10), (5e-5, 5), (1e-4, 10), (5e-4, 10)]

leads to a different image again

Sorry for the dull question, but what I miss?

And one more thing – is it possible to specify the rx loop size somewhere? I want to model the ABEM WalkTEM data, which has concentric rx and tx loops.

Hi @Jan, Thanks for including all of these images!

First, I want to clarify what the prb.timeSteps = [] is. From your example,

prb.timeSteps = [(1e-5, 1500)]

The first number is the width of the timestep in seconds (1e-5s) and the second value is the number of steps taken at that width. Generally, we want to start with short time-steps at early times when the fields are changing rapidly and then we can coarsen as the the fields are changing more slowly.

It is generally worth plotting your waveform and looking at the discretization around it to make sure that it is being sufficiently captured. In the example where you are using a starting with widths of 1e-3 (the last example you show), I suspect that the waveform isn’t being sufficiently captured.

In the first example that you show, I doubt that you need to be refined much more than 1e-6s. The second example looks good at later times (we expect db/dt over a halfspace to be linear on a log-log plot at later times). At the very early times, you might need a bit more refinement. So I would suggest trying an example similar to your second one with prb.timeSteps = [(1e-5, 1500)] but include a bit more refinement initially, e.g. something like prb.timeSteps = [(1e-6, 20), (3e-6, 20), (1e-5, XX)]

I hope this helps! Please feel free to follow up with further questions. I will be working on trying to be more timely with discourse follow-ups :slight_smile: