preliminary modifications for N-S
This commit is contained in:
@@ -12,26 +12,26 @@ class EllipticOptimalControl(Problem2D):
|
||||
def __init__(self, alpha=1):
|
||||
|
||||
def term1(input_, output_):
|
||||
grad_p = self.grad(output_['p'], input_)
|
||||
gradgrad_p_x1 = self.grad(grad_p['x1'], input_)
|
||||
gradgrad_p_x2 = self.grad(grad_p['x2'], input_)
|
||||
grad_p = self.grad(output_.extract(['p']), input_)
|
||||
gradgrad_p_x1 = self.grad(grad_p.extract(['x1']), input_)
|
||||
gradgrad_p_x2 = self.grad(grad_p.extract(['x2']), input_)
|
||||
yd = 2.0
|
||||
return output_['y'] - yd - (gradgrad_p_x1['x1'] + gradgrad_p_x2['x2'])
|
||||
return output_.extract(['y']) - yd - (gradgrad_p_x1.extract(['x1']) + gradgrad_p_x2.extract(['x2']))
|
||||
|
||||
def term2(input_, output_):
|
||||
grad_y = self.grad(output_['y'], input_)
|
||||
gradgrad_y_x1 = self.grad(grad_y['x1'], input_)
|
||||
gradgrad_y_x2 = self.grad(grad_y['x2'], input_)
|
||||
return - (gradgrad_y_x1['x1'] + gradgrad_y_x2['x2']) - output_['u']
|
||||
grad_y = self.grad(output_.extract(['y']), input_)
|
||||
gradgrad_y_x1 = self.grad(grad_y.extract(['x1']), input_)
|
||||
gradgrad_y_x2 = self.grad(grad_y.extract(['x2']), input_)
|
||||
return - (gradgrad_y_x1.extract(['x1']) + gradgrad_y_x2.extract(['x2'])) - output_.extract(['u'])
|
||||
|
||||
def term3(input_, output_):
|
||||
return output_['p'] - output_['u']*alpha
|
||||
return output_.extract(['p']) - output_.extract(['u'])*alpha
|
||||
|
||||
|
||||
def nil_dirichlet(input_, output_):
|
||||
y_value = 0.0
|
||||
p_value = 0.0
|
||||
return torch.abs(output_['y'] - y_value) + torch.abs(output_['p'] - p_value)
|
||||
return torch.abs(output_.extract(['y']) - y_value) + torch.abs(output_.extract(['p']) - p_value)
|
||||
|
||||
self.conditions = {
|
||||
'gamma1': {'location': Segment((xmin, ymin), (xmax, ymin)), 'func': nil_dirichlet},
|
||||
|
||||
Reference in New Issue
Block a user