
! PLEASE NOTE:
! the following is just an example -- it is NOT a complete set of options.
! see star/astero_adipls/defaults/astero_search_controls.defaults
! for current set of controls and their default values.


&astero_search_controls

   ! the overall chi^2 is a combination of spectroscopic and seismic 
   
      ! chi2 = chi2_seismo*chi2_seismo_fraction
      !      + chi2_spectro*(1 - chi2_seismo_fraction)
      chi2_seismo_fraction = 0 ! 0.5d0
   
   ! chi2_spectro is an evenly weighted combination of Teff, logg, logT, and FeH
      ! only need to give values for target and sigma if include in chi^2


      
      ! thanks to Roni Waldman for pointing us to recent solar values and uncertainties from
      ! https://sites.google.com/site/mamajeksstarnotes/basic-astronomical-data-for-the-sun
      
      ! note that for the sun, L is not Lsun and R is not Rsun, so the target log's are not zero.
      ! the sun's L is not Lsun.  it is 3.8270e33 +/- 0.0014e33, = 0.996 Lsun.
      ! the sun's R is not Rsun.  it is 6.95660e10 +/- 0.001e10, = 0.9995 Rsun.
      ! the sun's M is not Msun.  it is 1.98855e33 +/- 0.00024e33, = 0.9997 Msun.
      
         ! Pecaut, Mamajek, & Bubar (2013),
         ! Mamajek (2012),
         ! Pecaut & Mamajek (2013), Tarduno, 
         ! Blackman, & Mamajek (2014).
   
         ! logL_target = -1.676d-3 ! Mamajek  Absolute Bolometric Magnitude = 4.7554 +/- 0.0004
         ! logL_sigma = 1.6d-4 ! Mamajek

         ! logR_target = -2d-4 ! Mamajek  Photospheric Radius 695660, +/- 100
         ! logR_sigma = 6d-5 ! Mamajek
      
         ! Teff_target = 5771.8 ! Mamajek  log10(Teff) = 3.76131
         ! Teff_sigma = 0.7 ! Mamajek

         ! logg_target = 4.438118 ! Mamajek
         ! logg_sigma = 1.25d-4 ! Mamajek





      
      include_Teff_in_chi2_spectro = .true.
      Teff_target = 5777d0
      Teff_sigma = 65d0

      include_logg_in_chi2_spectro = .false.
      logg_target = 4.44d0
      logg_sigma = 0.02d0
   
      include_logL_in_chi2_spectro = .true.
      logL_target = 0.00d0
      logL_sigma = 0.05d0
      
      include_FeH_in_chi2_spectro = .false. ! .true. ! [Fe/H]
      FeH_target = 0.00
      FeH_sigma = 0.05
      
         ! we calculate model [Fe/H] as = log10((Z/X)/Z_div_X_solar)
         ! using model surface average values for Z and X.
         Z_div_X_solar = 0.02293d0
      
      ! NOTE: for plotting with pgstar loggTe window -- logg vs. Teff
         ! you need to set the following pgstar controls
         ! loggTe_target_logg
         ! loggTe_target_logg_sigma
         ! loggTe_target_Teff
         ! loggTe_target_Teff_sigma
      ! same if you are plotting HR window -- lg_L vs. lg_Teff
         ! you need to set the following pgstar controls
         ! HR_target_logL
         ! HR_target_logL_sigma
         ! HR_target_Teff
         ! HR_target_Teff_sigma
         

   ! other optional extra chi2 terms -- e.g., can be used for solar calibration
      ! for simplicity, we lump these in with the chi2_spectro terms.
      ! only need to give values for target and sigma if include in chi^2







      include_age_in_chi2_spectro = .false.
      eval_chi2_at_target_age_only = .true.
      ! if either of these are set true, then you must set the following too.
         ! note: do not set max_age or num_adjusted_dt_steps_before_max_age.

      age_target = 4.61d9 ! 4.57d9 after zams + 4d7 for pre-main-sequence
      age_sigma = 1d7
         ! see Bahcall, Serenelli, and Basu, 2006; Bahcall and Pinsonneault, 1995
      num_smaller_steps_before_age_target = 200 ! only used if > 0
      dt_for_smaller_steps_before_age_target = 1d6 ! 1/10 age_sigma

      ! if include_age_in_chi2_spectro, then set the following:
      min_age_for_chi2 = 4.54d9 ! target - 7*sigma
      max_age_for_chi2 = 4.68d9 ! target + 7*sigma
      
   




      include_logR_in_chi2_spectro = .false. ! redundant wrt Teff and logL
      logR_target = 0d0
      logR_sigma = 1d-5
      
      include_surface_Z_div_X_in_chi2_spectro = .true. ! redundant wrt FeH
      surface_Z_div_X_target = 2.292d-2 ! GS98 value
      !surface_Z_div_X_target = 1.81d-2 ! Asplund 09 value
      surface_Z_div_X_sigma = 1d-3
         ! reminder: surface_Z_div_X = surface_Z/surface_X
         ! and FeH = log10(surface_Z_div_X/Z_div_X_solar)
         ! where Z_div_X_solar is a parameter specified in this inlist
   
      include_surface_He_in_chi2_spectro = .true.
      surface_He_target = 0.2485d0 ! Basu & Antia 2004
      surface_He_sigma = 0.0035
   
      include_Rcz_in_chi2_spectro = .true. ! radius of base of convective zone
      Rcz_target = 0.713d0 ! Basu & Antia 1997
      Rcz_sigma = 1d-3
   
      include_csound_rms_in_chi2_spectro = .true. ! check sound profile
      csound_rms_target = 0
      csound_rms_sigma = 2d-4
      report_csound_rms = .false.


   ! chi2_seismo is a weighted combination of
         ! frequencies, ratios of frequencies, delta_nu, and nu_max
         
      ! you specify the weighting of the terms in chi2_seismo by setting the following
   
      chi2_seismo_delta_nu_fraction = 0d0  
         ! if > 0 then delta_nu and delta_nu_sigma must be set (see below)
      chi2_seismo_nu_max_fraction = 0d0    
         ! if > 0 then nu_max and nu_max_sigma must be set (see below)
      chi2_seismo_r_010_fraction = 0d0
         ! if > 0, then include r_010 frequency ratios 
      chi2_seismo_r_02_fraction = 0d0
         ! if > 0, then include r_02 frequency ratios 
      ! fraction for frequencies = 1 - (frac_r_010_ratios + frac_r_02_ratios + frac_delta_nu + frac_nu_max)
      
      ! naturally the fractions must all be between 0 and 1, else get error message.
      
      
      trace_chi2_seismo_delta_nu_info = .false. ! if true, output info to terminal
      trace_chi2_seismo_nu_max_info = .false. ! if true, output info to terminal
      trace_chi2_seismo_ratios_info = .false. ! if true, output info to terminal
      trace_chi2_seismo_frequencies_info = .false. ! if true, output info to terminal

      trace_chi2_spectro_info = .false. ! if true, output info to terminal


   ! seismic data (frequencies in microHz)

      delta_nu = 135.00
      delta_nu_sigma = 1.0
         ! only need delta_nu_sigma if chi2_seismo_delta_nu_fraction > 0

      nu_max = 3090.0
      nu_max_sigma = -1
         ! only need nu_max_sigma if chi2_seismo_nu_max_fraction > 0


      ! observed l=0 modes to match to model
         nl0 = 19
         l0_obs(1) = 1548.328d0
         l0_obs(2) = 1686.570d0
         l0_obs(3) = 1822.227d0
         l0_obs(4) = 1957.407d0
         l0_obs(5) = 2093.494d0
         l0_obs(6) = 2228.696d0
         l0_obs(7) = 2362.824d0
         l0_obs(8) = 2496.172d0
         l0_obs(9) = 2629.680d0
         l0_obs(10) = 2764.088d0
         l0_obs(11) = 2898.953d0
         l0_obs(12) = 3033.749d0
         l0_obs(13) = 3168.527d0
         l0_obs(14) = 3303.480d0
         l0_obs(15) = 3438.973d0
         l0_obs(16) = 3574.987d0
         l0_obs(17) = 3710.664d0
         l0_obs(18) = 3847.579d0
         l0_obs(19) = 3984.403d0
         l0_obs_sigma(1) = 0.037d0
         l0_obs_sigma(2) = 0.019d0
         l0_obs_sigma(3) = 0.034d0
         l0_obs_sigma(4) = 0.027d0
         l0_obs_sigma(5) = 0.046d0
         l0_obs_sigma(6) = 0.040d0
         l0_obs_sigma(7) = 0.042d0
         l0_obs_sigma(8) = 0.048d0
         l0_obs_sigma(9) = 0.048d0
         l0_obs_sigma(10) = 0.041d0
         l0_obs_sigma(11) = 0.036d0
         l0_obs_sigma(12) = 0.040d0
         l0_obs_sigma(13) = 0.038d0
         l0_obs_sigma(14) = 0.052d0
         l0_obs_sigma(15) = 0.073d0
         l0_obs_sigma(16) = 0.121d0
         l0_obs_sigma(17) = 0.216d0
         l0_obs_sigma(18) = 0.300d0
         l0_obs_sigma(19) = 0.722d0
   
      ! observed l=1 modes to match to model
         nl1 = 19
         l1_obs(1) = 1472.828d0
         l1_obs(2) = 1612.715d0
         l1_obs(3) = 1749.303d0
         l1_obs(4) = 1885.112d0
         l1_obs(5) = 2020.794d0
         l1_obs(6) = 2156.760d0
         l1_obs(7) = 2291.954d0
         l1_obs(8) = 2425.617d0
         l1_obs(9) = 2559.139d0
         l1_obs(10)= 2693.310d0
         l1_obs(11) = 2828.058d0
         l1_obs(12) = 2963.393d0
         l1_obs(13) = 3098.111d0
         l1_obs(14) = 3233.222d0
         l1_obs(15) = 3368.586d0
         l1_obs(16) = 3504.038d0
         l1_obs(17) = 3640.307d0
         l1_obs(18) = 3776.859d0
         l1_obs(19) = 3913.392d0
         l1_obs_sigma(1) = 0.007d0
         l1_obs_sigma(2) = 0.009d0
         l1_obs_sigma(3) = 0.019d0
         l1_obs_sigma(4) = 0.029d0
         l1_obs_sigma(5) = 0.030d0
         l1_obs_sigma(6) = 0.051d0
         l1_obs_sigma(7) = 0.047d0
         l1_obs_sigma(8) = 0.046d0
         l1_obs_sigma(9) = 0.047d0
         l1_obs_sigma(10)= 0.040d0
         l1_obs_sigma(11) = 0.042d0
         l1_obs_sigma(12) = 0.039d0
         l1_obs_sigma(13) = 0.042d0
         l1_obs_sigma(14) = 0.049d0
         l1_obs_sigma(15) = 0.063d0
         l1_obs_sigma(16) = 0.087d0
         l1_obs_sigma(17) = 0.104d0
         l1_obs_sigma(18) = 0.151d0
         l1_obs_sigma(19) = 0.251d0
   
      ! observed l=2 modes to match to model
         nl2 = 20
         l2_obs(1) = 1394.659d0
         l2_obs(2) = 1535.857d0
         l2_obs(3) = 1674.543d0
         l2_obs(4) = 1810.350d0
         l2_obs(5) = 1945.740d0
         l2_obs(6) = 2082.052d0
         l2_obs(7) = 2217.743d0
         l2_obs(8) = 2352.162d0
         l2_obs(9) = 2485.874d0
         l2_obs(10)= 2619.724d0
         l2_obs(11)= 2754.374d0
         l2_obs(12)= 2889.556d0
         l2_obs(13)= 3024.662d0
         l2_obs(14)= 3159.918d0
         l2_obs(15)= 3295.088d0
         l2_obs(16)= 3430.979d0
         l2_obs(17)= 3567.071d0
         l2_obs(18)= 3703.208d0
         l2_obs(19)= 3840.098d0
         l2_obs(20)= 3977.242d0
         l2_obs_sigma(1) = 0.008d0
         l2_obs_sigma(2) = 0.012d0
         l2_obs_sigma(3) = 0.015d0
         l2_obs_sigma(4) = 0.039d0
         l2_obs_sigma(5) = 0.038d0
         l2_obs_sigma(6) = 0.051d0
         l2_obs_sigma(7) = 0.052d0
         l2_obs_sigma(8) = 0.052d0
         l2_obs_sigma(9) = 0.055d0
         l2_obs_sigma(10)= 0.059d0
         l2_obs_sigma(11)= 0.053d0
         l2_obs_sigma(12)= 0.042d0
         l2_obs_sigma(13)= 0.042d0
         l2_obs_sigma(14)= 0.042d0
         l2_obs_sigma(15)= 0.059d0
         l2_obs_sigma(16)= 0.088d0
         l2_obs_sigma(17)= 0.126d0
         l2_obs_sigma(18)= 0.207d0
         l2_obs_sigma(19)= 0.307d0
         l2_obs_sigma(20)= 0.653d0
   
      ! observed l=3 modes for matching to model
         nl3 = 16
         l3_obs(1) = 1865.289d0
         l3_obs(2) = 2001.200d0
         l3_obs(3) = 2137.804d0
         l3_obs(4) = 2273.471d0
         l3_obs(5) = 2407.722d0
         l3_obs(6) = 2541.657d0
         l3_obs(7) = 2676.242d0
         l3_obs(8) = 2811.426d0
         l3_obs(9) = 2946.981d0
         l3_obs(10)= 3082.252d0
         l3_obs(11)= 3217.814d0
         l3_obs(12)= 3353.381d0
         l3_obs(13)= 3489.528d0
         l3_obs(14)= 3626.061d0
         l3_obs(15)= 3762.638d0
         l3_obs(16)= 3900.509d0
         l3_obs_sigma(1) = 0.038d0
         l3_obs_sigma(2) = 0.050d0
         l3_obs_sigma(3) = 0.057d0
         l3_obs_sigma(4) = 0.065d0
         l3_obs_sigma(5) = 0.073d0
         l3_obs_sigma(6) = 0.068d0
         l3_obs_sigma(7) = 0.062d0
         l3_obs_sigma(8) = 0.058d0
         l3_obs_sigma(9) = 0.049d0
         l3_obs_sigma(10)= 0.068d0
         l3_obs_sigma(11)= 0.060d0
         l3_obs_sigma(12)= 0.100d0
         l3_obs_sigma(13)= 0.137d0
         l3_obs_sigma(14)= 0.191d0
         l3_obs_sigma(15)= 0.372d0
         l3_obs_sigma(16)= 0.528d0
   
   
   ! search controls
      
      search_type = 'use_first_values'
         ! this option means no search
         ! just do a single run using "first" values for mass, alpha, Y, ...
                  
      !search_type = 'scan_grid'
         ! eval chi^2 for each parameter combination
         ! that is within min to max with steps given by "delta"
         
         ! for a first rough scan, consider setting chi2_seismo_delta_nu_fraction = 1
         ! that skips the relatively costly calculations of frequencies
         ! and simply uses delta_nu along with spectro information.
         
         ! then you might follow up with medium resolution scans 
         ! in smaller regions around candidates from the rough scan
         ! with chi2_seismo_delta_nu_fraction = 0 to include frequencies

         ! output goes to the following file when search_type = 'scan_grid'
         scan_grid_output_filename = 'scan_grid_results.data'
         
         restart_scan_grid_from_file = .false.
            ! if true, then reads the scan_grid_output file 
            ! and continues from where that stopped.
         
      
      ! once you've generated some good candidates by doing scan_grid,
      ! it is time to use a minimization technique to fine tune the results.
      ! we have three for you to consider.
      
      ! the two methods from Powell use quadratic interpolation,
      ! either unconstrained (NEWUOA) or bounded (BOBYQA).
      ! the Nelder-Mead SIMPLEX method doesn't do interpolation;
      ! instead it simply compares values and moves toward lower chi^2's
      ! and away from higher ones.  in general, you can expect the
      ! Powell methods to be faster to converge than simplex if the chi^2
      ! terrain is not too "bumpy" (bumps confuse the interpolation).
      ! Since the simplex scheme doesn't do interpolation, bumps
      ! don't cause it trouble, so it may be more robust.  
      ! if you are just getting started, go with simplex at first.
      ! try the interpolation methods when you have a very good
      ! candidate and want to look near it for even better results. 
      
      
      !search_type = 'simplex'
         ! search for minimal chi^2 model using Nelder-Mead simplex algorithm 
            ! Nelder, J. A. and Mead, R.
            ! "A Simplex Method for Function Minimization."
            ! Comput. J. 7, 308-313, 1965.
         ! there are versions of this in Numerical Recipes under the name "amoeba",
         ! in Matlab under the name "fminsearch", and in Mathematica as an option for "NMminimize".
         ! our version has lots of bells and whistles and is, of course, superior to the others. ;)
         
         ! termination criteria
         
         ! terminate if reach max allowed iterations or function calls
         simplex_itermax = 1000 ! each iteration revises the simplex
         simplex_fcn_calls_max = 10000 ! may use several function calls per iteration
            ! each "function call" is a stellar evolution to give a chi^2
         
         ! terminate if simplex gets "small" enough
         simplex_x_atol = 1d-10 ! tolerance for absolute differences
         simplex_x_rtol = 1d-10 ! tolerance for relative differences
            ! if you want the details, here's the snippet of code.
            ! simplex(i,j) is value of i'th parameter for point j
            ! l is the index of the best point. there are n parameters and n+1 points.
