LCOV - code coverage report
Current view: top level - star/private - star_job_ctrls_io.f90 (source / functions) Coverage Total Hit
Test: coverage.info Lines: 48.5 % 1028 499
Test Date: 2025-10-14 06:41:40 Functions: 55.6 % 9 5

            Line data    Source code
       1              : ! ***********************************************************************
       2              : !
       3              : !   Copyright (C) 2013  The MESA Team
       4              : !
       5              : !   This program is free software: you can redistribute it and/or modify
       6              : !   it under the terms of the GNU Lesser General Public License
       7              : !   as published by the Free Software Foundation,
       8              : !   either version 3 of the License, or (at your option) any later version.
       9              : !
      10              : !   This program is distributed in the hope that it will be useful,
      11              : !   but WITHOUT ANY WARRANTY; without even the implied warranty of
      12              : !   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
      13              : !   See the GNU Lesser General Public License for more details.
      14              : !
      15              : !   You should have received a copy of the GNU Lesser General Public License
      16              : !   along with this program. If not, see <https://www.gnu.org/licenses/>.
      17              : !
      18              : ! ***********************************************************************
      19              : 
      20              :       module star_job_ctrls_io
      21              : 
      22              :       use const_def, only: dp
      23              :       use star_private_def
      24              :       use rates_def, only: maxlen_reaction_Name
      25              : 
      26              :       implicit none
      27              : 
      28              :       include 'star_job_controls.inc'
      29              :       include 'star_job_controls_dev.inc'
      30              : 
      31              :       namelist /star_job/ &
      32              :          mesa_dir, &
      33              :          eosDT_cache_dir, &
      34              :          ionization_cache_dir, &
      35              :          kap_cache_dir, &
      36              :          rates_cache_dir, &
      37              :          pause_before_terminate, &
      38              :          profile_columns_file, &
      39              :          history_columns_file, &
      40              :          show_log_description_at_start, &
      41              :          list_net_reactions, &
      42              :          show_net_reactions_info, &
      43              :          show_net_species_info, &
      44              :          first_model_for_timing, &
      45              :          steps_before_start_timing, &
      46              :          show_eqns_and_vars_names, &
      47              :          pgstar_flag, &
      48              :          disable_pgstar_during_relax_flag, &
      49              :          clear_initial_pgstar_history, &
      50              :          clear_pgstar_history, &
      51              :          save_pgstar_files_when_terminate, &
      52              :          save_photo_when_terminate, &
      53              :          load_saved_photo, &
      54              :          saved_photo_name, &
      55              :          save_photo_filename, &
      56              :          save_photo_number, &
      57              :          write_profile_when_terminate, &
      58              :          show_retry_counts_when_terminate, &
      59              :          show_timestep_limit_counts_when_terminate, &
      60              :          filename_for_profile_when_terminate, &
      61              :          create_pre_main_sequence_model, &
      62              :          pre_ms_relax_to_start_radiative_core, &
      63              :          pre_ms_relax_num_steps, &
      64              :          pre_ms_min_steps_before_check_radiative_core, &
      65              :          pre_ms_check_radiative_core_start, &
      66              :          pre_ms_check_radiative_core_stop, &
      67              :          pre_ms_check_radiative_core_Lnuc_div_L_limit, &
      68              :          pre_ms_check_radiative_core_min_mass, &
      69              :          pre_ms_T_c, &
      70              :          pre_ms_guess_rho_c, &
      71              :          pre_ms_d_log10_P, &
      72              :          pre_ms_logT_surf_limit, &
      73              :          pre_ms_logP_surf_limit, &
      74              :          create_initial_model, &
      75              :          initial_model_relax_num_steps, &
      76              :          radius_in_cm_for_create_initial_model, &
      77              :          mass_in_gm_for_create_initial_model, &
      78              :          center_logP_1st_try_for_create_initial_model, &
      79              :          entropy_1st_try_for_create_initial_model, &
      80              :          abs_e01_tolerance_for_create_initial_model, &
      81              :          abs_e02_tolerance_for_create_initial_model, &
      82              :          max_tries_for_create_initial_model, &
      83              :          initial_model_eps, &
      84              :          save_star_job_namelist, &
      85              :          star_job_namelist_name, &
      86              :          echo_at_start, &
      87              :          echo_at_end, &
      88              :          load_saved_model, &
      89              :          load_model_filename, &
      90              :          create_merger_model, &
      91              :          saved_model_for_merger_1, &
      92              :          saved_model_for_merger_2, &
      93              :          set_max_dt_to_frac_lifetime, &
      94              :          max_frac_of_lifetime_per_step, &
      95              :          astero_just_call_my_extras_check_model, &
      96              :          relax_mass, &
      97              :          relax_initial_mass, &
      98              :          new_mass, &
      99              :          lg_max_abs_mdot, &
     100              :          relax_mass_to_remove_H_env, &
     101              :          relax_initial_mass_to_remove_H_env, &
     102              :          extra_mass_retained_by_remove_H_env, &
     103              :          relax_mass_scale, &
     104              :          relax_initial_mass_scale, &
     105              :          dlgm_per_step, &
     106              : 
     107              :          relax_M_center_dt, &
     108              :          change_mass_years_for_dt, &
     109              :          relax_M_center, &
     110              :          relax_initial_M_center, &
     111              :          relax_core, &
     112              :          relax_initial_core, &
     113              :          new_core_mass, &
     114              :          dlg_core_mass_per_step, &
     115              :          relax_core_years_for_dt, &
     116              :          core_avg_rho, &
     117              :          core_avg_eps, &
     118              : 
     119              :          relax_R_center, &
     120              :          relax_initial_R_center, &
     121              :          new_R_center, &
     122              :          dlgR_per_step, &
     123              :          relax_R_center_dt, &
     124              : 
     125              :          set_v_center, &
     126              :          set_initial_v_center, &
     127              :          relax_v_center, &
     128              :          relax_initial_v_center, &
     129              :          new_v_center, &
     130              :          dv_per_step, &
     131              :          relax_v_center_dt, &
     132              : 
     133              :          zero_alpha_RTI, &
     134              :          zero_initial_alpha_RTI, &
     135              : 
     136              :          set_L_center, &
     137              :          set_initial_L_center, &
     138              :          relax_L_center, &
     139              :          relax_initial_L_center, &
     140              :          new_L_center, &
     141              :          dlgL_per_step, &
     142              :          relax_L_center_dt, &
     143              : 
     144              :          remove_center_at_cell_k, &
     145              :          remove_center_by_temperature, &
     146              :          remove_center_by_mass_fraction_q, &
     147              :          remove_center_by_delta_mass_gm, &
     148              :          remove_center_by_delta_mass_Msun, &
     149              :          remove_center_by_mass_gm, &
     150              :          remove_center_by_mass_Msun, &
     151              :          remove_center_by_radius_cm, &
     152              :          remove_center_by_radius_Rsun, &
     153              :          remove_center_by_he4, &
     154              :          remove_center_by_c12_o16, &
     155              :          remove_center_by_si28, &
     156              :          remove_center_to_reduce_co56_ni56, &
     157              :          remove_center_by_ye, &
     158              :          remove_center_by_entropy, &
     159              :          remove_center_by_infall_kms, &
     160              :          remove_center_at_inner_max_abs_v, &
     161              :          remove_fe_core, &
     162              :          remove_fallback_at_each_step, &
     163              :          fallback_check_total_energy, &
     164              :          remove_fallback_speed_limit, &
     165              :          remove_center_set_zero_v_center, &
     166              :          limit_center_logP_at_each_step, &
     167              :          remove_center_adjust_L_center, &
     168              :          remove_center_logRho_limit, &
     169              : 
     170              :          remove_initial_center_at_cell_k, &
     171              :          remove_initial_center_by_temperature, &
     172              :          remove_initial_center_by_mass_fraction_q, &
     173              :          remove_initial_center_by_delta_mass_gm, &
     174              :          remove_initial_center_by_delta_mass_Msun, &
     175              :          remove_initial_center_by_mass_gm, &
     176              :          remove_initial_center_by_mass_Msun, &
     177              :          remove_initial_center_by_radius_cm, &
     178              :          remove_initial_center_by_radius_Rsun, &
     179              :          remove_initial_center_by_he4, &
     180              :          remove_initial_center_by_c12_o16, &
     181              :          remove_initial_center_by_si28, &
     182              :          remove_initial_center_to_reduce_co56_ni56, &
     183              :          remove_initial_center_by_ye, &
     184              :          remove_initial_center_by_entropy, &
     185              :          remove_initial_center_by_infall_kms, &
     186              :          remove_initial_center_at_inner_max_abs_v, &
     187              :          remove_initial_fe_core, &
     188              : 
     189              :          zero_initial_inner_v_by_mass_Msun, &
     190              :          zero_inner_v_by_mass_Msun, &
     191              : 
     192              :          remove_surface_at_cell_k, &
     193              :          remove_surface_at_he_core_boundary, &
     194              :          remove_surface_by_optical_depth, &
     195              :          remove_surface_by_density, &
     196              :          remove_surface_by_pressure, &
     197              :          remove_surface_by_mass_fraction_q, &
     198              :          remove_surface_by_mass_gm, &
     199              :          remove_surface_by_radius_cm, &
     200              :          remove_surface_by_mass_Msun, &
     201              :          remove_surface_by_radius_Rsun, &
     202              :          remove_surface_by_v_surf_km_s, &
     203              :          remove_surface_by_v_surf_div_cs, &
     204              :          remove_surface_by_v_surf_div_v_escape, &
     205              :          min_q_for_remove_surface_by_v_surf_div_v_escape, &
     206              :          max_q_for_remove_surface_by_v_surf_div_v_escape, &
     207              : 
     208              :          remove_surface_do_jrot, &
     209              :          remove_surface_do_entropy, &
     210              :          remove_surface_turn_off_energy_sources_and_sinks, &
     211              :          remove_surface_by_relax_to_star_cut, &
     212              : 
     213              :          remove_initial_surface_at_cell_k, &
     214              :          remove_initial_surface_at_he_core_boundary, &
     215              :          remove_initial_surface_by_optical_depth, &
     216              :          remove_initial_surface_by_density, &
     217              :          remove_initial_surface_by_pressure, &
     218              :          remove_initial_surface_by_mass_fraction_q, &
     219              :          remove_initial_surface_by_mass_gm, &
     220              :          remove_initial_surface_by_radius_cm, &
     221              :          remove_initial_surface_by_mass_Msun, &
     222              :          remove_initial_surface_by_radius_Rsun, &
     223              :          remove_initial_surface_by_v_surf_km_s, &
     224              :          remove_initial_surface_by_v_surf_div_cs, &
     225              :          remove_initial_surface_by_v_surf_div_v_escape, &
     226              : 
     227              :          report_mass_not_fe56, &
     228              :          relax_dxdt_nuc_factor, &
     229              :          relax_initial_dxdt_nuc_factor, &
     230              :          new_dxdt_nuc_factor, &
     231              :          dxdt_nuc_factor_multiplier, &
     232              :          relax_eps_nuc_factor, &
     233              :          relax_initial_eps_nuc_factor, &
     234              :          new_eps_nuc_factor, &
     235              :          eps_nuc_factor_multiplier, &
     236              :          relax_opacity_max, &
     237              :          relax_initial_opacity_max, &
     238              :          new_opacity_max, &
     239              :          opacity_max_multiplier, &
     240              :          relax_max_surf_dq, &
     241              :          relax_initial_max_surf_dq, &
     242              :          new_max_surf_dq, &
     243              :          max_surf_dq_multiplier, &
     244              : 
     245              :          relax_tau_factor, &
     246              :          relax_initial_tau_factor, &
     247              :          set_tau_factor, &
     248              :          set_initial_tau_factor, &
     249              :          relax_to_this_tau_factor, &
     250              :          set_to_this_tau_factor, &
     251              :          dlogtau_factor, &
     252              :          set_tau_factor_after_core_He_burn, &
     253              :          set_tau_factor_after_core_C_burn, &
     254              :          relax_tau_factor_after_core_He_burn, &
     255              :          relax_tau_factor_after_core_C_burn, &
     256              : 
     257              :          relax_to_this_opacity_factor, &
     258              :          d_opacity_factor, &
     259              :          relax_opacity_factor, &
     260              :          relax_initial_opacity_factor, &
     261              : 
     262              :          adjust_tau_factor_to_surf_density, &
     263              :          base_for_adjust_tau_factor_to_surf_density, &
     264              : 
     265              :          relax_Tsurf_factor, &
     266              :          relax_initial_Tsurf_factor, &
     267              :          set_Tsurf_factor, &
     268              :          set_initial_Tsurf_factor, &
     269              :          relax_to_this_Tsurf_factor, &
     270              :          set_to_this_Tsurf_factor, &
     271              :          dlogTsurf_factor, &
     272              : 
     273              :          relax_irradiation, &
     274              :          relax_initial_irradiation, &
     275              :          set_irradiation, &
     276              :          set_initial_irradiation, &
     277              :          relax_irradiation_min_steps, &
     278              :          relax_to_this_irrad_flux, &
     279              :          set_to_this_irrad_flux, &
     280              :          irrad_col_depth, &
     281              :          relax_irradiation_max_yrs_dt, &
     282              :          relax_mass_change, &
     283              :          relax_initial_mass_change, &
     284              :          relax_mass_change_min_steps, &
     285              :          relax_mass_change_max_yrs_dt, &
     286              :          relax_mass_change_init_mdot, &
     287              :          relax_mass_change_final_mdot, &
     288              : 
     289              :          change_RTI_flag, &
     290              :          change_initial_RTI_flag, &
     291              :          new_RTI_flag, &
     292              : 
     293              :          change_RSP_flag, &
     294              :          change_initial_RSP_flag, &
     295              :          new_RSP_flag, &
     296              : 
     297              :          change_RSP2_flag, &
     298              :          change_initial_RSP2_flag, &
     299              :          change_RSP2_flag_at_model_number, &
     300              :          new_RSP2_flag, &
     301              :          create_RSP2_model, &
     302              : 
     303              :          change_w_div_wc_flag, &
     304              :          change_initial_w_div_wc_flag, &
     305              :          new_w_div_wc_flag, &
     306              : 
     307              :          change_j_rot_flag, &
     308              :          change_initial_j_rot_flag, &
     309              :          new_j_rot_flag, &
     310              : 
     311              :          create_RSP_model, &
     312              : 
     313              :          change_v_flag, &
     314              :          change_initial_v_flag, &
     315              :          new_v_flag, &
     316              : 
     317              :          change_D_omega_flag, &
     318              :          change_initial_D_omega_flag, &
     319              :          new_D_omega_flag, &
     320              : 
     321              :          change_am_nu_rot_flag, &
     322              :          change_initial_am_nu_rot_flag, &
     323              :          new_am_nu_rot_flag, &
     324              : 
     325              :          use_D_omega_for_am_nu_rot, &
     326              : 
     327              :          change_u_flag, &
     328              :          change_initial_u_flag, &
     329              :          new_u_flag, &
     330              : 
     331              :          change_reconstruction_flag, &
     332              :          change_initial_reconstruction_flag, &
     333              :          new_reconstruction_flag, &
     334              : 
     335              :          center_ye_limit_for_v_flag, &
     336              :          change_rotation_flag, &
     337              :          change_initial_rotation_flag, &
     338              :          new_rotation_flag, &
     339              :          use_w_div_wc_flag_with_rotation, &
     340              :          use_j_rot_flag_with_rotation, &
     341              : 
     342              : 
     343              :          set_omega, &
     344              :          set_initial_omega, &
     345              :          set_omega_step_limit, &
     346              :          set_near_zams_omega_steps, &
     347              :          new_omega, &
     348              :          set_omega_div_omega_crit, &
     349              :          set_initial_omega_div_omega_crit, &
     350              :          set_omega_div_omega_crit_step_limit, &
     351              :          set_near_zams_omega_div_omega_crit_steps, &
     352              :          new_omega_div_omega_crit, &
     353              :          set_surface_rotation_v, &
     354              :          set_initial_surface_rotation_v, &
     355              :          set_surf_rotation_v_step_limit, &
     356              :          set_near_zams_surface_rotation_v_steps, &
     357              :          new_surface_rotation_v, &
     358              :          relax_omega, &
     359              :          relax_initial_omega, &
     360              :          near_zams_relax_omega, &
     361              :          relax_omega_div_omega_crit, &
     362              :          relax_initial_omega_div_omega_crit, &
     363              :          near_zams_relax_omega_div_omega_crit, &
     364              :          relax_surface_rotation_v, &
     365              :          relax_initial_surface_rotation_v, &
     366              :          near_zams_relax_initial_surface_rotation_v, &
     367              :          num_steps_to_relax_rotation, &
     368              :          relax_omega_max_yrs_dt,&
     369              :          set_uniform_initial_composition, &
     370              :          initial_h1, &
     371              :          initial_h2, &
     372              :          initial_he3, &
     373              :          initial_he4, &
     374              :          initial_zfracs, &
     375              :          dump_missing_metals_into_heaviest, &
     376              :          relax_initial_composition, &
     377              :          relax_initial_to_xaccrete, &
     378              :          relax_composition_filename, &
     379              :          num_steps_to_relax_composition, &
     380              :          timescale_for_relax_composition, &
     381              :          relax_initial_angular_momentum, &
     382              :          max_steps_to_relax_angular_momentum, &
     383              :          timescale_for_relax_angular_momentum, &
     384              :          max_dt_for_relax_angular_momentum, &
     385              :          relax_angular_momentum_constant_omega_center, &
     386              :          num_timescales_for_relax_angular_momentum, &
     387              :          relax_angular_momentum_filename, &
     388              :          relax_initial_entropy, &
     389              :          max_steps_to_relax_entropy, &
     390              :          timescale_for_relax_entropy, &
     391              :          max_dt_for_relax_entropy, &
     392              :          num_timescales_for_relax_entropy, &
     393              :          relax_entropy_filename, &
     394              :          get_entropy_for_relax_from_eos, &
     395              :          report_cell_for_xm, &
     396              :          set_to_xa_for_accretion, &
     397              :          set_initial_to_xa_for_accretion, &
     398              :          set_nzlo, &
     399              :          set_nzhi, &
     400              :          change_Y, &
     401              :          change_initial_Y, &
     402              :          relax_Y, &
     403              :          relax_initial_Y, &
     404              :          relax_Y_minq, &
     405              :          relax_Y_maxq, &
     406              :          new_Y, &
     407              :          change_Z, &
     408              :          change_initial_Z, &
     409              :          relax_Z, &
     410              :          relax_initial_Z, &
     411              :          relax_Z_minq, &
     412              :          relax_Z_maxq, &
     413              :          new_Z, &
     414              :          steps_to_take_before_terminate, &
     415              :          stop_if_this_file_exists, &
     416              :          set_initial_age, &
     417              :          initial_age, &
     418              :          set_initial_model_number, &
     419              :          initial_model_number, &
     420              :          set_initial_number_retries, &
     421              :          initial_number_retries, &
     422              :          set_initial_dt, &
     423              :          limit_initial_dt, &
     424              :          years_for_initial_dt, &
     425              :          seconds_for_initial_dt, &
     426              : 
     427              :          set_initial_cumulative_energy_error, &
     428              :          set_cumulative_energy_error, &
     429              :          set_cumulative_energy_error_at_step, &
     430              :          set_cumulative_energy_error_each_step_if_age_less_than, &
     431              :          set_cumulative_energy_error_each_relax, &
     432              :          new_cumulative_energy_error, &
     433              : 
     434              :          change_net, &
     435              :          change_initial_net, &
     436              :          new_net_name, &
     437              :          change_small_net, &
     438              :          change_initial_small_net, &
     439              :          new_small_net_name, &
     440              : 
     441              :          h_he_net, &
     442              :          co_net, &
     443              :          adv_net, &
     444              :          adjust_abundances_for_new_isos, &
     445              :          set_uniform_xa_from_file, &
     446              :          set_uniform_initial_xa_from_file, &
     447              :          file_for_uniform_xa, &
     448              : 
     449              :          mix_section, mix_initial_section, &
     450              :          mix_section_nzlo, mix_section_nzhi, &
     451              : 
     452              :          T9_weaklib_full_off, &
     453              :          T9_weaklib_full_on, &
     454              :          weaklib_blend_hi_Z, &
     455              :          T9_weaklib_full_off_hi_Z, &
     456              :          T9_weaklib_full_on_hi_Z, &
     457              : 
     458              :          use_suzuki_weak_rates, &
     459              :          use_3a_fl87, &
     460              : 
     461              :          use_special_weak_rates, &
     462              :          special_weak_states_file, &
     463              :          special_weak_transitions_file, &
     464              :          ion_coulomb_corrections, &
     465              :          electron_coulomb_corrections, &
     466              : 
     467              :          mix_envelope_down_to_T, &
     468              :          mix_initial_envelope_down_to_T, &
     469              :          auto_extend_net, &
     470              : 
     471              :          enable_adaptive_network, &
     472              :          min_x_for_keep, &
     473              :          min_x_for_n, &
     474              :          min_x_for_add, &
     475              :          max_Z_for_add, &
     476              :          max_N_for_add, &
     477              :          max_A_for_add, &
     478              : 
     479              :          save_model_number, &
     480              :          save_model_filename, &
     481              :          save_model_when_terminate, &
     482              :          required_termination_code_string, &
     483              :          profile_starting_model, &
     484              :          profile_model_number, &
     485              :          report_retries, &
     486              : 
     487              :          net_reaction_filename, &
     488              :          jina_reaclib_filename, &
     489              :          jina_reaclib_min_T9, &
     490              :          rate_tables_dir, &
     491              :          rate_cache_suffix, &
     492              :          read_extra_star_job_inlist, &
     493              :          extra_star_job_inlist_name, &
     494              :          set_abundance_nzlo, &
     495              :          set_abundance_nzhi, &
     496              :          set_abundance, &
     497              :          set_initial_abundance, &
     498              :          chem_name, &
     499              :          new_frac, &
     500              :          set_abundance_nzlo, set_abundance_nzhi, &
     501              :          replace_element, &
     502              :          replace_initial_element, &
     503              :          chem_name1, &
     504              :          chem_name2, &
     505              :          replace_element_nzlo, replace_element_nzhi, &
     506              :          do_special_test, &
     507              : 
     508              :          save_pulse_data_for_model_number, &
     509              :          save_pulse_data_when_terminate, &
     510              :          save_pulse_data_filename, &
     511              : 
     512              :          chem_isotopes_filename, &
     513              :          ionization_file_prefix, &
     514              :          ionization_Z1_suffix, &
     515              :          extras_lipar, &
     516              :          extras_lrpar, &
     517              :          extras_lcpar, &
     518              :          extras_llpar, &
     519              :          extras_ipar, &
     520              :          extras_rpar, &
     521              :          extras_cpar, &
     522              :          extras_lpar, &
     523              :          num_special_rate_factors, &
     524              :          special_rate_factor, &
     525              :          filename_of_special_rate, &
     526              :          reaction_for_special_factor,&
     527              :          warn_run_star_extras, &
     528              : 
     529              :          report_garbage_collection, &
     530              :          num_steps_for_garbage_collection
     531              : 
     532              :       contains
     533              : 
     534              : 
     535            1 :       subroutine do_read_star_job(s, filename, ierr)
     536              :          use star_private_def
     537              :          use utils_lib
     538              :          type (star_info), pointer :: s
     539              :          character(*), intent(in) :: filename
     540              :          integer, intent(out) :: ierr
     541              :          character (len=strlen) :: star_job_namelist_name
     542              :          star_job_namelist_name = ''
     543            1 :          ierr = 0
     544            1 :          call set_default_star_job_controls
     545            1 :          call read_star_job_file(s, filename, 1, ierr)
     546            1 :          call check_star_job_controls(s, ierr)
     547            1 :       end subroutine do_read_star_job
     548              : 
     549              : 
     550            1 :       recursive subroutine read_star_job_file(s, filename, level, ierr)
     551            1 :          use star_private_def
     552              :          use utils_lib
     553              :          character(*), intent(in) :: filename
     554              :          type (star_info), pointer :: s
     555              :          integer, intent(in) :: level
     556              :          integer, intent(out) :: ierr
     557              :          logical, dimension(max_extra_inlists) :: read_extra
     558              :          character (len=strlen), dimension(max_extra_inlists) :: extra
     559              :          integer :: unit, i
     560              : 
     561            1 :          ierr = 0
     562              : 
     563            1 :          if (level >= 10) then
     564            0 :             write(*,*) 'ERROR: too many levels of nested extra star_job inlist files'
     565            0 :             ierr = -1
     566            0 :             return
     567              :          end if
     568              : 
     569            1 :          if (len_trim(filename) > 0) then
     570            1 :             open(newunit=unit, file=trim(filename), action='read', delim='quote', status='old', iostat=ierr)
     571            1 :             if (ierr /= 0) then
     572            0 :                write(*, *) 'Failed to open control namelist file "'//trim(filename)//'"'
     573            0 :                return
     574              :             end if
     575            1 :             read(unit, nml=star_job, iostat=ierr)
     576            1 :             close(unit)
     577            1 :             if (ierr /= 0) then
     578            0 :                write(*, *)
     579            0 :                write(*, *)
     580            0 :                write(*, *)
     581            0 :                write(*, *)
     582              :                write(*, '(a)') &
     583            0 :                   'Failed while trying to read control namelist file: ' // trim(filename)
     584              :                write(*, '(a)') &
     585            0 :                   'Perhaps the following runtime error message will help you find the problem.'
     586            0 :                write(*, *)
     587            0 :                open(newunit=unit, file=trim(filename), action='read', delim='quote', status='old', iostat=ierr)
     588            0 :                read(unit, nml=star_job)
     589            0 :                close(unit)
     590            0 :                return
     591              :             end if
     592              :          end if
     593              : 
     594            1 :          call store_star_job_controls(s, ierr)
     595              : 
     596              :          ! recursive calls to read other inlists
     597            6 :          do i=1, max_extra_inlists
     598            5 :             read_extra(i) = read_extra_star_job_inlist(i)
     599            5 :             read_extra_star_job_inlist(i) = .false.
     600            5 :             extra(i) = extra_star_job_inlist_name(i)
     601            5 :             extra_star_job_inlist_name(i) = 'undefined'
     602              : 
     603            6 :             if (read_extra(i)) then
     604            0 :                call read_star_job_file(s, extra(i), level+1, ierr)
     605            0 :                if (ierr /= 0) return
     606              :             end if
     607              :          end do
     608              : 
     609              : 
     610            1 :       end subroutine read_star_job_file
     611              : 
     612              : 
     613            1 :       subroutine store_star_job_controls(s, ierr)
     614            1 :          use star_private_def
     615              :          type (star_info), pointer :: s
     616              :          integer, intent(out) :: ierr
     617              : 
     618            1 :          ierr = 0
     619              : 
     620            1 :          s% job% mesa_dir = mesa_dir
     621            1 :          s% job% eosDT_cache_dir = eosDT_cache_dir
     622            1 :          s% job% ionization_cache_dir = ionization_cache_dir
     623            1 :          s% job% kap_cache_dir = kap_cache_dir
     624            1 :          s% job% rates_cache_dir = rates_cache_dir
     625            1 :          s% job% pause_before_terminate = pause_before_terminate
     626            1 :          s% job% profile_columns_file = profile_columns_file
     627            1 :          s% job% history_columns_file = history_columns_file
     628            1 :          s% job% show_log_description_at_start = show_log_description_at_start
     629            1 :          s% job% list_net_reactions = list_net_reactions
     630            1 :          s% job% show_net_reactions_info = show_net_reactions_info
     631            1 :          s% job% show_net_species_info = show_net_species_info
     632            1 :          s% job% first_model_for_timing = first_model_for_timing
     633            1 :          s% job% steps_before_start_timing = steps_before_start_timing
     634            1 :          s% job% show_eqns_and_vars_names = show_eqns_and_vars_names
     635            1 :          s% job% pgstar_flag = pgstar_flag
     636            1 :          s% job% disable_pgstar_during_relax_flag = disable_pgstar_during_relax_flag
     637            1 :          s% job% clear_initial_pgstar_history = clear_initial_pgstar_history
     638            1 :          s% job% clear_pgstar_history = clear_pgstar_history
     639            1 :          s% job% save_pgstar_files_when_terminate = save_pgstar_files_when_terminate
     640            1 :          s% job% save_photo_when_terminate = save_photo_when_terminate
     641            1 :          s% job% load_saved_photo = load_saved_photo
     642            1 :          s% job% saved_photo_name = saved_photo_name
     643            1 :          s% job% save_photo_filename = save_photo_filename
     644            1 :          s% job% save_photo_number = save_photo_number
     645            1 :          s% job% write_profile_when_terminate = write_profile_when_terminate
     646            1 :          s% job% show_retry_counts_when_terminate = show_retry_counts_when_terminate
     647            1 :          s% job% show_timestep_limit_counts_when_terminate = show_timestep_limit_counts_when_terminate
     648            1 :          s% job% filename_for_profile_when_terminate = filename_for_profile_when_terminate
     649            1 :          s% job% create_pre_main_sequence_model = create_pre_main_sequence_model
     650            1 :          s% job% pre_ms_relax_to_start_radiative_core = pre_ms_relax_to_start_radiative_core
     651            1 :          s% job% pre_ms_relax_num_steps = pre_ms_relax_num_steps
     652            1 :          s% job% pre_ms_min_steps_before_check_radiative_core = pre_ms_min_steps_before_check_radiative_core
     653            1 :          s% job% pre_ms_check_radiative_core_start = pre_ms_check_radiative_core_start
     654            1 :          s% job% pre_ms_check_radiative_core_stop = pre_ms_check_radiative_core_stop
     655            1 :          s% job% pre_ms_check_radiative_core_Lnuc_div_L_limit = pre_ms_check_radiative_core_Lnuc_div_L_limit
     656            1 :          s% job% pre_ms_check_radiative_core_min_mass = pre_ms_check_radiative_core_min_mass
     657            1 :          s% job% pre_ms_T_c = pre_ms_T_c
     658            1 :          s% job% pre_ms_guess_rho_c = pre_ms_guess_rho_c
     659            1 :          s% job% pre_ms_d_log10_P = pre_ms_d_log10_P
     660            1 :          s% job% pre_ms_logT_surf_limit = pre_ms_logT_surf_limit
     661            1 :          s% job% pre_ms_logP_surf_limit = pre_ms_logP_surf_limit
     662            1 :          s% job% create_initial_model = create_initial_model
     663            1 :          s% job% initial_model_relax_num_steps = initial_model_relax_num_steps
     664            1 :          s% job% radius_in_cm_for_create_initial_model = radius_in_cm_for_create_initial_model
     665            1 :          s% job% mass_in_gm_for_create_initial_model = mass_in_gm_for_create_initial_model
     666              : 
     667            1 :          s% job% center_logP_1st_try_for_create_initial_model = center_logP_1st_try_for_create_initial_model
     668            1 :          s% job% entropy_1st_try_for_create_initial_model = entropy_1st_try_for_create_initial_model
     669            1 :          s% job% abs_e01_tolerance_for_create_initial_model = abs_e01_tolerance_for_create_initial_model
     670            1 :          s% job% abs_e02_tolerance_for_create_initial_model = abs_e02_tolerance_for_create_initial_model
     671            1 :          s% job% max_tries_for_create_initial_model = max_tries_for_create_initial_model
     672              : 
     673            1 :          s% job% initial_model_eps = initial_model_eps
     674            1 :          s% job% save_star_job_namelist = save_star_job_namelist
     675            1 :          s% job% star_job_namelist_name = star_job_namelist_name
     676            1 :          s% job% echo_at_start = echo_at_start
     677            1 :          s% job% echo_at_end = echo_at_end
     678            1 :          s% job% load_saved_model = load_saved_model
     679            1 :          s% job% load_model_filename = load_model_filename
     680            1 :          s% job% create_merger_model = create_merger_model
     681            1 :          s% job% saved_model_for_merger_1 = saved_model_for_merger_1
     682            1 :          s% job% saved_model_for_merger_2 = saved_model_for_merger_2
     683            1 :          s% job% set_max_dt_to_frac_lifetime = set_max_dt_to_frac_lifetime
     684            1 :          s% job% max_frac_of_lifetime_per_step = max_frac_of_lifetime_per_step
     685            1 :          s% job% astero_just_call_my_extras_check_model = astero_just_call_my_extras_check_model
     686            1 :          s% job% relax_mass = relax_mass
     687            1 :          s% job% relax_initial_mass = relax_initial_mass
     688            1 :          s% job% new_mass = new_mass
     689            1 :          s% job% lg_max_abs_mdot = lg_max_abs_mdot
     690            1 :          s% job% relax_mass_to_remove_H_env = relax_mass_to_remove_H_env
     691            1 :          s% job% relax_initial_mass_to_remove_H_env = relax_initial_mass_to_remove_H_env
     692            1 :          s% job% extra_mass_retained_by_remove_H_env = extra_mass_retained_by_remove_H_env
     693            1 :          s% job% relax_mass_scale = relax_mass_scale
     694            1 :          s% job% relax_initial_mass_scale = relax_initial_mass_scale
     695            1 :          s% job% dlgm_per_step = dlgm_per_step
     696              : 
     697            1 :          s% job% relax_M_center_dt = relax_M_center_dt
     698            1 :          s% job% change_mass_years_for_dt = change_mass_years_for_dt
     699            1 :          s% job% relax_M_center = relax_M_center
     700            1 :          s% job% relax_initial_M_center = relax_initial_M_center
     701            1 :          s% job% relax_core = relax_core
     702            1 :          s% job% relax_initial_core = relax_initial_core
     703            1 :          s% job% new_core_mass = new_core_mass
     704            1 :          s% job% dlg_core_mass_per_step = dlg_core_mass_per_step
     705            1 :          s% job% relax_core_years_for_dt = relax_core_years_for_dt
     706            1 :          s% job% core_avg_rho = core_avg_rho
     707            1 :          s% job% core_avg_eps = core_avg_eps
     708              : 
     709            1 :          s% job% relax_R_center = relax_R_center
     710            1 :          s% job% relax_initial_R_center = relax_initial_R_center
     711            1 :          s% job% new_R_center = new_R_center
     712            1 :          s% job% dlgR_per_step = dlgR_per_step
     713            1 :          s% job% relax_R_center_dt = relax_R_center_dt
     714              : 
     715            1 :          s% job% set_v_center = set_v_center
     716            1 :          s% job% set_initial_v_center = set_initial_v_center
     717              : 
     718            1 :          s% job% relax_v_center = relax_v_center
     719            1 :          s% job% relax_initial_v_center = relax_initial_v_center
     720            1 :          s% job% new_v_center = new_v_center
     721            1 :          s% job% dv_per_step = dv_per_step
     722            1 :          s% job% relax_v_center_dt = relax_v_center_dt
     723              : 
     724            1 :          s% job% zero_alpha_RTI = zero_alpha_RTI
     725            1 :          s% job% zero_initial_alpha_RTI = zero_initial_alpha_RTI
     726              : 
     727            1 :          s% job% set_L_center = set_L_center
     728            1 :          s% job% set_initial_L_center = set_initial_L_center
     729            1 :          s% job% relax_L_center = relax_L_center
     730            1 :          s% job% relax_initial_L_center = relax_initial_L_center
     731            1 :          s% job% new_L_center = new_L_center
     732            1 :          s% job% dlgL_per_step = dlgL_per_step
     733            1 :          s% job% relax_L_center_dt = relax_L_center_dt
     734              : 
     735            1 :          s% job% remove_initial_center_at_cell_k = remove_initial_center_at_cell_k
     736            1 :          s% job% remove_initial_center_by_temperature = remove_initial_center_by_temperature
     737            1 :          s% job% remove_initial_center_by_mass_fraction_q = remove_initial_center_by_mass_fraction_q
     738            1 :          s% job% remove_initial_center_by_mass_gm = remove_initial_center_by_mass_gm
     739            1 :          s% job% remove_initial_center_by_delta_mass_Msun = remove_initial_center_by_delta_mass_Msun
     740            1 :          s% job% remove_initial_center_by_delta_mass_gm = remove_initial_center_by_delta_mass_gm
     741            1 :          s% job% remove_initial_center_by_mass_Msun = remove_initial_center_by_mass_Msun
     742            1 :          s% job% remove_initial_center_by_radius_cm = remove_initial_center_by_radius_cm
     743            1 :          s% job% remove_initial_center_by_radius_Rsun = remove_initial_center_by_radius_Rsun
     744            1 :          s% job% remove_initial_center_by_he4 = remove_initial_center_by_he4
     745            1 :          s% job% remove_initial_center_by_c12_o16 = remove_initial_center_by_c12_o16
     746            1 :          s% job% remove_initial_center_by_si28 = remove_initial_center_by_si28
     747            1 :          s% job% remove_initial_center_to_reduce_co56_ni56 = remove_initial_center_to_reduce_co56_ni56
     748            1 :          s% job% remove_initial_center_by_ye = remove_initial_center_by_ye
     749            1 :          s% job% remove_initial_center_by_entropy = remove_initial_center_by_entropy
     750            1 :          s% job% remove_initial_center_by_infall_kms = remove_initial_center_by_infall_kms
     751            1 :          s% job% remove_initial_center_at_inner_max_abs_v = remove_initial_center_at_inner_max_abs_v
     752            1 :          s% job% remove_initial_fe_core = remove_initial_fe_core
     753              : 
     754            1 :          s% job% remove_center_at_cell_k = remove_center_at_cell_k
     755            1 :          s% job% remove_center_by_temperature = remove_center_by_temperature
     756            1 :          s% job% remove_center_by_mass_fraction_q = remove_center_by_mass_fraction_q
     757            1 :          s% job% remove_center_by_delta_mass_gm = remove_center_by_delta_mass_gm
     758            1 :          s% job% remove_center_by_delta_mass_Msun = remove_center_by_delta_mass_Msun
     759            1 :          s% job% remove_center_by_mass_gm = remove_center_by_mass_gm
     760            1 :          s% job% remove_center_by_mass_Msun = remove_center_by_mass_Msun
     761            1 :          s% job% remove_center_by_radius_cm = remove_center_by_radius_cm
     762            1 :          s% job% remove_center_by_radius_Rsun = remove_center_by_radius_Rsun
     763            1 :          s% job% remove_center_by_he4 = remove_center_by_he4
     764            1 :          s% job% remove_center_by_c12_o16 = remove_center_by_c12_o16
     765            1 :          s% job% remove_center_by_si28 = remove_center_by_si28
     766            1 :          s% job% remove_center_to_reduce_co56_ni56 = remove_center_to_reduce_co56_ni56
     767            1 :          s% job% remove_center_by_ye = remove_center_by_ye
     768            1 :          s% job% remove_center_by_entropy = remove_center_by_entropy
     769            1 :          s% job% remove_center_by_infall_kms = remove_center_by_infall_kms
     770            1 :          s% job% remove_center_at_inner_max_abs_v = remove_center_at_inner_max_abs_v
     771            1 :          s% job% remove_fe_core = remove_fe_core
     772            1 :          s% job% remove_fallback_at_each_step = remove_fallback_at_each_step
     773            1 :          s% job% fallback_check_total_energy = fallback_check_total_energy
     774            1 :          s% job% remove_fallback_speed_limit = remove_fallback_speed_limit
     775            1 :          s% job% remove_center_set_zero_v_center = remove_center_set_zero_v_center
     776            1 :          s% job% limit_center_logP_at_each_step = limit_center_logP_at_each_step
     777            1 :          s% job% remove_center_adjust_L_center = remove_center_adjust_L_center
     778            1 :          s% job% remove_center_logRho_limit = remove_center_logRho_limit
     779              : 
     780            1 :          s% job% zero_initial_inner_v_by_mass_Msun = zero_initial_inner_v_by_mass_Msun
     781            1 :          s% job% zero_inner_v_by_mass_Msun = zero_inner_v_by_mass_Msun
     782              : 
     783            1 :          s% job% remove_initial_surface_at_cell_k = remove_initial_surface_at_cell_k
     784            1 :          s% job% remove_initial_surface_at_he_core_boundary = remove_initial_surface_at_he_core_boundary
     785            1 :          s% job% remove_initial_surface_by_optical_depth = remove_initial_surface_by_optical_depth
     786            1 :          s% job% remove_initial_surface_by_density = remove_initial_surface_by_density
     787            1 :          s% job% remove_initial_surface_by_pressure = remove_initial_surface_by_pressure
     788            1 :          s% job% remove_initial_surface_by_mass_fraction_q = remove_initial_surface_by_mass_fraction_q
     789            1 :          s% job% remove_initial_surface_by_mass_gm = remove_initial_surface_by_mass_gm
     790            1 :          s% job% remove_initial_surface_by_radius_cm = remove_initial_surface_by_radius_cm
     791            1 :          s% job% remove_initial_surface_by_mass_Msun = remove_initial_surface_by_mass_Msun
     792            1 :          s% job% remove_initial_surface_by_radius_Rsun = remove_initial_surface_by_radius_Rsun
     793            1 :          s% job% remove_initial_surface_by_v_surf_km_s = remove_initial_surface_by_v_surf_km_s
     794            1 :          s% job% remove_initial_surface_by_v_surf_div_cs = remove_initial_surface_by_v_surf_div_cs
     795            1 :          s% job% remove_initial_surface_by_v_surf_div_v_escape = remove_initial_surface_by_v_surf_div_v_escape
     796              : 
     797            1 :          s% job% remove_surface_at_cell_k = remove_surface_at_cell_k
     798            1 :          s% job% remove_surface_at_he_core_boundary = remove_surface_at_he_core_boundary
     799            1 :          s% job% remove_surface_by_optical_depth = remove_surface_by_optical_depth
     800            1 :          s% job% remove_surface_by_density = remove_surface_by_density
     801            1 :          s% job% remove_surface_by_pressure = remove_surface_by_pressure
     802            1 :          s% job% remove_surface_by_mass_fraction_q = remove_surface_by_mass_fraction_q
     803            1 :          s% job% remove_surface_by_mass_gm = remove_surface_by_mass_gm
     804            1 :          s% job% remove_surface_by_radius_cm = remove_surface_by_radius_cm
     805            1 :          s% job% remove_surface_by_mass_Msun = remove_surface_by_mass_Msun
     806            1 :          s% job% remove_surface_by_radius_Rsun = remove_surface_by_radius_Rsun
     807            1 :          s% job% remove_surface_by_v_surf_km_s = remove_surface_by_v_surf_km_s
     808            1 :          s% job% remove_surface_by_v_surf_div_cs = remove_surface_by_v_surf_div_cs
     809            1 :          s% job% remove_surface_by_v_surf_div_v_escape = remove_surface_by_v_surf_div_v_escape
     810            1 :          s% job% min_q_for_remove_surface_by_v_surf_div_v_escape = min_q_for_remove_surface_by_v_surf_div_v_escape
     811            1 :          s% job% max_q_for_remove_surface_by_v_surf_div_v_escape = max_q_for_remove_surface_by_v_surf_div_v_escape
     812              : 
     813            1 :          s% job% remove_surface_do_jrot = remove_surface_do_jrot
     814            1 :          s% job% remove_surface_do_entropy = remove_surface_do_entropy
     815            1 :          s% job% remove_surface_turn_off_energy_sources_and_sinks = remove_surface_turn_off_energy_sources_and_sinks
     816            1 :          s% job% remove_surface_by_relax_to_star_cut = remove_surface_by_relax_to_star_cut
     817              : 
     818            1 :          s% job% report_mass_not_fe56 = report_mass_not_fe56
     819            1 :          s% job% relax_dxdt_nuc_factor = relax_dxdt_nuc_factor
     820            1 :          s% job% relax_initial_dxdt_nuc_factor = relax_initial_dxdt_nuc_factor
     821            1 :          s% job% new_dxdt_nuc_factor = new_dxdt_nuc_factor
     822            1 :          s% job% dxdt_nuc_factor_multiplier = dxdt_nuc_factor_multiplier
     823            1 :          s% job% relax_eps_nuc_factor = relax_eps_nuc_factor
     824            1 :          s% job% relax_initial_eps_nuc_factor = relax_initial_eps_nuc_factor
     825            1 :          s% job% new_eps_nuc_factor = new_eps_nuc_factor
     826            1 :          s% job% eps_nuc_factor_multiplier = eps_nuc_factor_multiplier
     827            1 :          s% job% relax_opacity_max = relax_opacity_max
     828            1 :          s% job% relax_initial_opacity_max = relax_initial_opacity_max
     829            1 :          s% job% new_opacity_max = new_opacity_max
     830            1 :          s% job% opacity_max_multiplier = opacity_max_multiplier
     831            1 :          s% job% relax_max_surf_dq = relax_max_surf_dq
     832            1 :          s% job% relax_initial_max_surf_dq = relax_initial_max_surf_dq
     833            1 :          s% job% new_max_surf_dq = new_max_surf_dq
     834            1 :          s% job% max_surf_dq_multiplier = max_surf_dq_multiplier
     835              : 
     836            1 :          s% job% relax_tau_factor = relax_tau_factor
     837            1 :          s% job% relax_initial_tau_factor = relax_initial_tau_factor
     838            1 :          s% job% set_tau_factor = set_tau_factor
     839            1 :          s% job% set_initial_tau_factor = set_initial_tau_factor
     840            1 :          s% job% relax_to_this_tau_factor = relax_to_this_tau_factor
     841            1 :          s% job% set_to_this_tau_factor = set_to_this_tau_factor
     842            1 :          s% job% dlogtau_factor = dlogtau_factor
     843            1 :          s% job% set_tau_factor_after_core_He_burn = set_tau_factor_after_core_He_burn
     844            1 :          s% job% set_tau_factor_after_core_C_burn = set_tau_factor_after_core_C_burn
     845            1 :          s% job% relax_tau_factor_after_core_He_burn = relax_tau_factor_after_core_He_burn
     846            1 :          s% job% relax_tau_factor_after_core_C_burn = relax_tau_factor_after_core_C_burn
     847              : 
     848            1 :          s% job% adjust_tau_factor_to_surf_density = adjust_tau_factor_to_surf_density
     849            1 :          s% job% base_for_adjust_tau_factor_to_surf_density = base_for_adjust_tau_factor_to_surf_density
     850              : 
     851            1 :          s% job% relax_to_this_opacity_factor = relax_to_this_opacity_factor
     852            1 :          s% job% d_opacity_factor = d_opacity_factor
     853            1 :          s% job% relax_opacity_factor = relax_opacity_factor
     854            1 :          s% job% relax_initial_opacity_factor = relax_initial_opacity_factor
     855              : 
     856            1 :          s% job% relax_Tsurf_factor = relax_Tsurf_factor
     857            1 :          s% job% relax_initial_Tsurf_factor = relax_initial_Tsurf_factor
     858            1 :          s% job% set_Tsurf_factor = set_Tsurf_factor
     859            1 :          s% job% set_initial_Tsurf_factor = set_initial_Tsurf_factor
     860            1 :          s% job% relax_to_this_Tsurf_factor = relax_to_this_Tsurf_factor
     861            1 :          s% job% set_to_this_Tsurf_factor = set_to_this_Tsurf_factor
     862            1 :          s% job% dlogTsurf_factor = dlogTsurf_factor
     863              : 
     864            1 :          s% job% relax_irradiation = relax_irradiation
     865            1 :          s% job% relax_initial_irradiation = relax_initial_irradiation
     866            1 :          s% job% set_irradiation = set_irradiation
     867            1 :          s% job% set_initial_irradiation = set_initial_irradiation
     868            1 :          s% job% relax_irradiation_min_steps = relax_irradiation_min_steps
     869            1 :          s% job% relax_to_this_irrad_flux = relax_to_this_irrad_flux
     870            1 :          s% job% set_to_this_irrad_flux = set_to_this_irrad_flux
     871            1 :          s% job% irrad_col_depth = irrad_col_depth
     872            1 :          s% job% relax_irradiation_max_yrs_dt = relax_irradiation_max_yrs_dt
     873            1 :          s% job% relax_mass_change = relax_mass_change
     874            1 :          s% job% relax_initial_mass_change = relax_initial_mass_change
     875            1 :          s% job% relax_mass_change_min_steps = relax_mass_change_min_steps
     876            1 :          s% job% relax_mass_change_max_yrs_dt = relax_mass_change_max_yrs_dt
     877            1 :          s% job% relax_mass_change_init_mdot = relax_mass_change_init_mdot
     878            1 :          s% job% relax_mass_change_final_mdot = relax_mass_change_final_mdot
     879            1 :          s% job% change_RTI_flag = change_RTI_flag
     880            1 :          s% job% change_initial_RTI_flag = change_initial_RTI_flag
     881            1 :          s% job% new_RTI_flag = new_RTI_flag
     882            1 :          s% job% change_RSP_flag = change_RSP_flag
     883            1 :          s% job% change_initial_RSP_flag = change_initial_RSP_flag
     884            1 :          s% job% new_RSP_flag = new_RSP_flag
     885            1 :          s% job% change_RSP2_flag = change_RSP2_flag
     886            1 :          s% job% change_initial_RSP2_flag = change_initial_RSP2_flag
     887            1 :          s% job% change_RSP2_flag_at_model_number = change_RSP2_flag_at_model_number
     888            1 :          s% job% new_RSP2_flag = new_RSP2_flag
     889            1 :          s% job% create_RSP2_model = create_RSP2_model
     890            1 :          s% job% change_w_div_wc_flag = change_w_div_wc_flag
     891            1 :          s% job% change_initial_w_div_wc_flag = change_initial_w_div_wc_flag
     892            1 :          s% job% new_w_div_wc_flag = new_w_div_wc_flag
     893            1 :          s% job% change_j_rot_flag = change_j_rot_flag
     894            1 :          s% job% change_initial_j_rot_flag = change_initial_j_rot_flag
     895            1 :          s% job% new_j_rot_flag = new_j_rot_flag
     896              : 
     897            1 :          s% job% create_RSP_model = create_RSP_model
     898              : 
     899            1 :          s% job% change_v_flag = change_v_flag
     900            1 :          s% job% change_initial_v_flag = change_initial_v_flag
     901            1 :          s% job% new_v_flag = new_v_flag
     902            1 :          s% job% change_D_omega_flag = change_D_omega_flag
     903            1 :          s% job% change_initial_D_omega_flag = change_initial_D_omega_flag
     904            1 :          s% job% new_D_omega_flag = new_D_omega_flag
     905            1 :          s% job% change_am_nu_rot_flag = change_am_nu_rot_flag
     906            1 :          s% job% change_initial_am_nu_rot_flag = change_initial_am_nu_rot_flag
     907            1 :          s% job% new_am_nu_rot_flag = new_am_nu_rot_flag
     908            1 :          s% job% use_D_omega_for_am_nu_rot = use_D_omega_for_am_nu_rot
     909              : 
     910            1 :          s% job% change_u_flag = change_u_flag
     911            1 :          s% job% change_initial_u_flag = change_initial_u_flag
     912            1 :          s% job% new_u_flag = new_u_flag
     913              : 
     914            1 :          s% job% change_reconstruction_flag = change_reconstruction_flag
     915            1 :          s% job% change_initial_reconstruction_flag = change_initial_reconstruction_flag
     916            1 :          s% job% new_reconstruction_flag = new_reconstruction_flag
     917              : 
     918            1 :          s% job% center_ye_limit_for_v_flag = center_ye_limit_for_v_flag
     919            1 :          s% job% change_rotation_flag = change_rotation_flag
     920            1 :          s% job% change_initial_rotation_flag = change_initial_rotation_flag
     921            1 :          s% job% new_rotation_flag = new_rotation_flag
     922            1 :          s% job% use_w_div_wc_flag_with_rotation = use_w_div_wc_flag_with_rotation
     923            1 :          s% job% use_j_rot_flag_with_rotation = use_j_rot_flag_with_rotation
     924            1 :          s% job% set_omega = set_omega
     925            1 :          s% job% set_initial_omega = set_initial_omega
     926            1 :          s% job% set_omega_step_limit = set_omega_step_limit
     927            1 :          s% job% set_near_zams_omega_steps = set_near_zams_omega_steps
     928            1 :          s% job% new_omega = new_omega
     929            1 :          s% job% set_omega_div_omega_crit = set_omega_div_omega_crit
     930            1 :          s% job% set_initial_omega_div_omega_crit = set_initial_omega_div_omega_crit
     931            1 :          s% job% set_omega_div_omega_crit_step_limit = set_omega_div_omega_crit_step_limit
     932            1 :          s% job% set_near_zams_omega_div_omega_crit_steps = set_near_zams_omega_div_omega_crit_steps
     933            1 :          s% job% new_omega_div_omega_crit = new_omega_div_omega_crit
     934            1 :          s% job% set_surface_rotation_v = set_surface_rotation_v
     935            1 :          s% job% set_initial_surface_rotation_v = set_initial_surface_rotation_v
     936            1 :          s% job% set_surf_rotation_v_step_limit = set_surf_rotation_v_step_limit
     937            1 :          s% job% set_near_zams_surface_rotation_v_steps = set_near_zams_surface_rotation_v_steps
     938            1 :          s% job% new_surface_rotation_v = new_surface_rotation_v
     939            1 :          s% job% relax_omega = relax_omega
     940            1 :          s% job% relax_initial_omega = relax_initial_omega
     941            1 :          s% job% near_zams_relax_omega = near_zams_relax_omega
     942            1 :          s% job% relax_omega_div_omega_crit = relax_omega_div_omega_crit
     943            1 :          s% job% relax_initial_omega_div_omega_crit = relax_initial_omega_div_omega_crit
     944            1 :          s% job% near_zams_relax_omega_div_omega_crit = near_zams_relax_omega_div_omega_crit
     945            1 :          s% job% relax_surface_rotation_v = relax_surface_rotation_v
     946            1 :          s% job% relax_initial_surface_rotation_v = relax_initial_surface_rotation_v
     947            1 :          s% job% near_zams_relax_initial_surface_rotation_v = near_zams_relax_initial_surface_rotation_v
     948            1 :          s% job% num_steps_to_relax_rotation = num_steps_to_relax_rotation
     949            1 :          s% job% relax_omega_max_yrs_dt = relax_omega_max_yrs_dt
     950            1 :          s% job% set_uniform_initial_composition = set_uniform_initial_composition
     951            1 :          s% job% initial_h1 = initial_h1
     952            1 :          s% job% initial_h2 = initial_h2
     953            1 :          s% job% initial_he3 = initial_he3
     954            1 :          s% job% initial_he4 = initial_he4
     955            1 :          s% job% initial_zfracs = initial_zfracs
     956            1 :          s% job% dump_missing_metals_into_heaviest = dump_missing_metals_into_heaviest
     957            1 :          s% job% relax_initial_composition = relax_initial_composition
     958            1 :          s% job% relax_initial_to_xaccrete = relax_initial_to_xaccrete
     959            1 :          s% job% relax_composition_filename = relax_composition_filename
     960            1 :          s% job% num_steps_to_relax_composition = num_steps_to_relax_composition
     961            1 :          s% job% timescale_for_relax_composition = timescale_for_relax_composition
     962            1 :          s% job% relax_initial_angular_momentum = relax_initial_angular_momentum
     963            1 :          s% job% max_steps_to_relax_angular_momentum = max_steps_to_relax_angular_momentum
     964            1 :          s% job% timescale_for_relax_angular_momentum = timescale_for_relax_angular_momentum
     965            1 :          s% job% max_dt_for_relax_angular_momentum = max_dt_for_relax_angular_momentum
     966            1 :          s% job% num_timescales_for_relax_angular_momentum = num_timescales_for_relax_angular_momentum
     967            1 :          s% job% relax_angular_momentum_filename = relax_angular_momentum_filename
     968            1 :          s% job% relax_angular_momentum_constant_omega_center = relax_angular_momentum_constant_omega_center
     969            1 :          s% job% relax_initial_entropy = relax_initial_entropy
     970            1 :          s% job% max_steps_to_relax_entropy = max_steps_to_relax_entropy
     971            1 :          s% job% timescale_for_relax_entropy = timescale_for_relax_entropy
     972            1 :          s% job% max_dt_for_relax_entropy = max_dt_for_relax_entropy
     973            1 :          s% job% num_timescales_for_relax_entropy = num_timescales_for_relax_entropy
     974            1 :          s% job% relax_entropy_filename = relax_entropy_filename
     975            1 :          s% job% get_entropy_for_relax_from_eos = get_entropy_for_relax_from_eos
     976            1 :          s% job% report_cell_for_xm = report_cell_for_xm
     977            1 :          s% job% set_to_xa_for_accretion = set_to_xa_for_accretion
     978            1 :          s% job% set_initial_to_xa_for_accretion = set_initial_to_xa_for_accretion
     979            1 :          s% job% set_nzlo = set_nzlo
     980            1 :          s% job% set_nzhi = set_nzhi
     981            1 :          s% job% change_Y = change_Y
     982            1 :          s% job% change_initial_Y = change_initial_Y
     983            1 :          s% job% relax_Y = relax_Y
     984            1 :          s% job% relax_initial_Y = relax_initial_Y
     985            1 :          s% job% relax_Y_minq = relax_Y_minq
     986            1 :          s% job% relax_Y_maxq = relax_Y_maxq
     987            1 :          s% job% new_Y = new_Y
     988            1 :          s% job% change_Z = change_Z
     989            1 :          s% job% change_initial_Z = change_initial_Z
     990            1 :          s% job% relax_Z = relax_Z
     991            1 :          s% job% relax_initial_Z = relax_initial_Z
     992            1 :          s% job% relax_Z_minq = relax_Z_minq
     993            1 :          s% job% relax_Z_maxq = relax_Z_maxq
     994            1 :          s% job% new_Z = new_Z
     995            1 :          s% job% steps_to_take_before_terminate = steps_to_take_before_terminate
     996            1 :          s% job% stop_if_this_file_exists = stop_if_this_file_exists
     997            1 :          s% job% set_initial_age = set_initial_age
     998            1 :          s% job% initial_age = initial_age
     999            1 :          s% job% set_initial_model_number = set_initial_model_number
    1000            1 :          s% job% initial_model_number = initial_model_number
    1001            1 :          s% job% set_initial_number_retries = set_initial_number_retries
    1002            1 :          s% job% initial_number_retries = initial_number_retries
    1003            1 :          s% job% set_initial_dt = set_initial_dt
    1004            1 :          s% job% limit_initial_dt = limit_initial_dt
    1005            1 :          s% job% years_for_initial_dt = years_for_initial_dt
    1006            1 :          s% job% seconds_for_initial_dt = seconds_for_initial_dt
    1007              : 
    1008            1 :          s% job% set_initial_cumulative_energy_error = set_initial_cumulative_energy_error
    1009            1 :          s% job% set_cumulative_energy_error = set_cumulative_energy_error
    1010            1 :          s% job% set_cumulative_energy_error_at_step = set_cumulative_energy_error_at_step
    1011            1 :          s% job% set_cumulative_energy_error_each_step_if_age_less_than = set_cumulative_energy_error_each_step_if_age_less_than
    1012            1 :          s% job% new_cumulative_energy_error = new_cumulative_energy_error
    1013            1 :          s% job% set_cumulative_energy_error_each_relax = set_cumulative_energy_error_each_relax
    1014              : 
    1015            1 :          s% job% change_net = change_net
    1016            1 :          s% job% change_initial_net = change_initial_net
    1017            1 :          s% job% new_net_name = new_net_name
    1018            1 :          s% job% change_small_net = change_small_net
    1019            1 :          s% job% change_initial_small_net = change_initial_small_net
    1020            1 :          s% job% new_small_net_name = new_small_net_name
    1021              : 
    1022            1 :          s% job% h_he_net = h_he_net
    1023            1 :          s% job% co_net = co_net
    1024            1 :          s% job% adv_net = adv_net
    1025            1 :          s% job% adjust_abundances_for_new_isos = adjust_abundances_for_new_isos
    1026            1 :          s% job% set_uniform_xa_from_file = set_uniform_xa_from_file
    1027            1 :          s% job% set_uniform_initial_xa_from_file = set_uniform_initial_xa_from_file
    1028            1 :          s% job% file_for_uniform_xa = file_for_uniform_xa
    1029              : 
    1030            1 :          s% job% mix_section = mix_section
    1031            1 :          s% job% mix_initial_section = mix_initial_section
    1032            1 :          s% job% mix_section_nzlo = mix_section_nzlo
    1033            1 :          s% job% mix_section_nzhi = mix_section_nzhi
    1034              : 
    1035            1 :          s% job% T9_weaklib_full_off = T9_weaklib_full_off
    1036            1 :          s% job% T9_weaklib_full_on = T9_weaklib_full_on
    1037            1 :          s% job% weaklib_blend_hi_Z = weaklib_blend_hi_Z
    1038            1 :          s% job% T9_weaklib_full_off_hi_Z = T9_weaklib_full_off_hi_Z
    1039            1 :          s% job% T9_weaklib_full_on_hi_Z = T9_weaklib_full_on_hi_Z
    1040              : 
    1041            1 :          s% job% use_suzuki_weak_rates = use_suzuki_weak_rates
    1042            1 :          s% job% use_3a_fl87 = use_3a_fl87
    1043              : 
    1044            1 :          s% job% use_special_weak_rates = use_special_weak_rates
    1045            1 :          s% job% special_weak_states_file = special_weak_states_file
    1046            1 :          s% job% special_weak_transitions_file = special_weak_transitions_file
    1047            1 :          s% job% ion_coulomb_corrections = ion_coulomb_corrections
    1048            1 :          s% job% electron_coulomb_corrections = electron_coulomb_corrections
    1049              : 
    1050            1 :          s% job% mix_envelope_down_to_T = mix_envelope_down_to_T
    1051            1 :          s% job% mix_initial_envelope_down_to_T = mix_initial_envelope_down_to_T
    1052            1 :          s% job% auto_extend_net = auto_extend_net
    1053              : 
    1054            1 :          s% job% enable_adaptive_network = enable_adaptive_network
    1055            1 :          s% job% min_x_for_keep = min_x_for_keep
    1056            1 :          s% job% min_x_for_n = min_x_for_n
    1057            1 :          s% job% min_x_for_add = min_x_for_add
    1058            1 :          s% job% max_Z_for_add = max_Z_for_add
    1059            1 :          s% job% max_N_for_add = max_N_for_add
    1060            1 :          s% job% max_A_for_add = max_A_for_add
    1061              : 
    1062            1 :          s% job% save_model_number = save_model_number
    1063            1 :          s% job% save_model_filename = save_model_filename
    1064            1 :          s% job% save_model_when_terminate = save_model_when_terminate
    1065           10 :          s% job% required_termination_code_string = required_termination_code_string
    1066            1 :          s% job% profile_starting_model = profile_starting_model
    1067            1 :          s% job% profile_model_number = profile_model_number
    1068            1 :          s% job% report_retries = report_retries
    1069              : 
    1070            1 :          s% job% net_reaction_filename = net_reaction_filename
    1071            1 :          s% job% jina_reaclib_filename = jina_reaclib_filename
    1072            1 :          s% job% jina_reaclib_min_T9 = jina_reaclib_min_T9
    1073            1 :          s% job% rate_tables_dir = rate_tables_dir
    1074            1 :          s% job% rate_cache_suffix = rate_cache_suffix
    1075            6 :          s% job% read_extra_star_job_inlist = read_extra_star_job_inlist
    1076            6 :          s% job% extra_star_job_inlist_name = extra_star_job_inlist_name
    1077            1 :          s% job% set_abundance_nzlo = set_abundance_nzlo
    1078            1 :          s% job% set_abundance_nzhi = set_abundance_nzhi
    1079            1 :          s% job% set_abundance = set_abundance
    1080            1 :          s% job% set_initial_abundance = set_initial_abundance
    1081            1 :          s% job% chem_name = chem_name
    1082            1 :          s% job% new_frac = new_frac
    1083            1 :          s% job% set_abundance_nzlo = set_abundance_nzlo
    1084            1 :          s% job% set_abundance_nzhi = set_abundance_nzhi
    1085            1 :          s% job% replace_element = replace_element
    1086            1 :          s% job% replace_initial_element = replace_initial_element
    1087            1 :          s% job% chem_name1 = chem_name1
    1088            1 :          s% job% chem_name2 = chem_name2
    1089            1 :          s% job% replace_element_nzlo = replace_element_nzlo
    1090            1 :          s% job% replace_element_nzhi = replace_element_nzhi
    1091            1 :          s% job% do_special_test = do_special_test
    1092              : 
    1093            1 :          s% job% save_pulse_data_for_model_number = save_pulse_data_for_model_number
    1094            1 :          s% job% save_pulse_data_when_terminate = save_pulse_data_when_terminate
    1095            1 :          s% job% save_pulse_data_filename = save_pulse_data_filename
    1096              : 
    1097            1 :          s% job% chem_isotopes_filename = chem_isotopes_filename
    1098            1 :          s% job% ionization_file_prefix = ionization_file_prefix
    1099            1 :          s% job% ionization_Z1_suffix = ionization_Z1_suffix
    1100            1 :          s% job% extras_lipar = extras_lipar
    1101            1 :          s% job% extras_lrpar = extras_lrpar
    1102            1 :          s% job% extras_lcpar = extras_lcpar
    1103            1 :          s% job% extras_llpar = extras_llpar
    1104           21 :          s% job% extras_ipar = extras_ipar
    1105           21 :          s% job% extras_rpar = extras_rpar
    1106           21 :          s% job% extras_cpar = extras_cpar
    1107           21 :          s% job% extras_lpar = extras_lpar
    1108            1 :          s% job% num_special_rate_factors = num_special_rate_factors
    1109          501 :          s% job% special_rate_factor = special_rate_factor
    1110          501 :          s% job% filename_of_special_rate = filename_of_special_rate
    1111          501 :          s% job% reaction_for_special_factor = reaction_for_special_factor
    1112              : 
    1113            1 :          s% job% warn_run_star_extras = warn_run_star_extras
    1114            1 :          s% job% report_garbage_collection = report_garbage_collection
    1115            1 :          s% job% num_steps_for_garbage_collection = num_steps_for_garbage_collection
    1116              : 
    1117            1 :       end subroutine store_star_job_controls
    1118              : 
    1119              : 
    1120            1 :       subroutine set_default_star_job_controls
    1121           10 :          required_termination_code_string(:) = ''
    1122            1 :          extras_ipar(:) = 0
    1123            1 :          extras_rpar(:) = 0
    1124           21 :          extras_cpar(:) = ''
    1125            1 :          extras_lpar(:) = .false.
    1126          501 :          special_rate_factor(:) = 1d0
    1127          501 :          filename_of_special_rate(:) = ''
    1128          501 :          reaction_for_special_factor(:) = ''
    1129              :          include 'star_job.defaults'
    1130              :          include 'star_job_dev.defaults'
    1131            1 :       end subroutine set_default_star_job_controls
    1132              : 
    1133              : 
    1134            1 :       subroutine check_star_job_controls(s, ierr)
    1135              :          type (star_info), pointer :: s
    1136              :          integer, intent(out) :: ierr
    1137              : 
    1138            1 :          ierr = 0
    1139              : 
    1140            1 :          if (s% job% write_profile_when_terminate) then
    1141            0 :             if (len_trim(s% job% filename_for_profile_when_terminate) == 0) then
    1142            0 :                write(*,*) "when write_profile_when_terminate = .true.,"
    1143            0 :                write(*,*) "filename_for_profile_when_terminate must be non empty"
    1144            0 :                ierr = -1
    1145            0 :                return
    1146              :             end if
    1147              :          end if
    1148              : 
    1149            1 :          if (s% job% save_model_when_terminate) then
    1150            0 :             if (len_trim(s% job% save_model_filename) == 0) then
    1151            0 :                write(*,*) "when save_model_when_terminate = .true.,"
    1152            0 :                write(*,*) "filename_for_profile_when_terminate must be non empty"
    1153            0 :                ierr = -1
    1154            0 :                return
    1155              :             end if
    1156              :          end if
    1157              : 
    1158              :       end subroutine check_star_job_controls
    1159              : 
    1160              : 
    1161            0 :       subroutine set_star_job_controls_for_writing(s, ierr)
    1162              :          type (star_info), pointer :: s
    1163              :          integer, intent(out) :: ierr
    1164              : 
    1165            0 :          ierr = 0
    1166              : 
    1167            0 :          mesa_dir = s% job% mesa_dir
    1168            0 :          eosDT_cache_dir = s% job% eosDT_cache_dir
    1169            0 :          ionization_cache_dir = s% job% ionization_cache_dir
    1170            0 :          kap_cache_dir = s% job% kap_cache_dir
    1171            0 :          rates_cache_dir = s% job% rates_cache_dir
    1172            0 :          pause_before_terminate = s% job% pause_before_terminate
    1173            0 :          profile_columns_file = s% job% profile_columns_file
    1174            0 :          history_columns_file = s% job% history_columns_file
    1175            0 :          show_log_description_at_start = s% job% show_log_description_at_start
    1176            0 :          list_net_reactions = s% job% list_net_reactions
    1177            0 :          show_net_reactions_info = s% job% show_net_reactions_info
    1178            0 :          show_net_species_info = s% job% show_net_species_info
    1179            0 :          first_model_for_timing = s% job% first_model_for_timing
    1180            0 :          steps_before_start_timing = s% job% steps_before_start_timing
    1181            0 :          show_eqns_and_vars_names = s% job% show_eqns_and_vars_names
    1182            0 :          pgstar_flag = s% job% pgstar_flag
    1183            0 :          disable_pgstar_during_relax_flag = s% job% disable_pgstar_during_relax_flag
    1184            0 :          clear_initial_pgstar_history = s% job% clear_initial_pgstar_history
    1185            0 :          clear_pgstar_history = s% job% clear_pgstar_history
    1186            0 :          save_pgstar_files_when_terminate = s% job% save_pgstar_files_when_terminate
    1187            0 :          save_photo_when_terminate = s% job% save_photo_when_terminate
    1188            0 :          load_saved_photo = s% job% load_saved_photo
    1189            0 :          saved_photo_name = s% job% saved_photo_name
    1190            0 :          save_photo_filename = s% job% save_photo_filename
    1191            0 :          save_photo_number = s% job% save_photo_number
    1192            0 :          write_profile_when_terminate = s% job% write_profile_when_terminate
    1193            0 :          show_retry_counts_when_terminate = s% job% show_retry_counts_when_terminate
    1194            0 :          show_timestep_limit_counts_when_terminate = s% job% show_timestep_limit_counts_when_terminate
    1195            0 :          filename_for_profile_when_terminate = s% job% filename_for_profile_when_terminate
    1196            0 :          create_pre_main_sequence_model = s% job% create_pre_main_sequence_model
    1197            0 :          pre_ms_relax_to_start_radiative_core = s% job% pre_ms_relax_to_start_radiative_core
    1198            0 :          pre_ms_relax_num_steps = s% job% pre_ms_relax_num_steps
    1199            0 :          pre_ms_min_steps_before_check_radiative_core = s% job% pre_ms_min_steps_before_check_radiative_core
    1200            0 :          pre_ms_check_radiative_core_start = s% job% pre_ms_check_radiative_core_start
    1201            0 :          pre_ms_check_radiative_core_stop = s% job% pre_ms_check_radiative_core_stop
    1202            0 :          pre_ms_check_radiative_core_Lnuc_div_L_limit = s% job% pre_ms_check_radiative_core_Lnuc_div_L_limit
    1203            0 :          pre_ms_check_radiative_core_min_mass = s% job% pre_ms_check_radiative_core_min_mass
    1204            0 :          pre_ms_T_c = s% job% pre_ms_T_c
    1205            0 :          pre_ms_guess_rho_c = s% job% pre_ms_guess_rho_c
    1206            0 :          pre_ms_d_log10_P = s% job% pre_ms_d_log10_P
    1207            0 :          pre_ms_logT_surf_limit = s% job% pre_ms_logT_surf_limit
    1208            0 :          pre_ms_logP_surf_limit = s% job% pre_ms_logP_surf_limit
    1209            0 :          create_initial_model = s% job% create_initial_model
    1210            0 :          initial_model_relax_num_steps = s% job% initial_model_relax_num_steps
    1211            0 :          radius_in_cm_for_create_initial_model = s% job% radius_in_cm_for_create_initial_model
    1212            0 :          mass_in_gm_for_create_initial_model = s% job% mass_in_gm_for_create_initial_model
    1213              : 
    1214            0 :          center_logP_1st_try_for_create_initial_model = s% job% center_logP_1st_try_for_create_initial_model
    1215            0 :          entropy_1st_try_for_create_initial_model = s% job% entropy_1st_try_for_create_initial_model
    1216            0 :          abs_e01_tolerance_for_create_initial_model = s% job% abs_e01_tolerance_for_create_initial_model
    1217            0 :          abs_e02_tolerance_for_create_initial_model = s% job% abs_e02_tolerance_for_create_initial_model
    1218            0 :          max_tries_for_create_initial_model = s% job% max_tries_for_create_initial_model
    1219              : 
    1220            0 :          initial_model_eps = s% job% initial_model_eps
    1221            0 :          save_star_job_namelist = s% job% save_star_job_namelist
    1222            0 :          star_job_namelist_name = s% job% star_job_namelist_name
    1223            0 :          echo_at_start = s% job% echo_at_start
    1224            0 :          echo_at_end = s% job% echo_at_end
    1225            0 :          load_saved_model = s% job% load_saved_model
    1226            0 :          load_model_filename = s% job% load_model_filename
    1227            0 :          create_merger_model = s% job% create_merger_model
    1228            0 :          saved_model_for_merger_1 = s% job% saved_model_for_merger_1
    1229            0 :          saved_model_for_merger_2 = s% job% saved_model_for_merger_2
    1230            0 :          set_max_dt_to_frac_lifetime = s% job% set_max_dt_to_frac_lifetime
    1231            0 :          max_frac_of_lifetime_per_step = s% job% max_frac_of_lifetime_per_step
    1232            0 :          astero_just_call_my_extras_check_model = s% job% astero_just_call_my_extras_check_model
    1233            0 :          relax_mass = s% job% relax_mass
    1234            0 :          relax_initial_mass = s% job% relax_initial_mass
    1235            0 :          new_mass = s% job% new_mass
    1236            0 :          lg_max_abs_mdot = s% job% lg_max_abs_mdot
    1237            0 :          relax_mass_to_remove_H_env = s% job% relax_mass_to_remove_H_env
    1238            0 :          relax_initial_mass_to_remove_H_env = s% job% relax_initial_mass_to_remove_H_env
    1239            0 :          extra_mass_retained_by_remove_H_env = s% job% extra_mass_retained_by_remove_H_env
    1240            0 :          relax_mass_scale = s% job% relax_mass_scale
    1241            0 :          relax_initial_mass_scale = s% job% relax_initial_mass_scale
    1242            0 :          dlgm_per_step = s% job% dlgm_per_step
    1243              : 
    1244            0 :          relax_M_center_dt = s% job% relax_M_center_dt
    1245            0 :          change_mass_years_for_dt = s% job% change_mass_years_for_dt
    1246            0 :          relax_M_center = s% job% relax_M_center
    1247            0 :          relax_initial_M_center = s% job% relax_initial_M_center
    1248            0 :          relax_core = s% job% relax_core
    1249            0 :          relax_initial_core = s% job% relax_initial_core
    1250            0 :          new_core_mass = s% job% new_core_mass
    1251            0 :          dlg_core_mass_per_step = s% job% dlg_core_mass_per_step
    1252            0 :          relax_core_years_for_dt = s% job% relax_core_years_for_dt
    1253            0 :          core_avg_rho = s% job% core_avg_rho
    1254            0 :          core_avg_eps = s% job% core_avg_eps
    1255              : 
    1256            0 :          relax_R_center = s% job% relax_R_center
    1257            0 :          relax_initial_R_center = s% job% relax_initial_R_center
    1258            0 :          new_R_center = s% job% new_R_center
    1259            0 :          dlgR_per_step = s% job% dlgR_per_step
    1260            0 :          relax_R_center_dt = s% job% relax_R_center_dt
    1261              : 
    1262            0 :          set_v_center = s% job% set_v_center
    1263            0 :          set_initial_v_center = s% job% set_initial_v_center
    1264              : 
    1265            0 :          relax_v_center = s% job% relax_v_center
    1266            0 :          relax_initial_v_center = s% job% relax_initial_v_center
    1267            0 :          new_v_center = s% job% new_v_center
    1268            0 :          dv_per_step = s% job% dv_per_step
    1269            0 :          relax_v_center_dt = s% job% relax_v_center_dt
    1270              : 
    1271            0 :          zero_alpha_RTI = s% job% zero_alpha_RTI
    1272            0 :          zero_initial_alpha_RTI = s% job% zero_initial_alpha_RTI
    1273              : 
    1274            0 :          set_L_center = s% job% set_L_center
    1275            0 :          set_initial_L_center = s% job% set_initial_L_center
    1276            0 :          relax_L_center = s% job% relax_L_center
    1277            0 :          relax_initial_L_center = s% job% relax_initial_L_center
    1278            0 :          new_L_center = s% job% new_L_center
    1279            0 :          dlgL_per_step = s% job% dlgL_per_step
    1280            0 :          relax_L_center_dt = s% job% relax_L_center_dt
    1281              : 
    1282            0 :          remove_center_at_cell_k = s% job% remove_center_at_cell_k
    1283            0 :          remove_center_by_temperature = s% job% remove_center_by_temperature
    1284            0 :          remove_center_by_mass_fraction_q = s% job% remove_center_by_mass_fraction_q
    1285            0 :          remove_center_by_delta_mass_gm = s% job% remove_center_by_delta_mass_gm
    1286            0 :          remove_center_by_delta_mass_Msun = s% job% remove_center_by_delta_mass_Msun
    1287            0 :          remove_center_by_mass_gm = s% job% remove_center_by_mass_gm
    1288            0 :          remove_center_by_mass_Msun = s% job% remove_center_by_mass_Msun
    1289            0 :          remove_center_by_radius_Rsun = s% job% remove_center_by_radius_Rsun
    1290            0 :          remove_center_by_radius_cm = s% job% remove_center_by_radius_cm
    1291            0 :          remove_center_by_he4 = s% job% remove_center_by_he4
    1292            0 :          remove_center_by_c12_o16 = s% job% remove_center_by_c12_o16
    1293            0 :          remove_center_by_si28 = s% job% remove_center_by_si28
    1294            0 :          remove_center_to_reduce_co56_ni56 = s% job% remove_center_to_reduce_co56_ni56
    1295            0 :          remove_center_by_ye = s% job% remove_center_by_ye
    1296            0 :          remove_center_by_entropy = s% job% remove_center_by_entropy
    1297            0 :          remove_center_by_infall_kms = s% job% remove_center_by_infall_kms
    1298            0 :          remove_center_at_inner_max_abs_v = s% job% remove_center_at_inner_max_abs_v
    1299            0 :          remove_fe_core = s% job% remove_fe_core
    1300            0 :          remove_fallback_at_each_step = s% job% remove_fallback_at_each_step
    1301            0 :          fallback_check_total_energy = s% job% fallback_check_total_energy
    1302            0 :          remove_fallback_speed_limit = s% job% remove_fallback_speed_limit
    1303            0 :          remove_center_set_zero_v_center = s% job% remove_center_set_zero_v_center
    1304            0 :          limit_center_logP_at_each_step = s% job% limit_center_logP_at_each_step
    1305            0 :          remove_center_adjust_L_center = s% job% remove_center_adjust_L_center
    1306            0 :          remove_center_logRho_limit = s% job% remove_center_logRho_limit
    1307              : 
    1308            0 :          remove_initial_center_at_cell_k = s% job% remove_initial_center_at_cell_k
    1309            0 :          remove_initial_center_by_temperature = s% job% remove_initial_center_by_temperature
    1310            0 :          remove_initial_center_by_mass_fraction_q = s% job% remove_initial_center_by_mass_fraction_q
    1311            0 :          remove_initial_center_by_delta_mass_gm = s% job% remove_initial_center_by_delta_mass_gm
    1312            0 :          remove_initial_center_by_delta_mass_Msun = s% job% remove_initial_center_by_delta_mass_Msun
    1313            0 :          remove_initial_center_by_mass_gm = s% job% remove_initial_center_by_mass_gm
    1314            0 :          remove_initial_center_by_mass_Msun = s% job% remove_initial_center_by_mass_Msun
    1315            0 :          remove_initial_center_by_radius_Rsun = s% job% remove_initial_center_by_radius_Rsun
    1316            0 :          remove_initial_center_by_radius_cm = s% job% remove_initial_center_by_radius_cm
    1317            0 :          remove_initial_center_by_he4 = s% job% remove_initial_center_by_he4
    1318            0 :          remove_initial_center_by_c12_o16 = s% job% remove_initial_center_by_c12_o16
    1319            0 :          remove_initial_center_by_si28 = s% job% remove_initial_center_by_si28
    1320            0 :          remove_initial_center_to_reduce_co56_ni56 = s% job% remove_initial_center_to_reduce_co56_ni56
    1321            0 :          remove_initial_center_by_ye = s% job% remove_initial_center_by_ye
    1322            0 :          remove_initial_center_by_entropy = s% job% remove_initial_center_by_entropy
    1323            0 :          remove_initial_center_by_infall_kms = s% job% remove_initial_center_by_infall_kms
    1324            0 :          remove_initial_center_at_inner_max_abs_v = s% job% remove_initial_center_at_inner_max_abs_v
    1325            0 :          remove_initial_fe_core = s% job% remove_initial_fe_core
    1326              : 
    1327            0 :          zero_initial_inner_v_by_mass_Msun = s% job% zero_initial_inner_v_by_mass_Msun
    1328            0 :          zero_inner_v_by_mass_Msun = s% job% zero_inner_v_by_mass_Msun
    1329              : 
    1330            0 :          remove_surface_at_cell_k = s% job% remove_surface_at_cell_k
    1331            0 :          remove_surface_at_he_core_boundary = s% job% remove_surface_at_he_core_boundary
    1332            0 :          remove_surface_by_optical_depth = s% job% remove_surface_by_optical_depth
    1333            0 :          remove_surface_by_density = s% job% remove_surface_by_density
    1334            0 :          remove_surface_by_pressure = s% job% remove_surface_by_pressure
    1335            0 :          remove_surface_by_mass_fraction_q = s% job% remove_surface_by_mass_fraction_q
    1336            0 :          remove_surface_by_mass_gm = s% job% remove_surface_by_mass_gm
    1337            0 :          remove_surface_by_radius_cm = s% job% remove_surface_by_radius_cm
    1338            0 :          remove_surface_by_mass_Msun = s% job% remove_surface_by_mass_Msun
    1339            0 :          remove_surface_by_radius_Rsun = s% job% remove_surface_by_radius_Rsun
    1340            0 :          remove_surface_by_v_surf_km_s = s% job% remove_surface_by_v_surf_km_s
    1341            0 :          remove_surface_by_v_surf_div_cs = s% job% remove_surface_by_v_surf_div_cs
    1342            0 :          remove_surface_by_v_surf_div_v_escape = s% job% remove_surface_by_v_surf_div_v_escape
    1343            0 :          min_q_for_remove_surface_by_v_surf_div_v_escape = s% job% min_q_for_remove_surface_by_v_surf_div_v_escape
    1344            0 :          max_q_for_remove_surface_by_v_surf_div_v_escape = s% job% max_q_for_remove_surface_by_v_surf_div_v_escape
    1345              : 
    1346            0 :          remove_surface_do_jrot = s% job% remove_surface_do_jrot
    1347            0 :          remove_surface_do_entropy = s% job% remove_surface_do_entropy
    1348            0 :          remove_surface_turn_off_energy_sources_and_sinks = s% job% remove_surface_turn_off_energy_sources_and_sinks
    1349            0 :          remove_surface_by_relax_to_star_cut = s% job% remove_surface_by_relax_to_star_cut
    1350              : 
    1351            0 :          remove_initial_surface_at_cell_k = s% job% remove_initial_surface_at_cell_k
    1352            0 :          remove_initial_surface_at_he_core_boundary = s% job% remove_initial_surface_at_he_core_boundary
    1353            0 :          remove_initial_surface_by_optical_depth = s% job% remove_initial_surface_by_optical_depth
    1354            0 :          remove_initial_surface_by_density = s% job% remove_initial_surface_by_density
    1355            0 :          remove_initial_surface_by_pressure = s% job% remove_initial_surface_by_pressure
    1356            0 :          remove_initial_surface_by_mass_fraction_q = s% job% remove_initial_surface_by_mass_fraction_q
    1357            0 :          remove_initial_surface_by_mass_gm = s% job% remove_initial_surface_by_mass_gm
    1358            0 :          remove_initial_surface_by_radius_cm = s% job% remove_initial_surface_by_radius_cm
    1359            0 :          remove_initial_surface_by_mass_Msun = s% job% remove_initial_surface_by_mass_Msun
    1360            0 :          remove_initial_surface_by_radius_Rsun = s% job% remove_initial_surface_by_radius_Rsun
    1361            0 :          remove_initial_surface_by_v_surf_km_s = s% job% remove_initial_surface_by_v_surf_km_s
    1362            0 :          remove_initial_surface_by_v_surf_div_cs = s% job% remove_initial_surface_by_v_surf_div_cs
    1363            0 :          remove_initial_surface_by_v_surf_div_v_escape = s% job% remove_initial_surface_by_v_surf_div_v_escape
    1364              : 
    1365            0 :          report_mass_not_fe56 = s% job% report_mass_not_fe56
    1366            0 :          relax_dxdt_nuc_factor = s% job% relax_dxdt_nuc_factor
    1367            0 :          relax_initial_dxdt_nuc_factor = s% job% relax_initial_dxdt_nuc_factor
    1368            0 :          new_dxdt_nuc_factor = s% job% new_dxdt_nuc_factor
    1369            0 :          dxdt_nuc_factor_multiplier = s% job% dxdt_nuc_factor_multiplier
    1370            0 :          relax_eps_nuc_factor = s% job% relax_eps_nuc_factor
    1371            0 :          relax_initial_eps_nuc_factor = s% job% relax_initial_eps_nuc_factor
    1372            0 :          new_eps_nuc_factor = s% job% new_eps_nuc_factor
    1373            0 :          eps_nuc_factor_multiplier = s% job% eps_nuc_factor_multiplier
    1374            0 :          relax_opacity_max = s% job% relax_opacity_max
    1375            0 :          relax_initial_opacity_max = s% job% relax_initial_opacity_max
    1376            0 :          new_opacity_max = s% job% new_opacity_max
    1377            0 :          opacity_max_multiplier = s% job% opacity_max_multiplier
    1378            0 :          relax_max_surf_dq = s% job% relax_max_surf_dq
    1379            0 :          relax_initial_max_surf_dq = s% job% relax_initial_max_surf_dq
    1380            0 :          new_max_surf_dq = s% job% new_max_surf_dq
    1381            0 :          max_surf_dq_multiplier = s% job% max_surf_dq_multiplier
    1382              : 
    1383            0 :          relax_tau_factor = s% job% relax_tau_factor
    1384            0 :          relax_initial_tau_factor = s% job% relax_initial_tau_factor
    1385            0 :          set_tau_factor = s% job% set_tau_factor
    1386            0 :          set_initial_tau_factor = s% job% set_initial_tau_factor
    1387            0 :          relax_to_this_tau_factor = s% job% relax_to_this_tau_factor
    1388            0 :          set_to_this_tau_factor = s% job% set_to_this_tau_factor
    1389            0 :          dlogtau_factor = s% job% dlogtau_factor
    1390            0 :          set_tau_factor_after_core_He_burn = s% job% set_tau_factor_after_core_He_burn
    1391            0 :          set_tau_factor_after_core_C_burn = s% job% set_tau_factor_after_core_C_burn
    1392            0 :          relax_tau_factor_after_core_He_burn = s% job% relax_tau_factor_after_core_He_burn
    1393            0 :          relax_tau_factor_after_core_C_burn = s% job% relax_tau_factor_after_core_C_burn
    1394              : 
    1395            0 :          adjust_tau_factor_to_surf_density = s% job% adjust_tau_factor_to_surf_density
    1396            0 :          base_for_adjust_tau_factor_to_surf_density = s% job% base_for_adjust_tau_factor_to_surf_density
    1397              : 
    1398            0 :          relax_to_this_opacity_factor = s% job% relax_to_this_opacity_factor
    1399            0 :          d_opacity_factor = s% job% d_opacity_factor
    1400            0 :          relax_opacity_factor = s% job% relax_opacity_factor
    1401            0 :          relax_initial_opacity_factor = s% job% relax_initial_opacity_factor
    1402              : 
    1403            0 :          relax_Tsurf_factor = s% job% relax_Tsurf_factor
    1404            0 :          relax_initial_Tsurf_factor = s% job% relax_initial_Tsurf_factor
    1405            0 :          set_Tsurf_factor = s% job% set_Tsurf_factor
    1406            0 :          set_initial_Tsurf_factor = s% job% set_initial_Tsurf_factor
    1407            0 :          relax_to_this_Tsurf_factor = s% job% relax_to_this_Tsurf_factor
    1408            0 :          set_to_this_Tsurf_factor = s% job% set_to_this_Tsurf_factor
    1409            0 :          dlogTsurf_factor = s% job% dlogTsurf_factor
    1410              : 
    1411            0 :          relax_irradiation = s% job% relax_irradiation
    1412            0 :          relax_initial_irradiation = s% job% relax_initial_irradiation
    1413            0 :          set_irradiation = s% job% set_irradiation
    1414            0 :          set_initial_irradiation = s% job% set_initial_irradiation
    1415            0 :          relax_irradiation_min_steps = s% job% relax_irradiation_min_steps
    1416            0 :          relax_to_this_irrad_flux = s% job% relax_to_this_irrad_flux
    1417            0 :          set_to_this_irrad_flux = s% job% set_to_this_irrad_flux
    1418            0 :          irrad_col_depth = s% job% irrad_col_depth
    1419            0 :          relax_irradiation_max_yrs_dt = s% job% relax_irradiation_max_yrs_dt
    1420            0 :          relax_mass_change = s% job% relax_mass_change
    1421            0 :          relax_initial_mass_change = s% job% relax_initial_mass_change
    1422            0 :          relax_mass_change_min_steps = s% job% relax_mass_change_min_steps
    1423            0 :          relax_mass_change_max_yrs_dt = s% job% relax_mass_change_max_yrs_dt
    1424            0 :          relax_mass_change_init_mdot = s% job% relax_mass_change_init_mdot
    1425            0 :          relax_mass_change_final_mdot = s% job% relax_mass_change_final_mdot
    1426            0 :          change_RTI_flag = s% job% change_RTI_flag
    1427            0 :          change_initial_RTI_flag = s% job% change_initial_RTI_flag
    1428            0 :          new_RTI_flag = s% job% new_RTI_flag
    1429            0 :          change_RSP_flag = s% job% change_RSP_flag
    1430            0 :          change_initial_RSP_flag = s% job% change_initial_RSP_flag
    1431            0 :          new_RSP_flag = s% job% new_RSP_flag
    1432            0 :          change_RSP2_flag = s% job% change_RSP2_flag
    1433            0 :          change_initial_RSP2_flag = s% job% change_initial_RSP2_flag
    1434            0 :          change_RSP2_flag_at_model_number = s% job% change_RSP2_flag_at_model_number
    1435            0 :          new_RSP2_flag = s% job% new_RSP2_flag
    1436            0 :          create_RSP2_model = s% job% create_RSP2_model
    1437            0 :          change_w_div_wc_flag = s% job% change_w_div_wc_flag
    1438            0 :          change_initial_w_div_wc_flag = s% job% change_initial_w_div_wc_flag
    1439            0 :          new_w_div_wc_flag = s% job% new_w_div_wc_flag
    1440            0 :          change_j_rot_flag = s% job% change_j_rot_flag
    1441            0 :          change_initial_j_rot_flag = s% job% change_initial_j_rot_flag
    1442            0 :          new_j_rot_flag = s% job% new_j_rot_flag
    1443              : 
    1444            0 :          create_RSP_model = s% job% create_RSP_model
    1445            0 :          change_v_flag = s% job% change_v_flag
    1446            0 :          change_initial_v_flag = s% job% change_initial_v_flag
    1447            0 :          new_v_flag = s% job% new_v_flag
    1448            0 :          change_D_omega_flag = s% job% change_D_omega_flag
    1449            0 :          change_initial_D_omega_flag = s% job% change_initial_D_omega_flag
    1450            0 :          new_D_omega_flag = s% job% new_D_omega_flag
    1451            0 :          change_am_nu_rot_flag = s% job% change_am_nu_rot_flag
    1452            0 :          change_initial_am_nu_rot_flag = s% job% change_initial_am_nu_rot_flag
    1453            0 :          new_am_nu_rot_flag = s% job% new_am_nu_rot_flag
    1454            0 :          use_D_omega_for_am_nu_rot = s% job% use_D_omega_for_am_nu_rot
    1455              : 
    1456            0 :          change_u_flag = s% job% change_u_flag
    1457            0 :          change_initial_u_flag = s% job% change_initial_u_flag
    1458            0 :          new_u_flag = s% job% new_u_flag
    1459              : 
    1460            0 :          change_reconstruction_flag = s% job% change_reconstruction_flag
    1461            0 :          change_initial_reconstruction_flag = s% job% change_initial_reconstruction_flag
    1462            0 :          new_reconstruction_flag = s% job% new_reconstruction_flag
    1463              : 
    1464            0 :          center_ye_limit_for_v_flag = s% job% center_ye_limit_for_v_flag
    1465            0 :          change_rotation_flag = s% job% change_rotation_flag
    1466            0 :          change_initial_rotation_flag = s% job% change_initial_rotation_flag
    1467            0 :          new_rotation_flag = s% job% new_rotation_flag
    1468            0 :          use_w_div_wc_flag_with_rotation = s% job% use_w_div_wc_flag_with_rotation
    1469            0 :          use_j_rot_flag_with_rotation = s% job% use_j_rot_flag_with_rotation
    1470            0 :          set_omega = s% job% set_omega
    1471            0 :          set_initial_omega = s% job% set_initial_omega
    1472            0 :          set_omega_step_limit = s% job% set_omega_step_limit
    1473            0 :          set_near_zams_omega_steps = s% job% set_near_zams_omega_steps
    1474            0 :          new_omega = s% job% new_omega
    1475            0 :          set_omega_div_omega_crit = s% job% set_omega_div_omega_crit
    1476            0 :          set_initial_omega_div_omega_crit = s% job% set_initial_omega_div_omega_crit
    1477            0 :          set_omega_div_omega_crit_step_limit = s% job% set_omega_div_omega_crit_step_limit
    1478            0 :          set_near_zams_omega_div_omega_crit_steps = s% job% set_near_zams_omega_div_omega_crit_steps
    1479            0 :          new_omega_div_omega_crit = s% job% new_omega_div_omega_crit
    1480            0 :          set_surface_rotation_v = s% job% set_surface_rotation_v
    1481            0 :          set_initial_surface_rotation_v = s% job% set_initial_surface_rotation_v
    1482            0 :          set_surf_rotation_v_step_limit = s% job% set_surf_rotation_v_step_limit
    1483            0 :          set_near_zams_surface_rotation_v_steps = s% job% set_near_zams_surface_rotation_v_steps
    1484            0 :          new_surface_rotation_v = s% job% new_surface_rotation_v
    1485            0 :          relax_omega = s% job% relax_omega
    1486            0 :          relax_initial_omega = s% job% relax_initial_omega
    1487            0 :          near_zams_relax_omega = s% job% near_zams_relax_omega
    1488            0 :          relax_omega_div_omega_crit = s% job% relax_omega_div_omega_crit
    1489            0 :          relax_initial_omega_div_omega_crit = s% job% relax_initial_omega_div_omega_crit
    1490            0 :          near_zams_relax_omega_div_omega_crit = s% job% near_zams_relax_omega_div_omega_crit
    1491            0 :          relax_surface_rotation_v = s% job% relax_surface_rotation_v
    1492            0 :          relax_initial_surface_rotation_v = s% job% relax_initial_surface_rotation_v
    1493            0 :          near_zams_relax_initial_surface_rotation_v = s% job% near_zams_relax_initial_surface_rotation_v
    1494            0 :          num_steps_to_relax_rotation = s% job% num_steps_to_relax_rotation
    1495            0 :          relax_omega_max_yrs_dt = s% job% relax_omega_max_yrs_dt
    1496            0 :          set_uniform_initial_composition = s% job% set_uniform_initial_composition
    1497            0 :          initial_h1 = s% job% initial_h1
    1498            0 :          initial_h2 = s% job% initial_h2
    1499            0 :          initial_he3 = s% job% initial_he3
    1500            0 :          initial_he4 = s% job% initial_he4
    1501            0 :          initial_zfracs = s% job% initial_zfracs
    1502            0 :          dump_missing_metals_into_heaviest = s% job% dump_missing_metals_into_heaviest
    1503            0 :          relax_initial_composition = s% job% relax_initial_composition
    1504            0 :          relax_initial_to_xaccrete = s% job% relax_initial_to_xaccrete
    1505            0 :          relax_composition_filename = s% job% relax_composition_filename
    1506            0 :          num_steps_to_relax_composition = s% job% num_steps_to_relax_composition
    1507            0 :          timescale_for_relax_composition = s% job% timescale_for_relax_composition
    1508            0 :          relax_initial_angular_momentum = s% job% relax_initial_angular_momentum
    1509            0 :          max_steps_to_relax_angular_momentum = s% job% max_steps_to_relax_angular_momentum
    1510            0 :          timescale_for_relax_angular_momentum = s% job% timescale_for_relax_angular_momentum
    1511            0 :          max_dt_for_relax_angular_momentum = s% job% max_dt_for_relax_angular_momentum
    1512            0 :          num_timescales_for_relax_angular_momentum = s% job% num_timescales_for_relax_angular_momentum
    1513            0 :          relax_angular_momentum_filename = s% job% relax_angular_momentum_filename
    1514            0 :          relax_angular_momentum_constant_omega_center = s% job% relax_angular_momentum_constant_omega_center
    1515            0 :          relax_initial_entropy = s% job% relax_initial_entropy
    1516            0 :          max_steps_to_relax_entropy = s% job% max_steps_to_relax_entropy
    1517            0 :          timescale_for_relax_entropy = s% job% timescale_for_relax_entropy
    1518            0 :          max_dt_for_relax_entropy = s% job% max_dt_for_relax_entropy
    1519            0 :          num_timescales_for_relax_entropy = s% job% num_timescales_for_relax_entropy
    1520            0 :          relax_entropy_filename = s% job% relax_entropy_filename
    1521            0 :          get_entropy_for_relax_from_eos = s% job% get_entropy_for_relax_from_eos
    1522            0 :          report_cell_for_xm = s% job% report_cell_for_xm
    1523            0 :          set_to_xa_for_accretion = s% job% set_to_xa_for_accretion
    1524            0 :          set_initial_to_xa_for_accretion = s% job% set_initial_to_xa_for_accretion
    1525            0 :          set_nzlo = s% job% set_nzlo
    1526            0 :          set_nzhi = s% job% set_nzhi
    1527            0 :          change_Y = s% job% change_Y
    1528            0 :          change_initial_Y = s% job% change_initial_Y
    1529            0 :          relax_Y = s% job% relax_Y
    1530            0 :          relax_initial_Y = s% job% relax_initial_Y
    1531            0 :          relax_Y_minq = s% job% relax_Y_minq
    1532            0 :          relax_Y_maxq = s% job% relax_Y_maxq
    1533            0 :          new_Y = s% job% new_Y
    1534            0 :          change_Z = s% job% change_Z
    1535            0 :          change_initial_Z = s% job% change_initial_Z
    1536            0 :          relax_Z = s% job% relax_Z
    1537            0 :          relax_initial_Z = s% job% relax_initial_Z
    1538            0 :          relax_Z_minq = s% job% relax_Z_minq
    1539            0 :          relax_Z_maxq = s% job% relax_Z_maxq
    1540            0 :          new_Z = s% job% new_Z
    1541            0 :          steps_to_take_before_terminate = s% job% steps_to_take_before_terminate
    1542            0 :          stop_if_this_file_exists = s% job% stop_if_this_file_exists
    1543            0 :          set_initial_age = s% job% set_initial_age
    1544            0 :          initial_age = s% job% initial_age
    1545            0 :          set_initial_model_number = s% job% set_initial_model_number
    1546            0 :          initial_model_number = s% job% initial_model_number
    1547            0 :          set_initial_number_retries = s% job% set_initial_number_retries
    1548            0 :          initial_number_retries = s% job% initial_number_retries
    1549            0 :          set_initial_dt = s% job% set_initial_dt
    1550            0 :          limit_initial_dt = s% job% limit_initial_dt
    1551            0 :          years_for_initial_dt = s% job% years_for_initial_dt
    1552            0 :          seconds_for_initial_dt = s% job% seconds_for_initial_dt
    1553              : 
    1554            0 :          set_initial_cumulative_energy_error = s% job% set_initial_cumulative_energy_error
    1555            0 :          set_cumulative_energy_error = s% job% set_cumulative_energy_error
    1556            0 :          set_cumulative_energy_error_at_step = s% job% set_cumulative_energy_error_at_step
    1557            0 :          set_cumulative_energy_error_each_step_if_age_less_than = s% job% set_cumulative_energy_error_each_step_if_age_less_than
    1558            0 :          new_cumulative_energy_error = s% job% new_cumulative_energy_error
    1559            0 :          set_cumulative_energy_error_each_relax = s% job% set_cumulative_energy_error_each_relax
    1560              : 
    1561            0 :          change_net = s% job% change_net
    1562            0 :          change_initial_net = s% job% change_initial_net
    1563            0 :          new_net_name = s% job% new_net_name
    1564            0 :          change_small_net = s% job% change_small_net
    1565            0 :          change_initial_small_net = s% job% change_initial_small_net
    1566            0 :          new_small_net_name = s% job% new_small_net_name
    1567              : 
    1568            0 :          h_he_net = s% job% h_he_net
    1569            0 :          co_net = s% job% co_net
    1570            0 :          adv_net = s% job% adv_net
    1571            0 :          adjust_abundances_for_new_isos = s% job% adjust_abundances_for_new_isos
    1572            0 :          set_uniform_xa_from_file = s% job% set_uniform_xa_from_file
    1573            0 :          set_uniform_initial_xa_from_file = s% job% set_uniform_initial_xa_from_file
    1574            0 :          file_for_uniform_xa = s% job% file_for_uniform_xa
    1575              : 
    1576            0 :          mix_section = s% job% mix_section
    1577            0 :          mix_initial_section = s% job% mix_initial_section
    1578            0 :          mix_section_nzlo = s% job% mix_section_nzlo
    1579            0 :          mix_section_nzhi = s% job% mix_section_nzhi
    1580              : 
    1581            0 :          T9_weaklib_full_off = s% job% T9_weaklib_full_off
    1582            0 :          T9_weaklib_full_on = s% job% T9_weaklib_full_on
    1583            0 :          weaklib_blend_hi_Z = s% job% weaklib_blend_hi_Z
    1584            0 :          T9_weaklib_full_off_hi_Z = s% job% T9_weaklib_full_off_hi_Z
    1585            0 :          T9_weaklib_full_on_hi_Z = s% job% T9_weaklib_full_on_hi_Z
    1586              : 
    1587            0 :          use_suzuki_weak_rates = s% job% use_suzuki_weak_rates
    1588            0 :          use_3a_fl87 = s% job% use_3a_fl87
    1589              : 
    1590            0 :          use_special_weak_rates = s% job% use_special_weak_rates
    1591            0 :          special_weak_states_file = s% job% special_weak_states_file
    1592            0 :          special_weak_transitions_file = s% job% special_weak_transitions_file
    1593            0 :          ion_coulomb_corrections = s% job% ion_coulomb_corrections
    1594            0 :          electron_coulomb_corrections = s% job% electron_coulomb_corrections
    1595              : 
    1596            0 :          mix_envelope_down_to_T = s% job% mix_envelope_down_to_T
    1597            0 :          mix_initial_envelope_down_to_T = s% job% mix_initial_envelope_down_to_T
    1598            0 :          auto_extend_net = s% job% auto_extend_net
    1599              : 
    1600            0 :          enable_adaptive_network = s% job% enable_adaptive_network
    1601            0 :          min_x_for_keep = s% job% min_x_for_keep
    1602            0 :          min_x_for_n = s% job% min_x_for_n
    1603            0 :          min_x_for_add = s% job% min_x_for_add
    1604            0 :          max_Z_for_add = s% job% max_Z_for_add
    1605            0 :          max_N_for_add = s% job% max_N_for_add
    1606            0 :          max_A_for_add = s% job% max_A_for_add
    1607              : 
    1608            0 :          save_model_number = s% job% save_model_number
    1609            0 :          save_model_filename = s% job% save_model_filename
    1610            0 :          save_model_when_terminate = s% job% save_model_when_terminate
    1611            0 :          required_termination_code_string = s% job% required_termination_code_string
    1612            0 :          profile_starting_model = s% job% profile_starting_model
    1613            0 :          profile_model_number = s% job% profile_model_number
    1614            0 :          report_retries = s% job% report_retries
    1615              : 
    1616            0 :          net_reaction_filename = s% job% net_reaction_filename
    1617            0 :          jina_reaclib_filename = s% job% jina_reaclib_filename
    1618            0 :          jina_reaclib_min_T9 = s% job% jina_reaclib_min_T9
    1619            0 :          rate_tables_dir = s% job% rate_tables_dir
    1620            0 :          rate_cache_suffix = s% job% rate_cache_suffix
    1621            0 :          read_extra_star_job_inlist = s% job% read_extra_star_job_inlist
    1622            0 :          extra_star_job_inlist_name = s% job% extra_star_job_inlist_name
    1623            0 :          set_abundance_nzlo = s% job% set_abundance_nzlo
    1624            0 :          set_abundance_nzhi = s% job% set_abundance_nzhi
    1625            0 :          set_abundance = s% job% set_abundance
    1626            0 :          set_initial_abundance = s% job% set_initial_abundance
    1627            0 :          chem_name = s% job% chem_name
    1628            0 :          new_frac = s% job% new_frac
    1629              :          set_abundance_nzlo = s% job% set_abundance_nzlo
    1630              :          set_abundance_nzhi = s% job% set_abundance_nzhi
    1631            0 :          replace_element = s% job% replace_element
    1632            0 :          replace_initial_element = s% job% replace_initial_element
    1633            0 :          chem_name1 = s% job% chem_name1
    1634            0 :          chem_name2 = s% job% chem_name2
    1635            0 :          replace_element_nzlo = s% job% replace_element_nzlo
    1636            0 :          replace_element_nzhi = s% job% replace_element_nzhi
    1637            0 :          do_special_test = s% job% do_special_test
    1638              : 
    1639            0 :          save_pulse_data_for_model_number = s% job% save_pulse_data_for_model_number
    1640            0 :          save_pulse_data_when_terminate = s% job% save_pulse_data_when_terminate
    1641            0 :          save_pulse_data_filename = s% job% save_pulse_data_filename
    1642              : 
    1643            0 :          chem_isotopes_filename = s% job% chem_isotopes_filename
    1644            0 :          ionization_file_prefix = s% job% ionization_file_prefix
    1645            0 :          ionization_Z1_suffix = s% job% ionization_Z1_suffix
    1646            0 :          extras_lipar = s% job% extras_lipar
    1647            0 :          extras_lrpar = s% job% extras_lrpar
    1648            0 :          extras_lcpar = s% job% extras_lcpar
    1649            0 :          extras_llpar = s% job% extras_llpar
    1650            0 :          extras_ipar = s% job% extras_ipar
    1651            0 :          extras_rpar = s% job% extras_rpar
    1652            0 :          extras_cpar = s% job% extras_cpar
    1653            0 :          extras_lpar = s% job% extras_lpar
    1654            0 :          num_special_rate_factors = s% job% num_special_rate_factors
    1655            0 :          special_rate_factor = s% job% special_rate_factor
    1656            0 :          filename_of_special_rate = s% job% filename_of_special_rate
    1657              : 
    1658            0 :          reaction_for_special_factor = s% job% reaction_for_special_factor
    1659              : 
    1660            0 :          warn_run_star_extras = s% job% warn_run_star_extras
    1661            0 :          report_garbage_collection = s% job% report_garbage_collection
    1662            0 :          num_steps_for_garbage_collection = s% job% num_steps_for_garbage_collection
    1663              : 
    1664            0 :       end subroutine set_star_job_controls_for_writing
    1665              : 
    1666              : 
    1667            0 :       subroutine do_write_star_job(s, filename, ierr)
    1668              :          type (star_info), pointer :: s
    1669              :          character(*), intent(in) :: filename
    1670              :          integer, intent(out) :: ierr
    1671              :          integer :: io
    1672              :          ierr = 0
    1673            0 :          call set_star_job_controls_for_writing(s, ierr)
    1674            0 :          if (ierr /= 0) then
    1675            0 :             write(*,*) 'failed to set_star_job_controls_for_writing "' // trim(filename)//'"'
    1676            0 :             return
    1677              :          end if
    1678            0 :          open(newunit=io, file=trim(filename), action='write', status='replace', iostat=ierr)
    1679            0 :          if (ierr /= 0) then
    1680            0 :             write(*,*) 'failed to open "' // trim(filename)//'"'
    1681            0 :             return
    1682              :          end if
    1683            0 :          write(io, nml=star_job, iostat=ierr)
    1684            0 :          if (ierr /= 0) then
    1685            0 :             write(*,*) 'failed to write "' // trim(filename)//'"'
    1686            0 :             return
    1687              :          end if
    1688            0 :          write(*,*) 'write star_job namelist values to "' // trim(filename)//'"'
    1689            0 :          close(io)
    1690              :       end subroutine do_write_star_job
    1691              : 
    1692              : 
    1693            0 :       subroutine get_star_job(s, name, val, ierr)
    1694              :          use utils_lib, only: StrUpCase
    1695              :          type (star_info), pointer :: s
    1696              :          character(len=*),intent(in) :: name
    1697              :          character(len=*), intent(out) :: val
    1698              :          integer, intent(out) :: ierr
    1699              : 
    1700            0 :          character(len(name)+1) :: upper_name
    1701              :          character(len=512) :: str
    1702              :          integer :: iounit,iostat,ind,i
    1703              : 
    1704              :          ierr = 0
    1705              : 
    1706              :          ! First save current controls
    1707            0 :          call set_star_job_controls_for_writing(s, ierr)
    1708            0 :          if(ierr/=0) return
    1709              : 
    1710              :          ! Write namelist to temporary file
    1711            0 :          open(newunit=iounit,status='scratch')
    1712            0 :          write(iounit,nml=star_job)
    1713            0 :          rewind(iounit)
    1714              : 
    1715              :          ! Namelists get written in capitals
    1716            0 :          upper_name = trim(StrUpCase(name))//'='
    1717            0 :          val = ''
    1718              :          ! Search for name inside namelist
    1719              :          do
    1720            0 :             read(iounit,'(A)',iostat=iostat) str
    1721            0 :             ind = index(trim(str),trim(upper_name))
    1722            0 :             if( ind /= 0 ) then
    1723            0 :                val = str(ind+len_trim(upper_name):len_trim(str)-1)  ! Remove final comma and starting =
    1724            0 :                do i=1,len(val)
    1725            0 :                   if(val(i:i)=='"') val(i:i) = ' '
    1726              :                end do
    1727              :                exit
    1728              :             end if
    1729            0 :             if(is_iostat_end(iostat)) exit
    1730              :          end do
    1731              : 
    1732            0 :          if(len_trim(val) == 0 .and. ind==0 ) ierr = -1
    1733              : 
    1734            0 :          close(iounit)
    1735              : 
    1736            0 :       end subroutine get_star_job
    1737              : 
    1738            0 :       subroutine set_star_job(s, name, val, ierr)
    1739              :          type (star_info), pointer :: s
    1740              :          character(len=*), intent(in) :: name, val
    1741            0 :          character(len=len(name)+len(val)+12) :: tmp
    1742              :          integer, intent(out) :: ierr
    1743              : 
    1744              :          ierr = 0
    1745              : 
    1746              :          ! First save current star_job
    1747            0 :          call set_star_job_controls_for_writing(s, ierr)
    1748            0 :          if(ierr/=0) return
    1749              : 
    1750            0 :          tmp=''
    1751            0 :          tmp = '&star_job '//trim(name)//'='//trim(val)//'/'
    1752              : 
    1753              :          ! Load into namelist
    1754            0 :          read(tmp, nml=star_job)
    1755              : 
    1756              :          ! Add to star
    1757            0 :          call store_star_job_controls(s, ierr)
    1758            0 :          if(ierr/=0) return
    1759              : 
    1760              :       end subroutine set_star_job
    1761              : 
    1762              : 
    1763              :       end module star_job_ctrls_io
        

Generated by: LCOV version 2.0-1