version 0.0.1

This commit is contained in:
Your Name
2022-02-11 16:44:37 +01:00
parent fa8ffd5042
commit 1483746b45
29 changed files with 416 additions and 559 deletions

View File

@@ -1,35 +1,26 @@
import numpy as np
import scipy.io
import torch
from pina.segment import Segment
from pina.cube import Cube
from pina.problem import TimeDependentProblem, Problem1D
from pina.problem import TimeDependentProblem, SpatialProblem
from pina.operators import grad
from pina import Condition
from pina.span import Span
def tmp_grad(output_, input_):
return torch.autograd.grad(
output_,
input_.tensor,
grad_outputs=torch.ones(output_.size()).to(
dtype=input_.tensor.dtype,
device=input_.tensor.device),
create_graph=True, retain_graph=True, allow_unused=True)[0]
class Burgers1D(TimeDependentProblem, Problem1D):
class Burgers1D(TimeDependentProblem, SpatialProblem):
input_variables = ['x', 't']
spatial_variables = ['x']
temporal_variable = ['t']
output_variables = ['u']
spatial_domain = Cube([[-1, 1]])
temporal_domain = Cube([[0, 1]])
domain = Span({'x': [-1, 1], 't': [0, 1]})
def burger_equation(input_, output_):
grad_u = grad(output_['u'], input_)
grad_x, grad_t = tmp_grad(output_['u'], input_).T
grad_x, grad_t = grad(output_['u'], input_).T
gradgrad_u_x = grad(grad_u['x'], input_)
grad_xx = tmp_grad(grad_x, input_)[:, 0]
return grad_u['t'] + output_['u']*grad_u['x'] - (0.01/torch.pi)*gradgrad_u_x['x']
return (
grad_u['t'] + output_['u']*grad_u['x'] -
(0.01/torch.pi)*gradgrad_u_x['x']
)
def nil_dirichlet(input_, output_):
u_expected = 0.0
@@ -39,11 +30,9 @@ class Burgers1D(TimeDependentProblem, Problem1D):
u_expected = -torch.sin(torch.pi*input_['x'])
return output_['u'] - u_expected
conditions = {
'gamma1': {'location': Segment((-1, 0), (-1, 1)), 'func': nil_dirichlet},
'gamma2': {'location': Segment(( 1, 0), ( 1, 1)), 'func': nil_dirichlet},
'initia': {'location': Segment((-1, 0), ( 1, 0)), 'func': initial_condition},
'D': {'location': Cube([[-1, 1],[0,1]]), 'func': burger_equation}
'gamma1': Condition(Span({'x': -1, 't': [0, 1]}), nil_dirichlet),
'gamma2': Condition(Span({'x': 1, 't': [0, 1]}), nil_dirichlet),
't0': Condition(Span({'x': [-1, 1], 't': 0}), initial_condition),
'D': Condition(Span({'x': [-1, 1], 't': [0, 1]}), burger_equation),
}