Update Tutorials 0.2 (#490)
This commit is contained in:
committed by
Nicola Demo
parent
beee4cdc0b
commit
6ce0bafc2b
100
tutorials/tutorial12/tutorial.ipynb
vendored
100
tutorials/tutorial12/tutorial.ipynb
vendored
@@ -63,11 +63,11 @@
|
||||
"import torch\n",
|
||||
"\n",
|
||||
"#useful imports\n",
|
||||
"from pina import Condition\n",
|
||||
"from pina.problem import SpatialProblem, TimeDependentProblem\n",
|
||||
"from pina.equation import Equation, FixedValue\n",
|
||||
"from pina.domain import CartesianDomain\n",
|
||||
"from pina.operator import grad, laplacian\n",
|
||||
"from pina import Condition"
|
||||
"from pina.operator import grad, laplacian"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -76,34 +76,50 @@
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# define the burger equation\n",
|
||||
"def burger_equation(input_, output_):\n",
|
||||
" du = grad(output_, input_)\n",
|
||||
" ddu = grad(du, input_, components=[\"dudx\"])\n",
|
||||
" return (\n",
|
||||
" du.extract([\"dudt\"])\n",
|
||||
" + output_.extract([\"u\"]) * du.extract([\"dudx\"])\n",
|
||||
" - (0.01 / torch.pi) * ddu.extract([\"ddudxdx\"])\n",
|
||||
" )\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"# define initial condition\n",
|
||||
"def initial_condition(input_, output_):\n",
|
||||
" u_expected = -torch.sin(torch.pi * input_.extract([\"x\"]))\n",
|
||||
" return output_.extract([\"u\"]) - u_expected\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"class Burgers1D(TimeDependentProblem, SpatialProblem):\n",
|
||||
"\n",
|
||||
" # define the burger equation\n",
|
||||
" def burger_equation(input_, output_):\n",
|
||||
" du = grad(output_, input_)\n",
|
||||
" ddu = grad(du, input_, components=['dudx'])\n",
|
||||
" return (\n",
|
||||
" du.extract(['dudt']) +\n",
|
||||
" output_.extract(['u'])*du.extract(['dudx']) -\n",
|
||||
" (0.01/torch.pi)*ddu.extract(['ddudxdx'])\n",
|
||||
" )\n",
|
||||
"\n",
|
||||
" # define initial condition\n",
|
||||
" def initial_condition(input_, output_):\n",
|
||||
" u_expected = -torch.sin(torch.pi*input_.extract(['x']))\n",
|
||||
" return output_.extract(['u']) - u_expected\n",
|
||||
"\n",
|
||||
" # assign output/ spatial and temporal variables\n",
|
||||
" output_variables = ['u']\n",
|
||||
" spatial_domain = CartesianDomain({'x': [-1, 1]})\n",
|
||||
" temporal_domain = CartesianDomain({'t': [0, 1]})\n",
|
||||
" output_variables = [\"u\"]\n",
|
||||
" spatial_domain = CartesianDomain({\"x\": [-1, 1]})\n",
|
||||
" temporal_domain = CartesianDomain({\"t\": [0, 1]})\n",
|
||||
"\n",
|
||||
" domains = {\n",
|
||||
" \"bound_cond1\": CartesianDomain({\"x\": -1, \"t\": [0, 1]}),\n",
|
||||
" \"bound_cond2\": CartesianDomain({\"x\": 1, \"t\": [0, 1]}),\n",
|
||||
" \"time_cond\": CartesianDomain({\"x\": [-1, 1], \"t\": 0}),\n",
|
||||
" \"phys_cond\": CartesianDomain({\"x\": [-1, 1], \"t\": [0, 1]}),\n",
|
||||
" }\n",
|
||||
" # problem condition statement\n",
|
||||
" conditions = {\n",
|
||||
" 'bound_cond1': Condition(domain=CartesianDomain({'x': -1, 't': [0, 1]}), equation=FixedValue(0.)),\n",
|
||||
" 'bound_cond2': Condition(domain=CartesianDomain({'x': 1, 't': [0, 1]}), equation=FixedValue(0.)),\n",
|
||||
" 'time_cond': Condition(domain=CartesianDomain({'x': [-1, 1], 't': 0}), equation=Equation(initial_condition)),\n",
|
||||
" 'phys_cond': Condition(domain=CartesianDomain({'x': [-1, 1], 't': [0, 1]}), equation=Equation(burger_equation)),\n",
|
||||
" \"bound_cond1\": Condition(\n",
|
||||
" domain=\"bound_cond1\", equation=FixedValue(0.0)\n",
|
||||
" ),\n",
|
||||
" \"bound_cond2\": Condition(\n",
|
||||
" domain=\"bound_cond2\", equation=FixedValue(0.0)\n",
|
||||
" ),\n",
|
||||
" \"time_cond\": Condition(\n",
|
||||
" domain=\"time_cond\", equation=Equation(initial_condition)\n",
|
||||
" ),\n",
|
||||
" \"phys_cond\": Condition(\n",
|
||||
" domain=\"phys_cond\", equation=Equation(burger_equation)\n",
|
||||
" ),\n",
|
||||
" }"
|
||||
]
|
||||
},
|
||||
@@ -186,20 +202,34 @@
|
||||
"\n",
|
||||
" # define initial condition\n",
|
||||
" def initial_condition(input_, output_):\n",
|
||||
" u_expected = -torch.sin(torch.pi*input_.extract(['x']))\n",
|
||||
" return output_.extract(['u']) - u_expected\n",
|
||||
" u_expected = -torch.sin(torch.pi * input_.extract([\"x\"]))\n",
|
||||
" return output_.extract([\"u\"]) - u_expected\n",
|
||||
"\n",
|
||||
" # assign output/ spatial and temporal variables\n",
|
||||
" output_variables = ['u']\n",
|
||||
" spatial_domain = CartesianDomain({'x': [-1, 1]})\n",
|
||||
" temporal_domain = CartesianDomain({'t': [0, 1]})\n",
|
||||
" output_variables = [\"u\"]\n",
|
||||
" spatial_domain = CartesianDomain({\"x\": [-1, 1]})\n",
|
||||
" temporal_domain = CartesianDomain({\"t\": [0, 1]})\n",
|
||||
"\n",
|
||||
" domains = {\n",
|
||||
" \"bound_cond1\": CartesianDomain({\"x\": -1, \"t\": [0, 1]}),\n",
|
||||
" \"bound_cond2\": CartesianDomain({\"x\": 1, \"t\": [0, 1]}),\n",
|
||||
" \"time_cond\": CartesianDomain({\"x\": [-1, 1], \"t\": 0}),\n",
|
||||
" \"phys_cond\": CartesianDomain({\"x\": [-1, 1], \"t\": [0, 1]}),\n",
|
||||
" }\n",
|
||||
" # problem condition statement\n",
|
||||
" conditions = {\n",
|
||||
" 'bound_cond1': Condition(domain=CartesianDomain({'x': -1, 't': [0, 1]}), equation=FixedValue(0.)),\n",
|
||||
" 'bound_cond2': Condition(domain=CartesianDomain({'x': 1, 't': [0, 1]}), equation=FixedValue(0.)),\n",
|
||||
" 'time_cond': Condition(domain=CartesianDomain({'x': [-1, 1], 't': 0}), equation=Equation(initial_condition)),\n",
|
||||
" 'phys_cond': Condition(domain=CartesianDomain({'x': [-1, 1], 't': [0, 1]}), equation=Burgers1DEquation(0.01/torch.pi)),\n",
|
||||
" \"bound_cond1\": Condition(\n",
|
||||
" domain=\"bound_cond1\", equation=FixedValue(0.0)\n",
|
||||
" ),\n",
|
||||
" \"bound_cond2\": Condition(\n",
|
||||
" domain=\"bound_cond2\", equation=FixedValue(0.0)\n",
|
||||
" ),\n",
|
||||
" \"time_cond\": Condition(\n",
|
||||
" domain=\"time_cond\", equation=Equation(initial_condition)\n",
|
||||
" ),\n",
|
||||
" \"phys_cond\": Condition(\n",
|
||||
" domain=\"phys_cond\", equation=Burgers1DEquation(nu=0.01 / torch.pi)\n",
|
||||
" ),\n",
|
||||
" }"
|
||||
]
|
||||
},
|
||||
@@ -223,7 +253,7 @@
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"display_name": "pina",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
@@ -237,7 +267,7 @@
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.12.3"
|
||||
"version": "3.9.21"
|
||||
},
|
||||
"orig_nbformat": 4
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user