!               term_val_x = 0
!               do j=1,n+1 ! check each point
!                  if (j == l) cycle ! l is the best point; so skip it
!                  do i=1,n ! check each coordinate of point j vs point l
!                     term1 = abs(simplex(i,j)-simplex(i,l)) / &
!                        (x_atol + x_rtol*max(abs(simplex(i,j)), abs(simplex(i,l))))
!                     if (term1 > term_val_x) term_val_x = term1
!                  end do
!               end do
!               if (term_val_x <= 1d0) exit ! converged
         
         ! options
         simplex_centroid_weight_power = 1d0
            ! each iteration starts by doing a reflection
            ! of the worst point through the centroid of the others.
            ! centroid points are weighted by (1/chi^2)**power
            ! power = 0 gives the standard unweighted centroid.
            ! power = 1 shifts the reflection toward the better points.
            ! in some (many? most?) cases, this shift improves convergence rate.
         simplex_enforce_bounds = .false.
            ! if true, then points outside the bounds will be rejected without evaluation.
            ! if false, then bounds will only be used in creating the initial simplex
            !                 and for adaptive random search.
         simplex_adaptive_random_search = .false.
            ! this flag controls what is done if the standard options of reflect or contract
            ! fail to produce a improvement in the simplex.
            ! if true, test uniform random samples within the bounds until find a better point.
            ! if false, "shrink" the simplex toward the best point.

         simplex_output_filename = 'simplex_results.data'
         
         restart_simplex_from_file = .false.
            ! if true, then reads the output file (simplex_output_filename)
            ! and continues from where that stopped
            ! using the best n+1 results as the initial simplex
            ! (where n is the number of parameters)
         
         simplex_seed = 1074698122 ! seed for random number generation
         
         
      !search_type = 'newuoa'
            
         ! search for minimal chi^2 model using Powell's NEWUOA algorithm
         ! unconstrained minimization without derivatives
         ! by quadratic polynomial approximation.
         ! results are written to newuoa_output_filename

         ! output goes to the following file when search_type = 'newuoa'
         newuoa_output_filename = 'newuoa_results.data'
   
         ! search controls for bobyqa
            ! see mesa/num/public/num_newuoa for details
            newuoa_rhoend = 1d-6 
               ! this is the tolerance that determines relative accuracy of final values
               ! i.e., stops search when results are changing by less than this
         
         
      !search_type = 'bobyqa'
         ! search for minimal chi^2 model using Powell's BOBYQA algorithm
         ! "BOBYQA" = Bounded Optimization BY Quadratic Approximation
         ! any location within the bounds is available for consideration.
         ! results are written to bobyqa_output_filename

         ! output goes to the following file when search_type = 'bobyqa'
         bobyqa_output_filename = 'bobyqa_results.data'
   
         ! search controls for bobyqa
            ! see mesa/num/public/num_bobyqa for details
            bobyqa_rhoend = 1d-6 
               ! this is the tolerance that determines relative accuracy of final values
               ! i.e., stops search when results are changing by less than this

      
      !search_type = 'from_file'
         ! this uses a file to provide a series of parameter combinations.
         
         ! the input file for the parameters is the following:
         filename_for_parameters = 'undefined'
         
         max_num_from_file = -1 ! if > 0, then stop after doing this many lines from file.
         
         ! for each line in the file after the 1st (which holds column names)
         ! for each parameter with vary_<Param> = .true.,
         !     set value of first_<Parama> to value from file.
         ! then run that set of parameters as if search_type = 'use_first_values'
         ! save the best chi^2 info for that set of parameters,
         ! then go to the next line in the file.
         ! stops when finishes the file or reaches "max_num_from_file"
         
         ! you need to say which columns in the file hold the various parameters.
         ! for example, if you file starts like the following:
         !       chi2         mass        alpha        init_Y      init_FeH    init_f_ov
         ! 654   0.81543178   1.35000000  1.76000000   0.27000000  0.21000000  0.01000000
         ! then set the column numbers like this
         file_column_for_mass = 3
         file_column_for_alpha = 4
         file_column_for_Y = 5
         file_column_for_FeH = 6
         file_column_for_f_ov = 7
         ! note that if you are not varying one of the parameters, f_ov e.g.,
         ! then you don't need to set the file_col for that parameter.

         ! output goes to the following when search_type = 'from_file'
         from_file_output_filename = 'from_file_results.data'
         
         
      ! set these flags to specify which parameters will vary during searches
      
         vary_FeH = .true. ! FeH = [Fe/H] = log10((Z/X)/Z_div_X_solar)
            ! Z and X are the initial uniform values
         vary_Y = .true.
         vary_alpha = .true.
         vary_f_ov = .true.
         vary_mass = .false.

      ! >>>> NOTE: if "vary" is false, the "first" value is used for all runs.
         ! so you must set the first value even when you have vary = .false.
   
      ! use the following as the first values in searches
