1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121 | import shamrock
gamma = 5.0 / 3.0
rho_g = 1
target_tot_u = 1
bmin = (-0.6, -0.6, -0.6)
bmax = (0.6, 0.6, 0.6)
N_target_base = 4e6
compute_multiplier = shamrock.sys.world_size()
scheduler_split_val = int(2e6)
scheduler_merge_val = int(1)
N_target = N_target_base * compute_multiplier
xm, ym, zm = bmin
xM, yM, zM = bmax
vol_b = (xM - xm) * (yM - ym) * (zM - zm)
part_vol = vol_b / N_target
# lattice volume
part_vol_lattice = 0.74 * part_vol
dr = (part_vol_lattice / ((4.0 / 3.0) * 3.1416)) ** (1.0 / 3.0)
pmass = -1
ctx = shamrock.Context()
ctx.pdata_layout_new()
model = shamrock.get_Model_SPH(context=ctx, vector_type="f64_3", sph_kernel="M6")
model.init_scheduler(scheduler_split_val, scheduler_merge_val)
bmin, bmax = model.get_ideal_fcc_box(dr, bmin, bmax)
xm, ym, zm = bmin
xM, yM, zM = bmax
model.resize_simulation_box(bmin, bmax)
model.add_cube_fcc_3d(dr, bmin, bmax)
xc, yc, zc = model.get_closest_part_to((0, 0, 0))
ctx.close_sched()
del model
del ctx
ctx = shamrock.Context()
ctx.pdata_layout_new()
model = shamrock.get_Model_SPH(context=ctx, vector_type="f64_3", sph_kernel="M6")
cfg = model.gen_default_config()
# cfg.set_artif_viscosity_Constant(alpha_u = 1, alpha_AV = 1, beta_AV = 2)
# cfg.set_artif_viscosity_VaryingMM97(alpha_min = 0.1,alpha_max = 1,sigma_decay = 0.1, alpha_u = 1, beta_AV = 2)
cfg.set_artif_viscosity_VaryingCD10(
alpha_min=0.0, alpha_max=1, sigma_decay=0.1, alpha_u=1, beta_AV=2
)
cfg.set_boundary_periodic()
cfg.set_eos_adiabatic(gamma)
cfg.print_status()
model.set_solver_config(cfg)
model.init_scheduler(int(1e6), 1)
bmin = (xm - xc, ym - yc, zm - zc)
bmax = (xM - xc, yM - yc, zM - zc)
xm, ym, zm = bmin
xM, yM, zM = bmax
model.resize_simulation_box(bmin, bmax)
model.add_cube_fcc_3d(dr, bmin, bmax)
vol_b = (xM - xm) * (yM - ym) * (zM - zm)
totmass = rho_g * vol_b
# print("Total mass :", totmass)
pmass = model.total_mass_to_part_mass(totmass)
model.set_value_in_a_box("uint", "f64", 0, bmin, bmax)
rinj = 0.008909042924642563 * 2 / 2
# rinj = 0.008909042924642563*2*2
# rinj = 0.01718181
u_inj = 1
model.add_kernel_value("uint", "f64", u_inj, (0, 0, 0), rinj)
model.set_particle_mass(pmass)
model.set_cfl_cour(0.01)
model.set_cfl_force(0.01)
t_sum = 0
t_target = 0.1
current_dt = 1e-7
i = 0
i_dump = 0
while t_sum < t_target:
# print("step : t=",t_sum)
next_dt = model.evolve(t_sum, current_dt, False, "dump_" + str(i_dump) + ".vtk", False)
if i % 1 == 0:
i_dump += 1
t_sum += current_dt
current_dt = next_dt
if (t_target - t_sum) < next_dt:
current_dt = t_target - t_sum
i += 1
if i > 5:
break
res_rate, res_cnt = model.solver_logs_last_rate(), model.solver_logs_last_obj_count()
if shamrock.sys.world_rank() == 0:
print("result rate :", res_rate)
print("result cnt :", res_cnt)
|