##----------------------------------------------
## mclachlan grhydro rns
##----------------------------------------------
ActiveThorns = "Time MoL"
ActiveThorns = "Coordbase CartGrid3d Boundary StaticConformal"
ActiveThorns = "SymBase ADMBase TmunuBase HydroBase InitBase ADMCoupling ADMMacros"
ActiveThorns = "IOUtil Formaline"
ActiveThorns = "SpaceMask CoordGauge Constants LocalReduce aeilocalinterp LoopControl"
ActiveThorns = "Carpet CarpetLib CarpetReduce CarpetRegrid2 CarpetInterp CarpetEvolutionMask"
ActiveThorns = "CarpetIOASCII CarpetIOScalar CarpetIOHDF5 CarpetIOBasic"

ActiveThorns = "ML_ADMConstraints NaNChecker"

# grid parameters
CartGrid3D::type         = "coordbase"
CartGrid3D::domain       = "full"
CartGrid3D::avoid_origin = "no"
CoordBase::xmin =   0.0
CoordBase::ymin =   0.0
CoordBase::zmin =   0.0
CoordBase::xmax = 240.0
CoordBase::ymax = 240.0
CoordBase::zmax = 240.0
CoordBase::dx   = 12
CoordBase::dy   = 12
CoordBase::dz   = 12

CoordBase::boundary_size_x_lower        = 3
CoordBase::boundary_size_y_lower        = 3
CoordBase::boundary_size_z_lower        = 3
CoordBase::boundary_size_x_upper        = 3
CoordBase::boundary_size_y_upper        = 3
CoordBase::boundary_size_z_upper        = 3
CoordBase::boundary_shiftout_x_lower    = 1
CoordBase::boundary_shiftout_y_lower    = 1
CoordBase::boundary_shiftout_z_lower    = 1
CoordBase::boundary_shiftout_x_upper    = 0
CoordBase::boundary_shiftout_y_upper    = 0
CoordBase::boundary_shiftout_z_upper    = 0

ActiveThorns = "ReflectionSymmetry RotatingSymmetry90 Slab"

ReflectionSymmetry::reflection_z   = yes
ReflectionSymmetry::avoid_origin_z = no

CarpetRegrid2::symmetry_rotating90    = "yes"

TmunuBase::stress_energy_storage = yes
TmunuBase::stress_energy_at_RHS  = yes
TmunuBase::timelevels            =  1
TmunuBase::prolongation_type     = none
TmunuBase::support_old_CalcTmunu_mechanism = "no"

HydroBase::timelevels            = 3

ADMMacros::spatial_order = 4

ADMBase::metric_type     = "physical"

ML_ADMConstraints::timelevels = 3

SpaceMask::use_mask      = "yes"

Cactus::terminate           = "time"
Cactus::cctk_final_time     = 1000000

Carpet::domain_from_coordbase = "yes"
Carpet::enable_all_storage    = no
Carpet::use_buffer_zones      = "yes"

Carpet::poison_new_timelevels    = "yes"
Carpet::check_for_poison         = "no"
Carpet::poison_value             = 113

Carpet::init_3_timelevels        = no
Carpet::init_fill_timelevels     = "yes"

CarpetLib::poison_new_memory = "yes"
CarpetLib::poison_value      = 114
carpetlib::print_memstats_every      = 32768
CarpetLib::check_bboxes              = "no"
CarpetLib::interleave_communications = "yes"
CarpetLib::combine_sends             = "yes"

CarpetInterp::tree_search       = "yes"
CarpetInterp::check_tree_search = "no"

# ------------------------------------
# system specific Carpet paramters
# ------------------------------------
Carpet::max_refinement_levels    = 10
driver::ghost_size               = 3
Carpet::prolongation_order_space = 5
Carpet::prolongation_order_time  = 2

CarpetRegrid2::regrid_every = 0
CarpetRegrid2::num_centres  = 1

CarpetRegrid2::num_levels_1 = 5
CarpetRegrid2::radius_1[1]  = 120.0
CarpetRegrid2::radius_1[2]  =  60.0
CarpetRegrid2::radius_1[3]  =  30.0
CarpetRegrid2::radius_1[4]  =  15.0

time::dtfac = 0.25
MoL::ODE_Method             = "rk4"
MoL::MoL_Intermediate_Steps = 4
MoL::MoL_Num_Scratch_Levels = 1

# check all physical variables for NaNs
NaNChecker::check_every = 1
NaNChecker::action_if_found = "just warn" #"terminate", "just warn", "abort"
NaNChecker::check_vars = "ADMBase::metric ADMBase::lapse ADMBase::shift HydroBase::rho HydroBase::eps HydroBase::press HydroBase::vel"

