你已经派生过 gprMax
镜像自地址
https://gitee.com/sunhf/gprMax.git
已同步 2025-08-07 15:10:13 +08:00
Corrected bug with processing some commands for 3D models where the line of the input file was not getting incremented.
Added processing of transmission lines now that they are also in the new code.
这个提交包含在:
@@ -48,6 +48,7 @@ badwaveforms = ['gaussiandot', 'gaussiandotdot']
|
||||
linesources = []
|
||||
voltagesources = []
|
||||
hertziandipoles = []
|
||||
transmissionlines = []
|
||||
|
||||
lindex = 0
|
||||
while(lindex < len(inputlines)):
|
||||
@@ -100,10 +101,10 @@ while(lindex < len(inputlines)):
|
||||
|
||||
elif cmdname == '#time_window':
|
||||
params = params[0].lower()
|
||||
if '.' in params[0] or 'e' in params[0].lower():
|
||||
timewindow = float(params[0])
|
||||
if '.' in params or 'e' in params:
|
||||
timewindow = float(params)
|
||||
else:
|
||||
timewindow = int(params[0])
|
||||
timewindow = int(params)
|
||||
lindex += 1
|
||||
|
||||
elif cmdname == '#num_of_procs':
|
||||
@@ -130,6 +131,10 @@ while(lindex < len(inputlines)):
|
||||
hertziandipoles.append(inputlines[lindex])
|
||||
lindex += 1
|
||||
|
||||
elif cmdname == '#transmission_line':
|
||||
transmissionlines.append(inputlines[lindex])
|
||||
lindex += 1
|
||||
|
||||
elif cmdname == '#rx':
|
||||
if model2D:
|
||||
# Syntax of old command: #rx: x1 y1
|
||||
@@ -305,7 +310,7 @@ while(lindex < len(inputlines)):
|
||||
inputlines.insert(lindex, replacement)
|
||||
lindex += 1
|
||||
|
||||
elif cmdname in ['#transmission_line', '#plane_wave', '#thin_wire', '#huygens_surface']:
|
||||
elif cmdname in ['#plane_wave', '#thin_wire', '#huygens_surface']:
|
||||
raise CmdInputError("Command '{}' has not yet implemented in the new version of gprMax. For now please continue to use the old version.".format(inputlines[lindex]))
|
||||
|
||||
else:
|
||||
@@ -377,6 +382,27 @@ for source in voltagesources:
|
||||
inputlines.append(waveform)
|
||||
inputlines.append(voltagesource)
|
||||
|
||||
# Convert separate #transmission_line and associated #tx to #waveform and #transmission_line
|
||||
for source in transmissionlines:
|
||||
params = source.split()
|
||||
if params[3] is badwaveforms:
|
||||
raise CmdInputError("Waveform types {} are not compatible between new and old versions of gprMax.".format(''.join(badwaveforms)))
|
||||
elif params[3] == 'ricker':
|
||||
params[3] = 'gaussiandotnorm'
|
||||
waveform = '#waveform: {} {} {} {}'.format(params[3], params[1], params[2], params[6])
|
||||
tx = next(tx for tx in txs if tx.split()[5] == params[6])
|
||||
transmissionlinetx = tx.split()
|
||||
if float(transmissionlinetx[6]) != 0 or float(transmissionlinetx[7]) < timewindow:
|
||||
transmissionline = '#transmission_line: {} {} {} {} {} {} {} {}'.format(transmissionlinetx[1], transmissionlinetx[2], transmissionlinetx[3], transmissionlinetx[4], params[5], transmissionlinetx[5], transmissionlinetx[6], transmissionlinetx[7])
|
||||
else:
|
||||
transmissionline = '#transmission_line: {} {} {} {} {} {}'.format(transmissionlinetx[1], transmissionlinetx[2], transmissionlinetx[3], transmissionlinetx[4], params[5], transmissionlinetx[5])
|
||||
|
||||
print("Commands '{}' and '{}', replaced with '{}' and '{}'".format(source, tx, waveform, transmissionline))
|
||||
inputlines.remove(source)
|
||||
inputlines.remove(tx)
|
||||
inputlines.append(waveform)
|
||||
inputlines.append(transmissionline)
|
||||
|
||||
# Write new input file
|
||||
newinputfile = newfile + '.in'
|
||||
|
||||
|
在新工单中引用
屏蔽一个用户