dispersive updates for subgrid

这个提交包含在:
John Hartley
2019-08-23 15:45:28 +01:00
父节点 2d16ccc1f6
当前提交 d80489e786
共有 2 个文件被更改,包括 12 次插入8 次删除

查看文件

@@ -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()