Esempio n. 1
0
def test_new_core_unit():
    radii = np.arange(10000.0, 50000.0, 1000.0)
    times = np.arange(0, 100 + 0.5 * 1.0, 1.0)
    temperatures = np.zeros((radii.size, times.size))
    cmb_energy = nm.EnergyExtractedAcrossCMB(outer_r=10000.0,
                                             timestep=1.0,
                                             radius_step=1000.0)

    core = core_function.IsothermalEutecticCore(
        initial_temperature=1000.0,
        melting_temperature=1200.0,
        outer_r=10000.0,
        inner_r=0,
        rho=7800.0,
        cp=850.0,
        core_latent_heat=3.060671982536449e-13,
        lat=7000.0,
    )
    heat = cmb_energy.power(temperatures, i=1, k=3.0)
    core.extract_heat(heat, timestep=1.0)
    latent = core.latentlist
    core_lh_extracted = core.latent
    temperature_core = core.temperature
    assert latent == [7000.0]
    assert core_lh_extracted == 7000.0
    assert temperature_core == 1000.0
    print("Success.")
Esempio n. 2
0
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.")
Esempio n. 3
0
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