你已经派生过 gprMax
镜像自地址
https://gitee.com/sunhf/gprMax.git
已同步 2025-08-08 07:24:19 +08:00
Renamed object 'create' function to 'build'
这个提交包含在:
@@ -64,7 +64,7 @@ class AddGrass(UserObjectGeometry):
|
||||
self.kwargs["p1"] = tuple(rot_pts[0, :])
|
||||
self.kwargs["p2"] = tuple(rot_pts[1, :])
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
"""Add Grass to fractal box."""
|
||||
try:
|
||||
p1 = self.kwargs["p1"]
|
||||
|
@@ -65,7 +65,7 @@ class AddSurfaceRoughness(UserObjectGeometry):
|
||||
self.kwargs["p1"] = tuple(rot_pts[0, :])
|
||||
self.kwargs["p2"] = tuple(rot_pts[1, :])
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
try:
|
||||
p1 = self.kwargs["p1"]
|
||||
p2 = self.kwargs["p2"]
|
||||
|
@@ -60,7 +60,7 @@ class AddSurfaceWater(UserObjectGeometry):
|
||||
self.kwargs["p1"] = tuple(rot_pts[0, :])
|
||||
self.kwargs["p2"] = tuple(rot_pts[1, :])
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
""" "Create surface water on fractal box."""
|
||||
try:
|
||||
p1 = self.kwargs["p1"]
|
||||
|
@@ -60,7 +60,7 @@ class Box(UserObjectGeometry):
|
||||
self.kwargs["p1"] = tuple(rot_pts[0, :])
|
||||
self.kwargs["p2"] = tuple(rot_pts[1, :])
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
try:
|
||||
p1 = self.kwargs["p1"]
|
||||
p2 = self.kwargs["p2"]
|
||||
|
@@ -45,7 +45,7 @@ class UserObjectGeometry:
|
||||
|
||||
return f"{self.hash}: {s[:-1]}"
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
"""Creates object and adds it to the grid."""
|
||||
pass
|
||||
|
||||
|
@@ -48,7 +48,7 @@ class Cone(UserObjectGeometry):
|
||||
super().__init__(**kwargs)
|
||||
self.hash = "#cone"
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
try:
|
||||
p1 = self.kwargs["p1"]
|
||||
p2 = self.kwargs["p2"]
|
||||
|
@@ -46,7 +46,7 @@ class Cylinder(UserObjectGeometry):
|
||||
super().__init__(**kwargs)
|
||||
self.hash = "#cylinder"
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
try:
|
||||
p1 = self.kwargs["p1"]
|
||||
p2 = self.kwargs["p2"]
|
||||
|
@@ -55,7 +55,7 @@ class CylindricalSector(UserObjectGeometry):
|
||||
super().__init__(**kwargs)
|
||||
self.hash = "#cylindrical_sector"
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
try:
|
||||
normal = self.kwargs["normal"].lower()
|
||||
ctr1 = self.kwargs["ctr1"]
|
||||
|
@@ -54,7 +54,7 @@ class Edge(UserObjectGeometry):
|
||||
self.kwargs["p1"] = tuple(rot_pts[0, :])
|
||||
self.kwargs["p2"] = tuple(rot_pts[1, :])
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
"""Creates edge and adds it to the grid."""
|
||||
try:
|
||||
p1 = self.kwargs["p1"]
|
||||
|
@@ -45,7 +45,7 @@ class Ellipsoid(UserObjectGeometry):
|
||||
super().__init__(**kwargs)
|
||||
self.hash = "#ellipsoid"
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
try:
|
||||
p1 = self.kwargs["p1"]
|
||||
xr = self.kwargs["xr"]
|
||||
|
@@ -39,7 +39,7 @@ class GeometryObjectsRead(UserObjectGeometry):
|
||||
def rotate(self, axis, angle, origin=None):
|
||||
pass
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
"""Creates the object and adds it to the grid."""
|
||||
try:
|
||||
p1 = self.kwargs["p1"]
|
||||
|
@@ -55,7 +55,7 @@ class Plate(UserObjectGeometry):
|
||||
self.kwargs["p1"] = tuple(rot_pts[0, :])
|
||||
self.kwargs["p2"] = tuple(rot_pts[1, :])
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
try:
|
||||
p1 = self.kwargs["p1"]
|
||||
p2 = self.kwargs["p2"]
|
||||
|
@@ -43,7 +43,7 @@ class Sphere(UserObjectGeometry):
|
||||
super().__init__(**kwargs)
|
||||
self.hash = "#sphere"
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
try:
|
||||
p1 = self.kwargs["p1"]
|
||||
r = self.kwargs["r"]
|
||||
|
@@ -63,7 +63,7 @@ class Triangle(UserObjectGeometry):
|
||||
self.kwargs["p2"] = tuple(p2)
|
||||
self.kwargs["p3"] = tuple(p3)
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
try:
|
||||
up1 = self.kwargs["p1"]
|
||||
up2 = self.kwargs["p2"]
|
||||
|
@@ -66,7 +66,7 @@ class UserObjectMulti:
|
||||
|
||||
return f"{self.hash}: {s[:-1]}"
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
"""Creates object and adds it to grid."""
|
||||
pass
|
||||
|
||||
@@ -105,7 +105,7 @@ class ExcitationFile(UserObjectMulti):
|
||||
self.order = 1
|
||||
self.hash = "#excitation_file"
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
try:
|
||||
kwargs = {}
|
||||
excitationfile = self.kwargs["filepath"]
|
||||
@@ -200,7 +200,7 @@ class Waveform(UserObjectMulti):
|
||||
self.order = 2
|
||||
self.hash = "#waveform"
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
try:
|
||||
wavetype = self.kwargs["wave_type"].lower()
|
||||
except KeyError:
|
||||
@@ -314,7 +314,7 @@ class VoltageSource(UserObjectMulti):
|
||||
rot_pts = rotate_2point_object(rot_pol_pts, self.axis, self.angle, self.origin)
|
||||
self.kwargs["p1"] = tuple(rot_pts[0, :])
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
try:
|
||||
p1 = self.kwargs["p1"]
|
||||
polarisation = self.kwargs["polarisation"].lower()
|
||||
@@ -438,7 +438,7 @@ class HertzianDipole(UserObjectMulti):
|
||||
rot_pts = rotate_2point_object(rot_pol_pts, self.axis, self.angle, self.origin)
|
||||
self.kwargs["p1"] = tuple(rot_pts[0, :])
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
try:
|
||||
polarisation = self.kwargs["polarisation"].lower()
|
||||
p1 = self.kwargs["p1"]
|
||||
@@ -579,7 +579,7 @@ class MagneticDipole(UserObjectMulti):
|
||||
rot_pts = rotate_2point_object(rot_pol_pts, self.axis, self.angle, self.origin)
|
||||
self.kwargs["p1"] = tuple(rot_pts[0, :])
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
try:
|
||||
polarisation = self.kwargs["polarisation"].lower()
|
||||
p1 = self.kwargs["p1"]
|
||||
@@ -702,7 +702,7 @@ class TransmissionLine(UserObjectMulti):
|
||||
rot_pts = rotate_2point_object(rot_pol_pts, self.axis, self.angle, self.origin)
|
||||
self.kwargs["p1"] = tuple(rot_pts[0, :])
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
try:
|
||||
polarisation = self.kwargs["polarisation"].lower()
|
||||
p1 = self.kwargs["p1"]
|
||||
@@ -852,7 +852,7 @@ class Rx(UserObjectMulti):
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
try:
|
||||
p1 = self.kwargs["p1"]
|
||||
except KeyError:
|
||||
@@ -922,7 +922,7 @@ class RxArray(UserObjectMulti):
|
||||
self.order = 8
|
||||
self.hash = "#rx_array"
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
try:
|
||||
p1 = self.kwargs["p1"]
|
||||
p2 = self.kwargs["p2"]
|
||||
@@ -1026,7 +1026,7 @@ class Snapshot(UserObjectMulti):
|
||||
self.order = 9
|
||||
self.hash = "#snapshot"
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
if isinstance(grid, SubGridBaseGrid):
|
||||
logger.exception(f"{self.params_str()} do not add snapshots to subgrids.")
|
||||
raise ValueError
|
||||
@@ -1139,7 +1139,7 @@ class Material(UserObjectMulti):
|
||||
self.order = 10
|
||||
self.hash = "#material"
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
try:
|
||||
er = self.kwargs["er"]
|
||||
se = self.kwargs["se"]
|
||||
@@ -1214,7 +1214,7 @@ class AddDebyeDispersion(UserObjectMulti):
|
||||
self.order = 11
|
||||
self.hash = "#add_dispersion_debye"
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
try:
|
||||
poles = self.kwargs["poles"]
|
||||
er_delta = self.kwargs["er_delta"]
|
||||
@@ -1286,7 +1286,7 @@ class AddLorentzDispersion(UserObjectMulti):
|
||||
self.order = 12
|
||||
self.hash = "#add_dispersion_lorentz"
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
try:
|
||||
poles = self.kwargs["poles"]
|
||||
er_delta = self.kwargs["er_delta"]
|
||||
@@ -1363,7 +1363,7 @@ class AddDrudeDispersion(UserObjectMulti):
|
||||
self.order = 13
|
||||
self.hash = "#add_dispersion_drude"
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
try:
|
||||
poles = self.kwargs["poles"]
|
||||
omega = self.kwargs["omega"]
|
||||
@@ -1440,7 +1440,7 @@ class SoilPeplinski(UserObjectMulti):
|
||||
self.order = 14
|
||||
self.hash = "#soil_peplinski"
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
try:
|
||||
sand_fraction = self.kwargs["sand_fraction"]
|
||||
clay_fraction = self.kwargs["clay_fraction"]
|
||||
@@ -1518,7 +1518,7 @@ class MaterialRange(UserObjectMulti):
|
||||
self.order = 15
|
||||
self.hash = "#material_range"
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
try:
|
||||
er_lower = self.kwargs["er_lower"]
|
||||
er_upper = self.kwargs["er_upper"]
|
||||
@@ -1600,7 +1600,7 @@ class MaterialList(UserObjectMulti):
|
||||
self.order = 16
|
||||
self.hash = "#material_list"
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
try:
|
||||
list_of_materials = self.kwargs["list_of_materials"]
|
||||
ID = self.kwargs["id"]
|
||||
@@ -1641,7 +1641,7 @@ class GeometryView(UserObjectMulti):
|
||||
self.order = 17
|
||||
self.hash = "#geometry_view"
|
||||
|
||||
def geometry_view_constructor(self, grid, output_type):
|
||||
def geometry_view_constructor(self, output_type):
|
||||
"""Selects appropriate class for geometry view dependent on geometry
|
||||
view type, i.e. normal or fine.
|
||||
"""
|
||||
@@ -1653,7 +1653,7 @@ class GeometryView(UserObjectMulti):
|
||||
|
||||
return GeometryViewUser
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
try:
|
||||
p1 = self.kwargs["p1"]
|
||||
p2 = self.kwargs["p2"]
|
||||
@@ -1664,7 +1664,7 @@ class GeometryView(UserObjectMulti):
|
||||
logger.exception(f"{self.params_str()} requires exactly eleven parameters.")
|
||||
raise
|
||||
|
||||
GeometryViewUser = self.geometry_view_constructor(grid, output_type)
|
||||
GeometryViewUser = self.geometry_view_constructor(output_type)
|
||||
|
||||
try:
|
||||
p3 = uip.round_to_grid_static_point(p1)
|
||||
@@ -1730,7 +1730,7 @@ class GeometryObjectsWrite(UserObjectMulti):
|
||||
self.order = 18
|
||||
self.hash = "#geometry_objects_write"
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
try:
|
||||
p1 = self.kwargs["p1"]
|
||||
p2 = self.kwargs["p2"]
|
||||
@@ -1786,7 +1786,7 @@ class PMLCFS(UserObjectMulti):
|
||||
super().__init__(**kwargs)
|
||||
self.order = 19
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
try:
|
||||
alphascalingprofile = self.kwargs["alphascalingprofile"]
|
||||
alphascalingdirection = self.kwargs["alphascalingdirection"]
|
||||
|
@@ -47,7 +47,7 @@ class UserObjectSingle:
|
||||
for k, v in kwargs.items():
|
||||
setattr(self.props, k, v)
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
pass
|
||||
|
||||
def rotate(self, axis, angle, origin=None):
|
||||
@@ -65,7 +65,7 @@ class Title(UserObjectSingle):
|
||||
super().__init__(**kwargs)
|
||||
self.order = 1
|
||||
|
||||
def create(self, G, uip):
|
||||
def build(self, G, uip):
|
||||
try:
|
||||
title = self.kwargs["name"]
|
||||
G.title = title
|
||||
@@ -85,7 +85,7 @@ class Discretisation(UserObjectSingle):
|
||||
super().__init__(**kwargs)
|
||||
self.order = 2
|
||||
|
||||
def create(self, G, uip):
|
||||
def build(self, G, uip):
|
||||
try:
|
||||
G.dl = np.array(self.kwargs["p1"])
|
||||
G.dx, G.dy, G.dz = self.kwargs["p1"]
|
||||
@@ -123,7 +123,7 @@ class Domain(UserObjectSingle):
|
||||
super().__init__(**kwargs)
|
||||
self.order = 3
|
||||
|
||||
def create(self, G, uip):
|
||||
def build(self, G, uip):
|
||||
try:
|
||||
G.nx, G.ny, G.nz = uip.discretise_point(self.kwargs["p1"])
|
||||
except KeyError:
|
||||
@@ -179,7 +179,7 @@ class TimeStepStabilityFactor(UserObjectSingle):
|
||||
super().__init__(**kwargs)
|
||||
self.order = 4
|
||||
|
||||
def create(self, G, uip):
|
||||
def build(self, G, uip):
|
||||
try:
|
||||
f = self.kwargs["f"]
|
||||
except KeyError:
|
||||
@@ -210,7 +210,7 @@ class TimeWindow(UserObjectSingle):
|
||||
super().__init__(**kwargs)
|
||||
self.order = 5
|
||||
|
||||
def create(self, G, uip):
|
||||
def build(self, G, uip):
|
||||
# If number of iterations given
|
||||
# The +/- 1 used in calculating the number of iterations is to account for
|
||||
# the fact that the solver (iterations) loop runs from 0 to < G.iterations
|
||||
@@ -251,7 +251,7 @@ class OMPThreads(UserObjectSingle):
|
||||
super().__init__(**kwargs)
|
||||
self.order = 6
|
||||
|
||||
def create(self, G, uip):
|
||||
def build(self, G, uip):
|
||||
try:
|
||||
n = self.kwargs["n"]
|
||||
except KeyError:
|
||||
@@ -285,7 +285,7 @@ class PMLProps(UserObjectSingle):
|
||||
super().__init__(**kwargs)
|
||||
self.order = 7
|
||||
|
||||
def create(self, G, uip):
|
||||
def build(self, G, uip):
|
||||
try:
|
||||
G.pmls["formulation"] = self.kwargs["formulation"]
|
||||
if G.pmls["formulation"] not in PML.formulations:
|
||||
@@ -335,7 +335,7 @@ class SrcSteps(UserObjectSingle):
|
||||
super().__init__(**kwargs)
|
||||
self.order = 8
|
||||
|
||||
def create(self, G, uip):
|
||||
def build(self, G, uip):
|
||||
try:
|
||||
G.srcsteps = uip.discretise_point(self.kwargs["p1"])
|
||||
except KeyError:
|
||||
@@ -360,7 +360,7 @@ class RxSteps(UserObjectSingle):
|
||||
super().__init__(**kwargs)
|
||||
self.order = 9
|
||||
|
||||
def create(self, G, uip):
|
||||
def build(self, G, uip):
|
||||
try:
|
||||
G.rxsteps = uip.discretise_point(self.kwargs["p1"])
|
||||
except KeyError:
|
||||
@@ -385,5 +385,5 @@ class OutputDir(UserObjectSingle):
|
||||
super().__init__(**kwargs)
|
||||
self.order = 10
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
config.get_model_config().set_output_file_path(self.kwargs["dir"])
|
||||
|
@@ -89,13 +89,16 @@ class GeometryView:
|
||||
self.dy = dy
|
||||
self.dz = dz
|
||||
self.filename = filename
|
||||
self.filenamebase = filename
|
||||
self.grid = grid
|
||||
self.nbytes = None
|
||||
|
||||
def set_filename(self):
|
||||
"""Constructs filename from user-supplied name and model run number."""
|
||||
parts = config.get_model_config().output_file_path.parts
|
||||
self.filename = Path(*parts[:-1], self.filename + config.get_model_config().appendmodelnumber)
|
||||
self.filename = Path(*parts[:-1],
|
||||
self.filenamebase +
|
||||
config.get_model_config().appendmodelnumber)
|
||||
|
||||
|
||||
class GeometryViewLines(GeometryView):
|
||||
@@ -324,10 +327,10 @@ class Comments:
|
||||
return sc
|
||||
|
||||
def dx_dy_dz_comment(self):
|
||||
return numeric_list_to_float_list([self.grid.dx, self.grid.dy, self.grid.dz])
|
||||
return list(map(float, [self.grid.dx, self.grid.dy, self.grid.dz]))
|
||||
|
||||
def nx_ny_nz_comment(self):
|
||||
return numeric_list_to_int_list([self.grid.nx, self.grid.ny, self.grid.nz])
|
||||
return list(map(int, [self.grid.nx, self.grid.ny, self.grid.nz]))
|
||||
|
||||
def materials_comment(self):
|
||||
if not self.averaged_materials:
|
||||
|
@@ -121,7 +121,7 @@ class SubGridBase(UserObjectMulti):
|
||||
|
||||
sg.timewindow = grid.timewindow
|
||||
|
||||
# Copy a subgrid reference to self so that children.create(grid, uip)
|
||||
# Copy a subgrid reference to self so that children.build(grid, uip)
|
||||
# can access the correct grid.
|
||||
self.subgrid = sg
|
||||
|
||||
@@ -192,7 +192,7 @@ class SubGridHSG(SubGridBase):
|
||||
self.order = 18
|
||||
self.hash = "#subgrid_hsg"
|
||||
|
||||
def create(self, grid, uip):
|
||||
def build(self, grid, uip):
|
||||
sg = SubGridHSGUser(**self.kwargs)
|
||||
self.setup(sg, grid, uip)
|
||||
return sg
|
||||
|
在新工单中引用
屏蔽一个用户