你已经派生过 gprMax
镜像自地址
https://gitee.com/sunhf/gprMax.git
已同步 2025-08-07 23:14:03 +08:00
dispersive updates for subgrid
这个提交包含在:
@@ -21,7 +21,8 @@ from gprMax.utilities import timer
|
||||
from .grid import FDTDGrid
|
||||
from .grid import GPUGrid
|
||||
import gprMax.config as config
|
||||
from .subgrids.solver import create_solver as create_subgrid_solver
|
||||
from .subgrids.solver import create_updates as create_subgrid_updates
|
||||
from .subgrids.solver import SubGridSolver
|
||||
|
||||
|
||||
def create_G(sim_config):
|
||||
@@ -42,7 +43,8 @@ def create_solver(G, sim_config):
|
||||
updates = GPUUpdates(G)
|
||||
solver = Solver(updates)
|
||||
elif sim_config.subgrid:
|
||||
solver = create_subgrid_solver(G)
|
||||
updates = create_subgrid_updates(G)
|
||||
solver = SubGridSolver(G, updates)
|
||||
else:
|
||||
updates = CPUUpdates(G)
|
||||
solver = Solver(updates)
|
||||
@@ -52,8 +54,8 @@ def create_solver(G, sim_config):
|
||||
# a large range of function exist to advance the time step for dispersive
|
||||
# materials. The correct function is set here based on the
|
||||
# the required numerical precision and dispersive material type.
|
||||
#props = updates.adapt_dispersive_config(config)
|
||||
#updates.set_dispersive_updates(props)
|
||||
props = updates.adapt_dispersive_config(config)
|
||||
updates.set_dispersive_updates(props)
|
||||
|
||||
|
||||
class Solver:
|
||||
|
@@ -18,7 +18,7 @@ from ..updates import CPUUpdates
|
||||
|
||||
|
||||
|
||||
def create_solver(G):
|
||||
def create_updates(G):
|
||||
"""Return the solver for the given subgrids."""
|
||||
updaters = []
|
||||
|
||||
@@ -36,9 +36,7 @@ def create_solver(G):
|
||||
updaters.append(sgu)
|
||||
|
||||
updates = SubgridUpdates(G, updaters)
|
||||
solver = SubGridSolver(G, updates)
|
||||
return solver
|
||||
|
||||
return updates
|
||||
|
||||
class SubgridUpdates(CPUUpdates):
|
||||
|
||||
@@ -174,6 +172,7 @@ class SubgridUpdater(CPUUpdates):
|
||||
self.update_electric_pml()
|
||||
precursors.interpolate_magnetic_in_time(int(m + sub_grid.ratio / 2 - 0.5))
|
||||
sub_grid.update_electric_is(precursors)
|
||||
self.update_electric_b()
|
||||
|
||||
self.update_sub_grid_electric_sources()
|
||||
|
||||
@@ -188,6 +187,7 @@ class SubgridUpdater(CPUUpdates):
|
||||
self.update_electric_pml()
|
||||
precursors.calc_exact_magnetic_in_time()
|
||||
sub_grid.update_electric_is(precursors)
|
||||
self.update_electric_b()
|
||||
self.update_sub_grid_electric_sources()
|
||||
sub_grid.update_electric_os(G)
|
||||
|
||||
@@ -216,6 +216,8 @@ class SubgridUpdater(CPUUpdates):
|
||||
|
||||
precursors.interpolate_magnetic_in_time(m)
|
||||
sub_grid.update_electric_is(precursors)
|
||||
self.update_electric_b()
|
||||
|
||||
self.update_sub_grid_electric_sources()
|
||||
|
||||
self.update_magnetic()
|
||||
|
在新工单中引用
屏蔽一个用户