你已经派生过 gprMax
镜像自地址
https://gitee.com/sunhf/gprMax.git
已同步 2025-08-08 07:24:19 +08:00
Code cleanups from pylint.
这个提交包含在:
@@ -53,7 +53,7 @@ class UserObjectMulti:
|
|||||||
def __str__(self):
|
def __str__(self):
|
||||||
"""Readable user string as per hash commands."""
|
"""Readable user string as per hash commands."""
|
||||||
s = ''
|
s = ''
|
||||||
for k, v in self.kwargs.items():
|
for _, v in self.kwargs.items():
|
||||||
if isinstance(v, tuple) or isinstance(v, list):
|
if isinstance(v, tuple) or isinstance(v, list):
|
||||||
v = ' '.join([str(el) for el in v])
|
v = ' '.join([str(el) for el in v])
|
||||||
s += str(v) + ' '
|
s += str(v) + ' '
|
||||||
|
@@ -130,6 +130,12 @@ class FractalVolume:
|
|||||||
self.nx = xf - xs
|
self.nx = xf - xs
|
||||||
self.ny = yf - ys
|
self.ny = yf - ys
|
||||||
self.nz = zf - zs
|
self.nz = zf - zs
|
||||||
|
self.originalxs = xs
|
||||||
|
self.originalxf = xf
|
||||||
|
self.originalys = ys
|
||||||
|
self.originalyf = yf
|
||||||
|
self.originalzs = zs
|
||||||
|
self.originalzf = zf
|
||||||
self.averaging = False
|
self.averaging = False
|
||||||
self.seed = None
|
self.seed = None
|
||||||
self.dimension = dimension
|
self.dimension = dimension
|
||||||
|
@@ -25,7 +25,7 @@ from .contexts import Context, MPIContext
|
|||||||
from .utilities import setup_logging
|
from .utilities import setup_logging
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
setup_logging(level=25)
|
setup_logging(level=20)
|
||||||
|
|
||||||
def run(
|
def run(
|
||||||
scenes=None,
|
scenes=None,
|
||||||
|
@@ -16,11 +16,13 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with gprMax. If not, see <http://www.gnu.org/licenses/>.
|
# along with gprMax. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import logging
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from scipy.constants import c
|
|
||||||
|
|
||||||
from ..grid import FDTDGrid
|
from ..grid import FDTDGrid
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class SubGridBase(FDTDGrid):
|
class SubGridBase(FDTDGrid):
|
||||||
|
|
||||||
@@ -65,6 +67,7 @@ class SubGridBase(FDTDGrid):
|
|||||||
|
|
||||||
def main_grid_index_to_subgrid_index(self, i, j, k):
|
def main_grid_index_to_subgrid_index(self, i, j, k):
|
||||||
"""Calculate local subgrid index from global main grid index."""
|
"""Calculate local subgrid index from global main grid index."""
|
||||||
|
logger.debug('SubGridBase has no i0, j0, k0 members.')
|
||||||
i_s = self.n_boundary_cells_x + (i - self.i0) * self.ratio
|
i_s = self.n_boundary_cells_x + (i - self.i0) * self.ratio
|
||||||
j_s = self.n_boundary_cells_y + (j - self.j0) * self.ratio
|
j_s = self.n_boundary_cells_y + (j - self.j0) * self.ratio
|
||||||
k_s = self.n_boundary_cells_z + (k - self.k0) * self.ratio
|
k_s = self.n_boundary_cells_z + (k - self.k0) * self.ratio
|
||||||
|
@@ -16,8 +16,12 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with gprMax. If not, see <http://www.gnu.org/licenses/>.
|
# along with gprMax. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import logging
|
||||||
|
|
||||||
from ..receivers import Rx
|
from ..receivers import Rx
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class ReferenceRx(Rx):
|
class ReferenceRx(Rx):
|
||||||
"""Receiver that mimicks a receiver in coarse grid.
|
"""Receiver that mimicks a receiver in coarse grid.
|
||||||
@@ -27,6 +31,8 @@ class ReferenceRx(Rx):
|
|||||||
position as the coarse grid.
|
position as the coarse grid.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
logger.debug('ReferenceRx has no offset member.')
|
||||||
|
|
||||||
def get_field(self, str_id, field):
|
def get_field(self, str_id, field):
|
||||||
"""Return the field value at the equivalent coarse yee cell.
|
"""Return the field value at the equivalent coarse yee cell.
|
||||||
|
|
||||||
|
@@ -16,11 +16,12 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with gprMax. If not, see <http://www.gnu.org/licenses/>.
|
# along with gprMax. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
import sys
|
import logging
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from scipy import interpolate
|
from scipy import interpolate
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def calculate_weighting_coefficients(x1, x):
|
def calculate_weighting_coefficients(x1, x):
|
||||||
c1 = (x - x1) / x
|
c1 = (x - x1) / x
|
||||||
@@ -28,7 +29,7 @@ def calculate_weighting_coefficients(x1, x):
|
|||||||
return (c1, c2)
|
return (c1, c2)
|
||||||
|
|
||||||
|
|
||||||
class PrecusorNodesBase:
|
class PrecursorNodesBase:
|
||||||
|
|
||||||
def __init__(self, fdtd_grid, sub_grid):
|
def __init__(self, fdtd_grid, sub_grid):
|
||||||
self.G = fdtd_grid
|
self.G = fdtd_grid
|
||||||
@@ -66,7 +67,6 @@ class PrecusorNodesBase:
|
|||||||
self.initialize_magnetic_slices_array()
|
self.initialize_magnetic_slices_array()
|
||||||
self.initialize_electric_slices_array()
|
self.initialize_electric_slices_array()
|
||||||
|
|
||||||
|
|
||||||
def _initialize_fields(self):
|
def _initialize_fields(self):
|
||||||
|
|
||||||
# Initialise the precursor arrays
|
# Initialise the precursor arrays
|
||||||
@@ -276,7 +276,7 @@ class PrecusorNodesBase:
|
|||||||
setattr(self, obj[0], f)
|
setattr(self, obj[0], f)
|
||||||
|
|
||||||
|
|
||||||
class PrecursorNodes(PrecusorNodesBase):
|
class PrecursorNodes(PrecursorNodesBase):
|
||||||
|
|
||||||
def __init__(self, fdtd_grid, sub_grid):
|
def __init__(self, fdtd_grid, sub_grid):
|
||||||
super().__init__(fdtd_grid, sub_grid)
|
super().__init__(fdtd_grid, sub_grid)
|
||||||
@@ -402,7 +402,7 @@ class PrecursorNodes(PrecusorNodesBase):
|
|||||||
return f_1, f_2
|
return f_1, f_2
|
||||||
|
|
||||||
|
|
||||||
class PrecursorNodesFiltered(PrecusorNodesBase):
|
class PrecursorNodesFiltered(PrecursorNodesBase):
|
||||||
|
|
||||||
def __init__(self, fdtd_grid, sub_grid):
|
def __init__(self, fdtd_grid, sub_grid):
|
||||||
super().__init__(fdtd_grid, sub_grid)
|
super().__init__(fdtd_grid, sub_grid)
|
||||||
|
@@ -324,10 +324,7 @@ def get_host_info():
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
# Hyperthreading
|
# Hyperthreading
|
||||||
if threadspercore == 2:
|
hyperthreading = True if threadspercore == 2 else False
|
||||||
hyperthreading = True
|
|
||||||
else:
|
|
||||||
hyperthreading = False
|
|
||||||
|
|
||||||
# OS version
|
# OS version
|
||||||
osversion = platform.platform()
|
osversion = platform.platform()
|
||||||
@@ -341,14 +338,17 @@ def get_host_info():
|
|||||||
hostinfo['osversion'] = osversion
|
hostinfo['osversion'] = osversion
|
||||||
hostinfo['hyperthreading'] = hyperthreading
|
hostinfo['hyperthreading'] = hyperthreading
|
||||||
hostinfo['logicalcores'] = psutil.cpu_count()
|
hostinfo['logicalcores'] = psutil.cpu_count()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Get number of physical CPU cores, i.e. avoid hyperthreading with OpenMP
|
# Get number of physical CPU cores, i.e. avoid hyperthreading with OpenMP
|
||||||
hostinfo['physicalcores'] = psutil.cpu_count(logical=False)
|
hostinfo['physicalcores'] = psutil.cpu_count(logical=False)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
hostinfo['physicalcores'] = hostinfo['logicalcores']
|
hostinfo['physicalcores'] = hostinfo['logicalcores']
|
||||||
|
|
||||||
# Handle case where cpu_count returns None on some machines
|
# Handle case where cpu_count returns None on some machines
|
||||||
if not hostinfo['physicalcores']:
|
if not hostinfo['physicalcores']:
|
||||||
hostinfo['physicalcores'] = hostinfo['logicalcores']
|
hostinfo['physicalcores'] = hostinfo['logicalcores']
|
||||||
|
|
||||||
hostinfo['ram'] = psutil.virtual_memory().total
|
hostinfo['ram'] = psutil.virtual_memory().total
|
||||||
hostinfo['ompthreads'] = 1
|
hostinfo['ompthreads'] = 1
|
||||||
|
|
||||||
@@ -366,13 +366,17 @@ def set_omp_threads(nthreads=None):
|
|||||||
# Should waiting threads consume CPU power (can drastically effect
|
# Should waiting threads consume CPU power (can drastically effect
|
||||||
# performance)
|
# performance)
|
||||||
os.environ['OMP_WAIT_POLICY'] = 'ACTIVE'
|
os.environ['OMP_WAIT_POLICY'] = 'ACTIVE'
|
||||||
|
|
||||||
# Number of threads may be adjusted by the run time environment to best
|
# Number of threads may be adjusted by the run time environment to best
|
||||||
# utilize system resources
|
# utilize system resources
|
||||||
os.environ['OMP_DYNAMIC'] = 'FALSE'
|
os.environ['OMP_DYNAMIC'] = 'FALSE'
|
||||||
|
|
||||||
# Each place corresponds to a single core (having one or more hardware threads)
|
# Each place corresponds to a single core (having one or more hardware threads)
|
||||||
os.environ['OMP_PLACES'] = 'cores'
|
os.environ['OMP_PLACES'] = 'cores'
|
||||||
|
|
||||||
# Bind threads to physical cores
|
# Bind threads to physical cores
|
||||||
os.environ['OMP_PROC_BIND'] = 'TRUE'
|
os.environ['OMP_PROC_BIND'] = 'TRUE'
|
||||||
|
|
||||||
# Prints OMP version and environment variables (useful for debug)
|
# Prints OMP version and environment variables (useful for debug)
|
||||||
# os.environ['OMP_DISPLAY_ENV'] = 'TRUE'
|
# os.environ['OMP_DISPLAY_ENV'] = 'TRUE'
|
||||||
|
|
||||||
@@ -531,27 +535,7 @@ def detect_gpus():
|
|||||||
return gpus
|
return gpus
|
||||||
|
|
||||||
|
|
||||||
# def check_gpus(gpus):
|
|
||||||
# """Check if requested Nvidia GPU(s) deviceID(s) exist.
|
|
||||||
|
|
||||||
# Args:
|
|
||||||
# gpus (list): List of GPU object(s).
|
|
||||||
# """
|
|
||||||
|
|
||||||
# # Check if requested device ID(s) exist
|
|
||||||
# for ID in deviceIDs:
|
|
||||||
# if ID not in deviceIDsavail:
|
|
||||||
# raise GeneralError(f'GPU with device ID {ID} does not exist')
|
|
||||||
|
|
||||||
# # Gather information about selected/detected GPUs
|
|
||||||
# gpus = []
|
|
||||||
# for ID in deviceIDsavail:
|
|
||||||
# gpu = GPU(deviceID=ID)
|
|
||||||
# gpu.get_gpu_info(drv)
|
|
||||||
# gpus.append(gpu)
|
|
||||||
|
|
||||||
|
|
||||||
def timer():
|
def timer():
|
||||||
"""Function to return time in fractional seconds."""
|
"""Function to return time in fractional seconds."""
|
||||||
logger.debug('"thread_time" not currently available in macOS and bug (https://bugs.python.org/issue36205) with "process_time"')
|
logger.debug('"thread_time" not currently available in macOS and bug (https://bugs.python.org/issue36205) with "process_time", so use "perf_counter".')
|
||||||
return timer_fn()
|
return timer_fn()
|
||||||
|
在新工单中引用
屏蔽一个用户