[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