Ejemplo n.º 1
0
def test_generic_line():

    # Create 1D domain (Line) from interval [-3, 4]
    domain = Line('line', bounds=(-3, 4))

    assert isinstance(domain, Line)

    # BasicDomain's attributes
    assert domain.dim == 1
    assert domain.name == 'line'
    assert domain.coordinates == x1

    # Domain's attributes
    assert isinstance(domain.interior, NCubeInterior)
    assert len(domain.boundary) == 2
    assert domain.dtype == {'type': 'Line', 'parameters': {'bounds': [-3, 4]}}

    # NCube's attributes
    assert domain.min_coords == (-3, )
    assert domain.max_coords == (4, )

    # Line's attributes
    assert domain.bounds == (-3, 4)

    # Export to file, read it again and compare with original domain
    domain.export('domain.h5')
    D = Domain.from_file('domain.h5')
    assert D.logical_domain == domain
Ejemplo n.º 2
0
def test_topology_1():
    # ... create a domain with 2 subdomains A and B
    A = InteriorDomain('A', dim=2)
    B = InteriorDomain('B', dim=2)

    connectivity = Connectivity()

    bnd_A_1 = Boundary('Gamma_1', A)
    bnd_A_2 = Boundary('Gamma_2', A)
    bnd_A_3 = Boundary('Gamma_3', A)

    bnd_B_1 = Boundary('Gamma_1', B)
    bnd_B_2 = Boundary('Gamma_2', B)
    bnd_B_3 = Boundary('Gamma_3', B)

    connectivity['I'] = (bnd_A_1, bnd_B_2)

    Omega = Domain('Omega',
                   interiors=[A, B],
                   boundaries=[bnd_A_2, bnd_A_3, bnd_B_1, bnd_B_3],
                   connectivity=connectivity)

    interfaces = Omega.interfaces
    assert(isinstance(interfaces, Interface))

    # export
    Omega.export('omega.h5')
    # ...

    # read it again and check that it has the same description as Omega
    D = Domain.from_file('omega.h5')
    assert( D.todict() == Omega.todict() )
Ejemplo n.º 3
0
def test_square():
    square = Square('square')

    assert (square.dim == 2)
    assert (len(square.boundary) == 4)

    square.export('square.h5')

    # read it again
    D = Domain.from_file('square.h5')
Ejemplo n.º 4
0
def test_orthogonal_hexahedron():

    # Create 3D orthogonal hexahedron [-1, 1] X [0, 10] X [0, 2]
    domain = Cube('hexahedron',
                  bounds1=(-1, 1),
                  bounds2=(0, 10),
                  bounds3=(0, 2))

    assert isinstance(domain, Cube)

    # Check object attributes
    assert domain.dim == 3
    assert domain.name == 'hexahedron'
    assert domain.coordinates == (x1, x2, x3)

    # Domain's attributes
    assert isinstance(domain.interior, InteriorDomain)
    assert isinstance(domain.interior.target, ProductDomain)
    assert all(isinstance(i, Interval) for i in domain.interior.target.domains)
    assert len(domain.interior.target.domains) == 3
    assert len(domain.boundary) == 6
    assert domain.dtype == {
        'type': 'Cube',
        'parameters': {
            'bounds1': [-1, 1],
            'bounds2': [0, 10],
            'bounds3': [0, 2]
        }
    }

    # NCube's attributes
    assert domain.min_coords == (-1, 0, 0)
    assert domain.max_coords == (1, 10, 2)

    # Cube's attributes
    assert domain.bounds1 == (-1, 1)
    assert domain.bounds2 == (0, 10)
    assert domain.bounds3 == (0, 2)

    # Export to file, read it again and compare with original domain
    domain.export('domain.h5')
    D = Domain.from_file('domain.h5')
    assert D.logical_domain == domain
Ejemplo n.º 5
0
def test_unit_square():

    # Create 2D square domain [0, 1]^2
    domain = Square('square')

    assert isinstance(domain, Square)

    # BasicDomain's attributes
    assert domain.dim == 2
    assert domain.name == 'square'
    assert domain.coordinates == (x1, x2)

    # Domain's attributes
    assert isinstance(domain.interior, InteriorDomain)
    assert isinstance(domain.interior.target, ProductDomain)
    assert all(isinstance(i, Interval) for i in domain.interior.target.domains)
    assert len(domain.interior.target.domains) == 2
    assert len(domain.boundary) == 4
    assert domain.dtype == {
        'type': 'Square',
        'parameters': {
            'bounds1': [0, 1],
            'bounds2': [0, 1]
        }
    }

    # NCube's attributes
    assert domain.min_coords == (0, 0)
    assert domain.max_coords == (1, 1)

    # Square's attributes
    assert domain.bounds1 == (0, 1)
    assert domain.bounds2 == (0, 1)

    # Export to file, read it again and compare with original domain
    domain.export('domain.h5')
    D = Domain.from_file('domain.h5')
    assert D.logical_domain == domain
Ejemplo n.º 6
0
def test_rectangle():

    # Create 2D rectangular domain [1, 5] X [3, 7]
    domain = Square('rectangle', bounds1=(1, 5), bounds2=(3, 7))

    assert isinstance(domain, Square)

    # BasicDomain's attributes
    assert domain.dim == 2
    assert domain.name == 'rectangle'
    assert domain.coordinates == (x1, x2)

    # Domain's attributes
    assert isinstance(domain.interior, InteriorDomain)
    assert isinstance(domain.interior.target, ProductDomain)
    assert all(isinstance(i, Interval) for i in domain.interior.target.domains)
    assert len(domain.interior.target.domains) == 2
    assert len(domain.boundary) == 4
    assert domain.dtype == {
        'type': 'Square',
        'parameters': {
            'bounds1': [1, 5],
            'bounds2': [3, 7]
        }
    }

    # NCube's attributes
    assert domain.min_coords == (1, 3)
    assert domain.max_coords == (5, 7)

    # Square's attributes
    assert domain.bounds1 == (1, 5)
    assert domain.bounds2 == (3, 7)

    # Export to file, read it again and compare with original domain
    domain.export('domain.h5')
    D = Domain.from_file('domain.h5')
    assert D.logical_domain == domain