Skip to content

Conversation

@prisae
Copy link
Member

@prisae prisae commented Jan 23, 2026

This PR implements (finally) the possibility for an arbitrary waveform

  • Convert all loop examples
    • TEMFAST
    • WalkTEM -> Delay necessary? Bandpass filter necessary?
    • IP and VRM -> Check B; dB/dt stuff; Negative waveform times?
    • Others?
    • Ping folks of relevant examples for feedback
    • Compare waveform to signal={-1, 0, 1}
  • Create a comprehensive loop example (see info in Document better loops #232)
  • Document
  • Add tests
    • Test also against step-on, step-off, impulse

Examples that deal in one way or another with loops:

@prisae
Copy link
Member Author

prisae commented Jan 27, 2026

Hi @orerocks - this is the new implementation of the arbitrary waveform in empymod. Could you have a look at your example, and give me feedback (here or in the SimPEG chat) if your example looks OK to you?
Here is a render of your example: https://empymod--253.org.readthedocs.build/en/253/gallery/tdomain/ip_vrm.html

@prisae
Copy link
Member Author

prisae commented Jan 27, 2026

Hi @aignerlukas - this is the new implementation of the arbitrary waveform in empymod. Could you have a look at your example, and give me feedback (here or by email) if your example looks OK to you?
Here is a render of your example: https://empymod--253.org.readthedocs.build/en/253/gallery/tdomain/tem_temfast.html

@nwilliams-kobold
Copy link

nwilliams-kobold commented Jan 27, 2026

Looks great. A few general comments:

  • "WalkTEM -> Delay necessary? Bandpass filter necessary?": I don't have answers on this, but I think both are good practice:

    1. delay_rst is i think what we usually call "sensor delay" which basically describes the length of pause that happens from when the TX is nominally expected to achieve 0 current and when the timing gates start. It allows for natural variations in the ramp-down. If that's the case, then it should be a user-parameter defaulting to 0.0 seconds.
    2. Aarhus have made good points in the past about including instrumentation filters in modelling workflows, and this is a good example of that. However, most equipment suppliers don't adequately describe their instrument filters. Keeping this around is a good example of how one might do it. But maybe need to include a comment saying that if you don't know what to use, try without one.
  • One point that I had a really hard time with on the waveform in my production code was what happens when the waveform doesn't end at t=0, or where the ramp-down starts at t=0, but doesn't finish until later. The simple off-time heuristic in get_time wasn't enough. I ended up having to recompute the times relative to the end of the ramp, and cover a period of at least Ton + Toff. I may be doing overkill but it is working.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants