diff --git a/parallel.py b/parallel.py index 5da4329..5a50dbf 100644 --- a/parallel.py +++ b/parallel.py @@ -501,7 +501,7 @@ class PPP: self.init_mirror_symmetry(key,axis,+1) return - def init_mirror_symmetry(self,key,axis,wall): + def init_mirror_symmetry(self,key,axis,wall,invert=False): '''Applies symmetry: [u,v,w](x,-y,z) -> [u,-v,w](x,y,z) Proposed by Lozano-Duran JFM 2016 and used for free-slip.''' if self.periodicity[axis]: @@ -515,33 +515,14 @@ class PPP: sl[axis] = iwall sl = tuple(sl) if key==keyu[axis]: - self.symmetries[key][sl] = -1 + self.symmetries[key][sl] = -1 if not invert else +1 else: - self.symmetries[key][sl] = 1 + self.symmetries[key][sl] = +1 if not invert else -1 return - def set_noslip_bc(self,axis,wall): - '''Applies symmetry: [u,v,w](x,-y,z) -> [-u,v,-w](x,y,z) - The boundary conditions are only applied to fields which have already been loaded!''' - if self.periodicity[axis]: - return - if wall in (-1,'low'): iwall = 0 - elif wall in (1,'high'): iwall = 2 - else: raise ValueError('Invalid value for "wall". Valid values are -1 / "low" or 1 / "high".') - keyu = ('u','v','w') - for key in keyu: - if not key in self.symmetries: - continue - # Get position in symmetries array to be edited - sl = [1,1,1] - sl[axis] = iwall - sl = tuple(sl) - if key==keyu[axis]: - self.symmetries[key][sl] = 1 - else: - self.symmetries[key][sl] = -1 - self.impose_boundary_conditions(key) - return + def init_inversion_symmetry(self,key,axis,wall): + '''Applies symmetry: [u,v,w](x,-y,z) -> [-u,v,-w](x,y,z)''' + return self.init_mirror_symmetry(key,axis,wall,invert=True) def copy(self,key,key_out,skip_data=False,skip_symmetries=False): '''Copies a field to a new key.'''