3333import numpy as np
3434import sympy as sp
3535import sympy .polys .agca .modules as sp_modules
36- from immutabledict import immutabledict
36+ from constantdict import constantdict
3737
3838from pytools import memoize
3939
@@ -115,7 +115,8 @@ def __mul__(self, param: Number_ish) -> LinearPDESystemOperator:
115115 deriv_ident_to_coeff = {}
116116 for k , v in eq .items ():
117117 deriv_ident_to_coeff [k ] = v * param
118- eqs .append (immutabledict (deriv_ident_to_coeff ))
118+ eqs .append (constantdict (deriv_ident_to_coeff ))
119+
119120 return LinearPDESystemOperator (self .dim , tuple (eqs ))
120121
121122 __rmul__ = __mul__
@@ -125,6 +126,7 @@ def __add__(
125126 ) -> LinearPDESystemOperator :
126127 assert self .dim == other_diff_op .dim
127128 assert len (self .eqs ) == len (other_diff_op .eqs )
129+
128130 eqs : list [Mapping [DerivativeIdentifier , sp .Expr ]] = []
129131 for eq , other_eq in zip (self .eqs , other_diff_op .eqs , strict = True ):
130132 res = dict (eq )
@@ -133,7 +135,8 @@ def __add__(
133135 res [k ] += v
134136 else :
135137 res [k ] = v
136- eqs .append (immutabledict (res ))
138+ eqs .append (constantdict (res ))
139+
137140 return LinearPDESystemOperator (self .dim , tuple (eqs ))
138141
139142 __radd__ = __add__
@@ -269,7 +272,7 @@ def intersect(
269272 DerivativeIdentifier (mi , 0 ): sym .sympify (coeff .as_expr ().simplify ()) for
270273 (mi , coeff ) in zip (scalar_pde .monoms (), scalar_pde .coeffs (), strict = True )
271274 }
272- results .append (LinearPDESystemOperator (pde .dim , (immutabledict (pde_dict ),)))
275+ results .append (LinearPDESystemOperator (pde .dim , (constantdict (pde_dict ),)))
273276
274277 return results
275278
@@ -347,8 +350,8 @@ def as_scalar_pde(pde: LinearPDESystemOperator, comp_idx: int) \
347350
348351def laplacian (diff_op : LinearPDESystemOperator ) -> LinearPDESystemOperator :
349352 dim = diff_op .dim
350- empty : tuple [Mapping [DerivativeIdentifier , sp .Expr ], ...] = \
351- (immutabledict (),) * len (diff_op .eqs )
353+ empty : tuple [Mapping [DerivativeIdentifier , sp .Expr ], ...] = (
354+ (constantdict (),) * len (diff_op .eqs ) )
352355 res = LinearPDESystemOperator (dim , empty )
353356 for j in range (dim ):
354357 mi = [0 ]* diff_op .total_dims
@@ -366,17 +369,20 @@ def diff(
366369 for deriv_ident , v in eq .items ():
367370 new_mi = add_mi (deriv_ident .mi , mi )
368371 res [DerivativeIdentifier (new_mi , deriv_ident .vec_idx )] = v
369- eqs .append (immutabledict (res ))
372+ eqs .append (constantdict (res ))
373+
370374 return LinearPDESystemOperator (diff_op .dim , tuple (eqs ))
371375
372376
373377def divergence (diff_op : LinearPDESystemOperator ) -> LinearPDESystemOperator :
374378 assert len (diff_op .eqs ) == diff_op .dim
375- res = LinearPDESystemOperator (diff_op .dim , (immutabledict (),))
379+
380+ res = LinearPDESystemOperator (diff_op .dim , (constantdict (),))
376381 for i in range (diff_op .dim ):
377382 mi = [0 ]* diff_op .total_dims
378383 mi [i ] = 1
379384 res += diff (diff_op [i ], tuple (mi ))
385+
380386 return res
381387
382388
@@ -436,6 +442,6 @@ def make_identity_diff_op(
436442 mi = tuple ([0 ]* (ninput + 1 ))
437443 else :
438444 mi = tuple ([0 ]* ninput )
439- return LinearPDESystemOperator (ninput , tuple (immutabledict (
440- {DerivativeIdentifier (mi , i ): sp .sympify (1 )})
441- for i in range (noutput )))
445+ return LinearPDESystemOperator (ninput , tuple (
446+ constantdict ( {DerivativeIdentifier (mi , i ): sp .sympify (1 )})
447+ for i in range (noutput )))
0 commit comments