你已经派生过 gprMax
镜像自地址
https://gitee.com/sunhf/gprMax.git
已同步 2025-08-08 07:24:19 +08:00
Reformated some 'if statements' to make them more simpler with less amount of code.
这个提交包含在:
@@ -54,18 +54,21 @@ class Waveform:
|
|||||||
waveforms.
|
waveforms.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if (self.type == 'gaussian' or self.type == 'gaussiandot' or
|
if self.type in [
|
||||||
self.type == 'gaussiandotnorm' or self.type == 'gaussianprime' or
|
'gaussian',
|
||||||
self.type == 'gaussiandoubleprime'):
|
'gaussiandot',
|
||||||
|
'gaussiandotnorm',
|
||||||
|
'gaussianprime',
|
||||||
|
'gaussiandoubleprime',
|
||||||
|
]:
|
||||||
self.chi = 1 / self.freq
|
self.chi = 1 / self.freq
|
||||||
self.zeta = 2 * np.pi**2 * self.freq**2
|
self.zeta = 2 * np.pi**2 * self.freq**2
|
||||||
elif (self.type == 'gaussiandotdot' or
|
elif self.type in ['gaussiandotdot', 'gaussiandotdotnorm', 'ricker']:
|
||||||
self.type == 'gaussiandotdotnorm' or self.type == 'ricker'):
|
|
||||||
self.chi = np.sqrt(2) / self.freq
|
self.chi = np.sqrt(2) / self.freq
|
||||||
self.zeta = np.pi**2 * self.freq**2
|
self.zeta = np.pi**2 * self.freq**2
|
||||||
|
|
||||||
def calculate_value(self, time, dt):
|
def calculate_value(self, time, dt):
|
||||||
"""Calculates value of the waveform at a specific time.
|
"""Calculates the value of the waveform at a specific time.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
time: float for absolute time.
|
time: float for absolute time.
|
||||||
@@ -82,7 +85,7 @@ class Waveform:
|
|||||||
delay = time - self.chi
|
delay = time - self.chi
|
||||||
ampvalue = np.exp(-self.zeta * delay**2)
|
ampvalue = np.exp(-self.zeta * delay**2)
|
||||||
|
|
||||||
elif self.type == 'gaussiandot' or self.type == 'gaussianprime':
|
elif self.type in ['gaussiandot', 'gaussianprime']:
|
||||||
delay = time - self.chi
|
delay = time - self.chi
|
||||||
ampvalue = -2 * self.zeta * delay * np.exp(-self.zeta * delay**2)
|
ampvalue = -2 * self.zeta * delay * np.exp(-self.zeta * delay**2)
|
||||||
|
|
||||||
@@ -91,7 +94,7 @@ class Waveform:
|
|||||||
normalise = np.sqrt(np.exp(1) / (2 * self.zeta))
|
normalise = np.sqrt(np.exp(1) / (2 * self.zeta))
|
||||||
ampvalue = -2 * self.zeta * delay * np.exp(-self.zeta * delay**2) * normalise
|
ampvalue = -2 * self.zeta * delay * np.exp(-self.zeta * delay**2) * normalise
|
||||||
|
|
||||||
elif self.type == 'gaussiandotdot' or self.type == 'gaussiandoubleprime':
|
elif self.type in ['gaussiandotdot', 'gaussiandoubleprime']:
|
||||||
delay = time - self.chi
|
delay = time - self.chi
|
||||||
ampvalue = (2 * self.zeta * (2 * self.zeta * delay**2 - 1) *
|
ampvalue = (2 * self.zeta * (2 * self.zeta * delay**2 - 1) *
|
||||||
np.exp(-self.zeta * delay**2))
|
np.exp(-self.zeta * delay**2))
|
||||||
@@ -116,17 +119,12 @@ class Waveform:
|
|||||||
elif self.type == 'contsine':
|
elif self.type == 'contsine':
|
||||||
rampamp = 0.25
|
rampamp = 0.25
|
||||||
ramp = rampamp * time * self.freq
|
ramp = rampamp * time * self.freq
|
||||||
if ramp > 1:
|
ramp = min(ramp, 1)
|
||||||
ramp = 1
|
|
||||||
ampvalue = ramp * np.sin(2 * np.pi * self.freq * time)
|
ampvalue = ramp * np.sin(2 * np.pi * self.freq * time)
|
||||||
|
|
||||||
elif self.type == 'impulse':
|
elif self.type == 'impulse':
|
||||||
# time < dt condition required to do impulsive magnetic dipole
|
# time < dt condition required to do impulsive magnetic dipole
|
||||||
if time == 0 or time < dt:
|
ampvalue = 1 if time == 0 or time < dt else 0
|
||||||
ampvalue = 1
|
|
||||||
elif time >= dt:
|
|
||||||
ampvalue = 0
|
|
||||||
|
|
||||||
elif self.type == 'user':
|
elif self.type == 'user':
|
||||||
ampvalue = self.userfunc(time)
|
ampvalue = self.userfunc(time)
|
||||||
|
|
||||||
|
在新工单中引用
屏蔽一个用户