def test_mtt_vardiscretisation_cold_mantle(): radii = np.arange(100000.0, 500000.0, 1000.0) times = np.arange(0, 100000000 + 0.5 * 1.0, 1000.0) core = np.arange(0, 100000.0 - 1000.0 + 0.5 * 1000.0, 1000.0) temperatures = np.zeros((radii.size, times.size)) coretemp = np.zeros((core.size, times.size)) where_regolith = np.zeros_like(radii) top_mantle_bc = mtt.surface_dirichlet_bc bottom_mantle_bc = mtt.cmb_dirichlet_bc core_values = core_function.IsothermalEutecticCore( initial_temperature=1800.0, melting_temperature=1200.0, outer_r=10000.0, inner_r=0, rho=7800.0, cp=850.0, core_latent_heat=270000.0, ) ( mantle_conductivity, mantle_heatcap, mantle_density, ) = mantle_properties.set_up_mantle_properties( cond_constant="n", density_constant="n", heat_cap_constant="n", ) (temperatures, coretemp, latent,) = mtt.discretisation( core_values=core_values, latent=[], temp_init=1200.0, core_temp_init=1800, top_mantle_bc=top_mantle_bc, bottom_mantle_bc=bottom_mantle_bc, temp_surface=100.0, temperatures=temperatures, dr=1000.0, coretemp_array=coretemp, timestep=10000.0, r_core=10000.0, radii=radii, times=times, where_regolith=where_regolith, kappa_reg=1.0, cond=mantle_conductivity, heatcap=mantle_heatcap, dens=mantle_density, non_lin_term="y", ) temp_mean = np.mean(temperatures) coretemp_mean = np.mean(coretemp) assert coretemp_mean == pytest.approx(1799.9985585325398) assert temp_mean == pytest.approx(1161.0663997556733, 0.0000000001) assert temp_mean == pytest.approx(1161.0663997556733, 0.0000000001) print("Success.")
def temperature_timestepping_var(): timestep = 100000000000.0 temp_core_melting = 1200.0 core_cp = 850.0 core_density = 7800.0 temp_init = 1600.0 temp_surface = 250.0 core_temp_init = 1600.0 core_latent_heat = 270000.0 kappa_reg = 5e-08 dr = 1000.0 top_mantle_bc = mantle_timestepping.surface_dirichlet_bc bottom_mantle_bc = mantle_timestepping.cmb_dirichlet_bc ( r_core, radii, core_radii, reg_thickness, where_regolith, times, mantle_temperature_array, core_temperature_array, ) = mainmod.set_up() latent = [] core_values = core_function.IsothermalEutecticCore( initial_temperature=core_temp_init, melting_temperature=temp_core_melting, outer_r=r_core, inner_r=0, rho=core_density, cp=core_cp, core_latent_heat=core_latent_heat, ) ( mantle_conductivity, mantle_heatcap, mantle_density, ) = mantle_properties.set_up_mantle_properties( cond_constant="n", density_constant="n", heat_cap_constant="n", ) ( mantle_temperature_array, core_temperature_array, latent, ) = mantle_timestepping.discretisation( core_values, latent, temp_init, core_temp_init, top_mantle_bc, bottom_mantle_bc, temp_surface, mantle_temperature_array, dr, core_temperature_array, timestep, r_core, radii, times, where_regolith, kappa_reg, cond=mantle_conductivity, heatcap=mantle_heatcap, dens=mantle_density, ) results = { "mantle_temperature_array": mantle_temperature_array, "core_temperature_array": core_temperature_array, "latent": latent, "temp_core_melting": 1200, "times": times, } return results