Skip to content

Commit 0158eee

Browse files
committed
fixed RDC
1 parent 40c325d commit 0158eee

File tree

2 files changed

+12
-9
lines changed

2 files changed

+12
-9
lines changed

projects/RDC/vanderpol_MLSDC_PFASST_test.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
from pySDC.helpers.stats_helper import filter_stats, sort_stats
1010

11-
1211
from projects.RDC.equidistant_RDC import Equidistant_RDC
1312

1413

@@ -95,7 +94,7 @@ def run_RDC(cwd=''):
9594
print('RDC : Mean number of iterations: %6.3f -- Error: %8.4e' % (mean_niter, err))
9695
results.append((err, mean_niter))
9796

98-
sweeper_params['num_nodes'] = [sweeper_params['num_nodes'], 2]
97+
sweeper_params['num_nodes'] = [sweeper_params['num_nodes'], 10]
9998
controller_mlrdc = allinclusive_classic_nonMPI(num_procs=1, controller_params=controller_params,
10099
description=description)
101100

@@ -111,10 +110,10 @@ def run_RDC(cwd=''):
111110
print('MLRDC : Mean number of iterations: %6.3f -- Error: %8.4e' % (mean_niter, err))
112111
results.append((err, mean_niter))
113112

114-
controller_mlrdc = allinclusive_classic_nonMPI(num_procs=10, controller_params=controller_params,
115-
description=description)
113+
controller_pfasst = allinclusive_classic_nonMPI(num_procs=10, controller_params=controller_params,
114+
description=description)
116115

117-
uend_pfasst, stats_pfasst = controller_mlrdc.run(u0=uinit, t0=t0, Tend=Tend)
116+
uend_pfasst, stats_pfasst = controller_pfasst.run(u0=uinit, t0=t0, Tend=Tend)
118117

119118
# filter statistics by type (number of iterations)
120119
filtered_stats = filter_stats(stats_pfasst, type='niter')

pySDC/core/BaseTransfer.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ def __init__(self, pars):
7070
# pad transfer matrices if necessary
7171
if self.fine.sweep.coll.left_is_node:
7272
self.Pcoll = np.zeros((self.fine.sweep.coll.num_nodes + 1, self.coarse.sweep.coll.num_nodes + 1))
73-
self.Rcoll = self.Pcoll.T
73+
self.Rcoll = np.zeros((self.coarse.sweep.coll.num_nodes + 1, self.fine.sweep.coll.num_nodes + 1))
7474
self.Pcoll[1:, 1:] = Pcoll
7575
self.Rcoll[1:, 1:] = Rcoll
7676
else:
@@ -110,7 +110,8 @@ def restrict(self):
110110
tmp_u.append(self.space_transfer.restrict(F.u[m]))
111111

112112
# restrict collocation values
113-
for n in range(0, SG.coll.num_nodes + 1):
113+
G.u[0] = tmp_u[0]
114+
for n in range(1, SG.coll.num_nodes + 1):
114115
G.u[n] = self.Rcoll[n, 0] * tmp_u[0]
115116
for m in range(1, SF.coll.num_nodes + 1):
116117
G.u[n] += self.Rcoll[n, m] * tmp_u[m]
@@ -200,7 +201,8 @@ def prolong(self):
200201
tmp_u.append(self.space_transfer.prolong(G.u[m] - G.uold[m]))
201202

202203
# interpolate values in collocation
203-
for n in range(0, SF.coll.num_nodes + 1):
204+
F.u[0] += tmp_u[0]
205+
for n in range(1, SF.coll.num_nodes + 1):
204206
for m in range(0, SG.coll.num_nodes + 1):
205207
F.u[n] += self.Pcoll[n, m] * tmp_u[m]
206208

@@ -245,7 +247,9 @@ def prolong_f(self):
245247
tmp_f.append(self.space_transfer.prolong(G.f[m] - G.fold[m]))
246248

247249
# interpolate values in collocation
248-
for n in range(0, SF.coll.num_nodes + 1):
250+
F.u[0] += tmp_u[0]
251+
F.f[0] += tmp_f[0]
252+
for n in range(1, SF.coll.num_nodes + 1):
249253
for m in range(0, SG.coll.num_nodes + 1):
250254
F.u[n] += self.Pcoll[n, m] * tmp_u[m]
251255
F.f[n] += self.Pcoll[n, m] * tmp_f[m]

0 commit comments

Comments
 (0)