Files
PINA/tests/test_union.py
Dario Coscia 982af4a04d Solving problems related to Geometry (#118)
* fix and add tests
* minor fix on domain classes

---------

Co-authored-by: Dario Coscia <dariocoscia@cli-10-110-0-208.WIFIeduroamSTUD.units.it>
Co-authored-by: Dario Coscia <dariocoscia@dhcp-040.eduroam.sissa.it>
2023-11-17 09:51:29 +01:00

59 lines
2.2 KiB
Python

import torch
from pina import LabelTensor
from pina.geometry import Union, EllipsoidDomain, CartesianDomain
def test_constructor_two_CartesianDomains():
Union([CartesianDomain({'x': [0, 1], 'y': [0, 1]}),
CartesianDomain({'x': [0.5, 2], 'y': [-1, 0.1]})])
def test_constructor_two_EllipsoidDomains():
Union([EllipsoidDomain({'x': [-1, 1], 'y': [-1, 1], 'z': [-1, 1]}),
EllipsoidDomain({'x': [-0.5, 0.5], 'y': [-0.5, 0.5], 'z': [-0.5, 0.5]})])
def test_constructor_EllipsoidDomain_CartesianDomain():
Union([EllipsoidDomain({'x': [-1, 1], 'y': [-1, 1]}),
CartesianDomain({'x': [-0.5, 0.5], 'y': [-0.5, 0.5]})])
def test_is_inside_two_CartesianDomains():
pt_1 = LabelTensor(torch.tensor([[0.5, 0.5]]), ['x', 'y'])
pt_2 = LabelTensor(torch.tensor([[-1, -1]]), ['x', 'y'])
domain = Union([CartesianDomain({'x': [0, 1], 'y': [0, 1]}),
CartesianDomain({'x': [0.5, 2], 'y': [-1, 0.1]})])
assert domain.is_inside(pt_1) == True
assert domain.is_inside(pt_2) == False
def test_is_inside_two_EllipsoidDomains():
pt_1 = LabelTensor(torch.tensor([[0.5, 0.5, 0.5]]), ['x', 'y', 'z'])
pt_2 = LabelTensor(torch.tensor([[-1, -1, -1]]), ['x', 'y', 'z'])
domain = Union([EllipsoidDomain({'x': [-1, 1], 'y': [-1, 1], 'z': [-1, 1]}),
EllipsoidDomain({'x': [-0.5, 0.5], 'y': [-0.5, 0.5], 'z': [-0.5, 0.5]})])
assert domain.is_inside(pt_1) == True
assert domain.is_inside(pt_2) == False
def test_is_inside_EllipsoidDomain_CartesianDomain():
pt_1 = LabelTensor(torch.tensor([[0.5, 0.5]]), ['x', 'y'])
pt_2 = LabelTensor(torch.tensor([[-1, -1]]), ['x', 'y'])
domain = Union([EllipsoidDomain({'x': [-1, 1], 'y': [-1, 1], }),
CartesianDomain({'x': [0.6, 1.5], 'y': [-2, 0]})])
assert domain.is_inside(pt_1) == True
assert domain.is_inside(pt_2) == False
def test_sample():
n = 100
domain = Union([EllipsoidDomain({'x': [-1, 1], 'y': [-1, 1]}),
CartesianDomain({'x': [-0.5, 0.5], 'y': [-0.5, 0.5]})])
pts = domain.sample(n)
assert isinstance(pts, LabelTensor)
assert pts.shape[0] == n
n = 105
pts = domain.sample(n)
assert isinstance(pts, LabelTensor)
assert pts.shape[0] == n