## Lapse Condition:  partial_t alpha = - alpha K
## Shift Condition:  partial_t beta^i = 0

# Hydro paramters
ActiveThorns = "EOS_Omni"
ActiveThorns = "GRHydro"



EOS_Omni::poly_gamma                   = 2
EOS_Omni::poly_k                       = 100
EOS_Omni::gl_gamma                     = 2
EOS_Omni::gl_k                         = 100
#EOS_Omni::poly_gamma_ini               = 2

HydroBase::evolution_method      = "GRHydro"

GRHydro::riemann_solver          = "HLLE"
GRHydro::GRHydro_eos_type        = "General"
GRHydro::GRHydro_eos_table       = "Ideal_Fluid"
GRHydro::recon_method            = "weno-z"
GRHydro::GRHydro_stencil         = 3
GRHydro::bound                   = "none"
GRHydro::rho_abs_min             = 1.e-11
GRHydro::GRHydro_atmo_tolerance  = 0.01

# Parameters are defaults, which in turn are from Colella & Sekora 2008 and                          
# McCorquodale & Colella 2011                                                                        
#GRHydro::use_optimized_ppm       = "yes"                                                            
GRHydro::sync_conserved_only     = "yes"
GRHydro::reconstruct_Wv          = "yes"
GRHydro::c2p_resort_to_bisection = "yes"
GRHydro::use_cxx_code            = "yes"
GRHydro::use_evolution_mask      = "always"

#GRHydro::transport_constraints     = "yes"                                                          
#GRHydro::track_divB                = "yes"                                                          
#GRHydro::calculate_bcom            = "no"                                                           
#GRHydro::clean_divergence            = "no"                                                         
GRHydro::Grhydro_MaxNumConstrainedVars = 33
GRHydro::GRHydro_MaxNumEvolvedVars     = 10

#---------------------------------------------------------------------
#GRHydro::GRHydro = 18 # Tmunu(10), rho,press,eps,w_lorentz,vel, tau
#GRHydro::GRHydro = 10 # gij(6), alpha, beta(3)
#---------------------------------------------------------------------

ActiveThorns = "GenericFD NewRad"
ActiveThorns = "ML_BSSN ML_BSSN_Helper"
ADMBase::evolution_method        = "ML_BSSN"
ADMBase::lapse_evolution_method  = "ML_BSSN"
ADMBase::shift_evolution_method  = "ML_BSSN"
ADMBase::dtlapse_evolution_method= "ML_BSSN"
ADMBase::dtshift_evolution_method= "ML_BSSN"

ML_BSSN::timelevels                     = 3
#ML_BSSN::initial_boundary_condition     = "extrapolate-gammas"
ML_BSSN::my_boundary_condition          = "none"
ML_BSSN::my_rhs_boundary_condition      = "none"
Boundary::radpower                      = 2 
ML_BSSN::A_bound                        = "skip"

# not really needed I think but who knows what NewRad uses
##(update parametr) ML_BSSN::LapseAdvectionCoeff = 1.0
ML_BSSN::advectLapse         = 0
ML_BSSN::advectShift         = 0
ML_BSSN::harmonicN           = 1      # 1+log
ML_BSSN::harmonicF           = 2.0    # 1+log
ML_BSSN::ShiftGammaCoeff     = 0.75
ML_BSSN::AlphaDriver         = 0.0
ML_BSSN::BetaDriver          = 1.0


ML_BSSN::MinimumLapse = 1.0e-8
ML_BSSN::ML_log_confac_bound = "none"
ML_BSSN::ML_metric_bound     = "none"
ML_BSSN::ML_Gamma_bound      = "none"
ML_BSSN::ML_trace_curv_bound = "none"
ML_BSSN::ML_curv_bound       = "none"
ML_BSSN::ML_lapse_bound      = "none"
ML_BSSN::ML_dtlapse_bound    = "none"
ML_BSSN::ML_shift_bound      = "none"
ML_BSSN::ML_dtshift_bound    = "none"

ML_BSSN::UseSpatialBetaDriver = 1
ML_BSSN::SpatialBetaDriverRadius = 50

##########################################
## ML_BSSN::apply_dissipation   = "never"
## Setup dissipation
##########################################

# init parameters
InitBase::initial_data_setup_method = "init_some_levels"

ActiveThorns="Hydro_RNSID"

ADMBase::initial_data  = "hydro_rnsid"
ADMBase::initial_lapse = "hydro_rnsid"
ADMBase::initial_shift = "hydro_rnsid"
ADMBase::initial_dtlapse = "zero"
ADMBase::initial_dtshift = "zero"


