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
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() )
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')
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
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
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