你已经派生过 gprMax
镜像自地址
https://gitee.com/sunhf/gprMax.git
已同步 2025-08-07 23:14:03 +08:00
Changed to new-style classes.
Added a super class for sources.
这个提交包含在:
@@ -24,9 +24,9 @@ from gprMax.grid import Ix, Iy, Iz
|
|||||||
from gprMax.utilities import round_value
|
from gprMax.utilities import round_value
|
||||||
|
|
||||||
|
|
||||||
class VoltageSource:
|
class Source(object):
|
||||||
"""The voltage source can be a hard source if it's resistance is zero, i.e. the time variation of the specified electric field component is prescribed. If it's resistance is non-zero it behaves as a resistive voltage source."""
|
"""Super-class which describes a generic source."""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.ID = None
|
self.ID = None
|
||||||
self.polarisation = None
|
self.polarisation = None
|
||||||
@@ -35,9 +35,16 @@ class VoltageSource:
|
|||||||
self.zcoord = None
|
self.zcoord = None
|
||||||
self.start = None
|
self.start = None
|
||||||
self.stop = None
|
self.stop = None
|
||||||
self.resistance = None
|
|
||||||
self.waveformID = None
|
self.waveformID = None
|
||||||
|
|
||||||
|
|
||||||
|
class VoltageSource(Source):
|
||||||
|
"""The voltage source can be a hard source if it's resistance is zero, i.e. the time variation of the specified electric field component is prescribed. If it's resistance is non-zero it behaves as a resistive voltage source."""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super(Source, self).__init__()
|
||||||
|
self.resistance = None
|
||||||
|
|
||||||
def update_electric(self, abstime, updatecoeffsE, ID, Ex, Ey, Ez, G):
|
def update_electric(self, abstime, updatecoeffsE, ID, Ex, Ey, Ez, G):
|
||||||
"""Updates electric field values for a voltage source.
|
"""Updates electric field values for a voltage source.
|
||||||
|
|
||||||
@@ -103,18 +110,11 @@ class VoltageSource:
|
|||||||
G.materials.append(newmaterial)
|
G.materials.append(newmaterial)
|
||||||
|
|
||||||
|
|
||||||
class HertzianDipole:
|
class HertzianDipole(Source):
|
||||||
"""The Hertzian dipole is an additive source (electric current density)."""
|
"""The Hertzian dipole is an additive source (electric current density)."""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.ID = None
|
super(Source, self).__init__()
|
||||||
self.polarisation = None
|
|
||||||
self.xcoord = None
|
|
||||||
self.ycoord = None
|
|
||||||
self.zcoord = None
|
|
||||||
self.start = None
|
|
||||||
self.stop = None
|
|
||||||
self.waveformID = None
|
|
||||||
|
|
||||||
def update_electric(self, abstime, updatecoeffsE, ID, Ex, Ey, Ez, G):
|
def update_electric(self, abstime, updatecoeffsE, ID, Ex, Ey, Ez, G):
|
||||||
"""Updates electric field values for a Hertzian dipole.
|
"""Updates electric field values for a Hertzian dipole.
|
||||||
@@ -145,18 +145,11 @@ class HertzianDipole:
|
|||||||
Ez[i, j, k] -= updatecoeffsE[ID[2, i, j, k], 4] * waveform.amp * waveform.calculate_value(time, G.dt) * (1 / (G.dx * G.dy))
|
Ez[i, j, k] -= updatecoeffsE[ID[2, i, j, k], 4] * waveform.amp * waveform.calculate_value(time, G.dt) * (1 / (G.dx * G.dy))
|
||||||
|
|
||||||
|
|
||||||
class MagneticDipole:
|
class MagneticDipole(Source):
|
||||||
"""The magnetic dipole is an additive source (magnetic current density)."""
|
"""The magnetic dipole is an additive source (magnetic current density)."""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.ID = None
|
super(Source, self).__init__()
|
||||||
self.polarisation = None
|
|
||||||
self.xcoord = None
|
|
||||||
self.ycoord = None
|
|
||||||
self.zcoord = None
|
|
||||||
self.start = None
|
|
||||||
self.stop = None
|
|
||||||
self.waveformID = None
|
|
||||||
|
|
||||||
def update_magnetic(self, abstime, updatecoeffsH, ID, Hx, Hy, Hz, G):
|
def update_magnetic(self, abstime, updatecoeffsH, ID, Hx, Hy, Hz, G):
|
||||||
"""Updates magnetic field values for a magnetic dipole.
|
"""Updates magnetic field values for a magnetic dipole.
|
||||||
@@ -187,7 +180,7 @@ class MagneticDipole:
|
|||||||
Hz[i, j, k] -= waveform.amp * waveform.calculate_value(time, G.dt) * (G.dt / (G.dx * G.dy * G.dz))
|
Hz[i, j, k] -= waveform.amp * waveform.calculate_value(time, G.dt) * (G.dt / (G.dx * G.dy * G.dz))
|
||||||
|
|
||||||
|
|
||||||
class TransmissionLine:
|
class TransmissionLine(Source):
|
||||||
"""The transmission line source is a one-dimensional transmission line which is attached virtually to a grid cell."""
|
"""The transmission line source is a one-dimensional transmission line which is attached virtually to a grid cell."""
|
||||||
|
|
||||||
def __init__(self, G):
|
def __init__(self, G):
|
||||||
@@ -196,15 +189,8 @@ class TransmissionLine:
|
|||||||
G (class): Grid class instance - holds essential parameters describing the model.
|
G (class): Grid class instance - holds essential parameters describing the model.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
self.ID = None
|
super(Source, self).__init__()
|
||||||
self.polarisation = None
|
|
||||||
self.xcoord = None
|
|
||||||
self.ycoord = None
|
|
||||||
self.zcoord = None
|
|
||||||
self.start = None
|
|
||||||
self.stop = None
|
|
||||||
self.resistance = None
|
self.resistance = None
|
||||||
self.waveformID = None
|
|
||||||
|
|
||||||
# Coefficients for ABC termination of end of the transmission line
|
# Coefficients for ABC termination of end of the transmission line
|
||||||
self.abcv0 = 0
|
self.abcv0 = 0
|
||||||
|
在新工单中引用
屏蔽一个用户