Skip to content

Commit 34d488a

Browse files
author
Daniel Ruprecht
committed
fixed computation of reference solution and error estimation for boussinesq example
1 parent 37defe4 commit 34d488a

File tree

2 files changed

+22
-19
lines changed

2 files changed

+22
-19
lines changed

examples/boussinesq_2d_imex/plotgmrescounter.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
uref = np.load('uref.npy')
1717

1818
print("Estimated discretisation error of DIRK: %5.3e" % ( np.linalg.norm(udirk.flatten() - uref.flatten(), np.inf)/np.linalg.norm(uref.flatten(),np.inf) ))
19-
print("Estimated discretisation error of SDC: %5.3e" % ( np.linalg.norm(uend.flatten() - uref.flatten(), np.inf)/np.linalg.norm(uref.flatten(),np.inf) ))
2019
print("Estimated discretisation error of RK-IMEX: %5.3e" % ( np.linalg.norm(uimex.flatten() - uref.flatten(), np.inf)/np.linalg.norm(uref.flatten(),np.inf) ))
20+
print("Estimated discretisation error of SDC: %5.3e" % ( np.linalg.norm(uend.flatten() - uref.flatten(), np.inf)/np.linalg.norm(uref.flatten(),np.inf) ))
2121

2222
fs = 8
2323
rcParams['figure.figsize'] = 5.0, 2.5

examples/boussinesq_2d_imex/rungmrescounter.py

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -40,19 +40,18 @@
4040
swparams['do_LU'] = False
4141

4242
sparams = {}
43-
sparams['maxiter'] = 4
43+
sparams['maxiter'] = 3
4444

45-
dirk_order = 4
45+
dirk_order = 3
4646

4747
# setup parameters "in time"
4848
t0 = 0
49-
Tend = 3000
49+
Tend = 3000
5050
Nsteps = 100
5151
dt = Tend/float(Nsteps)
5252

5353
# This comes as read-in for the problem class
5454
pparams = {}
55-
# pparams['nvars'] = [(4,450,30)]
5655
pparams['nvars'] = [(4,300,30)]
5756
pparams['u_adv'] = 0.02
5857
pparams['c_s'] = 0.3
@@ -63,8 +62,8 @@
6362
pparams['order_upw'] = [5]
6463
pparams['gmres_maxiter'] = [500]
6564
pparams['gmres_restart'] = [10]
66-
pparams['gmres_tol_limit'] = [1e-3]
67-
pparams['gmres_tol_factor'] = [0.01]
65+
pparams['gmres_tol_limit'] = [1e-5]
66+
pparams['gmres_tol_factor'] = [0.05]
6867

6968
# This comes as read-in for the transfer operations
7069
tparams = {}
@@ -99,27 +98,31 @@
9998

10099
dirkp = dirk(P, dirk_order)
101100
u0 = uinit.values.flatten()
102-
udirk = u0
101+
udirk = np.copy(u0)
102+
print "Running DIRK ...."
103103
for i in range(0,Nsteps):
104104
udirk = dirkp.timestep(udirk, dt)
105105

106-
Pref = P
107-
# For reference solution, increase GMRES tolerance
108-
Pref.gmes_tol = 1e-6
109-
dirkref = dirk(P, 4)
110-
uref = u0
111-
dt_ref = dt/10.0
112-
for i in range(0,10*Nsteps):
113-
uref = dirkref.timestep(uref, dt_ref)
114-
115106
rkimex = rk_imex(P, dirk_order)
116-
uimex = u0
107+
uimex = np.copy(u0)
117108
dt_imex = dt
109+
print "Running RK-IMEX ...."
118110
for i in range(0,Nsteps):
119111
uimex = rkimex.timestep(uimex, dt_imex)
120-
112+
121113
# call main function to get things done...
114+
print "Running SDC..."
122115
uend,stats = mp.run_pfasst(MS,u0=uinit,t0=t0,dt=dt,Tend=Tend)
116+
117+
# For reference solution, increase GMRES tolerance
118+
P.gmres_tol_limit = 1e-10
119+
rkimexref = rk_imex(P, 4)
120+
uref = np.copy(u0)
121+
dt_ref = dt/10.0
122+
print "Running RK-IMEX reference...."
123+
for i in range(0,10*Nsteps):
124+
uref = rkimexref.timestep(uref, dt_ref)
125+
123126
udirk = unflatten(udirk, 4, P.N[0], P.N[1])
124127
uimex = unflatten(uimex, 4, P.N[0], P.N[1])
125128
uref = unflatten(uref, 4, P.N[0], P.N[1])

0 commit comments

Comments
 (0)