你已经派生过 gprMax
镜像自地址
https://gitee.com/sunhf/gprMax.git
已同步 2025-08-08 07:24:19 +08:00
Refactor Waveform UserObject
这个提交包含在:
@@ -215,7 +215,7 @@ class Waveform(UserObjectMulti):
|
|||||||
self.order = 2
|
self.order = 2
|
||||||
self.hash = "#waveform"
|
self.hash = "#waveform"
|
||||||
|
|
||||||
def build(self, grid, uip):
|
def build(self, model, uip):
|
||||||
try:
|
try:
|
||||||
wavetype = self.kwargs["wave_type"].lower()
|
wavetype = self.kwargs["wave_type"].lower()
|
||||||
except KeyError:
|
except KeyError:
|
||||||
@@ -229,6 +229,7 @@ class Waveform(UserObjectMulti):
|
|||||||
)
|
)
|
||||||
raise ValueError
|
raise ValueError
|
||||||
|
|
||||||
|
grid = uip.grid
|
||||||
if wavetype != "user":
|
if wavetype != "user":
|
||||||
try:
|
try:
|
||||||
amp = self.kwargs["amp"]
|
amp = self.kwargs["amp"]
|
||||||
@@ -236,7 +237,7 @@ class Waveform(UserObjectMulti):
|
|||||||
ID = self.kwargs["id"]
|
ID = self.kwargs["id"]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
logger.exception(
|
logger.exception(
|
||||||
self.params_str() + (" builtin waveforms " "require exactly four parameters.")
|
self.params_str() + (" builtin waveforms require exactly four parameters.")
|
||||||
)
|
)
|
||||||
raise
|
raise
|
||||||
if freq <= 0:
|
if freq <= 0:
|
||||||
@@ -246,7 +247,7 @@ class Waveform(UserObjectMulti):
|
|||||||
)
|
)
|
||||||
raise ValueError
|
raise ValueError
|
||||||
if any(x.ID == ID for x in grid.waveforms):
|
if any(x.ID == ID for x in grid.waveforms):
|
||||||
logger.exception(self.params_str() + (f" with ID {ID} already " "exists."))
|
logger.exception(self.params_str() + (f" with ID {ID} already exists."))
|
||||||
raise ValueError
|
raise ValueError
|
||||||
|
|
||||||
w = WaveformUser()
|
w = WaveformUser()
|
||||||
@@ -273,14 +274,14 @@ class Waveform(UserObjectMulti):
|
|||||||
except KeyError:
|
except KeyError:
|
||||||
logger.exception(
|
logger.exception(
|
||||||
self.params_str()
|
self.params_str()
|
||||||
+ (" a user-defined " "waveform requires at least two parameters.")
|
+ (" a user-defined waveform requires at least two parameters.")
|
||||||
)
|
)
|
||||||
raise
|
raise
|
||||||
|
|
||||||
if "user_time" in self.kwargs:
|
if "user_time" in self.kwargs:
|
||||||
waveformtime = self.kwargs["user_time"]
|
waveformtime = self.kwargs["user_time"]
|
||||||
else:
|
else:
|
||||||
waveformtime = np.arange(0, grid.timewindow + grid.dt, grid.dt)
|
waveformtime = np.arange(0, model.timewindow + grid.dt, grid.dt)
|
||||||
|
|
||||||
# Set args for interpolation if given by user
|
# Set args for interpolation if given by user
|
||||||
if "kind" in self.kwargs:
|
if "kind" in self.kwargs:
|
||||||
@@ -289,7 +290,7 @@ class Waveform(UserObjectMulti):
|
|||||||
kwargs["fill_value"] = self.kwargs["fill_value"]
|
kwargs["fill_value"] = self.kwargs["fill_value"]
|
||||||
|
|
||||||
if any(x.ID == ID for x in grid.waveforms):
|
if any(x.ID == ID for x in grid.waveforms):
|
||||||
logger.exception(self.params_str() + (f" with ID {ID} already " "exists."))
|
logger.exception(self.params_str() + (f" with ID {ID} already exists."))
|
||||||
raise ValueError
|
raise ValueError
|
||||||
|
|
||||||
w = WaveformUser()
|
w = WaveformUser()
|
||||||
@@ -297,9 +298,7 @@ class Waveform(UserObjectMulti):
|
|||||||
w.type = wavetype
|
w.type = wavetype
|
||||||
w.userfunc = interpolate.interp1d(waveformtime, uservalues, **kwargs)
|
w.userfunc = interpolate.interp1d(waveformtime, uservalues, **kwargs)
|
||||||
|
|
||||||
logger.info(
|
logger.info(self.grid_name(grid) + (f"Waveform {w.ID} that is user-defined created."))
|
||||||
self.grid_name(grid) + (f"Waveform {w.ID} that is " "user-defined created.")
|
|
||||||
)
|
|
||||||
|
|
||||||
grid.waveforms.append(w)
|
grid.waveforms.append(w)
|
||||||
|
|
||||||
|
在新工单中引用
屏蔽一个用户