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