Changed roundvalue function to round_value.

这个提交包含在:
Craig Warren
2016-01-14 18:06:24 +00:00
父节点 8b61f9fc49
当前提交 cf29934799

查看文件

@@ -23,7 +23,7 @@ from gprMax.pml import CFSParameter, CFS
from gprMax.receivers import Rx from gprMax.receivers import Rx
from gprMax.snapshots import Snapshot from gprMax.snapshots import Snapshot
from gprMax.sources import VoltageSource, HertzianDipole, MagneticDipole, TransmissionLine from gprMax.sources import VoltageSource, HertzianDipole, MagneticDipole, TransmissionLine
from gprMax.utilities import roundvalue from gprMax.utilities import round_value
from gprMax.waveforms import Waveform from gprMax.waveforms import Waveform
@@ -56,7 +56,7 @@ def process_multicmds(multicmds, G):
w.freq = float(tmp[2]) w.freq = float(tmp[2])
if G.messages: if G.messages:
print('Waveform {} of type {} with amplitude {}, frequency {:.3e} Hz created.'.format(w.ID, w.type, w.amp, w.freq)) print('Waveform {} of type {} with amplitude {:g}, frequency {:g}Hz created.'.format(w.ID, w.type, w.amp, w.freq))
G.waveforms.append(w) G.waveforms.append(w)
@@ -72,9 +72,9 @@ def process_multicmds(multicmds, G):
# Check polarity & position parameters # Check polarity & position parameters
if tmp[0].lower() not in ('x', 'y', 'z'): if tmp[0].lower() not in ('x', 'y', 'z'):
raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' polarisation must be x, y, or z') raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' polarisation must be x, y, or z')
positionx = roundvalue(float(tmp[1])/G.dx) positionx = round_value(float(tmp[1])/G.dx)
positiony = roundvalue(float(tmp[2])/G.dy) positiony = round_value(float(tmp[2])/G.dy)
positionz = roundvalue(float(tmp[3])/G.dz) positionz = round_value(float(tmp[3])/G.dz)
resistance = float(tmp[4]) resistance = float(tmp[4])
if positionx < 0 or positionx >= G.nx: if positionx < 0 or positionx >= G.nx:
raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' x-coordinate is not within the model domain') raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' x-coordinate is not within the model domain')
@@ -112,14 +112,14 @@ def process_multicmds(multicmds, G):
v.start = start v.start = start
if stop > G.timewindow: if stop > G.timewindow:
v.stop = G.timewindow v.stop = G.timewindow
startstop = ' start time {:.3e} secs, finish time {:.3e} secs '.format(v.start, v.stop) startstop = ' start time {:g} secs, finish time {:g} secs '.format(v.start, v.stop)
else: else:
v.start = 0 v.start = 0
v.stop = G.timewindow v.stop = G.timewindow
startstop = ' ' startstop = ' '
if G.messages: if G.messages:
print('Voltage source with polarity {} at {:.3f}m, {:.3f}m, {:.3f}m, resistance {:.1f} Ohms,'.format(v.polarisation, v.positionx * G.dx, v.positiony * G.dy, v.positionz * G.dz, v.resistance) + startstop + 'using waveform {} created.'.format(v.waveformID)) print('Voltage source with polarity {} at {:g}m, {:g}m, {:g}m, resistance {:.1f} Ohms,'.format(v.polarisation, v.positionx * G.dx, v.positiony * G.dy, v.positionz * G.dz, v.resistance) + startstop + 'using waveform {} created.'.format(v.waveformID))
G.voltagesources.append(v) G.voltagesources.append(v)
@@ -135,9 +135,9 @@ def process_multicmds(multicmds, G):
# Check polarity & position parameters # Check polarity & position parameters
if tmp[0].lower() not in ('x', 'y', 'z'): if tmp[0].lower() not in ('x', 'y', 'z'):
raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' polarisation must be x, y, or z') raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' polarisation must be x, y, or z')
positionx = roundvalue(float(tmp[1])/G.dx) positionx = round_value(float(tmp[1])/G.dx)
positiony = roundvalue(float(tmp[2])/G.dy) positiony = round_value(float(tmp[2])/G.dy)
positionz = roundvalue(float(tmp[3])/G.dz) positionz = round_value(float(tmp[3])/G.dz)
if positionx < 0 or positionx >= G.nx: if positionx < 0 or positionx >= G.nx:
raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' x-coordinate is not within the model domain') raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' x-coordinate is not within the model domain')
if positiony < 0 or positiony >= G.ny: if positiony < 0 or positiony >= G.ny:
@@ -171,14 +171,14 @@ def process_multicmds(multicmds, G):
h.start = start h.start = start
if stop > G.timewindow: if stop > G.timewindow:
h.stop = G.timewindow h.stop = G.timewindow
startstop = ' start time {:.3e} secs, finish time {:.3e} secs '.format(h.start, h.stop) startstop = ' start time {:g} secs, finish time {:g} secs '.format(h.start, h.stop)
else: else:
h.start = 0 h.start = 0
h.stop = G.timewindow h.stop = G.timewindow
startstop = ' ' startstop = ' '
if G.messages: if G.messages:
print('Hertzian dipole with polarity {} at {:.3f}m, {:.3f}m, {:.3f}m,'.format(h.polarisation, h.positionx * G.dx, h.positiony * G.dy, h.positionz * G.dz) + startstop + 'using waveform {} created.'.format(h.waveformID)) print('Hertzian dipole with polarity {} at {:g}m, {:g}m, {:g}m,'.format(h.polarisation, h.positionx * G.dx, h.positiony * G.dy, h.positionz * G.dz) + startstop + 'using waveform {} created.'.format(h.waveformID))
G.hertziandipoles.append(h) G.hertziandipoles.append(h)
@@ -194,9 +194,9 @@ def process_multicmds(multicmds, G):
# Check polarity & position parameters # Check polarity & position parameters
if tmp[0].lower() not in ('x', 'y', 'z'): if tmp[0].lower() not in ('x', 'y', 'z'):
raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' polarisation must be x, y, or z') raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' polarisation must be x, y, or z')
positionx = roundvalue(float(tmp[1])/G.dx) positionx = round_value(float(tmp[1])/G.dx)
positiony = roundvalue(float(tmp[2])/G.dy) positiony = round_value(float(tmp[2])/G.dy)
positionz = roundvalue(float(tmp[3])/G.dz) positionz = round_value(float(tmp[3])/G.dz)
if positionx < 0 or positionx >= G.nx: if positionx < 0 or positionx >= G.nx:
raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' x-coordinate is not within the model domain') raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' x-coordinate is not within the model domain')
if positiony < 0 or positiony >= G.ny: if positiony < 0 or positiony >= G.ny:
@@ -230,14 +230,14 @@ def process_multicmds(multicmds, G):
m.start = start m.start = start
if stop > G.timewindow: if stop > G.timewindow:
m.stop = G.timewindow m.stop = G.timewindow
startstop = ' start time {:.3e} secs, finish time {:.3e} secs '.format(m.start, m.stop) startstop = ' start time {:g} secs, finish time {:g} secs '.format(m.start, m.stop)
else: else:
m.start = 0 m.start = 0
m.stop = G.timewindow m.stop = G.timewindow
startstop = ' ' startstop = ' '
if G.messages: if G.messages:
print('Magnetic dipole with polarity {} at {:.3f}m, {:.3f}m, {:.3f}m,'.format(m.polarisation, m.positionx * G.dx, m.positiony * G.dy, m.positionz * G.dz) + startstop + 'using waveform {} created.'.format(m.waveformID)) print('Magnetic dipole with polarity {} at {:g}m, {:g}m, {:g}m,'.format(m.polarisation, m.positionx * G.dx, m.positiony * G.dy, m.positionz * G.dz) + startstop + 'using waveform {} created.'.format(m.waveformID))
G.magneticdipoles.append(m) G.magneticdipoles.append(m)
@@ -253,9 +253,9 @@ def process_multicmds(multicmds, G):
# Check polarity & position parameters # Check polarity & position parameters
if tmp[0].lower() not in ('x', 'y', 'z'): if tmp[0].lower() not in ('x', 'y', 'z'):
raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' polarisation must be x, y, or z') raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' polarisation must be x, y, or z')
positionx = roundvalue(float(tmp[1])/G.dx) positionx = round_value(float(tmp[1])/G.dx)
positiony = roundvalue(float(tmp[2])/G.dy) positiony = round_value(float(tmp[2])/G.dy)
positionz = roundvalue(float(tmp[3])/G.dz) positionz = round_value(float(tmp[3])/G.dz)
resistance = float(tmp[4]) resistance = float(tmp[4])
if positionx < 0 or positionx >= G.nx: if positionx < 0 or positionx >= G.nx:
raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' x-coordinate is not within the model domain') raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' x-coordinate is not within the model domain')
@@ -294,14 +294,14 @@ def process_multicmds(multicmds, G):
t.start = start t.start = start
if stop > G.timewindow: if stop > G.timewindow:
t.stop = G.timewindow t.stop = G.timewindow
startstop = ' start time {:.3e} secs, finish time {:.3e} secs '.format(t.start, t.stop) startstop = ' start time {:g} secs, finish time {:g} secs '.format(t.start, t.stop)
else: else:
t.start = 0 t.start = 0
t.stop = G.timewindow t.stop = G.timewindow
startstop = ' ' startstop = ' '
if G.messages: if G.messages:
print('Transmission line with polarity {} at {:.3f}m, {:.3f}m, {:.3f}m, resistance {:.1f} Ohms,'.format(t.polarisation, t.positionx * G.dx, t.positiony * G.dy, t.positionz * G.dz, t.resistance) + startstop + 'using waveform {} created.'.format(t.waveformID)) print('Transmission line with polarity {} at {:g}m, {:g}m, {:g}m, resistance {:.1f} Ohms,'.format(t.polarisation, t.positionx * G.dx, t.positiony * G.dy, t.positionz * G.dz, t.resistance) + startstop + 'using waveform {} created.'.format(t.waveformID))
G.transmissionlines.append(t) G.transmissionlines.append(t)
@@ -315,9 +315,9 @@ def process_multicmds(multicmds, G):
raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' has an incorrect number of parameters') raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' has an incorrect number of parameters')
# Check position parameters # Check position parameters
positionx = roundvalue(float(tmp[0])/G.dx) positionx = round_value(float(tmp[0])/G.dx)
positiony = roundvalue(float(tmp[1])/G.dy) positiony = round_value(float(tmp[1])/G.dy)
positionz = roundvalue(float(tmp[2])/G.dz) positionz = round_value(float(tmp[2])/G.dz)
if positionx < 0 or positionx >= G.nx: if positionx < 0 or positionx >= G.nx:
raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' x-coordinate is not within the model domain') raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' x-coordinate is not within the model domain')
if positiony < 0 or positiony >= G.ny: if positiony < 0 or positiony >= G.ny:
@@ -342,7 +342,7 @@ def process_multicmds(multicmds, G):
raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' contains an output type that is not available') raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' contains an output type that is not available')
if G.messages: if G.messages:
print('Receiver at {:.3f}m, {:.3f}m, {:.3f}m with field component output(s) {} created.'.format(r.positionx * G.dx, r.positiony * G.dy, r.positionz * G.dz, ', '.join(r.outputs))) print('Receiver at {:g}m, {:g}m, {:g}m with field component output(s) {} created.'.format(r.positionx * G.dx, r.positiony * G.dy, r.positionz * G.dz, ', '.join(r.outputs)))
G.rxs.append(r) G.rxs.append(r)
@@ -355,28 +355,28 @@ def process_multicmds(multicmds, G):
if len(tmp) != 9: if len(tmp) != 9:
raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' requires exactly nine parameters') raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' requires exactly nine parameters')
xs = roundvalue(float(tmp[0])/G.dx) xs = round_value(float(tmp[0])/G.dx)
xf = roundvalue(float(tmp[3])/G.dx) xf = round_value(float(tmp[3])/G.dx)
ys = roundvalue(float(tmp[1])/G.dy) ys = round_value(float(tmp[1])/G.dy)
yf = roundvalue(float(tmp[4])/G.dy) yf = round_value(float(tmp[4])/G.dy)
zs = roundvalue(float(tmp[2])/G.dz) zs = round_value(float(tmp[2])/G.dz)
zf = roundvalue(float(tmp[5])/G.dz) zf = round_value(float(tmp[5])/G.dz)
dx = roundvalue(float(tmp[6])/G.dx) dx = round_value(float(tmp[6])/G.dx)
dy = roundvalue(float(tmp[7])/G.dy) dy = round_value(float(tmp[7])/G.dy)
dz = roundvalue(float(tmp[8])/G.dz) dz = round_value(float(tmp[8])/G.dz)
if xs < 0 or xs >= G.nx: if xs < 0 or xs >= G.nx:
raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the lower x-coordinate {} is not within the model domain'.format(xs)) raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the lower x-coordinate {:g}m is not within the model domain'.format(xs))
if xf < 0 or xf >= G.nx: if xf < 0 or xf >= G.nx:
raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the upper x-coordinate {} is not within the model domain'.format(xf)) raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the upper x-coordinate {:g}m is not within the model domain'.format(xf))
if ys < 0 or ys >= G.ny: if ys < 0 or ys >= G.ny:
raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the lower y-coordinate {} is not within the model domain'.format(ys)) raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the lower y-coordinate {:g}m is not within the model domain'.format(ys))
if yf < 0 or yf >= G.ny: if yf < 0 or yf >= G.ny:
raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the upper y-coordinate {} is not within the model domain'.format(yf)) raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the upper y-coordinate {:g}m is not within the model domain'.format(yf))
if zs < 0 or zs >= G.nz: if zs < 0 or zs >= G.nz:
raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the lower z-coordinate {} is not within the model domain'.format(zs)) raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the lower z-coordinate {:g}m is not within the model domain'.format(zs))
if zf < 0 or zf >= G.nz: if zf < 0 or zf >= G.nz:
raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the upper z-coordinate {} is not within the model domain'.format(zf)) raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the upper z-coordinate {:g}m is not within the model domain'.format(zf))
if positionx < G.pmlthickness[0] or positionx > G.nx - G.pmlthickness[3] or positiony < G.pmlthickness[1] or positiony > G.ny - G.pmlthickness[4] or positionz < G.pmlthickness[2] or positionz > G.nz - G.pmlthickness[5]: if positionx < G.pmlthickness[0] or positionx > G.nx - G.pmlthickness[3] or positiony < G.pmlthickness[1] or positiony > G.ny - G.pmlthickness[4] or positionz < G.pmlthickness[2] or positionz > G.nz - G.pmlthickness[5]:
print("WARNING: '" + cmdname + ': ' + ' '.join(tmp) + "'" + ' sources and receivers should not normally be positioned within the PML.') print("WARNING: '" + cmdname + ': ' + ' '.join(tmp) + "'" + ' sources and receivers should not normally be positioned within the PML.')
if xs >= xf or ys >= yf or zs >= zf: if xs >= xf or ys >= yf or zs >= zf:
@@ -393,7 +393,7 @@ def process_multicmds(multicmds, G):
G.rxs.append(r) G.rxs.append(r)
if G.messages: if G.messages:
print('Receiver box {:.3f}m, {:.3f}m, {:.3f}m, to {:.3f}m, {:.3f}m, {:.3f}m with steps {:.3f}m, {:.3f}m, {:.3f} created.'.format(xs * G.dx, ys * G.dy, zs * G.dz, xf * G.dx, yf * G.dy, zf * G.dz, dx * G.dx, dy * G.dy, dz * G.dz)) print('Receiver box {:g}m, {:g}m, {:g}m, to {:g}m, {:g}m, {:g}m with steps {:g}m, {:g}m, {:g} created.'.format(xs * G.dx, ys * G.dy, zs * G.dz, xf * G.dx, yf * G.dy, zf * G.dz, dx * G.dx, dy * G.dy, dz * G.dz))
# Snapshot # Snapshot
@@ -404,20 +404,20 @@ def process_multicmds(multicmds, G):
if len(tmp) != 11: if len(tmp) != 11:
raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' requires exactly eleven parameters') raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' requires exactly eleven parameters')
xs = roundvalue(float(tmp[0])/G.dx) xs = round_value(float(tmp[0])/G.dx)
xf = roundvalue(float(tmp[3])/G.dx) xf = round_value(float(tmp[3])/G.dx)
ys = roundvalue(float(tmp[1])/G.dy) ys = round_value(float(tmp[1])/G.dy)
yf = roundvalue(float(tmp[4])/G.dy) yf = round_value(float(tmp[4])/G.dy)
zs = roundvalue(float(tmp[2])/G.dz) zs = round_value(float(tmp[2])/G.dz)
zf = roundvalue(float(tmp[5])/G.dz) zf = round_value(float(tmp[5])/G.dz)
dx = roundvalue(float(tmp[6])/G.dx) dx = round_value(float(tmp[6])/G.dx)
dy = roundvalue(float(tmp[7])/G.dy) dy = round_value(float(tmp[7])/G.dy)
dz = roundvalue(float(tmp[8])/G.dz) dz = round_value(float(tmp[8])/G.dz)
# If real floating point value given # If real floating point value given
if '.' in tmp[9] or 'e' in tmp[9]: if '.' in tmp[9] or 'e' in tmp[9]:
if float(tmp[9]) > 0: if float(tmp[9]) > 0:
time = roundvalue((float(tmp[9]) / G.dt)) + 1 time = round_value((float(tmp[9]) / G.dt)) + 1
else: else:
raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' time value must be greater than zero') raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' time value must be greater than zero')
# If number of iterations given # If number of iterations given
@@ -425,17 +425,17 @@ def process_multicmds(multicmds, G):
time = int(tmp[9]) time = int(tmp[9])
if xs < 0 or xs >= G.nx: if xs < 0 or xs >= G.nx:
raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the lower x-coordinate {} is not within the model domain'.format(xs * G.dx)) raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the lower x-coordinate {:g}m is not within the model domain'.format(xs * G.dx))
if xf < 0 or xf >= G.nx: if xf < 0 or xf >= G.nx:
raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the upper x-coordinate {} is not within the model domain'.format(xf * G.dx)) raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the upper x-coordinate {:g}m is not within the model domain'.format(xf * G.dx))
if ys < 0 or ys >= G.ny: if ys < 0 or ys >= G.ny:
raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the lower y-coordinate {} is not within the model domain'.format(ys * G.dy)) raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the lower y-coordinate {:g}m is not within the model domain'.format(ys * G.dy))
if yf < 0 or yf >= G.ny: if yf < 0 or yf >= G.ny:
raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the upper y-coordinate {} is not within the model domain'.format(yf * G.dy)) raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the upper y-coordinate {:g}m is not within the model domain'.format(yf * G.dy))
if zs < 0 or zs >= G.nz: if zs < 0 or zs >= G.nz:
raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the lower z-coordinate {} is not within the model domain'.format(zs * G.dz)) raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the lower z-coordinate {:g}m is not within the model domain'.format(zs * G.dz))
if zf < 0 or zf >= G.nz: if zf < 0 or zf >= G.nz:
raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the upper z-coordinate {} is not within the model domain'.format(zf * G.dz)) raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the upper z-coordinate {:g}m is not within the model domain'.format(zf * G.dz))
if xs >= xf or ys >= yf or zs >= zf: if xs >= xf or ys >= yf or zs >= zf:
raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the lower coordinates should be less than the upper coordinates') raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the lower coordinates should be less than the upper coordinates')
if dx < 0 or dy < 0 or dz < 0: if dx < 0 or dy < 0 or dz < 0:
@@ -448,7 +448,7 @@ def process_multicmds(multicmds, G):
s = Snapshot(xs, ys, zs, xf, yf, zf, dx, dy, dz, time, tmp[10]) s = Snapshot(xs, ys, zs, xf, yf, zf, dx, dy, dz, time, tmp[10])
if G.messages: if G.messages:
print('Snapshot from {:.3f}m, {:.3f}m, {:.3f}m, to {:.3f}m, {:.3f}m, {:.3f}m, discretisation {:.3f}m, {:.3f}m, {:.3f}m, at {:.3e} secs with filename {} created.'.format(xs * G.dx, ys * G.dy, zs * G.dz, xf * G.dx, yf * G.dy, zf * G.dz, dx * G.dx, dx * G.dy, dx * G.dz, s.time * G.dt, s.filename)) print('Snapshot from {:g}m, {:g}m, {:g}m, to {:g}m, {:g}m, {:g}m, discretisation {:g}m, {:g}m, {:g}m, at {:g} secs with filename {} created.'.format(xs * G.dx, ys * G.dy, zs * G.dz, xf * G.dx, yf * G.dy, zf * G.dz, dx * G.dx, dx * G.dy, dx * G.dz, s.time * G.dt, s.filename))
G.snapshots.append(s) G.snapshots.append(s)
@@ -488,7 +488,7 @@ def process_multicmds(multicmds, G):
m.sm = float(tmp[3]) m.sm = float(tmp[3])
if G.messages: if G.messages:
print('Material {} with epsr={:4.2f}, sig={:.3e} S/m; mur={:4.2f}, sig*={:.3e} S/m created.'.format(m.ID, m.er, m.se, m.mr, m.sm)) print('Material {} with epsr={:g}, sig={:g} S/m; mur={:g}, sig*={:g} S/m created.'.format(m.ID, m.er, m.se, m.mr, m.sm))
# Append the new material object to the materials list # Append the new material object to the materials list
G.materials.append(m) G.materials.append(m)
@@ -527,7 +527,7 @@ def process_multicmds(multicmds, G):
Material.maxpoles = material.poles Material.maxpoles = material.poles
if G.messages: if G.messages:
print('Debye-type disperion added to {} with delta_epsr={}, and tau={} secs created.'.format(material.ID, ','.join('%4.2f' % deltaer for deltaer in material.deltaer), ','.join('%4.3e' % tau for tau in material.tau))) print('Debye-type disperion added to {} with delta_epsr={:g}, and tau={:g} secs created.'.format(material.ID, ','.join('%4.2f' % deltaer for deltaer in material.deltaer), ','.join('%4.3e' % tau for tau in material.tau)))
cmdname = '#add_dispersion_lorentz' cmdname = '#add_dispersion_lorentz'
if multicmds[cmdname] != 'None': if multicmds[cmdname] != 'None':
@@ -563,7 +563,7 @@ def process_multicmds(multicmds, G):
Material.maxpoles = material.poles Material.maxpoles = material.poles
if G.messages: if G.messages:
print('Lorentz-type disperion added to {} with delta_epsr={}, omega={} secs, and gamma={} created.'.format(material.ID, ','.join('%4.2f' % deltaer for deltaer in material.deltaer), ','.join('%4.3e' % tau for tau in material.tau), ','.join('%4.3e' % alpha for alpha in material.alpha))) print('Lorentz-type disperion added to {} with delta_epsr={:g}, omega={:g} secs, and gamma={:g} created.'.format(material.ID, ','.join('%4.2f' % deltaer for deltaer in material.deltaer), ','.join('%4.3e' % tau for tau in material.tau), ','.join('%4.3e' % alpha for alpha in material.alpha)))
cmdname = '#add_dispersion_drude' cmdname = '#add_dispersion_drude'
@@ -599,7 +599,7 @@ def process_multicmds(multicmds, G):
Material.maxpoles = material.poles Material.maxpoles = material.poles
if G.messages: if G.messages:
print('Drude-type disperion added to {} with omega={} secs, and gamma={} secs created.'.format(material.ID, ','.join('%4.3e' % tau for tau in material.tau), ','.join('%4.3e' % alpha for alpha in material.alpha))) print('Drude-type disperion added to {} with omega={:g} secs, and gamma={:g} secs created.'.format(material.ID, ','.join('%4.3e' % tau for tau in material.tau), ','.join('%4.3e' % alpha for alpha in material.alpha)))
cmdname = '#soil_peplinski' cmdname = '#soil_peplinski'
@@ -627,7 +627,7 @@ def process_multicmds(multicmds, G):
s = PeplinskiSoil(tmp[6], float(tmp[0]), float(tmp[1]), float(tmp[2]), float(tmp[3]), (float(tmp[4]), float(tmp[5]))) s = PeplinskiSoil(tmp[6], float(tmp[0]), float(tmp[1]), float(tmp[2]), float(tmp[3]), (float(tmp[4]), float(tmp[5])))
if G.messages: if G.messages:
print('Mixing model (Peplinski) used to create {} with sand fraction {:.3f}, clay fraction {:.3f}, bulk density {:.3f} g/cm3, sand particle density {:.3f} g/cm3, and water volumetric fraction {} to {} created.'.format(s.ID, s.S, s.C, s.rb, s.rs, s.mu[0], s.mu[1])) print('Mixing model (Peplinski) used to create {} with sand fraction {:g}, clay fraction {:g}, bulk density {:g}g/cm3, sand particle density {:g}g/cm3, and water volumetric fraction {:g} to {:g} created.'.format(s.ID, s.S, s.C, s.rb, s.rs, s.mu[0], s.mu[1]))
# Append the new material object to the materials list # Append the new material object to the materials list
G.mixingmodels.append(s) G.mixingmodels.append(s)
@@ -641,28 +641,28 @@ def process_multicmds(multicmds, G):
if len(tmp) != 11: if len(tmp) != 11:
raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' requires exactly eleven parameters') raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' requires exactly eleven parameters')
xs = roundvalue(float(tmp[0])/G.dx) xs = round_value(float(tmp[0])/G.dx)
xf = roundvalue(float(tmp[3])/G.dx) xf = round_value(float(tmp[3])/G.dx)
ys = roundvalue(float(tmp[1])/G.dy) ys = round_value(float(tmp[1])/G.dy)
yf = roundvalue(float(tmp[4])/G.dy) yf = round_value(float(tmp[4])/G.dy)
zs = roundvalue(float(tmp[2])/G.dz) zs = round_value(float(tmp[2])/G.dz)
zf = roundvalue(float(tmp[5])/G.dz) zf = round_value(float(tmp[5])/G.dz)
dx = roundvalue(float(tmp[6])/G.dx) dx = round_value(float(tmp[6])/G.dx)
dy = roundvalue(float(tmp[7])/G.dy) dy = round_value(float(tmp[7])/G.dy)
dz = roundvalue(float(tmp[8])/G.dz) dz = round_value(float(tmp[8])/G.dz)
if xs < 0 or xs > G.nx: if xs < 0 or xs > G.nx:
raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the lower x-coordinate {} is not within the model domain'.format(xs * G.dx)) raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the lower x-coordinate {:g}m is not within the model domain'.format(xs * G.dx))
if xf < 0 or xf > G.nx: if xf < 0 or xf > G.nx:
raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the upper x-coordinate {} is not within the model domain'.format(xf * G.dx)) raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the upper x-coordinate {:g}m is not within the model domain'.format(xf * G.dx))
if ys < 0 or ys > G.ny: if ys < 0 or ys > G.ny:
raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the lower y-coordinate {} is not within the model domain'.format(ys * G.dy)) raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the lower y-coordinate {:g}m is not within the model domain'.format(ys * G.dy))
if yf < 0 or yf > G.ny: if yf < 0 or yf > G.ny:
raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the upper y-coordinate {} is not within the model domain'.format(yf * G.dy)) raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the upper y-coordinate {:g}m is not within the model domain'.format(yf * G.dy))
if zs < 0 or zs > G.nz: if zs < 0 or zs > G.nz:
raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the lower z-coordinate {} is not within the model domain'.format(zs * G.dz)) raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the lower z-coordinate {:g}m is not within the model domain'.format(zs * G.dz))
if zf < 0 or zf > G.nz: if zf < 0 or zf > G.nz:
raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the upper z-coordinate {} is not within the model domain'.format(zf * G.dz)) raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the upper z-coordinate {:g}m is not within the model domain'.format(zf * G.dz))
if xs >= xf or ys >= yf or zs >= zf: if xs >= xf or ys >= yf or zs >= zf:
raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the lower coordinates should be less than the upper coordinates') raise CmdInputError("'" + cmdname + ': ' + ' '.join(tmp) + "'" + ' the lower coordinates should be less than the upper coordinates')
if dx < 0 or dy < 0 or dz < 0: if dx < 0 or dy < 0 or dz < 0:
@@ -677,7 +677,7 @@ def process_multicmds(multicmds, G):
g = GeometryView(xs, ys, zs, xf, yf, zf, dx, dy, dz, tmp[9], tmp[10].lower()) g = GeometryView(xs, ys, zs, xf, yf, zf, dx, dy, dz, tmp[9], tmp[10].lower())
if G.messages: if G.messages:
print('Geometry view from {:.3f}m, {:.3f}m, {:.3f}m, to {:.3f}m, {:.3f}m, {:.3f}m, discretisation {:.3f}m, {:.3f}m, {:.3f}m, filename {} created.'.format(xs * G.dx, ys * G.dy, zs * G.dz, xf * G.dx, yf * G.dy, zf * G.dz, dx * G.dx, dy * G.dy, dz * G.dz, g.filename)) print('Geometry view from {:g}m, {:g}m, {:g}m, to {:g}m, {:g}m, {:g}m, discretisation {:g}m, {:g}m, {:g}m, filename {} created.'.format(xs * G.dx, ys * G.dy, zs * G.dz, xf * G.dx, yf * G.dy, zf * G.dz, dx * G.dx, dy * G.dy, dz * G.dz, g.filename))
# Append the new GeometryView object to the geometry views list # Append the new GeometryView object to the geometry views list
G.geometryviews.append(g) G.geometryviews.append(g)
@@ -729,7 +729,7 @@ def process_multicmds(multicmds, G):
cfs.sigma = cfssigma cfs.sigma = cfssigma
if G.messages: if G.messages:
print('PML CFS parameters: alpha (scaling: {}, scaling direction: {}, min: {:.2f}, max: {:.2f}), kappa (scaling: {}, scaling direction: {}, min: {:.2f}, max: {:.2f}), sigma (scaling: {}, scaling direction: {}, min: {:.2f}, max: {:.2f}) created.'.format(cfsalpha.scalingprofile, cfsalpha.scalingdirection, cfsalpha.min, cfsalpha.max, cfskappa.scalingprofile, cfskappa.scalingdirection, cfskappa.min, cfskappa.max, cfssigma.scalingprofile, cfssigma.scalingdirection, cfssigma.min, cfssigma.max)) print('PML CFS parameters: alpha (scaling: {}, scaling direction: {}, min: {:g}, max: {:g}), kappa (scaling: {}, scaling direction: {}, min: {:g}, max: {:g}), sigma (scaling: {}, scaling direction: {}, min: {:g}, max: {:g}) created.'.format(cfsalpha.scalingprofile, cfsalpha.scalingdirection, cfsalpha.min, cfsalpha.max, cfskappa.scalingprofile, cfskappa.scalingdirection, cfskappa.min, cfskappa.max, cfssigma.scalingprofile, cfssigma.scalingdirection, cfssigma.min, cfssigma.max))
G.cfs.append(cfs) G.cfs.append(cfs)