@@ -18,24 +18,24 @@ class ParametricProblem(AbstractProblem):
|
||||
>>> from pina.operators import grad
|
||||
>>> from pina import Condition, Span
|
||||
>>> import torch
|
||||
|
||||
>>>
|
||||
>>> class ParametricODE(SpatialProblem, ParametricProblem):
|
||||
|
||||
>>>
|
||||
>>> output_variables = ['u']
|
||||
>>> spatial_domain = Span({'x': [0, 1]})
|
||||
>>> parameter_domain = Span({'alpha': {1, 10}})
|
||||
|
||||
>>>
|
||||
>>> def ode_equation(input_, output_):
|
||||
>>> u_x = grad(output_, input_, components=['u'], d=['x'])
|
||||
>>> u = output_.extract(['u'])
|
||||
>>> alpha = input_.extract(['alpha'])
|
||||
>>> return alpha * u_x - u
|
||||
|
||||
>>>
|
||||
>>> def initial_condition(input_, output_):
|
||||
>>> value = 1.0
|
||||
>>> u = output_.extract(['u'])
|
||||
>>> return u - value
|
||||
|
||||
>>>
|
||||
>>> conditions = {
|
||||
>>> 'x0': Condition(Span({'x': 0, 'alpha':[1, 10]}), initial_condition),
|
||||
>>> 'D': Condition(Span({'x': [0, 1], 'alpha':[1, 10]}), ode_equation)}
|
||||
|
||||
@@ -16,22 +16,19 @@ class SpatialProblem(AbstractProblem):
|
||||
>>> from pina.operators import grad
|
||||
>>> from pina import Condition, Span
|
||||
>>> import torch
|
||||
|
||||
>>> class SimpleODE(SpatialProblem):
|
||||
|
||||
>>> output_variables = ['u']
|
||||
>>> spatial_domain = Span({'x': [0, 1]})
|
||||
|
||||
>>> def ode_equation(input_, output_):
|
||||
>>> u_x = grad(output_, input_, components=['u'], d=['x'])
|
||||
>>> u = output_.extract(['u'])
|
||||
>>> return u_x - u
|
||||
|
||||
>>>
|
||||
>>> def initial_condition(input_, output_):
|
||||
>>> value = 1.0
|
||||
>>> u = output_.extract(['u'])
|
||||
>>> return u - value
|
||||
|
||||
>>>
|
||||
>>> conditions = {
|
||||
>>> 'x0': Condition(Span({'x': 0.}), initial_condition),
|
||||
>>> 'D': Condition(Span({'x': [0, 1]}), ode_equation)}
|
||||
|
||||
@@ -16,29 +16,29 @@ class TimeDependentProblem(AbstractProblem):
|
||||
>>> from pina.operators import grad, nabla
|
||||
>>> from pina import Condition, Span
|
||||
>>> import torch
|
||||
|
||||
>>>
|
||||
>>> class Wave(TimeDependentSpatialProblem):
|
||||
|
||||
>>>
|
||||
>>> output_variables = ['u']
|
||||
>>> spatial_domain = Span({'x': [0, 3]})
|
||||
>>> temporal_domain = Span({'t': [0, 1]})
|
||||
|
||||
>>>
|
||||
>>> def wave_equation(input_, output_):
|
||||
>>> u_t = grad(output_, input_, components=['u'], d=['t'])
|
||||
>>> u_tt = grad(u_t, input_, components=['dudt'], d=['t'])
|
||||
>>> nabla_u = nabla(output_, input_, components=['u'], d=['x'])
|
||||
>>> return nabla_u - u_tt
|
||||
|
||||
>>>
|
||||
>>> def nil_dirichlet(input_, output_):
|
||||
>>> value = 0.0
|
||||
>>> return output_.extract(['u']) - value
|
||||
|
||||
>>>
|
||||
>>> def initial_condition(input_, output_):
|
||||
>>> u_expected = (-3*torch.sin(2*torch.pi*input_.extract(['x']))
|
||||
>>> + 5*torch.sin(8/3*torch.pi*input_.extract(['x'])))
|
||||
>>> u = output_.extract(['u'])
|
||||
>>> return u - u_expected
|
||||
|
||||
>>>
|
||||
>>> conditions = {
|
||||
>>> 't0': Condition(Span({'x': [0, 3], 't':0}), initial_condition),
|
||||
>>> 'gamma1': Condition(Span({'x':0, 't':[0, 1]}), nil_dirichlet),
|
||||
|
||||
Reference in New Issue
Block a user