@@ -28,8 +28,8 @@ def cb(this_param, param, other_param):
28
28
'r' : 4 ,
29
29
'x0' : 0 ,
30
30
'y0' : 0 ,
31
- 't_inj' : 0.2 ,
32
- 'Tmax' : 10000 ,
31
+ 't_inj' : 0.1 , # 0.2
32
+ 'Tmax' : 3500 ,
33
33
'V' : 1 ,
34
34
'Ls' : 1 ,
35
35
}
@@ -39,12 +39,14 @@ def cb(this_param, param, other_param):
39
39
40
40
name = 'achterberg_fig2_ln'
41
41
cache = PickleNodeCache ('pickle' , name )
42
- chain = chains .get_chain_powerlaw_datapoint (PyBatchAchterberg2 , cache , np .inf , lambda c : c ['label_fmt_fields' ]['epsilon' ], histo_opts = {'bin_count' : 50 }, negate_index = True , log_bins = False )
43
- chain .map_tree (lambda n : setattr (n , 'ignore_cache' , True ), "values" )
44
- chain .map_tree (lambda n : n .set (ln_x = True ), "pl" )
42
+ add_conf = [(1 , 0 , np .inf )]
43
+ chain = chains .get_chain_powerlaw_datapoint (PyBatchAchterberg2 , cache , np .inf , lambda c : c ['label_fmt_fields' ]['epsilon' ], histo_opts = {'bin_count' : 40 }, negate_index = True , log_bins = False , additional_confine_ranges = add_conf )
44
+ #chain.map_tree(lambda n: setattr(n, 'ignore_cache', True), "values")
45
+ chain .map_tree (lambda n : n .set (ln_x = True ) , "pl" )
46
+ chain .map_tree (lambda n : print (n .plot_on ), "pl" )
45
47
46
48
#var = PowerlawSeriesVariable('\\epsilon', 'epsilon', [0.01, 0.02, 0.04, 0.05, 0.08, 0.1, 0.2, 0.3, 0.4, 0.5, 0.8, 1])
47
- var = PowerlawSeriesVariable ('\\ epsilon' , 'epsilon' , [0.01 , 0.02 , 0. 04 , 0.08 , 0.2 , 0.4 , 0.8 , 1 ])
49
+ var = PowerlawSeriesVariable ('\\ epsilon' , 'epsilon' , [0.01 , 0.04 , 0.08 , 0.2 , 0.4 , 0.8 , 1.0 ]) #[0.01, 0.05, 0.1, 0.8])[float(sys.argv[1]) ])
48
50
#var = PowerlawSeriesVariable('\\epsilon', 'epsilon', [0.01 * int(sys.argv[1])])
49
51
pls = PowerlawSeries (chain , var , cb ,
50
52
callback_kwargs = {'param' : param , 'other_param' : other_param }
@@ -60,22 +62,92 @@ def cb(this_param, param, other_param):
60
62
nfig .format (suptitle = 'Fig. 2 of Achterberg/Schure' )
61
63
chain_x , chain_p = pls .histogram_chains
62
64
65
+ datarow = pls .datarow_chain
66
+ datarow .set (label = 'Cauchy-Euler scheme' )
67
+
63
68
memo = {}
64
69
kppc_cls = PyBatchAchterberg2KPPC
65
70
chain_x_kppc = chain_x .copy ("kppc" , last_kwargs = {'batch_cls' : kppc_cls }, memo = memo )
66
71
chain_p_kppc = chain_p .copy ("kppc" , last_kwargs = {'batch_cls' : kppc_cls }, memo = memo )
67
- datarow = pls .datarow_chain
68
- datarow .set (label = 'CES' )
69
72
datarow_kppc = datarow .copy ("kppc" , last_parents = {'batch_cls' : kppc_cls }, memo = memo )
70
- datarow_kppc .set (label = 'KPPC' )
73
+ datarow_kppc .set (label = 'Predictor-corrector scheme' )
74
+
75
+ memo = {}
76
+ implicit_cls = PyBatchAchterberg2Implicit
77
+ chain_x_implicit = chain_x .copy ("implicit" , last_kwargs = {'batch_cls' : implicit_cls }, memo = memo )
78
+ chain_p_implicit = chain_p .copy ("implicit" , last_kwargs = {'batch_cls' : implicit_cls }, memo = memo )
79
+ datarow_implicit = datarow .copy ("implicit" , last_parents = {'batch_cls' : implicit_cls }, memo = memo )
80
+ datarow_implicit .set (label = 'Implicit Euler scheme' )
81
+
82
+ #memo = {}
83
+ #secondorder_cls = PyBatchAchterberg2SecondOrder
84
+ #chain_x_2nd = chain_x.copy("2ndorder", last_kwargs={'batch_cls': secondorder_cls}, memo=memo)
85
+ #chain_p_2nd = chain_p.copy("2ndorder", last_kwargs={'batch_cls': secondorder_cls}, memo=memo)
86
+ #datarow_2nd = datarow.copy("2ndorder", last_parents={'batch_cls': secondorder_cls}, memo=memo)
87
+ #datarow_2nd.set(label='2nd order scheme')
88
+ #
89
+ #memo = {}
90
+ #secondorder2_cls = PyBatchAchterberg2SecondOrder2
91
+ #chain_x_2nd2 = chain_x.copy("2ndorder2", last_kwargs={'batch_cls': secondorder2_cls}, memo=memo)
92
+ #chain_p_2nd2 = chain_p.copy("2ndorder2", last_kwargs={'batch_cls': secondorder2_cls}, memo=memo)
93
+ #datarow_2nd2 = datarow.copy("2ndorder2", last_parents={'batch_cls': secondorder2_cls}, memo=memo)
94
+ #datarow_2nd2.set(label='2nd order scheme (vec)')
95
+
96
+ #memo = {}
97
+ #semiimplicit_cls = PyBatchAchterberg2SemiImplicit
98
+ #chain_x_semiimplicit = chain_x.copy("semiimplicit", last_kwargs={'batch_cls': semiimplicit_cls}, memo=memo)
99
+ #chain_p_semiimplicit = chain_p.copy("semiimplicit", last_kwargs={'batch_cls': semiimplicit_cls}, memo=memo)
100
+ #datarow_semiimplicit = datarow.copy("semiimplicit", last_parents={'batch_cls': semiimplicit_cls}, memo=memo)
101
+ #datarow_semiimplicit.set(label='semiimplicit scheme (vec)')
102
+
103
+ memo = {}
104
+ semiimplicit_cls = PyBatchAchterberg2SemiImplicit2
105
+ chain_x_semiimplicit2 = chain_x .copy ("semiimplicit2" , last_kwargs = {'batch_cls' : semiimplicit_cls }, memo = memo )
106
+ chain_p_semiimplicit2 = chain_p .copy ("semiimplicit2" , last_kwargs = {'batch_cls' : semiimplicit_cls }, memo = memo )
107
+ datarow_semiimplicit2 = datarow .copy ("semiimplicit2" , last_parents = {'batch_cls' : semiimplicit_cls }, memo = memo )
108
+ datarow_semiimplicit2 .set (label = 'Semiimplicit scheme' )
109
+
110
+ #nfig.add(chain_x, 0, plot_on='spectra')
111
+ #nfig.add(chain_p, 2, plot_on='spectra')
112
+ nfig .add (datarow , 4 )
71
113
72
- nfig .add (chain_x , 0 , plot_on = 'spectra' )
73
- nfig .add (chain_p , 2 , plot_on = 'spectra' )
74
- nfig .add (chain_x_kppc , 1 , plot_on = 'spectra' )
75
- nfig .add (chain_p_kppc , 3 , plot_on = 'spectra' )
76
- nfig .add (pls .datarow_chain , 4 )
114
+ #nfig.add(chain_x_kppc, 1, plot_on='spectra')
115
+ #nfig.add(chain_p_kppc, 3, plot_on='spectra')
77
116
nfig .add (datarow_kppc , 4 )
117
+ #
118
+ nfig .add (chain_x_implicit , 0 , plot_on = 'spectra' )
119
+ nfig .add (chain_p_implicit , 2 , plot_on = 'spectra' )
120
+ nfig .add (datarow_implicit , 4 )
121
+
122
+ comparison_function = lambda eps : 1 + 0.924 * eps + 0.095 * eps ** 2
123
+ comparison_node = FunctionNode ("fun" , callback = comparison_function , plot = True )
124
+ nfig .add (comparison_node , 4 )
125
+
126
+ #nfig.add(chain_x_2nd2, 1, plot_on='spectra')
127
+ #nfig.add(chain_p_2nd2, 3, plot_on='spectra')
128
+ #nfig.add(datarow_2nd2, 4)
129
+
130
+ #nfig.add(chain_x_2nd, 1, plot_on='spectra')
131
+ #nfig.add(chain_p_2nd, 3, plot_on='spectra')
132
+ #nfig.add(datarow_2nd, 4)
133
+
134
+ #nfig.add(chain_x_semiimplicit, 0, plot_on='spectra')
135
+ #nfig.add(chain_p_semiimplicit, 2, plot_on='spectra')
136
+ #nfig.add(datarow_semiimplicit, 4)
137
+
138
+ nfig .add (chain_x_semiimplicit2 , 1 , plot_on = 'spectra' )
139
+ nfig .add (chain_p_semiimplicit2 , 3 , plot_on = 'spectra' )
140
+ nfig .add (datarow_semiimplicit2 , 4 )
141
+
78
142
nfig .pad (0.2 , 4 )
143
+ nfig [2 ].legend ()
144
+ nfig [3 ].legend ()
79
145
#nfig.show_nodes("achterberg_tree.pdf")
80
146
nfig .savefig ("figures/{}.pdf" .format (name ))
81
147
148
+ #nfig = NodeFigure(NodeFigureFormat(subplots={'ncols' : 1}, ax_format={'xscale': 'log', 'xlabel': 'streaming velocity / diffusivity', 'ylabel': 'powerlaw index'}, legend_kw={'ncols': 1}))
149
+ #nfig.add(pls.datarow_chain)
150
+ #nfig.add(datarow_kppc)
151
+ #nfig.add(datarow_implicit)
152
+ #nfig.add(comparison_node)
153
+ #nfig.savefig("figures/{}-simple.pdf".format(name))
0 commit comments