Skip to content
Snippets Groups Projects
Commit e9ba2c0c authored by Andreas Dedner's avatar Andreas Dedner
Browse files

added error computation for pulse problem - for other trst cases exact

solution needs to be added
parent 7d0a1efa
No related branches found
No related tags found
1 merge request!4Latest features added to dune-fem-dg.
Pipeline #11449 failed
...@@ -15,9 +15,9 @@ fem.timeprovider.updatestep: 1 ...@@ -15,9 +15,9 @@ fem.timeprovider.updatestep: 1
# parameter for the implicit solvers # parameter for the implicit solvers
# fem.differenceoperator.eps: 1e-12 # fem.differenceoperator.eps: 1e-12
fem.solver.gmres.restart: 50 fem.solver.gmres.restart: 50
fem.solver.newton.verbose: true fem.solver.newton.verbose: false
fem.solver.newton.linear.verbose: true fem.solver.newton.linear.verbose: false
fem.solver.verbose: true fem.solver.verbose: false
fem.solver.newton.maxlineariterations: 100000 fem.solver.newton.maxlineariterations: 100000
fem.solver.newton.tolerance: 1e-07 fem.solver.newton.tolerance: 1e-07
fem.solver.newton.linabstol: 1.25e-9 fem.solver.newton.linabstol: 1.25e-9
......
...@@ -117,7 +117,7 @@ def pulse(): ...@@ -117,7 +117,7 @@ def pulse():
yq = (-x0*sin(4.0*t) + x1*cos(4.0*t)) yq = (-x0*sin(4.0*t) + x1*cos(4.0*t))
return as_vector( [(sig2/ (sig2PlusDt4) ) * exp (-( xq*xq + yq*yq ) / sig2PlusDt4 )] ) return as_vector( [(sig2/ (sig2PlusDt4) ) * exp (-( xq*xq + yq*yq ) / sig2PlusDt4 )] )
return LinearAdvectionDiffusion1DDirichlet([ux,uy],eps,u0), u0(0,x),\ return LinearAdvectionDiffusion1DDirichlet([ux,uy],eps,u0), u0(0,x),\
[0, 0], [1, 1], [8,8], 1.0,\ [0, 0], [1, 1], [16,16], 1.0,\
"pulse", lambda t: u0(t,x) "pulse", lambda t: u0(t,x)
def burgersShock(): def burgersShock():
......
import time import time, math
from dune.grid import structuredGrid, cartesianDomain from dune.grid import structuredGrid, cartesianDomain
from dune.fem import parameter from dune.fem import parameter
from dune.fem.function import integrate from dune.fem.function import integrate
...@@ -9,8 +9,8 @@ from ufl import dot ...@@ -9,8 +9,8 @@ from ufl import dot
# from scalar import shockTransport as problem # from scalar import shockTransport as problem
# from scalar import constantTransport as probelm # from scalar import constantTransport as probelm
from scalar import sinProblem as problem # from scalar import sinProblem as problem
# from scalar import pulse as problem from scalar import pulse as problem
Model, initial, x0,x1,N, endTime, name, exact = problem() Model, initial, x0,x1,N, endTime, name, exact = problem()
...@@ -22,8 +22,8 @@ grid = structuredGrid(x0,x1,N) ...@@ -22,8 +22,8 @@ grid = structuredGrid(x0,x1,N)
# grid = create.grid("ALUSimplex", cartesianDomain(x0,x1,N)) # grid = create.grid("ALUSimplex", cartesianDomain(x0,x1,N))
dimR = 1 dimR = 1
t = 0 t = 0
dt = 0.001 dt = 0.005
saveStep = 0.01 saveStep = 0.05
saveTime = saveStep saveTime = saveStep
count = 0 count = 0
...@@ -51,6 +51,8 @@ def useODESolver(): ...@@ -51,6 +51,8 @@ def useODESolver():
saveTime += saveStep saveTime += saveStep
grid.writeVTK(name, celldata=[u_h], number=count, subsampling=2) grid.writeVTK(name, celldata=[u_h], number=count, subsampling=2)
print("time loop:",time.time()-start) print("time loop:",time.time()-start)
# error = integrate( dot(u_h-exact(t),u_h-exact(t)), order=5 ) if exact is not None:
error = integrate( grid, dot(u_h-exact(t),u_h-exact(t)), order=5 )
print("error:", math.sqrt(error) )
useODESolver() useODESolver()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment