Adding new problems to problem.zoo (#484)

* adding problems
* add tests
* update doc + formatting

---------

Co-authored-by: Dario Coscia <dariocos99@gmail.com>
This commit is contained in:
Giovanni Canali
2025-03-12 10:42:16 +01:00
committed by Nicola Demo
parent 2ae4a94e49
commit f67467e5bd
21 changed files with 570 additions and 168 deletions

View File

@@ -0,0 +1,18 @@
import pytest
from pina.problem.zoo import AdvectionProblem
from pina.problem import SpatialProblem, TimeDependentProblem
@pytest.mark.parametrize("c", [1.5, 3])
def test_constructor(c):
print(f"Testing with c = {c} (type: {type(c)})")
problem = AdvectionProblem(c=c)
problem.discretise_domain(n=10, mode="random", domains="all")
assert problem.are_all_domains_discretised
assert isinstance(problem, SpatialProblem)
assert isinstance(problem, TimeDependentProblem)
assert hasattr(problem, "conditions")
assert isinstance(problem.conditions, dict)
with pytest.raises(ValueError):
AdvectionProblem(c="a")

View File

@@ -0,0 +1,12 @@
from pina.problem.zoo import AllenCahnProblem
from pina.problem import SpatialProblem, TimeDependentProblem
def test_constructor():
problem = AllenCahnProblem()
problem.discretise_domain(n=10, mode="random", domains="all")
assert problem.are_all_domains_discretised
assert isinstance(problem, SpatialProblem)
assert isinstance(problem, TimeDependentProblem)
assert hasattr(problem, "conditions")
assert isinstance(problem.conditions, dict)

View File

@@ -0,0 +1,12 @@
from pina.problem.zoo import DiffusionReactionProblem
from pina.problem import TimeDependentProblem, SpatialProblem
def test_constructor():
problem = DiffusionReactionProblem()
problem.discretise_domain(n=10, mode="random", domains="all")
assert problem.are_all_domains_discretised
assert isinstance(problem, TimeDependentProblem)
assert isinstance(problem, SpatialProblem)
assert hasattr(problem, "conditions")
assert isinstance(problem.conditions, dict)

View File

@@ -0,0 +1,16 @@
import pytest
from pina.problem.zoo import HelmholtzProblem
from pina.problem import SpatialProblem
@pytest.mark.parametrize("alpha", [1.5, 3])
def test_constructor(alpha):
problem = HelmholtzProblem(alpha=alpha)
problem.discretise_domain(n=10, mode="random", domains="all")
assert problem.are_all_domains_discretised
assert isinstance(problem, SpatialProblem)
assert hasattr(problem, "conditions")
assert isinstance(problem.conditions, dict)
with pytest.raises(ValueError):
HelmholtzProblem(alpha="a")

View File

@@ -0,0 +1,12 @@
from pina.problem.zoo import InversePoisson2DSquareProblem
from pina.problem import InverseProblem, SpatialProblem
def test_constructor():
problem = InversePoisson2DSquareProblem()
problem.discretise_domain(n=10, mode="random", domains="all")
assert problem.are_all_domains_discretised
assert isinstance(problem, InverseProblem)
assert isinstance(problem, SpatialProblem)
assert hasattr(problem, "conditions")
assert isinstance(problem.conditions, dict)

View File

@@ -1,5 +1,11 @@
from pina.problem.zoo import Poisson2DSquareProblem
from pina.problem import SpatialProblem
def test_constructor():
Poisson2DSquareProblem()
problem = Poisson2DSquareProblem()
problem.discretise_domain(n=10, mode="random", domains="all")
assert problem.are_all_domains_discretised
assert isinstance(problem, SpatialProblem)
assert hasattr(problem, "conditions")
assert isinstance(problem.conditions, dict)