From f82e646ad951ad4effce2defea746a308c8991bc Mon Sep 17 00:00:00 2001 From: David Ketcheson Date: Sun, 28 Sep 2014 15:56:47 +0300 Subject: [PATCH] Allow specification of which field to reflect for wall BCs. --- src/pyclaw/classic/solver.py | 3 +++ src/pyclaw/sharpclaw/solver.py | 3 +++ src/pyclaw/solver.py | 4 ++-- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/pyclaw/classic/solver.py b/src/pyclaw/classic/solver.py index 3851476f6..c610da7a1 100644 --- a/src/pyclaw/classic/solver.py +++ b/src/pyclaw/classic/solver.py @@ -277,6 +277,7 @@ def __init__(self, riemann_solver=None, claw_package=None): See :class:`ClawSolver1D` for more info. """ self.num_dim = 1 + self.reflect_index = [1] super(ClawSolver1D,self).__init__(riemann_solver, claw_package) @@ -448,6 +449,7 @@ def __init__(self,riemann_solver=None, claw_package=None): self.transverse_waves = self.trans_inc self.num_dim = 2 + self.reflect_index = [1,2] self.aux1 = None self.aux2 = None @@ -610,6 +612,7 @@ def __init__(self, riemann_solver=None, claw_package=None): self.transverse_waves = self.trans_cor self.num_dim = 3 + self.reflect_index = [1,2,3] self.aux1 = None self.aux2 = None diff --git a/src/pyclaw/sharpclaw/solver.py b/src/pyclaw/sharpclaw/solver.py index 4dd56843d..2f821dc9e 100644 --- a/src/pyclaw/sharpclaw/solver.py +++ b/src/pyclaw/sharpclaw/solver.py @@ -619,6 +619,7 @@ def __init__(self,riemann_solver=None,claw_package=None): See :class:`SharpClawSolver1D` for more info. """ self.num_dim = 1 + self.reflect_index = [1] super(SharpClawSolver1D,self).__init__(riemann_solver,claw_package) @@ -755,6 +756,7 @@ def __init__(self,riemann_solver=None,claw_package=None): See :class:`SharpClawSolver2D` for more info. """ self.num_dim = 2 + self.reflect_index = [1,2] super(SharpClawSolver2D,self).__init__(riemann_solver,claw_package) @@ -826,6 +828,7 @@ def __init__(self,riemann_solver=None,claw_package=None): See :class:`SharpClawSolver3D` for more info. """ self.num_dim = 3 + self.reflect_index = [1,2,3] super(SharpClawSolver3D,self).__init__(riemann_solver,claw_package) diff --git a/src/pyclaw/solver.py b/src/pyclaw/solver.py index db83a2cc0..308b56535 100644 --- a/src/pyclaw/solver.py +++ b/src/pyclaw/solver.py @@ -452,7 +452,7 @@ def _bc_lower(self, bc_type, state, dim, t, array, idim, name): if name == 'q': for i in xrange(self.num_ghost): array[:,i,...] = array[:,2*self.num_ghost-1-i,...] - array[idim+1,i,...] = -array[idim+1,2*self.num_ghost-1-i,...] # Negate normal velocity + array[self.reflect_index[idim],i,...] = -array[self.reflect_index[idim],2*self.num_ghost-1-i,...] # Negate normal velocity else: for i in xrange(self.num_ghost): array[:,i,...] = array[:,2*self.num_ghost-1-i,...] @@ -489,7 +489,7 @@ def _bc_upper(self, bc_type, state, dim, t, array, idim, name): if name == 'q': for i in xrange(self.num_ghost): array[:,-i-1,...] = array[:,-2*self.num_ghost+i,...] - array[idim+1,-i-1,...] = -array[idim+1,-2*self.num_ghost+i,...] # Negate normal velocity + array[self.reflect_index[idim],-i-1,...] = -array[self.reflect_index[idim],-2*self.num_ghost+i,...] # Negate normal velocity else: for i in xrange(self.num_ghost): array[:,-i-1,...] = array[:,-2*self.num_ghost+i,...]