Hydro_rnsid::save_2Dmodel    = "yes"
Hydro_rnsid::recover_2Dmodel = "yes"

Hydro_rnsid::accuracy  = 1e-10
Hydro_rnsid::RNS_Gamma = 2
Hydro_rnsid::RNS_K     = 100
Hydro_rnsid::rho_central = 0.00128
Hydro_rnsid::axes_ratio  = 0.4
Hydro_rnsid::rotation_type = "diff"
Hydro_rnsid::A_diff        = 1
Hydro_rnsid::model2D_file  = "${parfile}/B12.h5"

#################################################

IOBasic::outInfo_every              = 512
IOBasic::outInfo_vars               = "Carpet::physical_time_per_hour HydroBase::rho ADMBase::lapse"

IO::out_dir      = $parfile

##------------------------------------------------                                                   
##  Files created by                                                                                 
##    - 0D ASCII output created by CarpetIOASCII                                                     
##    - ASCII output created by CarpetIOScalar                                                       
##  have the seme format                                                                             
##------------------------------------------------                                                   
IOScalar::outScalar_dir  = "${parfile}/data/Scalar"
CarpetIOASCII::out0D_dir = "${parfile}/data/Scalar"
CarpetIOASCII::out1D_dir = "${parfile}/data/1d"
##------------------------------------------------                                                   
##  Directory for HDF5 output                                                                        
##------------------------------------------------                                                   
IOHDF5::out_dir    = "${parfile}/data/"
CarpetIOHDF5::out0D_dir = "${parfile}/data/H5_0d"
CarpetIOHDF5::out2D_dir = "${parfile}/data/H5_2d"
CarpetIOHDF5::out3D_dir = "${parfile}/data/H5_3d"

CarpetIOHDF5::one_file_per_group             = "no"    # this is required by multipatch
CarpetIOHDF5::open_one_input_file_at_a_time  = "yes"
CarpetIOHDF5::out2D_xy                       = "yes"
CarpetIOHDF5::out2D_xz                       = "yes"
CarpetIOHDF5::out2D_yz                       = "no"
CarpetIOHDF5::out2D_xyplane_z                = 0.0
CarpetIOHDF5::out2D_vars      = "
  HydroBase::rho
  HydroBase::vel
  HydroBase::press
  HydroBase::eps
"

IOHDF5::out3D_every = 32768 # = every_coarse
IOHDF5::out3D_vars  = "
  HydroBase::rho
  HydroBase::vel
  HydroBase::press
  HydroBase::eps
"

IOScalar::outScalar_every = 8192
IOScalar::all_reductions_in_one_file = "no"
IOScalar::one_file_per_group = yes
IOScalar::outScalar_reductions = "maximum"
IOScalar::outScalar_vars  = "
 HydroBase::rho
 HydroBase::press
 HydroBase::eps
 HydroBase::vel
"

IOASCII::one_file_per_group = yes
IOASCII::output_symmetry_points = no
IOASCII::out3D_ghosts           = no
IOASCII::out3D_outer_ghosts     = no

IOASCII::out1D_every     = 8192
IOASCII::out1D_vars      = "
 HydroBase::rho
 HydroBase::press
 HydroBase::eps
 HydroBase::vel
 ADMBase::lapse
 ADMBase::metric
 ADMBase::curv
 ML_ADMConstraints::ML_Ham
 ML_ADMConstraints::ML_mom 
"

IOASCII::out2D_every     = 8192
IOASCII::out2D_xz       = "yes"
IOASCII::out2D_vars      = "
 HydroBase::rho
 HydroBase::press
 HydroBase::vel
"

#------------------------------------------------------------------------------
# Timer Report
#------------------------------------------------------------------------------

ActiveThorns = "TimerReport" 

#------------------------------------------------------------------------------
# Checkpoint/Recovery:
#------------------------------------------------------------------------------
IOHDF5::checkpoint                  = "yes"
IO::checkpoint_dir                 = ${parfile}
IO::recover_dir                    = ${parfile}
#IO::checkpoint_dir                  = "../CHECKPOINTS"
#IO::recover_dir                     = "../CHECKPOINTS"
IO::checkpoint_ID                   = "no"
IO::checkpoint_every_walltime_hours = 0.5
IO::checkpoint_keep                 = 2
IO::checkpoint_on_terminate         = "yes"
IO::recover     = "autoprobe"


##----------------------------------------------
## END mclachlan grhydro rns
##----------------------------------------------
