Files
PINA/pina/condition/domain_equation_condition.py
Filippo Olivo a0cbf1c44a Improve conditions and refactor dataset classes (#475)
* Reimplement conditions

* Refactor datasets and implement LabelBatch

---------

Co-authored-by: Dario Coscia <dariocos99@gmail.com>
2025-03-19 17:46:36 +01:00

40 lines
1.3 KiB
Python

"""
DomainEquationCondition class definition.
"""
from .condition_interface import ConditionInterface
from ..utils import check_consistency
from ..domain import DomainInterface
from ..equation.equation_interface import EquationInterface
class DomainEquationCondition(ConditionInterface):
"""
Condition for domain/equation data. This condition must be used every
time a Physics Informed Loss is needed in the Solver.
"""
__slots__ = ["domain", "equation"]
def __init__(self, domain, equation):
"""
Initialize the DomainEquationCondition, storing the domain and equation.
:param DomainInterface domain: Domain object containing the domain data
:param EquationInterface equation: Equation object containing the
equation data
"""
super().__init__()
self.domain = domain
self.equation = equation
def __setattr__(self, key, value):
if key == "domain":
check_consistency(value, (DomainInterface, str))
DomainEquationCondition.__dict__[key].__set__(self, value)
elif key == "equation":
check_consistency(value, (EquationInterface))
DomainEquationCondition.__dict__[key].__set__(self, value)
elif key in ("_problem"):
super().__setattr__(key, value)