Source code for implementations.transfer_classes.TransferMesh_NoCoarse

from pySDC.core.errors import TransferError
from pySDC.core.space_transfer import SpaceTransfer
from pySDC.implementations.datatype_classes.mesh import mesh, imex_mesh


[docs] class mesh_to_mesh(SpaceTransfer): """ Custon base_transfer class, implements Transfer.py This implementation can restrict and prolong between nd meshes with dirichlet-0 or periodic boundaries via matrix-vector products Attributes: Rspace: spatial restriction matrix, dim. Nf x Nc Pspace: spatial prolongation matrix, dim. Nc x Nf """ def __init__(self, fine_prob, coarse_prob, params): """ Initialization routine Args: fine_prob: fine problem coarse_prob: coarse problem params: parameters for the transfer operators """ # invoke super initialization super(mesh_to_mesh, self).__init__(fine_prob, coarse_prob, params)
[docs] def restrict(self, F): """ Restriction implementation Args: F: the fine level data (easier to access than via the fine attribute) """ if isinstance(F, mesh): G = mesh(F) elif isinstance(F, imex_mesh): G = imex_mesh(F) else: raise TransferError('Unknown data type, got %s' % type(F)) return G
[docs] def prolong(self, G): """ Prolongation implementation Args: G: the coarse level data (easier to access than via the coarse attribute) """ if isinstance(G, mesh): F = mesh(G) elif isinstance(G, imex_mesh): F = imex_mesh(G) else: raise TransferError('Unknown data type, got %s' % type(G)) return F