Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
3cd2b73
change compilation flags for M4
campospinto Feb 13, 2026
acadab7
update gitignore for profiling and temp pyccel folders
campospinto Feb 13, 2026
0ceb382
use 2 patch for maxwell_2d_2_patch test
campospinto Feb 13, 2026
1430b70
use coarser and less grids in tests
campospinto Feb 13, 2026
9c17a52
Merge branch 'devel' into shorter_CI
campospinto Feb 13, 2026
79dc5b0
Merge branch 'devel' into shorter_CI
yguclu Feb 13, 2026
1fa1eb2
Merge branch 'devel' into shorter_CI
campospinto Feb 19, 2026
7282712
Update psydac/api/tests/test_2d_multipatch_mapping_maxwell.py
campospinto Feb 25, 2026
830e047
clean multipatch tests
campospinto Feb 26, 2026
2f598dd
update comment
campospinto Feb 26, 2026
88bfbde
revert changes to settings.py
campospinto Feb 26, 2026
121ea3a
add poisson test with bretzel domain
campospinto Feb 26, 2026
4b3ed90
Require Pyccel version >= 2.2.1
yguclu Mar 2, 2026
cafd8cd
Update build requirement on pyccel >= 2.2.1
yguclu Mar 3, 2026
2b06c44
Update psydac/api/tests/build_domain.py
campospinto Mar 3, 2026
238bab8
Update psydac/api/tests/build_domain.py
campospinto Mar 3, 2026
ff7ef79
Update psydac/api/tests/build_domain.py
campospinto Mar 3, 2026
55003eb
Update psydac/feec/multipatch_domain_utilities.py
campospinto Mar 3, 2026
b5b7ef9
Require Pyccel >= 2.2.2 at build and runtime
yguclu Mar 9, 2026
098ceba
clean build_domain.py
campospinto Mar 9, 2026
323f8ca
Merge branch 'devel' into shorter_CI
yguclu Mar 9, 2026
ca381ff
Import correct domain-building functions in API unit tests after name…
yguclu Mar 9, 2026
5e702c9
Fix parentheses in connectivities of test_2d_multipatch_poisson.py
yguclu Mar 10, 2026
7bc8654
Clean up test_2d_multipatch_poisson.py
yguclu Mar 10, 2026
e92ba5f
use expected conv order in projector tests
campospinto Mar 10, 2026
73eab39
Move prints from unit tests to manual run in test_global_projectors.py
yguclu Mar 10, 2026
9d4528f
use f2 and f3 in 3D projector tests
campospinto Mar 13, 2026
62807d9
accept small errors (tol = 1e-13) in convergence tests
campospinto Mar 13, 2026
4a25359
lower conv order in projector tests for low regularity functions
campospinto Mar 19, 2026
deb5a36
Merge branch 'devel' into shorter_CI
yguclu Mar 25, 2026
46a64c7
Don't run test_build_derham_mapping.py in parallel
yguclu Mar 25, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,15 @@
*.so
*.lock
__psydac__/
__*pyccel__/
__*pyccel__*/
docs/source/modules/STUBDIR/*

build
*build*
*egg*
*dist*
*cache*
prof

*.swp
*.log
Expand Down
4 changes: 2 additions & 2 deletions examples/notebooks/Poisson_non_periodic.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
"from sympde.topology import Square, PolarMapping\n",
"from sympde.utilities.utils import plot_domain\n",
"\n",
"from psydac.api.tests.build_domain import build_pretzel\n",
"from psydac.api.tests.build_domain import build_11_patch_pretzel\n",
"\n",
"# Define the topological geometry for each patch\n",
"rmin, rmax = 0.3, 1.\n",
Expand All @@ -50,7 +50,7 @@
"Omega = Domain.join(patches, connectivity, 'domain')\n",
"\n",
"# Example of a complex multi-patch domain\n",
"# Omega = build_pretzel()\n",
"# Omega = build_11_patch_pretzel()\n",
"\n",
"# Simple visualization of the topological domain\n",
"plot_domain(Omega, draw=False, isolines=True)"
Expand Down
6 changes: 3 additions & 3 deletions examples/old_examples/maxwell_2d_multi_patch.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
from sympde.expr.equation import find, EssentialBC

from psydac.api.discretization import discretize
from psydac.api.tests.build_domain import build_pretzel
from psydac.api.tests.build_domain import build_11_patch_pretzel
from psydac.fem.basic import FemField
from psydac.api.settings import PSYDAC_BACKEND_GPYCCEL
from psydac.feec.pull_push import pull_2d_hcurl
Expand Down Expand Up @@ -104,11 +104,11 @@ def run_maxwell_2d(uex, f, alpha, domain, ncells, degree, k=None, kappa=None, co

from collections import OrderedDict
from sympy import lambdify
from psydac.api.tests.build_domain import build_pretzel
from psydac.api.tests.build_domain import build_11_patch_pretzel
from psydac.fem.plotting_utilities import get_plotting_grid, get_grid_vals
from psydac.fem.plotting_utilities import get_patch_knots_gridlines, my_small_plot

domain = build_pretzel()
domain = build_11_patch_pretzel()
x,y = domain.coordinates
omega = 1.5
alpha = -omega**2
Expand Down
4 changes: 2 additions & 2 deletions examples/old_examples/poisson_2d_multi_patch.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,11 +109,11 @@ def run_poisson_2d(solution, f, domain, ncells, degree, comm=None):

from collections import OrderedDict
from sympy import lambdify
from psydac.api.tests.build_domain import build_pretzel
from psydac.api.tests.build_domain import build_11_patch_pretzel
from psydac.fem.plotting_utilities import get_plotting_grid, get_grid_vals
from psydac.fem.plotting_utilities import get_patch_knots_gridlines, my_small_plot

domain = build_pretzel()
domain = build_11_patch_pretzel()
x,y = domain.coordinates
solution = x**2 + y**2
f = -4
Expand Down
2 changes: 1 addition & 1 deletion examples/old_examples/poisson_3d_multi_patch.py
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ def run_poisson_3d_multi_patch(solution, f, domain, ncells, degree, comm=None, b

from collections import OrderedDict
from sympy import lambdify
from psydac.api.tests.build_domain import build_pretzel
from psydac.api.tests.build_domain import build_11_patch_pretzel

A1 = Cube('A1', bounds1=(0, 0.5), bounds2=(0, 0.5), bounds3=(0, 1))
A2 = Cube('A2', bounds1=(0.5, 1), bounds2=(0, 0.5), bounds3=(0, 1))
Expand Down
6 changes: 3 additions & 3 deletions examples/old_examples/sample_multi_patch_parallel.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@
from sympde.topology import ScalarFunctionSpace, VectorFunctionSpace

from psydac.api.discretization import discretize
from psydac.api.tests.build_domain import build_pretzel
from psydac.api.tests.build_domain import build_11_patch_pretzel
from psydac.api.postprocessing import OutputManager, PostProcessManager
from psydac.fem.basic import FemField

def save_sample_data(ncells, degree, vector, kind, comm=None):
domain = build_pretzel()
domain = build_11_patch_pretzel()

if vector or kind in ['hdiv', 'hcurl']:
space = VectorFunctionSpace('V', domain, kind=kind)
Expand Down Expand Up @@ -41,7 +41,7 @@ def save_sample_data(ncells, degree, vector, kind, comm=None):

def export_sample_data(npts_per_cell, comm=None):
Pm = PostProcessManager(
domain=build_pretzel(),
domain=build_11_patch_pretzel(),
space_file='sample_data_pretzel.yml',
fields_file='sample_data_pretzel.h5',
comm=comm,
Expand Down
143 changes: 51 additions & 92 deletions psydac/api/tests/build_domain.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,6 @@
from sympde.topology import Square, Domain
from sympde.topology import IdentityMapping, PolarMapping, AffineMapping, Mapping

# remove after sympde PR #155 is merged and call Domain.join instead
from psydac.feec.multipatch_domain_utilities import sympde_Domain_join

#==============================================================================
# small extension to SymPDE:
class TransposedPolarMapping(Mapping):
Expand Down Expand Up @@ -65,10 +62,33 @@ def flip_axis(name='no_name', c1=0., c2=0.):

#==============================================================================

# todo: use build_multipatch_domain instead
def build_pretzel(domain_name='pretzel', r_min=None, r_max=None):
def build_2_patch_annulus():
"""
design pretzel-like domain
Build a 180º annulus by connecting two 90º annular patches.
"""
Comment thread
campospinto marked this conversation as resolved.
bounds1 = (0.5, 1.)
bounds2_A = (0, np.pi/2)
bounds2_B = (np.pi/2, np.pi)

A = Square('A',bounds1=bounds1, bounds2=bounds2_A)
B = Square('B',bounds1=bounds1, bounds2=bounds2_B)

mapping_1 = PolarMapping('M1',2, c1= 0., c2= 0., rmin = 0., rmax=1.)
mapping_2 = PolarMapping('M2',2, c1= 0., c2= 0., rmin = 0., rmax=1.)

D1 = mapping_1(A)
D2 = mapping_2(B)

connectivity = [((0,1,1), (1,1,-1), 1)]
patches = [D1, D2]

domain = Domain.join(patches, connectivity, '2_patch_domain')

return domain

def build_11_patch_pretzel(domain_name='pretzel', r_min=None, r_max=None):
"""
Build a pretzel-like 2D domain by connecting 11 patches through 13 conforming interfaces.
"""

if r_min is None:
Expand All @@ -87,54 +107,18 @@ def build_pretzel(domain_name='pretzel', r_min=None, r_max=None):
mapping_1 = PolarMapping('M1',2, c1= h, c2= h, rmin = 0., rmax=1.)
domain_1 = mapping_1(dom_log_1)

dom_log_1_1 = Square('dom1_1',bounds1=(r_min, r_max), bounds2=(0, np.pi/4))
mapping_1_1 = PolarMapping('M1_1',2, c1= h, c2= h, rmin = 0., rmax=1.)
domain_1_1 = mapping_1_1(dom_log_1_1)

dom_log_1_2 = Square('dom1_2',bounds1=(r_min, r_max), bounds2=(np.pi/4, np.pi/2))
mapping_1_2 = PolarMapping('M1_2',2, c1= h, c2= h, rmin = 0., rmax=1.)
domain_1_2 = mapping_1_2(dom_log_1_2)

dom_log_2 = Square('dom2',bounds1=(r_min, r_max), bounds2=(np.pi/2, np.pi))
mapping_2 = PolarMapping('M2',2, c1= -h, c2= h, rmin = 0., rmax=1.)
domain_2 = mapping_2(dom_log_2)

dom_log_2_1 = Square('dom2_1',bounds1=(r_min, r_max), bounds2=(np.pi/2, np.pi*3/4))
mapping_2_1 = PolarMapping('M2_1',2, c1= -h, c2= h, rmin = 0., rmax=1.)
domain_2_1 = mapping_2_1(dom_log_2_1)

dom_log_2_2 = Square('dom2_2',bounds1=(r_min, r_max), bounds2=(np.pi*3/4, np.pi))
mapping_2_2 = PolarMapping('M2_2',2, c1= -h, c2= h, rmin = 0., rmax=1.)
domain_2_2 = mapping_2_2(dom_log_2_2)

dom_log_10 = Square('dom10',bounds1=(r_min, r_max), bounds2=(np.pi/2, np.pi))
mapping_10 = PolarMapping('M10',2, c1= h, c2= h, rmin = 0., rmax=1.)
domain_10 = mapping_10(dom_log_10)

dom_log_3 = Square('dom3',bounds1=(r_min, r_max), bounds2=(np.pi, np.pi*3/2))
mapping_3 = PolarMapping('M3',2, c1= -h, c2= 0, rmin = 0., rmax=1.)
domain_3 = mapping_3(dom_log_3)

dom_log_3_1 = Square('dom3_1',bounds1=(r_min, r_max), bounds2=(np.pi, np.pi*5/4))
mapping_3_1 = PolarMapping('M3_1',2, c1= -h, c2= 0, rmin = 0., rmax=1.)
domain_3_1 = mapping_3_1(dom_log_3_1)

dom_log_3_2 = Square('dom3_2',bounds1=(r_min, r_max), bounds2=(np.pi*5/4, np.pi*3/2))
mapping_3_2 = PolarMapping('M3_2',2, c1= -h, c2= 0, rmin = 0., rmax=1.)
domain_3_2 = mapping_3_2(dom_log_3_2)

dom_log_4 = Square('dom4',bounds1=(r_min, r_max), bounds2=(np.pi*3/2, np.pi*2))
mapping_4 = PolarMapping('M4',2, c1= h, c2= 0, rmin = 0., rmax=1.)
domain_4 = mapping_4(dom_log_4)

dom_log_4_1 = Square('dom4_1',bounds1=(r_min, r_max), bounds2=(np.pi*3/2, np.pi*7/4))
mapping_4_1 = PolarMapping('M4_1',2, c1= h, c2= 0, rmin = 0., rmax=1.)
domain_4_1 = mapping_4_1(dom_log_4_1)

dom_log_4_2 = Square('dom4_2',bounds1=(r_min, r_max), bounds2=(np.pi*7/4, np.pi*2))
mapping_4_2 = PolarMapping('M4_2',2, c1= h, c2= 0, rmin = 0., rmax=1.)
domain_4_2 = mapping_4_2(dom_log_4_2)

dom_log_5 = Square('dom5',bounds1=(-hr,hr) , bounds2=(-h/2, h/2))
mapping_5 = get_2D_rotation_mapping('M5', c1=h/2, c2=cr , alpha=np.pi/2)
domain_5 = mapping_5(dom_log_5)
Expand All @@ -147,45 +131,21 @@ def build_pretzel(domain_name='pretzel', r_min=None, r_max=None):
mapping_7 = get_2D_rotation_mapping('M7', c1=-cr, c2=h/2 , alpha=np.pi)
domain_7 = mapping_7(dom_log_7)

dom_log_9 = Square('dom9',bounds1=(-hr,hr) , bounds2=(-h, h))
mapping_9 = get_2D_rotation_mapping('M9', c1=0, c2=h-cr , alpha=np.pi*3/2)
domain_9 = mapping_9(dom_log_9)

dom_log_9_1 = Square('dom9_1',bounds1=(-hr,hr) , bounds2=(-h, 0))
mapping_9_1 = get_2D_rotation_mapping('M9_1', c1=0, c2=h-cr , alpha=np.pi*3/2)
domain_9_1 = mapping_9_1(dom_log_9_1)

dom_log_9_2 = Square('dom9_2',bounds1=(-hr,hr) , bounds2=(0, h))
mapping_9_2 = get_2D_rotation_mapping('M9_2', c1=0, c2=h-cr , alpha=np.pi*3/2)
domain_9_2 = mapping_9_2(dom_log_9_2)
dom_log_8 = Square('dom8',bounds1=(-hr,hr) , bounds2=(-h, h))
mapping_8 = get_2D_rotation_mapping('M8', c1=0, c2=h-cr , alpha=np.pi*3/2)
domain_8 = mapping_8(dom_log_8)

dom_log_12 = Square('dom12',bounds1=(-hr, hr), bounds2=(-h/2, h/2))
mapping_12 = AffineMapping('M12', 2, c1=cr, c2=h/2, a11=1, a22=-1, a21=0, a12=0)
domain_12 = mapping_12(dom_log_12)

dom_log_13 = Square('dom13',bounds1=(np.pi*3/2, np.pi*2), bounds2=(r_min, r_max))
mapping_13 = TransposedPolarMapping('M13',2, c1= -r_min-h, c2= r_min+h, rmin = 0., rmax=1.)
domain_13 = mapping_13(dom_log_13)

dom_log_13_1 = Square('dom13_1',bounds1=(np.pi*3/2, np.pi*7/4), bounds2=(r_min, r_max))
mapping_13_1 = TransposedPolarMapping('M13_1',2, c1= -r_min-h, c2= r_min+h, rmin = 0., rmax=1.)
domain_13_1 = mapping_13_1(dom_log_13_1)

dom_log_13_2 = Square('dom13_2',bounds1=(np.pi*7/4, np.pi*2), bounds2=(r_min, r_max))
mapping_13_2 = TransposedPolarMapping('M13_2',2, c1= -r_min-h, c2= r_min+h, rmin = 0., rmax=1.)
domain_13_2 = mapping_13_2(dom_log_13_2)

dom_log_14 = Square('dom14',bounds1=(np.pi, np.pi*3/2), bounds2=(r_min, r_max))
mapping_14 = TransposedPolarMapping('M14',2, c1= r_min+h, c2= r_min+h, rmin = 0., rmax=1.)
domain_14 = mapping_14(dom_log_14)
dom_log_9 = Square('dom9',bounds1=(-hr, hr), bounds2=(-h/2, h/2))
mapping_9 = AffineMapping('M9', 2, c1=cr, c2=h/2, a11=1, a22=-1, a21=0, a12=0)
domain_9 = mapping_9(dom_log_9)

dom_log_14_1 = Square('dom14_1',bounds1=(np.pi, np.pi*5/4), bounds2=(r_min, r_max))
mapping_14_1 = TransposedPolarMapping('M14_1',2, c1= r_min+h, c2= r_min+h, rmin = 0., rmax=1.)
domain_14_1 = mapping_14_1(dom_log_14_1)
dom_log_10 = Square('dom10',bounds1=(np.pi*3/2, np.pi*2), bounds2=(r_min, r_max))
mapping_10 = TransposedPolarMapping('M10',2, c1= -r_min-h, c2= r_min+h, rmin = 0., rmax=1.)
domain_10 = mapping_10(dom_log_10)

dom_log_14_2 = Square('dom14_2',bounds1=(np.pi*5/4, np.pi*3/2), bounds2=(r_min, r_max))
mapping_14_2 = TransposedPolarMapping('M14_2',2, c1= r_min+h, c2= r_min+h, rmin = 0., rmax=1.)
domain_14_2 = mapping_14_2(dom_log_14_2)
dom_log_11 = Square('dom11',bounds1=(np.pi, np.pi*3/2), bounds2=(r_min, r_max))
mapping_11 = TransposedPolarMapping('M11',2, c1= r_min+h, c2= r_min+h, rmin = 0., rmax=1.)
domain_11 = mapping_11(dom_log_11)

patches = ([
domain_1,
Expand All @@ -195,10 +155,10 @@ def build_pretzel(domain_name='pretzel', r_min=None, r_max=None):
domain_5,
domain_6,
domain_7,
domain_8,
domain_9,
domain_12,
domain_13,
domain_14,
domain_10,
domain_11,
])

axis_0 = 0
Expand All @@ -212,18 +172,17 @@ def build_pretzel(domain_name='pretzel', r_min=None, r_max=None):
[(domain_6, axis_1, ext_0), (domain_2, axis_1, ext_0), 1],
[(domain_2, axis_1, ext_1), (domain_7, axis_1, ext_0), 1],
[(domain_7, axis_1, ext_1), (domain_3, axis_1, ext_0), 1],
[(domain_3, axis_1, ext_1), (domain_9, axis_1, ext_0), 1],
[(domain_9, axis_1, ext_1), (domain_4, axis_1, ext_0), 1],
[(domain_4, axis_1, ext_1), (domain_12, axis_1, ext_1), 1],
[(domain_12, axis_1, ext_0), (domain_1, axis_1, ext_0), 1],
[(domain_6, axis_0, ext_0), (domain_13, axis_0, ext_1), 1],
[(domain_7, axis_0, ext_0), (domain_13, axis_0, ext_0), 1],
[(domain_5, axis_0, ext_0), (domain_14, axis_0, ext_0), 1],
[(domain_12, axis_0, ext_0), (domain_14, axis_0, ext_1), 1],
[(domain_3, axis_1, ext_1), (domain_8, axis_1, ext_0), 1],
[(domain_8, axis_1, ext_1), (domain_4, axis_1, ext_0), 1],
[(domain_4, axis_1, ext_1), (domain_9, axis_1, ext_1), 1],
[(domain_9, axis_1, ext_0), (domain_1, axis_1, ext_0), 1],
[(domain_6, axis_0, ext_0), (domain_10, axis_0, ext_1), 1],
[(domain_7, axis_0, ext_0), (domain_10, axis_0, ext_0), 1],
[(domain_5, axis_0, ext_0), (domain_11, axis_0, ext_0), 1],
[(domain_9, axis_0, ext_0), (domain_11, axis_0, ext_1), 1],
]

# domain = Domain.join(patches, connectivity, name=domain_name)
domain = sympde_Domain_join(patches, connectivity, name=domain_name)

domain = Domain.join(patches, connectivity, name=domain_name)

return domain

31 changes: 7 additions & 24 deletions psydac/api/tests/test_2d_complex.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@

from psydac.api.discretization import discretize
from psydac.api.settings import PSYDAC_BACKEND_GPYCCEL
from psydac.api.tests.build_domain import build_2_patch_annulus

# Get the mesh directory
import psydac.cad.mesh as mesh_mod
Expand Down Expand Up @@ -154,11 +155,6 @@ def run_poisson_2d(solution, f, domain, ncells=None, degree=None, filename=None,

kappa = 10**3

#expr_I =- dot(grad(plus(u)),nn)*minus(v) + dot(grad(minus(v)),nn)*plus(u) - kappa*plus(u)*minus(v)\
# + dot(grad(minus(u)),nn)*plus(v) - dot(grad(plus(v)),nn)*minus(u) - kappa*plus(v)*minus(u)\
# - dot(grad(plus(v)),nn)*plus(u) + kappa*plus(u)*plus(v)\
# - dot(grad(minus(v)),nn)*minus(u) + kappa*minus(u)*minus(v)

expr_I =- 0.5*dot(grad( plus(u)), nn) * minus(v) + 0.5*dot(grad(minus(v)), nn) * plus(u) - kappa * plus(u)*minus(v)\
+ 0.5*dot(grad(minus(u)), nn) * plus(v) - 0.5*dot(grad( plus(v)), nn) * minus(u) - kappa * plus(v)*minus(u)\
- 0.5*dot(grad(minus(v)), nn) * minus(u) - 0.5*dot(grad(minus(u)), nn) * minus(v) + kappa *minus(u)*minus(v)\
Expand Down Expand Up @@ -460,7 +456,8 @@ def test_complex_helmholtz_2d(plot_sol=False):
assert( abs(l2_error - expected_l2_error) < 1.e-7)
assert( abs(h1_error - expected_h1_error) < 1.e-7)

def test_maxwell_2d_2_patch_dirichlet_2():
def test_maxwell_2d_1_patch_dirichlet_2():

# This test solve the maxwell problem with non-homogeneous dirichlet condition with penalization on the border of the exact solution
domain = Square('domain', bounds1=(0, 1), bounds2=(0, 1))
x,y = domain.coordinates
Expand All @@ -480,23 +477,9 @@ def test_maxwell_2d_2_patch_dirichlet_2():

@pytest.mark.mpi
def test_maxwell_2d_2_patch_dirichlet_parallel_0():
# This test solve the maxwell problem with non-homogeneous dirichlet condition with penalization on the border of the exact solution

bounds1 = (0.5, 1.)
bounds2_A = (0, np.pi/2)
bounds2_B = (np.pi/2, np.pi)

A = Square('A', bounds1=bounds1, bounds2=bounds2_A)
B = Square('B', bounds1=bounds1, bounds2=bounds2_B)

mapping_1 = PolarMapping('M1',2, c1= 0., c2= 0., rmin = 0., rmax=1.)
mapping_2 = PolarMapping('M2',2, c1= 0., c2= 0., rmin = 0., rmax=1.)

D1 = mapping_1(A)
D2 = mapping_2(B)

domain = Domain.join([D1, D2], [((0, 1, 1), (1, 1, -1))], 'domain')

# This test solve the maxwell problem with non-homogeneous dirichlet condition with penalization on the border of the exact solution
domain = build_2_patch_annulus()
x, y = domain.coordinates

omega = 1.5
Expand Down Expand Up @@ -536,10 +519,10 @@ def teardown_function():

from psydac.fem.plotting_utilities import get_plotting_grid, get_grid_vals
from psydac.fem.plotting_utilities import get_patch_knots_gridlines, my_small_plot
from psydac.api.tests.build_domain import build_pretzel
from psydac.api.tests.build_domain import build_11_patch_pretzel
from psydac.feec.pull_push import pull_2d_hcurl

domain = build_pretzel()
domain = build_11_patch_pretzel()
x,y = domain.coordinates

omega = 1.5
Expand Down
Loading
Loading