Skip to content

Commit 62d693c

Browse files
Fix signature Domain.__init__ and quadrants format (#753)
When using PETSc, the example examples/euler_2d/quadrants.py throws an error since PetClaw's geometry.Domain.__init__ is not safeguarded against an instantiation like: domain = pyclaw.Domain([0.,0.],[1.,1.],[100,100]) This example also throws an error since 'ascii' was the default format even when using PETSc.
1 parent 8854071 commit 62d693c

File tree

2 files changed

+21
-8
lines changed

2 files changed

+21
-8
lines changed

examples/euler_2d/quadrants.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,8 @@ def setup(use_petsc=False,riemann_solver='roe'):
117117
claw.solution = solution
118118
claw.solver = solver
119119

120-
claw.output_format = 'ascii'
120+
if not use_petsc:
121+
claw.output_format = 'ascii'
121122
claw.outdir = "./_output"
122123
claw.keep_copy = True
123124
claw.setplot = setplot

src/petclaw/geometry.py

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -81,13 +81,25 @@ class Domain(pyclaw_geometry.Domain):
8181

8282
__doc__ += pyclaw.util.add_parent_doc(pyclaw.ClawSolver2D)
8383

84-
def __init__(self,geom):
85-
if not isinstance(geom,list):
86-
geom = [geom]
87-
if isinstance(geom[0],Patch):
88-
self.patches = geom
89-
elif isinstance(geom[0],pyclaw_geometry.Dimension):
90-
self.patches = [Patch(geom)]
84+
def __init__(self,*arg):
85+
if len(arg)>1:
86+
lower = arg[0]
87+
upper = arg[1]
88+
n = arg[2]
89+
dims = []
90+
names = ['x','y','z']
91+
names = names[:len(n)+1]
92+
for low,up,nn,name in zip(lower,upper,n,names):
93+
dims.append(Dimension(low,up,nn,name=name))
94+
self.patches = [Patch(dims)]
95+
else:
96+
geom = arg[0]
97+
if not isinstance(geom,list) and not isinstance(geom,tuple):
98+
geom = [geom]
99+
if isinstance(geom[0],Patch):
100+
self.patches = geom
101+
elif isinstance(geom[0],pyclaw_geometry.Dimension):
102+
self.patches = [Patch(geom)]
91103

92104
class Dimension(pyclaw_geometry.Dimension):
93105
def __init__(self, lower, upper, num_cells, name='x',

0 commit comments

Comments
 (0)