annotate +noname/calculateSolution.m @ 1301:8978521b0f06 default

Fix incorrect package name.
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Wed, 08 Jul 2020 19:11:04 +0200
parents bd99ea1fc733
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
17
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
1 % Calculates the solution of discretization for a given set of ms ts and orders.
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
2 % discrHand -- function handle to a Discretization constructor
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
3 % m -- grid parameter
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
4 % order -- order of accuracy of the approximtion
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
5 % T -- time to calculate solution for
136
8298734b1938 Updated noname.calculateSolution to use the opt struct.
Jonatan Werpers <jonatan@werpers.com>
parents: 40
diff changeset
6 % tsOpt -- options for the time stepper creation.
17
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
7 % input paramters m, t, order may all be vectors.
136
8298734b1938 Updated noname.calculateSolution to use the opt struct.
Jonatan Werpers <jonatan@werpers.com>
parents: 40
diff changeset
8 function [] = calculateSolution(filename, name, discrHand, m, T_in, order, tsOpt, force_flag)
32
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents: 25
diff changeset
9 default_arg('force_flag',false);
136
8298734b1938 Updated noname.calculateSolution to use the opt struct.
Jonatan Werpers <jonatan@werpers.com>
parents: 40
diff changeset
10 default_arg('tsOpt', []);
17
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
11
32
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents: 25
diff changeset
12 if exist(filename,'file') && ~force_flag
17
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
13 fprintf('File ''%s'' already exist.',filename);
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
14 do_append = yesnoQuestion('Do you want to append to it?');
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
15 if ~do_append
226
bd99ea1fc733 Clearer messages.
Jonatan Werpers <jonatan@werpers.com>
parents: 137
diff changeset
16 fprintf('Exiting. No Solutions calculated.\n');
17
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
17 return
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
18 end
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
19 end
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
20
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
21 sf = SolutionFile(filename);
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
22
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
23 orderWidth = findFieldWidth('%d',order);
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
24 mWidth = findFieldWidth('%d',m);
40
54d3ab296ba0 Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents: 36
diff changeset
25 TWidth = findFieldWidth('%d',T_in);
17
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
26
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
27 for i = 1:length(order)
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
28 for j = 1:length(m)
40
54d3ab296ba0 Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents: 36
diff changeset
29 T = sort(T_in); % Make sure times are sorted
54d3ab296ba0 Added Dictionary class. Added string conversions for a bunch of types. Deprecated some replaced functions.
Jonatan Werpers <jonatan@werpers.com>
parents: 36
diff changeset
30
17
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
31 discr = discrHand(m(j),order(i));
136
8298734b1938 Updated noname.calculateSolution to use the opt struct.
Jonatan Werpers <jonatan@werpers.com>
parents: 40
diff changeset
32 k_max = discr.getTimestep(tsOpt);
17
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
33
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
34 % Do we want to to save the initial conditions?
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
35 if T(1) == 0
20
c7efff913935 Decoupled plotting and timesteppers. Added possibility of different plot_types. Added functions for printing and plotting solution file content.
Jonatan Werpers <jonatan@werpers.com>
parents: 19
diff changeset
36 snapshot = discr.getTimeSnapshot(0);
136
8298734b1938 Updated noname.calculateSolution to use the opt struct.
Jonatan Werpers <jonatan@werpers.com>
parents: 40
diff changeset
37 saveToFile(sf, name, order(i), m(j),T(1), snapshot, NaN, NaN, discr);
17
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
38 T(1) = [];
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
39 end
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
40
36
c6eb3af205c0 Better error handeling in noname.convergence. Better handeling of T=0 in noname.calculateSolution
Jonatan Werpers <jonatan@werpers.com>
parents: 32
diff changeset
41 % Find out if times to be calulated are integer multiples of the smallest one.
c6eb3af205c0 Better error handeling in noname.convergence. Better handeling of T=0 in noname.calculateSolution
Jonatan Werpers <jonatan@werpers.com>
parents: 32
diff changeset
42 time_multiples = T/T(1);
c6eb3af205c0 Better error handeling in noname.convergence. Better handeling of T=0 in noname.calculateSolution
Jonatan Werpers <jonatan@werpers.com>
parents: 32
diff changeset
43
c6eb3af205c0 Better error handeling in noname.convergence. Better handeling of T=0 in noname.calculateSolution
Jonatan Werpers <jonatan@werpers.com>
parents: 32
diff changeset
44 is_int_multiples = all(time_multiples == int64(time_multiples));
c6eb3af205c0 Better error handeling in noname.convergence. Better handeling of T=0 in noname.calculateSolution
Jonatan Werpers <jonatan@werpers.com>
parents: 32
diff changeset
45
c6eb3af205c0 Better error handeling in noname.convergence. Better handeling of T=0 in noname.calculateSolution
Jonatan Werpers <jonatan@werpers.com>
parents: 32
diff changeset
46 if is_int_multiples
c6eb3af205c0 Better error handeling in noname.convergence. Better handeling of T=0 in noname.calculateSolution
Jonatan Werpers <jonatan@werpers.com>
parents: 32
diff changeset
47 fprintf('Calculating time series in increments\n');
c6eb3af205c0 Better error handeling in noname.convergence. Better handeling of T=0 in noname.calculateSolution
Jonatan Werpers <jonatan@werpers.com>
parents: 32
diff changeset
48 else
136
8298734b1938 Updated noname.calculateSolution to use the opt struct.
Jonatan Werpers <jonatan@werpers.com>
parents: 40
diff changeset
49 fprintf('RESTARTING for each time in timeseries\n');
8298734b1938 Updated noname.calculateSolution to use the opt struct.
Jonatan Werpers <jonatan@werpers.com>
parents: 40
diff changeset
50 fprintf('If this is not what you want try giving T in integer multiples.\n');
36
c6eb3af205c0 Better error handeling in noname.convergence. Better handeling of T=0 in noname.calculateSolution
Jonatan Werpers <jonatan@werpers.com>
parents: 32
diff changeset
51 end
c6eb3af205c0 Better error handeling in noname.convergence. Better handeling of T=0 in noname.calculateSolution
Jonatan Werpers <jonatan@werpers.com>
parents: 32
diff changeset
52
17
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
53 % T now contains all the times we need to step to,
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
54 % if T contained 0 it has now been removed.
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
55
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
56 if is_int_multiples
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
57 % Times are integer multiples, we can save time
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
58 [k,N] = alignedTimestep(k_max,T(1));
137
2b133d833668 Added forgotten setting of k.
Jonatan Werpers <jonatan@werpers.com>
parents: 136
diff changeset
59 tsOpt.k = k;
136
8298734b1938 Updated noname.calculateSolution to use the opt struct.
Jonatan Werpers <jonatan@werpers.com>
parents: 40
diff changeset
60 ts = discr.getTimestepper(tsOpt);
17
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
61 runtime = 0;
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
62 for l = 1:length(T)
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
63 end_step = N * time_multiples(l);
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
64 fprintf('[order = %-*d, m = %-*d, T = %-*d]: ',orderWidth,order(i),mWidth,m(j),TWidth,T(l));
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
65 clock_start = tic();
20
c7efff913935 Decoupled plotting and timesteppers. Added possibility of different plot_types. Added functions for printing and plotting solution file content.
Jonatan Werpers <jonatan@werpers.com>
parents: 19
diff changeset
66 ts.stepN(end_step-ts.n,true);
17
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
67 runtime = runtime + toc(clock_start);
20
c7efff913935 Decoupled plotting and timesteppers. Added possibility of different plot_types. Added functions for printing and plotting solution file content.
Jonatan Werpers <jonatan@werpers.com>
parents: 19
diff changeset
68 snapshot = discr.getTimeSnapshot(ts);
136
8298734b1938 Updated noname.calculateSolution to use the opt struct.
Jonatan Werpers <jonatan@werpers.com>
parents: 40
diff changeset
69 saveToFile(sf, name, order(i), m(j),T(l), snapshot, runtime, k, discr);
17
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
70 fprintf('Done! (%.3fs)\n',runtime);
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
71 end
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
72 else
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
73 % Times are not interger multiples, we have to start from 0 every time.
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
74 for l = 1:length(T)
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
75 [k,N] = alignedTimestep(k_max,T(l));
137
2b133d833668 Added forgotten setting of k.
Jonatan Werpers <jonatan@werpers.com>
parents: 136
diff changeset
76 tsOpt.k = k;
136
8298734b1938 Updated noname.calculateSolution to use the opt struct.
Jonatan Werpers <jonatan@werpers.com>
parents: 40
diff changeset
77 ts = discr.getTimestepper(tsOpt);
17
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
78 fprintf('[order = %-*d, m = %-*d, T = %-*d]: ',orderWidth,order(i),mWidth,m(j),TWidth,T(l));
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
79 clock_start = tic();
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
80 [v,t] = ts.stepN(N-ts.n,true);
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
81 runtime = toc(clock_start);
20
c7efff913935 Decoupled plotting and timesteppers. Added possibility of different plot_types. Added functions for printing and plotting solution file content.
Jonatan Werpers <jonatan@werpers.com>
parents: 19
diff changeset
82 snapshot = discr.getTimeSnapshot(ts);
136
8298734b1938 Updated noname.calculateSolution to use the opt struct.
Jonatan Werpers <jonatan@werpers.com>
parents: 40
diff changeset
83 saveToFile(sf, name, order(i), m(j),T(l), snapshot, runtime, k, discr);
17
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
84 fprintf('Done! (%.3fs)\n',runtime);
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
85 end
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
86
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
87 end
32
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents: 25
diff changeset
88 sf.stupidSave();
17
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
89 end
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
90 end
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
91 end
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
92
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
93
136
8298734b1938 Updated noname.calculateSolution to use the opt struct.
Jonatan Werpers <jonatan@werpers.com>
parents: 40
diff changeset
94 function saveToFile(sf, name, order, m, T, snapshot, runtime, k, discr)
8298734b1938 Updated noname.calculateSolution to use the opt struct.
Jonatan Werpers <jonatan@werpers.com>
parents: 40
diff changeset
95 key.name = name;
8298734b1938 Updated noname.calculateSolution to use the opt struct.
Jonatan Werpers <jonatan@werpers.com>
parents: 40
diff changeset
96 key.order = order;
8298734b1938 Updated noname.calculateSolution to use the opt struct.
Jonatan Werpers <jonatan@werpers.com>
parents: 40
diff changeset
97 key.m = m;
8298734b1938 Updated noname.calculateSolution to use the opt struct.
Jonatan Werpers <jonatan@werpers.com>
parents: 40
diff changeset
98 key.T = T;
17
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
99
20
c7efff913935 Decoupled plotting and timesteppers. Added possibility of different plot_types. Added functions for printing and plotting solution file content.
Jonatan Werpers <jonatan@werpers.com>
parents: 19
diff changeset
100 entry.repr = snapshot;
17
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
101 entry.runtime = runtime;
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
102 entry.k = k;
25
791decafe6e4 Made calculateSolution save the discretization instead of a handle to contructor.
Jonatan Werpers <jonatan@werpers.com>
parents: 20
diff changeset
103 entry.discr = discr;
17
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
104
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
105 sf.store(key,entry);
30ae48efc7ae Added utility function findFiledWidth. Added function for calculating and saving solutions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
106 end