!  sample                      chi2                      mass                    init_Y                  init_FeH                     alpha                      f_ov                       age    model_number                   init_h1                  init_he3                  init_he4                    init_Z                log_radius                      logL                      Teff                      logg                      Fe_H                      logR           surface_Z_div_X                surface_He                       Rcz                csound_rms                   my_var1                   my_var2                   my_var3                  delta_nu                   a_div_r              correction_r               chi2_seismo              chi2_spectro                 nl0                 nl1                 nl2                 nl3            ratios_n     ratios_l0_first     ratios_l1_first
!      49    3.8874276459147530D+00    1.0000000000000000D+00    2.7978169353764870D-01    1.0524293223273457D-01    1.9107649497310391D+00    2.9091163079927995D-03    4.6100000000000000D+09             958    6.9977251770969628D-01    2.7978169353764870D-05    2.7975371536829496D-01    2.0445788752654973D-02   -8.9323135598107102D-06   -2.5526068653951924D-03    5.7676079617168880D+03    4.4379072180402446D+00    4.8368208975719390D-02   -8.9323135598107102D-06    2.5631396192708385D-02    2.5240600662431584D-01    7.1257497304240391D-01    7.6218905540915147D-04    0.0000000000000000D+00    0.0000000000000000D+00    0.0000000000000000D+00    1.4201825727707453D+02   -1.0000000000000000D+00   -1.0000000000000000D+00    0.0000000000000000D+00    3.8874276459147530D+00                  19                  19                  20                  16                   0                   0                   0     reflect
      
         first_FeH = 1.0524293223273457D-01
         first_Y = 2.7978169353764870D-01
         first_alpha = 1.9107649497310391D+00
         first_f_ov = 2.9091163079927995D-03
         
         min_FeH = 0.079d0
         min_Y = 0.255 ! 0.2784d0
         min_alpha = 1.88d0
         min_f_ov = 0.002 ! 0.000
         
         max_FeH = 0.111d0 ! 
         max_Y = 0.295 ! 0.2804d0
         max_alpha =  1.94d0
         max_f_ov = 0.01 ! 0.015
         
         first_mass = 1d0
         min_mass = 1d0
         max_mass = 1d0
   
   
      ! search_type = 'scan_grid' uses this grid spacing
         ! note: grid spacing does not apply to other searches
         delta_FeH = 0.03
         delta_Y = 0.01
         delta_mass = 0.01
         delta_alpha = 0.1
         delta_f_ov = 0
         
      ! overshoot_f0 is changed along with overshoot_f
         ! f0_ov = f0_ov_div_f_ov * f_ov
         f0_ov_div_f_ov = 1  ! THIS SHOULD BE < 1

      ! calculating mode frequencies is a relatively costly process,
      ! so we don't want to do it for models that are not good candidates.
      ! i.e., we want to filter out the bad candidates using the following
      ! less expensive tests whenever possible.

         ! NOTE: if none of the models in a run pass these tests,
         ! then you will not get any total chi2 result for that run.
         ! in some situations that might not matter,
         ! but if you are eliminating too many candidates in this way,
         ! the search routines might not be getting enough valid results to work properly.
         ! So watch what you are doing!  If your search or scan is getting lots of
         ! runs that fail to give chi^2 results, you'll need to adjust the limits.
      
         ! don't consider models that aren't old enough
            min_age_limit = 1d6
         
         ! don't consider models with L_nuc/L less than this limit
            Lnuc_div_L_limit = 0.95 ! this rules out pre-zams models

         ! don't consider models with chi2_spectroscopic above this limit 
            chi2_spectroscopic_limit = 1d99

         ! don't consider models with chi2_delta_nu above this limit 
            chi2_delta_nu_limit = 1d99

         ! we calculate radial modes only if pass the previous checks
      
         ! calculating nonradial modes is much more expensive than radial ones.
         ! so we skip the nonradial calculation if the radial results are poor.

         ! don't consider models with chi2_radial above this limit 
            chi2_radial_limit = 1d99
         
      
      ! adjust max timestep depending on how close to target
      
         ! NOTE: if you set the timestep limits too large you run the risk of missing good chi^2 cases.
         ! but if they are very small, you will spend a lot of runtime calculating lots of frequencies
         ! for lots of models.  There is no standard set of best values for this.
         ! The choice will depend on the stage of evolution and how fast things are changing
         ! in the general region of the models with good chi2 values.  
         ! There is no alternative to trying things and tuning the controls for your problem.
      
         ! these are just default values -- you will probably need to adjust them for your problem.
         max_yrs_dt_when_cold = 1d7 ! when fail Lnuc/L, chi2_spectro, or ch2_delta_nu
         max_yrs_dt_when_warm = 1d5 ! when pass previous but fail chi2_radial; < max_yrs_dt_when_cold
         max_yrs_dt_when_hot = 1d5 ! when pass chi2_radial; < max_yrs_dt_when_warm
         
         max_yrs_dt_chi2_small_limit = 5d4 ! < max_yrs_dt_when_hot
         chi2_limit_for_small_timesteps = 30
         
         max_yrs_dt_chi2_smaller_limit = 5d4 ! < max_yrs_dt_chi2_small_limit
         chi2_limit_for_smaller_timesteps = -1d99 ! < chi2_limit_for_small_timesteps
         
         max_yrs_dt_chi2_smallest_limit = 3d4 ! < max_yrs_dt_chi2_smaller_limit
         chi2_limit_for_smallest_timesteps = -1d99 ! < chi2_limit_for_smaller_timesteps
      
      
      ! only calculate chi^2 if pass all the checks
   

      ! we need a way to decide when to stop an evolution run.
      ! the following limits are used for this.
      ! NOTE: we don't want to stop too soon, so these limits
         ! are only tested for models that are okay for the Lnuc_div_L_limit.
      
         ! logg_limit = logg_target + logg_sigma*sigmas_coeff_for_logg_limit
         ! logL_limit = logL_target + logL_sigma*sigmas_coeff_for_logL_limit
         ! Teff_limit = Teff_target + Teff_sigma*sigmas_coeff_for_Teff_limit
         ! logR_limit = logR_target + logR_sigma*sigmas_coeff_for_logR_limit
         ! surface_Z_div_X_limit = surface_Z_div_X_target + 
            ! surface_Z_div_X_sigma*sigmas_coeff_for_surface_Z_div_X_limit
         ! surface_He_limit = surface_He_target + &
            ! surface_He_sigma*sigmas_coeff_for_surface_He_limit
         ! Rcz_limit = Rcz_target + Rcz_sigma*sigmas_coeff_for_Rcz_limit
         ! csound_rms_limit = csound_rms_target + &
            ! csound_rms_sigma*sigmas_coeff_for_csound_rms_limit
         ! delta_nu_limit = delta_nu + &
            ! delta_nu_sigma*sigmas_coeff_for_delta_nu_limit
         
         ! only use limits with sigma_coeff /= 0
         ! if the sigma_coeff is > 0, then stop when value is > limit
         ! if the sigma_coeff is < 0, then stop when value is < limit
         ! so use positive sigma_coeff for values that are increasing (such as logL)
         ! and negative ones for values that are decreasing (logg, Teff, delta_nu)
         
         sigmas_coeff_for_logg_limit = 0 ! disable by setting to 0
         sigmas_coeff_for_logL_limit = 0 ! disable by setting to 0
         sigmas_coeff_for_Teff_limit = 0 ! disable by setting to 0
         sigmas_coeff_for_logR_limit = 0 ! disable by setting to 0
         sigmas_coeff_for_surface_Z_div_X_limit = 0 ! disable by setting to 0
         sigmas_coeff_for_surface_He_limit = 0 ! disable by setting to 0
         sigmas_coeff_for_Rcz_limit = 0 ! disable by setting to 0
         sigmas_coeff_for_csound_rms_limit = 0 ! disable by setting to 0
         sigmas_coeff_for_delta_nu_limit = 0 ! -5 ! disable by setting to 0
      
      
      ! you can stop the run if chi^2 is rising.
         
         ! here is a relative limit
         chi2_relative_increase_limit = 2.0
         limit_num_chi2_too_big = 3
         ! if limit_num_chi2_too_big consequtive chi2s
         ! are > chi2_relative_increase_limit times the best chi2 for the run,
         ! then stop the run.
         
         ! and this is an absolute limit
         chi2_search_limit1 = 3.0
         chi2_search_limit2 = 4.0
         ! if best chi2 for the run is <= chi2_search_limit1,
         ! then stop the run if chi2 >= chi2_search_limit2.
         
         
      ! if you are doing a search or scanning a grid, you can use previous results
      !    as a guide for when to stop a run
      
         min_num_samples_for_avg = 2 ! want at least this many samples to form averages
         max_num_samples_for_avg = 10 ! use this many of the best chi^2 samples for averages
         
         ! these use results for the best chi^2 model of the previous best samples
         avg_age_sigma_limit = 5 ! stop if age > avg age + this limit times sigma of avg age
         avg_model_number_sigma_limit = 5 ! ditto for model number
   
   
   ! surface corrections
      correction_scheme = 'kjeldsen' ! options are
         ! 'kjeldsen'   Correction of Kjeldsen et al. (2008)
         ! 'cubic'      Cubic correction of Ball & Gizon (2014, eqn 3)
         ! 'combined'   Combined correction of Ball & Gizon (2014, eq 4)
         ! ''           no corrections
      correction_factor = 1 
         ! use this fraction of the correction; set to 0 to skip doing corrections.
      l0_n_obs(1) = 10 ! the observed radial orders (ignored if < 0)
      l0_n_obs(2) = 11 
      l0_n_obs(3) = 12
      l0_n_obs(4) = 13
      l0_n_obs(5) = 14
      l0_n_obs(6) = 15
      l0_n_obs(7) = 16
      l0_n_obs(8) = 17
      l0_n_obs(9) = 18
      l0_n_obs(10) = 19
      l0_n_obs(11) = 20
      l0_n_obs(12) = 21
      l0_n_obs(13) = 22
      l0_n_obs(14) = 23
      l0_n_obs(15) = 24
      l0_n_obs(16) = 25
      l0_n_obs(17) = 26
      l0_n_obs(18) = 27
      l0_n_obs(19) = 28
         ! the observed radial orders are used in calculating surface corrections
         ! if <= 0, use default calculation for radial orders
      correction_b = 4.9d0
            
      
   ! output controls
   
      write_best_model_data_for_each_sample = .true.
      num_digits = 4 ! number of digits in sample number (with leading 0's)
      sample_results_prefix = 'outputs/sample_' 
         ! note that you can include a directory in the prefix if desired
      sample_results_postfix = '.data'
      
      write_fgong_for_each_model = .false.
      model_num_digits = 4 ! number of digits in model number (with leading 0's)
      fgong_prefix = 'fgong_' 
         ! note that you can include a directory in the prefix if desired
      fgong_postfix = '.data'
      
      write_fgong_for_best_model = .false.
      best_model_fgong_filename = 'best.fgong'
      
      write_profile_for_best_model = .false.
      best_model_profile_filename = 'best.profile'
      
      save_model_for_best_model = .false.
      best_model_save_model_filename = 'best.mod'
      
      save_info_for_last_model = .false.
      last_model_save_info_filename = 'last_model.info'
      
      shell_script_for_each_sample = '' ! executed after at end of sample run
      shell_script_num_string_char = '#' ! replace by num string for sample
      ! Do whatever you like in the script.  e.g.,
      ! 'cp best.mod outputs/sample#_best.mod; cp LOGS/history.data outputs/sample#_history.data'
      
   
   ! miscellaneous
   
      ! save all control settings to file
         save_controls = .true. ! dumps &astero_search_controls controls to file
         save_controls_filename = '' ! if empty, uses a default name
      
      
      ! composition control
         Y_frac_he3 = 1d-4 ! = xhe3/(xhe3 + xhe4); Y = xhe3 + xhe4

   
      ! save an eigenfunction
         save_mode_model_number = 0
         save_mode_filename = ''
         el_to_save = 0
         order_to_save = 0


      ! options for input model to pulsation codes
         add_atmosphere = .false. 
            ! if true, then star adds atmosphere before passing model to adipls
            ! the atmosphere model is determined by the mesa/star control which_atm_option
            ! it should either be one of the T(tau) integration options or Paczynski_grey,
               ! scheme inspired by B. Paczynski, 1969, Acta Astr., vol. 19, 1.
               ! which takes into account radiation dilution when tau < 2/3,
         keep_surface_point = .false.
            ! if true, keep k=1 point of model.
         add_center_point = .true. 
            ! if true, add point at r=0

      
      ! oscillation analysis

         oscillation_code = 'adipls' ! or 'gyre'   <<< lowercase
         !oscillation_code = 'gyre'
         !trace_time_in_oscillation_code = .true.
         
         
      ! gyre controls
      
         gyre_input_file = 'gyre.in'

      ! adipls controls
         
         do_redistribute_mesh = .false.
         
            ! note: number of zones for redistribute is set in redistrb.c.pruned.in
            ! if you set this false, then the mesh from star is used directly.
            ! if you set this true, then astero calls adipls redistb before doing
            ! the frequency analysis.
            
            
         ! iscan for adipls = the following factor times the given number of observed modes
         iscan_factor_l0 = 15
         iscan_factor_l1 = 15
         iscan_factor_l2 = 15
         iscan_factor_l3 = 15
         ! frequency range is set from observed frequencies times these factors
         nu_lower_factor = 0.8
         nu_upper_factor = 1.2


   ! include other inlists
   
         read_extra_astero_search_inlist1 = .false.
         extra_astero_search_inlist1_name = 'undefined'
            ! if read_extra_astero_search_inlist1 is true, then read this namelist file
   
         read_extra_astero_search_inlist2 = .false.
         extra_astero_search_inlist2_name = 'undefined'
            ! if read_extra_astero_search_inlist2 is true, then read this namelist file
   
         read_extra_astero_search_inlist3 = .false.
         extra_astero_search_inlist3_name = 'undefined'
            ! if read_extra_astero_search_inlist3 is true, then read this namelist file
   
         read_extra_astero_search_inlist4 = .false.
         extra_astero_search_inlist4_name = 'undefined'
            ! if read_extra_astero_search_inlist4 is true, then read this namelist file
   
         read_extra_astero_search_inlist5 = .false.
         extra_astero_search_inlist5_name = 'undefined'
            ! if read_extra_astero_search_inlist5 is true, then read this namelist file


/ ! end astero_search_controls


! PLEASE NOTE:
! the following is just an example -- it may NOT be a complete set of options.
! see star/astero_adipls/defaults/astero_pgstar_controls.defaults
! for current set of controls and their default values.

&astero_pgstar_controls

   ! PGSTAR Eschelle plot
   
         !echelle_win_flag = .true.

         echelle_win_width = 6
         echelle_win_aspect_ratio = 0.62 ! aspect_ratio = height/width
         
         echelle_xleft = 0.12
         echelle_xright = 0.96
         echelle_ybot = 0.12
         echelle_ytop = 0.90
         echelle_txt_scale = 1.0
         echelle_title = 'echelle'      
         
         echelle_delta_nu = 0 ! <= 0 means use seismic delta_nu from search inlist
         
         show_echelle_annotation1 = .true.
         show_echelle_annotation2 = .false.
         show_echelle_annotation3 = .false.
         
         ! file output
         !echelle_file_flag = .true.
         echelle_file_dir = 'png'
         echelle_file_prefix = 'echelle'
         echelle_best_model_file_prefix = 'best_echelle' ! if non-empty save best chi^2 model file
            ! e.g. 'best_echelle'
            ! note: this is enabled even if echelle_file_flag = .false.
         echelle_file_cnt = 1 ! output when mod(model_number,echelle_file_cnt)==0
         echelle_file_width = -1 ! negative means use same value as for window
         echelle_file_aspect_ratio = -1 ! negative means use same value as for window


   ! PGSTAR ratios plot
   
         !ratios_win_flag = .true.

         ratios_win_width = 3.5
         ratios_win_aspect_ratio = 1.2 ! aspect_ratio = height/width
         
         ratios_xleft = 0.20
         ratios_xright = 0.96
         ratios_ybot = 0.12
         ratios_ytop = 0.90
         ratios_txt_scale = 1.0
         ratios_title = 'ratios'      
         
         ratios_margin_sig_factor = 1 ! controls horizontal margin in units of max sigma

         show_ratios_annotation1 = .true.
         show_ratios_annotation2 = .false.
         show_ratios_annotation3 = .false.
         
         ! file output
         !ratios_file_flag = .true.
         ratios_file_dir = 'png'
         ratios_file_prefix = 'ratios'
         ratios_best_model_file_prefix = '' ! if non-empty save best chi^2 model file
            ! e.g., 'best_ratios'
            ! note: this is enabled even if ratios_file_flag = .false.
         ratios_file_cnt = 5 ! output when mod(model_number,ratios_file_cnt)==0
         ratios_file_width = -1 ! negative means use same value as for window
         ratios_file_aspect_ratio = -1 ! negative means use same value as for window


/ ! end astero_pgstar_controls

