@@ -23,73 +23,73 @@ Nᵢ = FT(2e5)
2323ΔT_range = range (1e-4 , stop = 0.025 , length = 1000 )
2424
2525# limiters to not melt more mass and number than we have
26- max_dLdt = [ Lᵢ / dt for ΔT in ΔT_range]
27- max_dNdt = [ Nᵢ / dt for ΔT in ΔT_range]
26+ max_dLdt = Lᵢ / dt
27+ max_dNdt = Nᵢ / dt
2828
2929# ! format: off
3030
31- ρₐ1 = FT (1.2 )
32- Fᵣ1 = FT (0.8 )
33- ρᵣ1 = FT (800 )
34- state = P3. get_state (params; F_rim = Fᵣ1, ρ_rim = ρᵣ1, L_ice = Lᵢ, N_ice = Nᵢ)
31+ ρₐ = FT (1.2 )
32+ Fᵣ = FT (0.8 )
33+ ρᵣ = FT (800 )
34+ label1 = " ρₐ=$ρₐ kg/m³, Fᵣ=$Fᵣ , ρᵣ=$(Int (ρᵣ)) kg/m³"
35+ state = P3. get_state (params; F_rim = Fᵣ, ρ_rim = ρᵣ, L_ice = Lᵢ, N_ice = Nᵢ)
3536logλ = P3. get_distribution_logλ (state)
36- dLdt1 = [P3. ice_melt (vel, aps, tps, params. T_freeze .+ ΔT, ρₐ1, dt, state, logλ). dLdt for ΔT in ΔT_range]
37- dNdt1 = [P3. ice_melt (vel, aps, tps, params. T_freeze .+ ΔT, ρₐ1, dt, state, logλ). dNdt for ΔT in ΔT_range]
37+ melt1 = P3. ice_melt .(vel, aps, tps, params. T_freeze .+ ΔT_range, ρₐ, state, logλ)
38+ dLdt1 = getfield .(melt1, :dLdt )
39+ dNdt1 = getfield .(melt1, :dNdt )
3840
39- Fᵣ2 = FT (0.2 )
40- state = P3. get_state (params; F_rim = Fᵣ2, ρ_rim = ρᵣ1, L_ice = Lᵢ, N_ice = Nᵢ)
41+ Fᵣ = FT (0.2 )
42+ label2 = " ρₐ=$ρₐ kg/m³, Fᵣ=$Fᵣ , ρᵣ=$(Int (ρᵣ)) kg/m³"
43+ state = P3. get_state (params; F_rim = Fᵣ, ρ_rim = ρᵣ, L_ice = Lᵢ, N_ice = Nᵢ)
4144logλ = P3. get_distribution_logλ (state)
42- dLdt2 = [P3. ice_melt (vel, aps, tps, params. T_freeze .+ ΔT, ρₐ1, dt, state, logλ). dLdt for ΔT in ΔT_range]
43- dNdt2 = [P3. ice_melt (vel, aps, tps, params. T_freeze .+ ΔT, ρₐ1, dt, state, logλ). dNdt for ΔT in ΔT_range]
45+ melt2 = P3. ice_melt .(vel, aps, tps, params. T_freeze .+ ΔT_range, ρₐ, state, logλ)
46+ dLdt2 = getfield .(melt2, :dLdt )
47+ dNdt2 = getfield .(melt2, :dNdt )
4448
45- ρᵣ2 = FT (200 )
46- state = P3. get_state (params; F_rim = Fᵣ2, ρ_rim = ρᵣ2, L_ice = Lᵢ, N_ice = Nᵢ)
49+ ρᵣ = FT (200 )
50+ label3 = " ρₐ=$ρₐ kg/m³, Fᵣ=$Fᵣ , ρᵣ=$(Int (ρᵣ)) kg/m³"
51+ state = P3. get_state (params; F_rim = Fᵣ, ρ_rim = ρᵣ, L_ice = Lᵢ, N_ice = Nᵢ)
4752logλ = P3. get_distribution_logλ (state)
48- dLdt3 = [P3. ice_melt (vel, aps, tps, params. T_freeze .+ ΔT, ρₐ1, dt, state, logλ). dLdt for ΔT in ΔT_range]
49- dNdt3 = [P3. ice_melt (vel, aps, tps, params. T_freeze .+ ΔT, ρₐ1, dt, state, logλ). dNdt for ΔT in ΔT_range]
53+ melt3 = P3. ice_melt .(vel, aps, tps, params. T_freeze .+ ΔT_range, ρₐ, state, logλ)
54+ dLdt3 = getfield .(melt3, :dLdt )
55+ dNdt3 = getfield .(melt3, :dNdt )
5056
51- ρₐ2 = FT (0.5 )
52- state = P3. get_state (params; F_rim = Fᵣ2, ρ_rim = ρᵣ2, L_ice = Lᵢ, N_ice = Nᵢ)
57+ ρₐ = FT (0.5 )
58+ label4 = " ρₐ=$ρₐ kg/m³, Fᵣ=$Fᵣ , ρᵣ=$(Int (ρᵣ)) kg/m³"
59+ state = P3. get_state (params; F_rim = Fᵣ, ρ_rim = ρᵣ, L_ice = Lᵢ, N_ice = Nᵢ)
5360logλ = P3. get_distribution_logλ (state)
54- dLdt4 = [P3. ice_melt (vel, aps, tps, params. T_freeze .+ ΔT, ρₐ2, dt, state, logλ). dLdt for ΔT in ΔT_range]
55- dNdt4 = [P3. ice_melt (vel, aps, tps, params. T_freeze .+ ΔT, ρₐ2, dt, state, logλ). dNdt for ΔT in ΔT_range]
61+ melt4 = P3. ice_melt .(vel, aps, tps, params. T_freeze .+ ΔT_range, ρₐ, state, logλ)
62+ dLdt4 = getfield .(melt4, :dLdt )
63+ dNdt4 = getfield .(melt4, :dNdt )
5664
5765# plotting
58- fig = Makie. Figure (size = (1500 , 500 ), fontsize= 22 , linewidth= 3 )
59-
60- ax1 = Makie. Axis (fig[1 , 1 ]; yscale = log10)
61- ax2 = Makie. Axis (fig[1 , 2 ]; yscale = log10)
62-
63- ax1. xlabel = " T [C]"
64- ax1. ylabel = " ice mass melting rate [g/m3/s]"
65- ax2. xlabel = " T [C]"
66- ax2. ylabel = " ice number melting rate [1/cm3/s]"
67-
68- l_max_dLdt = Makie. lines! (ax1, ΔT_range, max_dLdt * 1e3 , color = :thistle )
69- l_max_dNdt = Makie. lines! (ax2, ΔT_range, max_dNdt * 1e-6 , color = :thistle )
70-
71- l_dLdt1 = Makie. lines! (ax1, ΔT_range, dLdt1 * 1e3 , color = :skyblue )
72- l_dNdt1 = Makie. lines! (ax2, ΔT_range, dNdt1 * 1e-6 , color = :skyblue )
73-
74- l_dLdt2 = Makie. lines! (ax1, ΔT_range, dLdt2 * 1e3 , color = :blue3 )
75- l_dNdt2 = Makie. lines! (ax2, ΔT_range, dNdt2 * 1e-6 , color = :blue3 )
76-
77- l_dLdt3 = Makie. lines! (ax1, ΔT_range, dLdt3 * 1e3 , color = :orchid )
78- l_dNdt3 = Makie. lines! (ax2, ΔT_range, dNdt3 * 1e-6 , color = :orchid )
79-
80- l_dLdt4 = Makie. lines! (ax1, ΔT_range, dLdt4 * 1e3 , color = :purple )
81- l_dNdt4 = Makie. lines! (ax2, ΔT_range, dNdt4 * 1e-6 , color = :purple )
82-
83- Makie. Legend (
84- fig[1 , 3 ],
85- [l_max_dNdt, l_dNdt1, l_dNdt2, l_dNdt3, l_dNdt4],
86- [
87- " limit" ,
88- " ρₐ=1.2 kg/m3, Fᵣ=0.8, ρᵣ=800kg/m3" ,
89- " ρₐ=1.2 kg/m3, Fᵣ=0.2, ρᵣ=800kg/m3" ,
90- " ρₐ=1.2 kg/m3, Fᵣ=0.2, ρᵣ=200kg/m3" ,
91- " ρₐ=0.5 kg/m3, Fᵣ=0.2, ρᵣ=200kg/m3" ,
92- ],
93- framevisible = false ,
94- )
95- Makie. save (" P3_ice_melt.svg" , fig)
66+ Makie. with_theme (Makie. theme_minimal (), fontsize = 22 , linewidth = 3 ) do
67+ fig = Makie. Figure (size = (800 , 600 ))
68+
69+ ax1 = Makie. Axis (fig[1 , 1 ];
70+ xlabel = " T [°C]" , ylabel = " ice mass melting rate [g/m³/s]" ,
71+ title = " P3 ice melting" ,
72+ )
73+ ax2 = Makie. Axis (fig[1 , 1 ];
74+ xlabel = " T [°C]" , ylabel = " ice number melting rate [1/cm³/s]" ,
75+ yaxisposition = :right , rightspinevisible = true ,
76+ )
77+
78+ l_max_dLdt = Makie. hlines! (ax1, max_dLdt * 1e3 ; color = :gray , linewidth = 1 )
79+ l_max_dNdt = Makie. hlines! (ax2, max_dNdt * 1e-6 ; color = :gray , linewidth = 1 , label = " limit" )
80+
81+ l_dLdt1 = Makie. lines! (ax1, ΔT_range, dLdt1 * 1e3 ; color = :skyblue )
82+ l_dNdt1 = Makie. lines! (ax2, ΔT_range, dNdt1 * 1e-6 ; color = :skyblue , label = label1)
83+
84+ l_dLdt2 = Makie. lines! (ax1, ΔT_range, dLdt2 * 1e3 ; color = :blue3 )
85+ l_dNdt2 = Makie. lines! (ax2, ΔT_range, dNdt2 * 1e-6 ; color = :blue3 , label = label2)
86+
87+ l_dLdt3 = Makie. lines! (ax1, ΔT_range, dLdt3 * 1e3 ; color = :orchid )
88+ l_dNdt3 = Makie. lines! (ax2, ΔT_range, dNdt3 * 1e-6 ; color = :orchid , label = label3)
89+
90+ l_dLdt4 = Makie. lines! (ax1, ΔT_range, dLdt4 * 1e3 ; color = :purple )
91+ l_dNdt4 = Makie. lines! (ax2, ΔT_range, dNdt4 * 1e-6 ; color = :purple , label = label4)
92+
93+ Makie. axislegend (ax2; position = :rb , framevisible = false )
94+ Makie. save (" P3_ice_melt.svg" , fig)
95+ end
0 commit comments