File size: 849 Bytes
66c9c8a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from warp.fem.space import SpaceRestriction
from .field import DiscreteField


class FieldRestriction:
    """Restriction of a discrete field to a given GeometryDomain"""

    def __init__(self, space_restriction: SpaceRestriction, field: DiscreteField):
        if field.space.dimension - 1 == space_restriction.space_topology.dimension:
            field = field.trace()

        if field.space.dimension != space_restriction.space_topology.dimension:
            raise ValueError("Incompatible space and field dimensions")

        if field.space.topology != space_restriction.space_topology:
            raise ValueError("Incompatible field and space restriction topologies")

        self.space_restriction = space_restriction
        self.domain = self.space_restriction.domain
        self.field = field
        self.space = self.field.space