@@ -16,159 +16,6 @@ def lower_exprs_petsc(expressions, **kwargs):
1616 return expressions
1717
1818
19- # def constrain_essential_bcs(expressions, **kwargs):
20- # """ """
21-
22- # sregistry = kwargs.get("sregistry")
23-
24- # constrain_expressions = [e for e in expressions if isinstance(e, ConstrainBC)]
25-
26- # if not constrain_expressions:
27- # return expressions
28-
29- # # Ensure all ConstrainBCs share the same target
30- # targets = {e.target.function for e in constrain_expressions}
31- # # if len(targets) != 1:
32- # # raise ValueError(
33- # # f"All ConstrainBCs must have the same target, "
34- # # f"but found {len(targets)} different targets: {targets}"
35- # # )
36-
37- # # Safe to pick the single target
38- # target = next(iter(targets))
39- # # from IPython import embed; embed()
40-
41- # all_dims = {d for e in constrain_expressions for d in extract_dims(e)}
42-
43- # subdims = [d for d in all_dims if d.is_Sub and not d.local]
44- # space_dims = [d for d in all_dims if isinstance(d, SpaceDimension)]
45-
46- # mapper = {}
47-
48- # for d in subdims:
49- # if d in mapper:
50- # continue
51-
52- # subdim_max = SubDimMax(
53- # sregistry.make_name(prefix=f"{d.name}_max"),
54- # subdim=d,
55- # )
56- # subdim_min = SubDimMin(
57- # sregistry.make_name(prefix=f"{d.name}_min"),
58- # subdim=d,
59- # )
60-
61- # halo_left = target.function._size_halo[d].left
62- # halo_right = target.function._size_halo[d].right
63-
64- # # the name for this can just be d.name
65- # mapper[d] = CustomDimension(
66- # name=sregistry.make_name(prefix=f"{d.name}_new"),
67- # symbolic_min=Max(subdim_min, d.parent.symbolic_min - halo_left),
68- # symbolic_max=Min(subdim_max, d.parent.symbolic_max + halo_right),
69- # )
70-
71- # for d in space_dims:
72- # if d in mapper:
73- # continue
74-
75- # space_dim_max = SpaceDimMax(
76- # sregistry.make_name(prefix=f"{d.name}_max"),
77- # space_dim=d,
78- # )
79- # space_dim_min = SpaceDimMin(
80- # sregistry.make_name(prefix=f"{d.name}_min"),
81- # space_dim=d,
82- # )
83-
84- # halo_left = target.function._size_halo[d].left
85- # halo_right = target.function._size_halo[d].right
86-
87- # mapper[d] = CustomDimension(
88- # name=sregistry.make_name(prefix=f"{d.name}_expanded"),
89- # symbolic_min=Max(space_dim_min, d.symbolic_min - halo_left),
90- # symbolic_max=Min(space_dim_max, d.symbolic_max + halo_right),
91- # )
92-
93- # new_exprs = []
94-
95- # for e in expressions:
96- # if not isinstance(e, ConstrainBC):
97- # new_exprs.append(e)
98- # continue
99-
100- # dims = extract_dims(e)
101-
102- # if not dims:
103- # new_exprs.append(e)
104- # continue
105-
106- # new_e = uxreplace(e, mapper)
107-
108- # if e.implicit_dims:
109- # new_e = new_e._rebuild(
110- # implicit_dims=tuple(mapper.get(d, d) for d in e.implicit_dims)
111- # )
112-
113- # new_exprs.append(new_e)
114-
115- # return new_exprs
116-
117-
118-
119- ## not a global mapper
120- # def constrain_essential_bcs(expressions, **kwargs):
121- # new_exprs = []
122- # sregistry = kwargs['sregistry']
123-
124- # for e in expressions:
125- # if not isinstance(e, ConstrainBC):
126- # new_exprs.append(e)
127- # continue
128-
129- # dims = extract_dims(e)
130- # if not dims:
131- # new_exprs.append(e)
132- # continue
133-
134- # # Build local mapper for this expression
135- # mapper = {}
136-
137- # for d in dims:
138- # halo = e.target.function._size_halo[d]
139-
140- # if d.is_Sub and not d.local:
141- # subdim_max = SubDimMax(sregistry.make_name(prefix=f"{d.name}_max"), subdim=d)
142- # subdim_min = SubDimMin(sregistry.make_name(prefix=f"{d.name}_min"), subdim=d)
143-
144- # mapper[d] = CustomDimension(
145- # name=d.name,
146- # symbolic_min=Max(subdim_min, d.parent.symbolic_min - halo.left),
147- # symbolic_max=Min(subdim_max, d.parent.symbolic_max + halo.right),
148- # )
149-
150- # elif isinstance(d, SpaceDimension):
151- # space_dim_max = SpaceDimMax(sregistry.make_name(prefix=f"{d.name}_max"), space_dim=d)
152- # space_dim_min = SpaceDimMin(sregistry.make_name(prefix=f"{d.name}_min"), space_dim=d)
153-
154- # mapper[d] = CustomDimension(
155- # name=d.name,
156- # symbolic_min=Max(space_dim_min, d.symbolic_min - halo.left),
157- # symbolic_max=Min(space_dim_max, d.symbolic_max + halo.right),
158- # )
159-
160- # new_e = uxreplace(e, mapper)
161- # if e.implicit_dims:
162- # new_e = new_e._rebuild(
163- # implicit_dims=tuple(mapper.get(d, d) for d in e.implicit_dims)
164- # )
165-
166- # new_exprs.append(new_e)
167-
168- # return new_exprs
169-
170-
171-
17219def constrain_essential_bcs (expressions , ** kwargs ):
17320 """
17421 Expand ConstrainBC expressions to include halo regions by creating new
@@ -197,8 +44,12 @@ def constrain_essential_bcs(expressions, **kwargs):
19744 for d in subdims :
19845 halo = halo_size [d ]
19946
200- subdim_max = SubDimMax (sregistry .make_name (prefix = f"{ d .name } _max" ), subdim = d )
201- subdim_min = SubDimMin (sregistry .make_name (prefix = f"{ d .name } _min" ), subdim = d )
47+ subdim_max = SubDimMax (
48+ sregistry .make_name (prefix = f"{ d .name } _max" ), subdim = d
49+ )
50+ subdim_min = SubDimMin (
51+ sregistry .make_name (prefix = f"{ d .name } _min" ), subdim = d
52+ )
20253
20354 mapper [d ] = CustomDimension (
20455 name = sregistry .make_name (prefix = f"{ d .name } _new" ),
@@ -208,8 +59,12 @@ def constrain_essential_bcs(expressions, **kwargs):
20859
20960 for d in space_dims :
21061 halo = halo_size [d ]
211- space_dim_max = SpaceDimMax (sregistry .make_name (prefix = f"{ d .name } _max" ), space_dim = d )
212- space_dim_min = SpaceDimMin (sregistry .make_name (prefix = f"{ d .name } _min" ), space_dim = d )
62+ space_dim_max = SpaceDimMax (
63+ sregistry .make_name (prefix = f"{ d .name } _max" ), space_dim = d
64+ )
65+ space_dim_min = SpaceDimMin (
66+ sregistry .make_name (prefix = f"{ d .name } _min" ), space_dim = d
67+ )
21368
21469 mapper [d ] = CustomDimension (
21570 name = sregistry .make_name (prefix = f"{ d .name } _expanded" ),
@@ -246,4 +101,4 @@ def extract_dims(expr):
246101 mode = "unique" ,
247102 )
248103 dims .update (expr .implicit_dims )
249- return dims
104+ return dims
0 commit comments