你已经派生过 gprMax
镜像自地址
https://gitee.com/sunhf/gprMax.git
已同步 2025-08-07 23:14:03 +08:00
Added function to create Debye model of water based on temp and salinity.
这个提交包含在:
@@ -318,11 +318,13 @@ class PeplinskiSoil:
|
|||||||
G (FDTDGrid): Parameters describing a grid in a model.
|
G (FDTDGrid): Parameters describing a grid in a model.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# Debye model properties of water
|
# Debye model properties of water at 25C & zero salinity
|
||||||
|
T = 25
|
||||||
|
S = 0
|
||||||
|
watereri, waterer, watertau, watersig = calculate_water_properties(T, S)
|
||||||
f = 1.3e9
|
f = 1.3e9
|
||||||
w = 2 * np.pi * f
|
w = 2 * np.pi * f
|
||||||
erealw = DispersiveMaterial.watereri + ((DispersiveMaterial.waterdeltaer)
|
erealw = watereri + ((waterer - watereri) / (1 + (w * watertau)**2))
|
||||||
/ (1 + (w * DispersiveMaterial.watertau)**2))
|
|
||||||
|
|
||||||
a = 0.65 # Experimentally derived constant
|
a = 0.65 # Experimentally derived constant
|
||||||
es = (1.01 + 0.44 * self.rs)**2 - 0.062 # Relative permittivity of sand particles
|
es = (1.01 + 0.44 * self.rs)**2 - 0.062 # Relative permittivity of sand particles
|
||||||
@@ -398,3 +400,89 @@ def create_built_in_materials(G):
|
|||||||
G.materials.append(m)
|
G.materials.append(m)
|
||||||
|
|
||||||
G.n_built_in_materials = len(G.materials)
|
G.n_built_in_materials = len(G.materials)
|
||||||
|
|
||||||
|
|
||||||
|
def calculate_water_properties(T=25, S=0):
|
||||||
|
"""Get extended Debye model properties for water.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
T (float): Temperature of water (degrees centigrade)
|
||||||
|
S (float): Salinity of water (part per thousand)
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
eri (float): Relative permittivity at infinite frequency.
|
||||||
|
er (float): Static relative permittivity.
|
||||||
|
tau (float): Relaxation time (s).
|
||||||
|
sig (float): Conductivity (S/m)
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Properties of water from: https://doi.org/10.1109/JOE.1977.1145319
|
||||||
|
eri = 4.9
|
||||||
|
er = 88.045 - 0.4147 * T + 6.295e-4 * T**2 + 1.075e-5 * T**3
|
||||||
|
tau = (1 / (2 * np.pi)) * (1.1109e-10 - 3.824e-12 * T + 6.938e-14 * T**2 - 5.096e-16 * T**3)
|
||||||
|
|
||||||
|
delta = 25 - T
|
||||||
|
beta = 2.033e-2 + 1.266e-4 * delta + 2.464e-6 * delta**2 - S * (1.849e-5 - 2.551e-7 * delta + 2.551e-8 * delta**2)
|
||||||
|
sig_25s = S * (0.182521 - 1.46192e-3 * S + 2.09324e-5 * S**2 - 1.28205e-7 * S**3)
|
||||||
|
sig = sig_25s * np.exp(-delta * beta)
|
||||||
|
|
||||||
|
return eri, er, tau, sig
|
||||||
|
|
||||||
|
|
||||||
|
def create_water(G, T=25, S=0):
|
||||||
|
"""Create single-pole Debye model for water with specified temperature and
|
||||||
|
salinity.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
T (float): Temperature of water (degrees centigrade)
|
||||||
|
S (float): Salinity of water (part per thousand)
|
||||||
|
G (FDTDGrid): Parameters describing a grid in a model.
|
||||||
|
"""
|
||||||
|
|
||||||
|
eri, er, tau, sig = calculate_water_properties(T, S)
|
||||||
|
|
||||||
|
G.n_built_in_materials = len(G.materials)
|
||||||
|
|
||||||
|
m = DispersiveMaterial(len(G.materials), 'water')
|
||||||
|
m.averagable = False
|
||||||
|
m.type = 'builtin, debye'
|
||||||
|
m.poles = 1
|
||||||
|
m.er = eri
|
||||||
|
m.se = sig
|
||||||
|
m.deltaer.append(er - eri)
|
||||||
|
m.tau.append(tau)
|
||||||
|
G.materials.append(m)
|
||||||
|
if config.get_model_config().materials['maxpoles'] == 0:
|
||||||
|
config.get_model_config().materials['maxpoles'] = 1
|
||||||
|
|
||||||
|
G.n_built_in_materials = len(G.materials)
|
||||||
|
|
||||||
|
|
||||||
|
def create_grass(G):
|
||||||
|
"""Create single-pole Debye model for grass
|
||||||
|
|
||||||
|
Args:
|
||||||
|
G (FDTDGrid): Parameters describing a grid in a model.
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Properties of grass from: http://dx.doi.org/10.1007/BF00902994
|
||||||
|
er = 18.5087
|
||||||
|
eri = 12.7174
|
||||||
|
tau = 1.0793e-11
|
||||||
|
sig = 0
|
||||||
|
|
||||||
|
G.n_built_in_materials = len(G.materials)
|
||||||
|
|
||||||
|
m = DispersiveMaterial(len(G.materials), 'grass')
|
||||||
|
m.averagable = False
|
||||||
|
m.type = 'builtin, debye'
|
||||||
|
m.poles = 1
|
||||||
|
m.er = eri
|
||||||
|
m.se = sig
|
||||||
|
m.deltaer.append(er - eri)
|
||||||
|
m.tau.append(tau)
|
||||||
|
G.materials.append(m)
|
||||||
|
if config.get_model_config().materials['maxpoles'] == 0:
|
||||||
|
config.get_model_config().materials['maxpoles'] = 1
|
||||||
|
|
||||||
|
G.n_built_in_materials = len(G.materials)
|
在新工单中引用
屏蔽一个用户