@@ -51,12 +51,25 @@ def eat_dots_for_texmaker(value):
51
51
domain_size0 = 512 # initial size of the domain
52
52
nsamples = 5 # number of resolutions
53
53
54
+
54
55
initialPe = 1 * 5E2
55
- initialDa = 1E-3 # for initialDa in [1E-3, 1E0, 1E3]:
56
+ initialDa = 1E3 # for initialDa in [1E-3, 1E0, 1E3]:
57
+ initialFo = 1E-3
58
+
59
+ tc = int (65536 / 1 ) # number of timesteps, tc = 65536 --> diffusivity0 = 4E-3
60
+ diffusivity0 = initialFo * (domain_size0 ** 2 )/ tc
61
+
62
+
63
+ ##################### testy
56
64
65
+ # diffusivity0 = 1E-2
66
+ # initialPe = 0*5E2
67
+ # initialDa = 1E1 # for initialDa in [1E-3, 1E0, 1E3]:
68
+ # initialFo = 1E-2
69
+
70
+ print (f"diffusivity0 = { diffusivity0 :.2e} " )
71
+ #####################
57
72
58
- tc = 65536 # number of timesteps for dt=1 aka Time
59
- diffusivity0 = 4E-3
60
73
61
74
lambda_ph0 = initialDa * diffusivity0 / domain_size0 ** 2
62
75
@@ -68,17 +81,15 @@ def eat_dots_for_texmaker(value):
68
81
df_for_plots_part1 = pd .DataFrame ()
69
82
df_for_plots_part2 = pd .DataFrame ()
70
83
84
+ def calc_sim_numbers (lambda_phi , L , M , Ux , n_iter ):
85
+ Da = (lambda_phi * L ** 2 ) / M # Damkohler similarity number
86
+ Pe = Ux * L / M # Peclet similarity number (similar to Reynolds, but refers to advection-diffusion eq)
87
+ Fo = M * n_iter / (L ** 2 ) # Fourier similarity number
88
+
89
+ return Da ,Pe ,Fo
90
+
71
91
for scaling in [acoustic_scaling , diffusive_scaling ]:
72
92
# for scaling in [acoustic_scaling]:
73
- Ux0 = initialPe * diffusivity0 / domain_size0 # macroscopic advection velocity
74
-
75
- # check Da, Pe
76
- Da0 = (lambda_ph0 * domain_size0 ** 2 ) / \
77
- diffusivity0 # Damkohler similarity number
78
- # Peclet similarity number (similar to Reynolds, but refers to advection-diffusion eq)
79
- Pe0 = Ux0 * domain_size0 / diffusivity0
80
- print (f"Initial Damköhler number: { Da0 :.2e} \t Peclet number: { Pe0 :.2e} " )
81
-
82
93
df_latex = pd .DataFrame ()
83
94
L2 = list ()
84
95
@@ -106,19 +117,22 @@ def eat_dots_for_texmaker(value):
106
117
lambda_ph = coeff * lambda_ph0 * lbdt
107
118
# end of acoustic digression
108
119
109
- Ux = Pe0 * diffusivity / domain_size
120
+ Ux = initialPe * diffusivity / domain_size
110
121
111
122
n_iterations = tc / lbdt
112
- SI_time = n_iterations / (domain_size * domain_size / diffusivity )
113
- print (f"running case { n } /{ nsamples } , lbdt={ lbdt } , lbdx={ lbdx } SI_time={ SI_time :.2e} , Ux={ Ux :.2e} diffusivity={ diffusivity :.2e} lambda_ph={ lambda_ph :.2e} " )
114
- assert_almost_equal ((lambda_ph * domain_size ** 2 ) /
115
- diffusivity , Da0 , decimal = 6 )
116
- assert_almost_equal (Ux * domain_size / diffusivity , Pe0 , decimal = 6 )
117
- assert_almost_equal (math .modf (n_iterations )[
118
- 0 ], 0 , decimal = 6 ) # check decimal places
123
+ # SI_time = n_iterations/(domain_size*domain_size/diffusivity) # this is just the Fo
124
+
125
+ # # check Da, Pe, Fo
126
+ Da , Pe , Fo = calc_sim_numbers (lambda_ph , domain_size , diffusivity , Ux , n_iterations )
127
+ print (f"\n === Damköhler number: { Da :.2e} \t Peclet number: { Pe :.2e} \t Fourier number { Fo :.2e} ===\n " )
128
+
129
+ print (f"running case { n } /{ nsamples } , lbdt={ lbdt } , lbdx={ lbdx } , Ux={ Ux :.2e} diffusivity={ diffusivity :.2e} lambda_ph={ lambda_ph :.2e} " )
130
+ assert_almost_equal ((lambda_ph * domain_size ** 2 ) / diffusivity , Da , decimal = 6 )
131
+ assert_almost_equal (Ux * domain_size / diffusivity , Pe , decimal = 6 )
132
+ assert_almost_equal (math .modf (n_iterations )[0 ], 0 , decimal = 6 ) # check decimal places
119
133
# check decimal places
120
134
assert_almost_equal (math .modf (domain_size )[0 ], 0 , decimal = 6 )
121
-
135
+
122
136
def getXML (** kwars ):
123
137
# global idx
124
138
@@ -209,7 +223,7 @@ def getXML(**kwars):
209
223
'n' : n ,
210
224
'L' : domain_size ,
211
225
'scaling' : f'{ scaling .__name__ } ' ,
212
- 'Da' : Da0 ,
226
+ 'Da' : Da ,
213
227
'LBMdx' : lbdx ,
214
228
'LBMdt' : lbdt ,
215
229
'iteration_x_lbdt' : data .iteration_x_lbdt ,
@@ -225,7 +239,7 @@ def getXML(**kwars):
225
239
'n_iterations' : int (n_iterations ),
226
240
# 'log2(LBMdx)': np.log2(lbdx),
227
241
# 'log2(LBMdt)': np.log2(lbdt),
228
- r'$time_{SI} $' : SI_time ,
242
+ r'$Fo $' : Fo ,
229
243
# r'$\Lambda$': magic_parameter,
230
244
# 'Da': int(Da),
231
245
# 'Pe': int(Pe0),
@@ -239,11 +253,11 @@ def getXML(**kwars):
239
253
'L' : domain_size ,
240
254
'n_iterations' : n_iterations ,
241
255
'CPU_cost' : domain_size * domain_size * n_iterations ,
242
- 'Da' : Da0 ,
243
- 'Pe' : Pe0 ,
256
+ 'Da' : Da ,
257
+ 'Pe' : Pe ,
258
+ 'Fo' : Fo ,
244
259
'MagicParameter' : magic_parameter ,
245
260
'scaling' : f'{ scaling .__name__ } ' ,
246
- 'SI_time' : SI_time ,
247
261
'LBMdx' : lbdx ,
248
262
'LBMdt' : lbdt ,
249
263
'U' : Ux ,
@@ -298,8 +312,8 @@ def calc_L2(anal, num):
298
312
fig .tight_layout () # otherwise the right y-label is slightly clipped
299
313
plt .savefig (f"{ plot_dir } /"
300
314
f"{ scaling .__name__ } _2D_phase_field_tc_{ tc } "
301
- f"_Da_{ eat_dots_for_texmaker (Da0 )} "
302
- f"_Pe_{ eat_dots_for_texmaker (Pe0 )} "
315
+ f"_Da_{ eat_dots_for_texmaker (Da )} "
316
+ f"_Pe_{ eat_dots_for_texmaker (Pe )} "
303
317
".png" , dpi = 300 )
304
318
plt .close (fig )
305
319
@@ -311,8 +325,8 @@ def calc_L2(anal, num):
311
325
fig .tight_layout () # otherwise the right y-label is slightly clipped
312
326
plt .savefig (f"{ plot_dir } /"
313
327
f"{ scaling .__name__ } _2D_Q_tc_{ tc } "
314
- f"_Da_{ eat_dots_for_texmaker (Da0 )} "
315
- f"_Pe_{ eat_dots_for_texmaker (Pe0 )} "
328
+ f"_Da_{ eat_dots_for_texmaker (Da )} "
329
+ f"_Pe_{ eat_dots_for_texmaker (Pe )} "
316
330
".png" , dpi = 300 )
317
331
plt .close (fig )
318
332
@@ -323,8 +337,8 @@ def calc_L2(anal, num):
323
337
#### PLOT CONVERGENCE ####
324
338
fig_name = os .path .join (plot_dir ,
325
339
f"{ scaling .__name__ } _2D_"
326
- f"_Da_{ eat_dots_for_texmaker (Da0 )} "
327
- f"_Pe_{ eat_dots_for_texmaker (Pe0 )} "
340
+ f"_Da_{ eat_dots_for_texmaker (Da )} "
341
+ f"_Pe_{ eat_dots_for_texmaker (Pe )} "
328
342
f"_diffusivity0_{ eat_dots_for_texmaker (diffusivity )} "
329
343
f"_lambda_ph0_{ eat_dots_for_texmaker (lambda_ph0 )} "
330
344
)
@@ -405,14 +419,14 @@ def calc_L2(anal, num):
405
419
406
420
print (f"SUMMARY:" )
407
421
print (df_latex .to_latex (index = False , escape = False ,
408
- caption = f"Da = { Da0 :.2e} , " + r"P{\'e}" + f" = { Pe0 :.2e} " ))
422
+ caption = f"Da = { Da :.2e} , " + r"P{\'e}" + f" = { Pe :.2e} " + f"Fo = { Fo :.2e } " ))
409
423
410
424
pd .set_option ('display.float_format' , '{:.2E}' .format )
411
425
original_stdout = sys .stdout # Save a reference to the original standard output
412
426
with open (os .path .join (plot_dir , f"{ scaling .__name__ } _latex_table.txt" ), 'a+' ) as f :
413
427
sys .stdout = f # Change the standard output to the file we created.
414
428
print (df_latex .to_latex (index = False , escape = False ,
415
- caption = f"Da = { Da0 :.2e} , " + r"P{\'e}" + f" = { Pe0 :.2e} " ))
429
+ caption = f"Da = { Da :.2e} , " + r"P{\'e}" + f" = { Pe :.2e } " + f"Fo = { Fo :.2e} " ))
416
430
sys .stdout = original_stdout # Reset the standard output to its original value
417
431
418
432
with pd .ExcelWriter (f"{ fig_name } .xlsx" ) as writer : # doctest: +SKIP
@@ -428,7 +442,7 @@ def calc_L2(anal, num):
428
442
429
443
# df_for_plots = df_for_plots.sort_values(by=['is3D', 'Collision_Kernel', 'D', 'BC_order'])
430
444
df_for_plots_merged_inner .to_pickle (
431
- f"./pickled_df_Da_{ Da0 :.2e} _dense2sparse_samples_{ nsamples } .pkl" )
445
+ f"./pickled_df_Da_{ Da :.2e} _dense2sparse_samples_{ nsamples } .pkl" )
432
446
print (df_for_plots_merged_inner )
433
447
434
448
0 commit comments