{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Hello, freifrau! I am TheInterview, your partial differential equations and simulations expert. Let's set up a simulation together.\n", "\n", "To get explanations, enter \"explain \". \n", "To see a recap of what we know so far, enter \"recap \". \n", "Otherwise, you can always try and use LaTeX-type input.\n", "Have a look at the currently loaded MMT theories under http://localhost:45791\n", "\n", "\n", "\n", "How many dimensions does your model have?\n", "I am just assuming it's 1, since that is all we can currently handle.\n", "\n", "\n", "What is the domain you would like to simulate for? Ω : type ❘ = [?;?], e.g. Ω = [0.0;1.0]\n", "By the way, you can always try and use LaTeX-type input.\n" ] } ], "source": [ "anything" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "we will just assume that the variable is called x for now.\n", "\n", "\n", "Which variable(s) are you looking for? / What are the unknowns in your model? u : Ω → ??, e.g., u : Ω → ℝ ?\n" ] } ], "source": [ "Ω = [0.0;1.0]" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Ok, u : Ω → ℝ\n", "u : Ω → ℝ\n", "\n", "\n", "Would you like to name additional parameters like constants or functions (that are independent of your unknowns)? c : ℝ = ? or f : Ω → ℝ = ?\n" ] } ], "source": [ "u : Ω → ℝ" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Ok, f = [ x : Ω] x\n", "Would you like to declare more parameters? [y/n]? \n" ] } ], "source": [ "f = x" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Ok, α = [ x : Ω] -5.0\n", "Would you like to declare more parameters? [y/n]? \n" ] } ], "source": [ "\\alpha = -5.0" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [] } ], "source": [ "y" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "I did not catch that. Could you please rephrase?\n", "Details: MMT server error: unbound token: ·.
\n", "
\n", "
\n", "
info.kwarc.mmt.api.SourceError of level 2
\n", "
unbound token: ·
\n", "
source error (object-parser) at http://mathhub.info/MitM/smglom/calculus#15.0.15:15.0.15\n", "\n", "
\n", "
\n", "
\n", " info.kwarc.mmt.api.parser.NotationBasedParser.makeError(NotationBasedParser.scala:93)\n", "
\n", "
\n", " info.kwarc.mmt.api.parser.NotationBasedParser.makeTerm(NotationBasedParser.scala:321)\n", "
\n", "
\n", " info.kwarc.mmt.api.parser.NotationBasedParser.$anonfun$makeTerm$5(NotationBasedParser.scala:345)\n", "
\n", "
\n", " scala.collection.immutable.List.map(List.scala:287)\n", "
\n", "
\n", " info.kwarc.mmt.api.parser.NotationBasedParser.makeTerm(NotationBasedParser.scala:345)\n", "
\n", "
\n", " info.kwarc.mmt.api.parser.NotationBasedParser.doFoundContent$1(NotationBasedParser.scala:437)\n", "
\n", "
\n", " info.kwarc.mmt.api.parser.NotationBasedParser.$anonfun$makeTermFromMatchedList$14(NotationBasedParser.scala:496)\n", "
\n", "
\n", " info.kwarc.mmt.api.parser.NotationBasedParser.$anonfun$makeTermFromMatchedList$14$adapted(NotationBasedParser.scala:493)\n", "
\n", "
\n", " scala.collection.immutable.List.foreach(List.scala:389)\n", "
\n", "
\n", " info.kwarc.mmt.api.parser.NotationBasedParser.makeTermFromMatchedList(NotationBasedParser.scala:493)\n", "
\n", "
\n", " info.kwarc.mmt.api.parser.NotationBasedParser.makeTerm(NotationBasedParser.scala:329)\n", "
\n", "
\n", " info.kwarc.mmt.api.parser.NotationBasedParser.makeTerm(NotationBasedParser.scala:335)\n", "
\n", "
\n", " info.kwarc.mmt.api.parser.NotationBasedParser.$anonfun$apply$10(NotationBasedParser.scala:214)\n", "
\n", "
\n", " info.kwarc.mmt.api.frontend.Logger.logGroup(Log.scala:34)\n", "
\n", "
\n", " info.kwarc.mmt.api.frontend.Logger.logGroup$(Log.scala:31)\n", "
\n", "
\n", " info.kwarc.mmt.api.parser.NotationBasedParser.logGroup(NotationBasedParser.scala:69)\n", "
\n", "
\n", " info.kwarc.mmt.api.parser.NotationBasedParser.apply(NotationBasedParser.scala:214)\n", "
\n", "
\n", " info.kwarc.mmt.api.parser.KeywordBasedParser.puCont(StructureParser.scala:141)\n", "
\n", "
\n", " info.kwarc.mmt.api.parser.KeywordBasedParser.readParsedObject(StructureParser.scala:287)\n", "
\n", "
\n", " info.kwarc.mmt.api.parser.KeywordBasedParser.doComponent(StructureParser.scala:292)\n", "
\n", "
\n", " info.kwarc.mmt.api.parser.KeywordBasedParser.readConstant(StructureParser.scala:879)\n", "
\n", "
\n", " info.kwarc.mmt.api.parser.KeywordBasedParser.readInModuleAux(StructureParser.scala:630)\n", "
\n", "
\n", " info.kwarc.mmt.api.parser.KeywordBasedParser.readInModule(StructureParser.scala:457)\n", "
\n", "
\n", " info.kwarc.mmt.interviews.InterviewServer.parseDecl(InterviewServer.scala:102)\n", "
\n", "
\n", " info.kwarc.mmt.interviews.InterviewServer.apply(InterviewServer.scala:50)\n", "
\n", "
\n", " info.kwarc.mmt.api.web.Server.resolveExtension(Server.scala:95)\n", "
\n", "
\n", " info.kwarc.mmt.api.web.Server.resolve(Server.scala:76)\n", "
\n", "
\n", " info.kwarc.mmt.api.web.Server.handleRequest(Server.scala:53)\n", "
\n", "
\n", " info.kwarc.mmt.api.web.TiscafServerImplementation$RequestHandler$$anon$1.act(TiscafServerImplementation.scala:49)\n", "
\n", "
\n", " tiscaf.HSimpleLet.aact(HLet.scala:166)\n", "
\n", "
\n", " tiscaf.HSimpleLet.aact$(HLet.scala:165)\n", "
\n", "
\n", " info.kwarc.mmt.api.web.TiscafServerImplementation$RequestHandler$$anon$1.aact(TiscafServerImplementation.scala:47)\n", "
\n", "
\n", " tiscaf.HAcceptor.talk(HAcceptor.scala:246)\n", "
\n", "
\n", " tiscaf.HSimplePeer.doTalkItself$1(HPeer.scala:101)\n", "
\n", "
\n", " tiscaf.HSimplePeer.$anonfun$readChannel$1(HPeer.scala:114)\n", "
\n", "
\n", " scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)\n", "
\n", "
\n", " scala.concurrent.Future$.$anonfun$apply$1(Future.scala:653)\n", "
\n", "
\n", " scala.util.Success.$anonfun$map$1(Try.scala:251)\n", "
\n", "
\n", " scala.util.Success.map(Try.scala:209)\n", "
\n", "
\n", " scala.concurrent.Future.$anonfun$map$1(Future.scala:287)\n", "
\n", "
\n", " scala.concurrent.impl.Promise.liftedTree1$1(Promise.scala:29)\n", "
\n", "
\n", " scala.concurrent.impl.Promise.$anonfun$transform$1(Promise.scala:29)\n", "
\n", "
\n", " scala.concurrent.impl.CallbackRunnable.run(Promise.scala:60)\n", "
\n", "
\n", " tiscaf.sync.SyncQuExecutionContext$$anon$1.run(SyncQuExecutionContext.scala:69)\n", "
\n", "
\n", "
\n", "
\n", "
\n", "\n" ] } ], "source": [ "k = x \\cdot x" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "f = x\n", "α = -5.0\n", "\n", "\n", "Let's talk about your partial differential equation(s). What do they look like? Δu = 0.0, or laplace_operator Ω ℝ u = f ?\n" ] } ], "source": [ "n" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Ok, \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "These are all the PDEs needed.\n", "Let's discuss your boundary conditions. What do they look like? u(x) = f(x) or u(1.0) = \\alpha ?\n" ] } ], "source": [ "Δu = \\alpha" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Ok \n", "\n", "\n", "These are all the boundary conditions needed.\n", "\n", "\n", "Do you know something about the operator Δ? Is it e.g. linear, or not elliptic ? \n" ] } ], "source": [ "u = f" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "do you know anything else?\n" ] } ], "source": [ "y" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "OK!\n", "do you know anything else?\n" ] } ], "source": [ "linear" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "OK!\n", "do you know anything else?\n" ] } ], "source": [ "elliptic" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n", "Would you like to try and solve the PDE using the Finite Difference Method in ExaStencils? [y/n]? \n" ] } ], "source": [ "n" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Generated ExaStencils input.\n" ] } ], "source": [ "y" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", " \n", " \n", " my plot\n", " \n", "\n", " \n", "\n", "\n", " \n", " \n", " \n", "
\n", "
\n", "
\n", " \n", "