Mercurial > repos > public > sbplib
comparison +noname/testCfl.m @ 2:bce9e28c1e26
Added a cfl paramater to getTimestepper in Discretization. Added function to get cfl value for a Discr.
| author | Jonatan Werpers <jonatan@werpers.com> |
|---|---|
| date | Fri, 18 Sep 2015 12:50:52 +0200 |
| parents | |
| children | 7249f105e67b |
comparison
equal
deleted
inserted
replaced
| 1:5ae4f23d9130 | 2:bce9e28c1e26 |
|---|---|
| 1 function testCfl(discr, timestepper_method, T, alpha0, tol,threshold) | |
| 2 default_arg('tol',0.00005); | |
| 3 default_arg('threshold',1e2); | |
| 4 | |
| 5 alpha0(2) = alpha0(1)+2*(alpha0(2)-alpha0(1)); | |
| 6 | |
| 7 while( (alpha0(2)-alpha0(1))/alpha0(1) > tol) | |
| 8 alpha = mean(alpha0); | |
| 9 | |
| 10 ts = discr.getTimestepper(timestepper_method,[],alpha); | |
| 11 | |
| 12 warning('off','all') | |
| 13 ts.evolve(T,true); | |
| 14 warning('on','all') | |
| 15 | |
| 16 [v,t] = ts.getV(); | |
| 17 | |
| 18 max_val = max(v); | |
| 19 | |
| 20 if isnan(max_val) || max_val == Inf || max_val > threshold | |
| 21 alpha0(2) = alpha; | |
| 22 else | |
| 23 alpha0(1) = alpha; | |
| 24 end | |
| 25 | |
| 26 fprintf('[%.3e,%.3e]: a = %.3e, max= %.2e\n',alpha0(1),alpha0(2), alpha,max_val); | |
| 27 | |
| 28 end | |
| 29 | |
| 30 fprintf('T = %-3d dof = %-4d order = %d: clf = %.4e\n',T, discr.size(), discr.order, alpha0(1)); | |
| 31 | |
| 32 end |
