|
35 | 35 | lparams['restol'] = 1E-15 |
36 | 36 |
|
37 | 37 | swparams = {} |
38 | | - swparams['collocation_class'] = collclass.CollGaussLobatto |
| 38 | + swparams['collocation_class'] = collclass.CollGaussLegendre |
39 | 39 | swparams['num_nodes'] = 3 |
40 | 40 | swparams['do_LU'] = False |
41 | 41 |
|
|
96 | 96 | print ("CFL number of acoustics (horizontal): %4.2f" % cfl_acoustic_hor) |
97 | 97 | print ("CFL number of acoustics (vertical): %4.2f" % cfl_acoustic_ver) |
98 | 98 |
|
99 | | - dirk4 = dirk(P, 4) |
100 | | - dirk2 = dirk(P, 2) |
101 | | - trap = trapezoidal(P) |
102 | | - bdf = bdf2(P) |
| 99 | + dirkp = dirk(P, dirk_order) |
103 | 100 | u0 = uinit.values.flatten() |
104 | | - udirk4 = u0 |
105 | | - udirk2 = u0 |
106 | | - ubdf = u0 |
107 | | - utrap = u0 |
| 101 | + udirk = u0 |
108 | 102 | for i in range(0,Nsteps): |
109 | | - udirk4 = dirk4.timestep(udirk4, dt) |
110 | | - udirk2 = dirk2.timestep(udirk2, dt) |
111 | | - utrap = trap.timestep(utrap, dt) |
112 | | - #if i==0: |
113 | | - # ubdf_new = bdf.firsttimestep(ubdf, dt) |
114 | | - # ubdf_m1 = ubdf |
115 | | - #else: |
116 | | - # ubdf_new = bdf.timestep(ubdf, ubdf_m1, dt) |
117 | | - #ubdf_m1 = ubdf |
118 | | - #ubdf = ubdf_new |
| 103 | + udirk = dirkp.timestep(udirk, dt) |
| 104 | + |
| 105 | + dirkref = dirk(P, 4) |
| 106 | + uref = u0 |
| 107 | + dt_ref = dt/10.0 |
| 108 | + for i in range(0,10*Nsteps): |
| 109 | + uref = dirkref.timestep(uref, dt_ref) |
119 | 110 |
|
120 | 111 | # call main function to get things done... |
121 | 112 | uend,stats = mp.run_pfasst(MS,u0=uinit,t0=t0,dt=dt,Tend=Tend) |
122 | | - udirk4 = unflatten(udirk4, 4, P.N[0], P.N[1]) |
123 | | - udirk2 = unflatten(udirk2, 4, P.N[0], P.N[1]) |
124 | | - print "Norm of final solution by trapezoidal rule: %5.3f" % np.linalg.norm( utrap, np.inf ) |
125 | | - utrap = unflatten(utrap, 4, P.N[0], P.N[1]) |
126 | | - |
| 113 | + udirk = unflatten(udirk, 4, P.N[0], P.N[1]) |
| 114 | + uref = unflatten(uref, 4, P.N[0], P.N[1]) |
| 115 | + |
127 | 116 | np.save('xaxis', P.xx) |
128 | 117 | np.save('sdc', uend.values) |
129 | | - np.save('dirk2', udirk2) |
130 | | - np.save('dirk4', udirk4) |
131 | | - np.save('trap', utrap) |
| 118 | + np.save('dirk', udirk) |
| 119 | + np.save('uref', uref) |
132 | 120 |
|
133 | | - print " #### Logging report for DIRK-4 #### " |
134 | | - print "Number of calls to implicit solver: %5i" % dirk4.logger.solver_calls |
135 | | - print "Total number of GMRES iterations: %5i" % dirk4.logger.iterations |
136 | | - print "Average number of iterations per call: %6.3f" % (float(dirk4.logger.iterations)/float(dirk4.logger.solver_calls)) |
137 | | - |
138 | | - print " #### Logging report for DIRK-2 #### " |
139 | | - print "Number of calls to implicit solver: %5i" % dirk2.logger.solver_calls |
140 | | - print "Total number of GMRES iterations: %5i" % dirk2.logger.iterations |
141 | | - print "Average number of iterations per call: %6.3f" % (float(dirk2.logger.iterations)/float(dirk2.logger.solver_calls)) |
142 | | - |
143 | | - #print " #### Logging report for BDF2 #### " |
144 | | - #print "Number of calls to implicit solver: %5i" % bdf.logger.solver_calls |
145 | | - #print "Total number of GMRES iterations: %5i" % bdf.logger.iterations |
146 | | - #print "Average number of iterations per call: %6.3f" % (float(bdf.logger.iterations)/float(bdf.logger.solver_calls)) |
| 121 | + print " #### Logging report for DIRK-%1i #### " % dirk_order |
| 122 | + print "Number of calls to implicit solver: %5i" % dirkp.logger.solver_calls |
| 123 | + print "Total number of GMRES iterations: %5i" % dirkp.logger.iterations |
| 124 | + print "Average number of iterations per call: %6.3f" % (float(dirkp.logger.iterations)/float(dirkp.logger.solver_calls)) |
147 | 125 |
|
148 | 126 | print " #### Logging report for SDC-(%1i,%1i) #### " % (swparams['num_nodes'], sparams['maxiter']) |
149 | 127 | print "Number of calls to implicit solver: %5i" % P.logger.solver_calls |
|
0 commit comments