[Mesa-users] Question about inject_until_reach_model_with_total_energy
Francis Timmes
fxt44 at mac.com
Thu Dec 21 12:54:21 EST 2017
super!
fxt
> On Dec 21, 2017, at 10:08 AM, Patrick Neunteufel <neunteufel at astro.uni-bonn.de> wrote:
>
> That works. Thanks for the help!
>
>
> On 12/20/2017 12:40 AM, Francis Timmes wrote:
>>> ... injecting (relatively small amounts of) heat into non-degenerate envelopes of WDs, ...
>>
>> best practice, if possible, is to use the other_energy hook in a run_star_extra.f.
>> if this is not possible, please say why an other_energy is not sufficient for your purposes.
>>
>> fxt
>>
>>
>>
>>
>>
>>
>>
>>> On Dec 19, 2017, at 12:33 PM, Patrick Neunteufel <neunteufel at astro.uni-bonn.de> wrote:
>>>
>>> Hello everyone,
>>>
>>> Relatively new mesa user here. While experimenting with injecting
>>> (relatively small amounts of) heat into non-degenerate envelopes of WDs,
>>> I came across a possible problem with the
>>> inject_until_reach_model_with_total_energy setting, as well as,
>>> relatedly, the inject_until_reach_delta_total_energy option.
>>>
>>> Using the 10108 mesa release and the November 20th 2017 release of mesasdk.
>>>
>>> -- inject_until_reach_model_with_total_energy --
>>>
>>> The total energy of highly bound objects tends to be negative, as
>>> correctly modeled by mesa. However, this option requires the user to
>>> request an absolute positive target energy, as defined in the
>>> check_for_extra_heat subroutine in evolve.f90, line 1225 (not mentioned
>>> in the users guide, btw.). This makes it impossible to inject small
>>> amounts of heat that would not, by themselves, unbind the object.
>>>
>>> Is this the desired behavior?
>>>
>>> Note: This option is used in the 30M_core_collapse_big_net test suite
>>> with an absolute positive target energy.
>>>
>>> -- inject_until_reach_delta_total_energy --
>>>
>>> An alternative to defining absolute negative target energies would be to
>>> use the inject_until_reach_delta_total_energy option. However, there
>>> seems to be a problem with the built-in stopping condition, as the code
>>> seems to simply keep adding energy until the model (deservedly) crashes
>>> at total (positive) energies of around 10^59 ergs.
>>>
>>> Best guess: I am doing something wrong.
>>>
>>> Second best guess: The else-statement in the check_for_extra_heat
>>> subroutine in evolve.f90, line 1232, does not yield the desired results.
>>>
>>> Please see below for an example inlist.
>>>
>>> Best wishes
>>>
>>> Patrick Neunteufel
>>>
>>>
>>> ----------------------------------------------------------------------------
>>>
>>> Inlist:
>>>
>>> &star_job
>>>
>>> mesa_dir = '../../mesa-10108'
>>>
>>> show_log_description_at_start = .true.
>>>
>>> load_saved_model = .true.
>>> saved_model_name = 'initwdh.mod'
>>>
>>> change_initial_RTI_flag = .true.
>>> new_RTI_flag = .false.
>>>
>>> save_model_when_terminate = .true.
>>> save_model_filename = 'wdh.mod'
>>>
>>> pgstar_flag = .true.
>>>
>>> set_initial_model_number = .true.
>>> initial_model_number = 0
>>>
>>> change_initial_u_flag = .true.
>>> change_initial_v_flag = .true.
>>> new_v_flag = .false.
>>> new_u_flag = .true.
>>>
>>> set_initial_dt = .true.
>>> seconds_for_initial_dt = 1d-6
>>>
>>> set_initial_age = .true.
>>> initial_age = 0
>>>
>>> / ! end of star_job namelist
>>>
>>>
>>> &controls
>>>
>>> inject_until_reach_model_with_total_energy = -1.004e50 ! Either
>>> this (see above). Tried with different values.
>>>
>>>
>>> ! All negative values yield the same result.
>>>
>>>
>>> ! All positive values work as advertised
>>>
>>> inject_until_reach_model_with_total_energy = 1e48 ! Or
>>> this. Tried with different values. All values yield the same result.
>>>
>>>
>>> total_mass_for_inject_extra_ergs_sec = 1d-3
>>> base_of_inject_extra_ergs_sec = 0.822 ! < 0 means at base of model
>>> start_time_for_inject_extra_ergs_sec = 0d0
>>>
>>> min_timestep_limit = -1
>>>
>>> Zbase = 0.02d0
>>>
>>> fe_core_infall_limit = 1d99 ! cm/sec
>>> max_age_in_seconds = 0.005 ! at least enough to finish injecting
>>> energy
>>>
>>>
>>> mix_factor = 0d0
>>> dxdt_nuc_factor = 0d0
>>> non_nuc_neu_factor = 0d0
>>> eps_nuc_factor = 0d0
>>>
>>>
>>> use_ODE_var_eqn_pairing = .true.
>>> use_dPrad_dm_form_of_T_gradient_eqn = .true.
>>> use_dedt_form_of_energy_eqn = .true.
>>>
>>> !use_momentum_outer_BC = .true.
>>> use_fixed_vsurf_outer_BC = .true.
>>> fixed_vsurf = 0d0
>>>
>>>
>>> mixing_length_alpha = 1.0
>>> MLT_option = 'Henyey'
>>> thermohaline_coeff = 0
>>> min_T_for_acceleration_limited_conv_velocity = 0
>>> okay_to_reduce_gradT_excess = .false.
>>> min_dt_for_increases_in_convection_velocity = 1
>>> mlt_accel_g_theta = 1d-2
>>>
>>>
>>> okay_to_remesh = .true
>>>
>>>
>>> max_timestep = 1d-0
>>>
>>> newton_iterations_limit = 20 ! this is used for setting timesteps
>>> max_tries = 21
>>> iter_for_resid_tol2 = 20
>>> tol_residual_norm1 = 1d-7
>>> tol_max_residual1 = 1d-4
>>>
>>> xa_scale = 1d0
>>>
>>> tiny_corr_coeff_limit = 999999
>>> newton_itermin_until_reduce_min_corr_coeff = 999999
>>> max_resid_jump_limit = 1d99 ! turn this off until fix residuals
>>>
>>>
>>> / ! end of controls namelist
>>>
>>>
>>>
>>> &pgstar
>>>
>>>
>>>
>>> / ! end of pgstar namelist
>>>
>
More information about the Mesa-users
mailing list