feec.multipatch.multipatch_domain_utilities#

Functions#

build_cartesian_multipatch_domain(ncells, ...)

Create a 2D multipatch Cartesian domain with the prescribed pattern of patches and with possible mappings.

build_multipatch_domain([domain_name, ...])

Create a 2D multipatch domain among the many available.

flip_axis([name, c1, c2])

get_2D_rotation_mapping([name, c1, c2, alpha])

sympde_Domain_join(patches, connectivity, name)

temporary fix while sympde PR #155 is not merged

Classes#

Inheritance diagram of psydac.feec.multipatch.multipatch_domain_utilities

TransposedPolarMapping(*args, **kwargs)

Represents a Transposed (x1 <> x2) Polar 2D Mapping object (Annulus).

Details#

class TransposedPolarMapping(*args: Any, **kwargs: Any)[source]#

Bases: Mapping

Represents a Transposed (x1 <> x2) Polar 2D Mapping object (Annulus).

get_2D_rotation_mapping(name='no_name', c1=0.0, c2=0.0, alpha=None)[source]#
flip_axis(name='no_name', c1=0.0, c2=0.0)[source]#
build_multipatch_domain(domain_name='square_2', r_min=None, r_max=None)[source]#

Create a 2D multipatch domain among the many available. These include fairly complex pretzel-like shapes.

Parameters:
domain_name: <str>
The name of the chosen domain, which can be one of the following:

‘square_2’, ‘square_6’, ‘square_8’, ‘square_9’, ‘annulus_3’, ‘annulus_4’, ‘curved_L_shape’, ‘pretzel’, ‘pretzel_f’, ‘pretzel_annulus’, ‘pretzel_debug’

Returns:
domain<Sympde.topology.Domain>

The symbolic multipatch domain

build_cartesian_multipatch_domain(ncells, log_interval_x, log_interval_y, mapping='identity')[source]#

Create a 2D multipatch Cartesian domain with the prescribed pattern of patches and with possible mappings.

Parameters:
ncells: <matrix>

(Incomplete) Cartesian grid of patches, where some patches may be empty. The pattern of the multipatch domain is defined by the non-None entries of the matrix ncells. (Different numerical values will give rise to the same multipatch decompostion)

ncells can then be used (afterwards) for discretizing the domain with ncells[i,j] being the number of cells (assumed isotropic in each patch) in the patch (i,j), and None for empty patches (removed from domain).

Example:

>>> ncells = np.array([[1, None, 5],
>>>                    [2,    3, 4]])

corresponds to a domain with 5 patches as follows:

>>> |X| |X|
>>> -------
>>> |X|X|X|
log_interval_x: <Tuple>

The interval in the x direction in the logical domain.

log_interval_y: <Tuple>

The interval in the y direction in the logical domain.

mapping: <String>

The type of mapping to use. Can be ‘identity’ or ‘polar’.

Returns:
domain<Sympde.topology.Domain>

The symbolic multipatch domain