














































 














































































 


































































































































































 

















































































































































































































































































































































































































































 






































































































 










 








































































































































































































































 










                                
                                

                                
                                

                                
                                

                                
























































































































                                







 

















































































































 

integer function GRHydro_Startup()

  USE GRHydro_Scalars

  implicit none

  REAL*8 GRHydro_Y_e_max
  integer, parameter :: cctki_use_GRHydro_Y_e_max = kind(GRHydro_Y_e_max)
  REAL*8 GRHydro_Y_e_min
  integer, parameter :: cctki_use_GRHydro_Y_e_min = kind(GRHydro_Y_e_min)
  REAL*8 GRHydro_atmo_tolerance
  integer, parameter :: cctki_use_GRHydro_atmo_tolerance = kind(GRHydro_atmo_tolerance)
  REAL*8 GRHydro_del_ptol
  integer, parameter :: cctki_use_GRHydro_del_ptol = kind(GRHydro_del_ptol)
  REAL*8 GRHydro_eos_rf_prec
  integer, parameter :: cctki_use_GRHydro_eos_rf_prec = kind(GRHydro_eos_rf_prec)
  REAL*8 GRHydro_eps_min
  integer, parameter :: cctki_use_GRHydro_eps_min = kind(GRHydro_eps_min)
  REAL*8 GRHydro_hot_atmo_Y_e
  integer, parameter :: cctki_use_GRHydro_hot_atmo_Y_e = kind(GRHydro_hot_atmo_Y_e)
  REAL*8 GRHydro_hot_atmo_temp
  integer, parameter :: cctki_use_GRHydro_hot_atmo_temp = kind(GRHydro_hot_atmo_temp)
  REAL*8 GRHydro_lorentz_overshoot_cutoff
  integer, parameter :: cctki_use_GRHydro_lorentz_overshoot_cutoff = kind(GRHydro_lorentz_overshoot_cutoff)
  REAL*8 GRHydro_max_temp
  integer, parameter :: cctki_use_GRHydro_max_temp = kind(GRHydro_max_temp)
  REAL*8 GRHydro_perc_ptol
  integer, parameter :: cctki_use_GRHydro_perc_ptol = kind(GRHydro_perc_ptol)
  REAL*8 GRHydro_rho_central
  integer, parameter :: cctki_use_GRHydro_rho_central = kind(GRHydro_rho_central)
  REAL*8 Tmunu_damping_radius_max
  integer, parameter :: cctki_use_Tmunu_damping_radius_max = kind(Tmunu_damping_radius_max)
  REAL*8 Tmunu_damping_radius_min
  integer, parameter :: cctki_use_Tmunu_damping_radius_min = kind(Tmunu_damping_radius_min)
  REAL*8 atmo_falloff_power
  integer, parameter :: cctki_use_atmo_falloff_power = kind(atmo_falloff_power)
  REAL*8 atmo_falloff_radius
  integer, parameter :: cctki_use_atmo_falloff_radius = kind(atmo_falloff_radius)
  REAL*8 atmo_tolerance_power
  integer, parameter :: cctki_use_atmo_tolerance_power = kind(atmo_tolerance_power)
  REAL*8 atmo_tolerance_radius
  integer, parameter :: cctki_use_atmo_tolerance_radius = kind(atmo_tolerance_radius)
  REAL*8 c2p_reset_pressure_to_value
  integer, parameter :: cctki_use_c2p_reset_pressure_to_value = kind(c2p_reset_pressure_to_value)
  REAL*8 comoving_factor
  integer, parameter :: cctki_use_comoving_factor = kind(comoving_factor)
  REAL*8 comoving_tanh_factor
  integer, parameter :: cctki_use_comoving_tanh_factor = kind(comoving_tanh_factor)
  REAL*8 comoving_tanh_offset
  integer, parameter :: cctki_use_comoving_tanh_offset = kind(comoving_tanh_offset)
  REAL*8 enhanced_ppm_C2
  integer, parameter :: cctki_use_enhanced_ppm_C2 = kind(enhanced_ppm_C2)
  REAL*8 enhanced_ppm_C3
  integer, parameter :: cctki_use_enhanced_ppm_C3 = kind(enhanced_ppm_C3)
  REAL*8 initial_Gamma
  integer, parameter :: cctki_use_initial_Gamma = kind(initial_Gamma)
  REAL*8 initial_atmosphere_factor
  integer, parameter :: cctki_use_initial_atmosphere_factor = kind(initial_atmosphere_factor)
  REAL*8 initial_k
  integer, parameter :: cctki_use_initial_k = kind(initial_k)
  REAL*8 initial_rho_abs_min
  integer, parameter :: cctki_use_initial_rho_abs_min = kind(initial_rho_abs_min)
  REAL*8 initial_rho_rel_min
  integer, parameter :: cctki_use_initial_rho_rel_min = kind(initial_rho_rel_min)
  REAL*8 kap_dc
  integer, parameter :: cctki_use_kap_dc = kind(kap_dc)
  REAL*8 max_magnetic_to_gas_pressure_ratio
  integer, parameter :: cctki_use_max_magnetic_to_gas_pressure_ratio = kind(max_magnetic_to_gas_pressure_ratio)
  REAL*8 min_tracer
  integer, parameter :: cctki_use_min_tracer = kind(min_tracer)
  REAL*8 mp5_alpha
  integer, parameter :: cctki_use_mp5_alpha = kind(mp5_alpha)
  REAL*8 mp5_eps
  integer, parameter :: cctki_use_mp5_eps = kind(mp5_eps)
  REAL*8 myfloor
  integer, parameter :: cctki_use_myfloor = kind(myfloor)
  REAL*8 ppm_epsilon
  integer, parameter :: cctki_use_ppm_epsilon = kind(ppm_epsilon)
  REAL*8 ppm_epsilon_shock
  integer, parameter :: cctki_use_ppm_epsilon_shock = kind(ppm_epsilon_shock)
  REAL*8 ppm_eta1
  integer, parameter :: cctki_use_ppm_eta1 = kind(ppm_eta1)
  REAL*8 ppm_eta2
  integer, parameter :: cctki_use_ppm_eta2 = kind(ppm_eta2)
  REAL*8 ppm_k0
  integer, parameter :: cctki_use_ppm_k0 = kind(ppm_k0)
  REAL*8 ppm_omega1
  integer, parameter :: cctki_use_ppm_omega1 = kind(ppm_omega1)
  REAL*8 ppm_omega2
  integer, parameter :: cctki_use_ppm_omega2 = kind(ppm_omega2)
  REAL*8 ppm_omega_tracer
  integer, parameter :: cctki_use_ppm_omega_tracer = kind(ppm_omega_tracer)
  REAL*8 ppm_small
  integer, parameter :: cctki_use_ppm_small = kind(ppm_small)
  REAL*8 rho_abs_min
  integer, parameter :: cctki_use_rho_abs_min = kind(rho_abs_min)
  REAL*8 rho_abs_min_after_recovery
  integer, parameter :: cctki_use_rho_abs_min_after_recovery = kind(rho_abs_min_after_recovery)
  REAL*8 rho_rel_min
  integer, parameter :: cctki_use_rho_rel_min = kind(rho_rel_min)
  REAL*8 setcharmax
  integer, parameter :: cctki_use_setcharmax = kind(setcharmax)
  REAL*8 setcharmin
  integer, parameter :: cctki_use_setcharmin = kind(setcharmin)
  REAL*8 sqrtdet_thr
  integer, parameter :: cctki_use_sqrtdet_thr = kind(sqrtdet_thr)
  REAL*8 tau_rel_min
  integer, parameter :: cctki_use_tau_rel_min = kind(tau_rel_min)
  REAL*8 weno_eps
  integer, parameter :: cctki_use_weno_eps = kind(weno_eps)
  integer*8 Avec_gauge
  integer, parameter :: cctki_use_Avec_gauge = kind(Avec_gauge)
  integer*8 EoS_Change_type
  integer, parameter :: cctki_use_EoS_Change_type = kind(EoS_Change_type)
  integer*8 GRHydro_c2p_failed_action
  integer, parameter :: cctki_use_GRHydro_c2p_failed_action = kind(GRHydro_c2p_failed_action)
  integer*8 GRHydro_eos_table
  integer, parameter :: cctki_use_GRHydro_eos_table = kind(GRHydro_eos_table)
  integer*8 GRHydro_eos_type
  integer, parameter :: cctki_use_GRHydro_eos_type = kind(GRHydro_eos_type)
  integer*8 HLLE_type
  integer, parameter :: cctki_use_HLLE_type = kind(HLLE_type)
  integer*8 bound
  integer, parameter :: cctki_use_bound = kind(bound)
  integer*8 comoving_attenuate
  integer, parameter :: cctki_use_comoving_attenuate = kind(comoving_attenuate)
  integer*8 comoving_v_method
  integer, parameter :: cctki_use_comoving_v_method = kind(comoving_v_method)
  integer*8 gradient_method
  integer, parameter :: cctki_use_gradient_method = kind(gradient_method)
  integer*8 left_eigenvectors
  integer, parameter :: cctki_use_left_eigenvectors = kind(left_eigenvectors)
  integer*8 method_type
  integer, parameter :: cctki_use_method_type = kind(method_type)
  integer*8 numerical_viscosity
  integer, parameter :: cctki_use_numerical_viscosity = kind(numerical_viscosity)
  integer*8 particle_interpolator
  integer, parameter :: cctki_use_particle_interpolator = kind(particle_interpolator)
  integer*8 ppm_flatten
  integer, parameter :: cctki_use_ppm_flatten = kind(ppm_flatten)
  integer*8 psidcspeed
  integer, parameter :: cctki_use_psidcspeed = kind(psidcspeed)
  integer*8 recon_method
  integer, parameter :: cctki_use_recon_method = kind(recon_method)
  integer*8 recon_vars
  integer, parameter :: cctki_use_recon_vars = kind(recon_vars)
  integer*8 riemann_solver
  integer, parameter :: cctki_use_riemann_solver = kind(riemann_solver)
  integer*8 tvd_limiter
  integer, parameter :: cctki_use_tvd_limiter = kind(tvd_limiter)
  integer*8 use_evolution_mask
  integer, parameter :: cctki_use_use_evolution_mask = kind(use_evolution_mask)
  INTEGER*4 Check_Rho_Minimum
  integer, parameter :: cctki_use_Check_Rho_Minimum = kind(Check_Rho_Minimum)
  INTEGER*4 EoS_Change
  integer, parameter :: cctki_use_EoS_Change = kind(EoS_Change)
  INTEGER*4 GRHydro_MaxNumConstrainedVars
  integer, parameter :: cctki_use_GRHydro_MaxNumConstrainedVars = kind(GRHydro_MaxNumConstrainedVars)
  INTEGER*4 GRHydro_MaxNumEvolvedVars
  integer, parameter :: cctki_use_GRHydro_MaxNumEvolvedVars = kind(GRHydro_MaxNumEvolvedVars)
  INTEGER*4 GRHydro_MaxNumEvolvedVarsSlow
  integer, parameter :: cctki_use_GRHydro_MaxNumEvolvedVarsSlow = kind(GRHydro_MaxNumEvolvedVarsSlow)
  INTEGER*4 GRHydro_MaxNumSandRVars
  integer, parameter :: cctki_use_GRHydro_MaxNumSandRVars = kind(GRHydro_MaxNumSandRVars)
  INTEGER*4 GRHydro_NaN_verbose
  integer, parameter :: cctki_use_GRHydro_NaN_verbose = kind(GRHydro_NaN_verbose)
  INTEGER*4 GRHydro_c2p_reset_eps_tau_hot_eos
  integer, parameter :: cctki_use_GRHydro_c2p_reset_eps_tau_hot_eos = kind(GRHydro_c2p_reset_eps_tau_hot_eos)
  INTEGER*4 GRHydro_c2p_warn_from_reflevel
  integer, parameter :: cctki_use_GRHydro_c2p_warn_from_reflevel = kind(GRHydro_c2p_warn_from_reflevel)
  INTEGER*4 GRHydro_c2p_warnlevel
  integer, parameter :: cctki_use_GRHydro_c2p_warnlevel = kind(GRHydro_c2p_warnlevel)
  INTEGER*4 GRHydro_countmax
  integer, parameter :: cctki_use_GRHydro_countmax = kind(GRHydro_countmax)
  INTEGER*4 GRHydro_countmin
  integer, parameter :: cctki_use_GRHydro_countmin = kind(GRHydro_countmin)
  INTEGER*4 GRHydro_enable_internal_excision
  integer, parameter :: cctki_use_GRHydro_enable_internal_excision = kind(GRHydro_enable_internal_excision)
  INTEGER*4 GRHydro_eos_hot_eps_fix
  integer, parameter :: cctki_use_GRHydro_eos_hot_eps_fix = kind(GRHydro_eos_hot_eps_fix)
  INTEGER*4 GRHydro_eos_hot_prim2con_warn
  integer, parameter :: cctki_use_GRHydro_eos_hot_prim2con_warn = kind(GRHydro_eos_hot_prim2con_warn)
  INTEGER*4 GRHydro_hydro_excision
  integer, parameter :: cctki_use_GRHydro_hydro_excision = kind(GRHydro_hydro_excision)
  INTEGER*4 GRHydro_oppm_reflevel
  integer, parameter :: cctki_use_GRHydro_oppm_reflevel = kind(GRHydro_oppm_reflevel)
  INTEGER*4 GRHydro_polish
  integer, parameter :: cctki_use_GRHydro_polish = kind(GRHydro_polish)
  INTEGER*4 GRHydro_stencil
  integer, parameter :: cctki_use_GRHydro_stencil = kind(GRHydro_stencil)
  INTEGER*4 WENO_order
  integer, parameter :: cctki_use_WENO_order = kind(WENO_order)
  INTEGER*4 apply_H_viscosity
  integer, parameter :: cctki_use_apply_H_viscosity = kind(apply_H_viscosity)
  INTEGER*4 c2p_reset_pressure
  integer, parameter :: cctki_use_c2p_reset_pressure = kind(c2p_reset_pressure)
  INTEGER*4 c2p_resort_to_bisection
  integer, parameter :: cctki_use_c2p_resort_to_bisection = kind(c2p_resort_to_bisection)
  INTEGER*4 calculate_bcom
  integer, parameter :: cctki_use_calculate_bcom = kind(calculate_bcom)
  INTEGER*4 check_for_trivial_rp
  integer, parameter :: cctki_use_check_for_trivial_rp = kind(check_for_trivial_rp)
  INTEGER*4 clean_divergence
  integer, parameter :: cctki_use_clean_divergence = kind(clean_divergence)
  INTEGER*4 con2prim_oct_hack
  integer, parameter :: cctki_use_con2prim_oct_hack = kind(con2prim_oct_hack)
  INTEGER*4 decouple_normal_Bfield
  integer, parameter :: cctki_use_decouple_normal_Bfield = kind(decouple_normal_Bfield)
  INTEGER*4 eno_order
  integer, parameter :: cctki_use_eno_order = kind(eno_order)
  INTEGER*4 evolve_tracer
  integer, parameter :: cctki_use_evolve_tracer = kind(evolve_tracer)
  INTEGER*4 mp5_adaptive_eps
  integer, parameter :: cctki_use_mp5_adaptive_eps = kind(mp5_adaptive_eps)
  INTEGER*4 number_of_arrays
  integer, parameter :: cctki_use_number_of_arrays = kind(number_of_arrays)
  INTEGER*4 number_of_particles
  integer, parameter :: cctki_use_number_of_particles = kind(number_of_particles)
  INTEGER*4 number_of_tracers
  integer, parameter :: cctki_use_number_of_tracers = kind(number_of_tracers)
  INTEGER*4 particle_interpolation_order
  integer, parameter :: cctki_use_particle_interpolation_order = kind(particle_interpolation_order)
  INTEGER*4 ppm_detect
  integer, parameter :: cctki_use_ppm_detect = kind(ppm_detect)
  INTEGER*4 ppm_mppm
  integer, parameter :: cctki_use_ppm_mppm = kind(ppm_mppm)
  INTEGER*4 ppm_mppm_debug_eigenvalues
  integer, parameter :: cctki_use_ppm_mppm_debug_eigenvalues = kind(ppm_mppm_debug_eigenvalues)
  INTEGER*4 reconstruct_Wv
  integer, parameter :: cctki_use_reconstruct_Wv = kind(reconstruct_Wv)
  INTEGER*4 reconstruct_temper
  integer, parameter :: cctki_use_reconstruct_temper = kind(reconstruct_temper)
  INTEGER*4 set_trivial_rp_grid_function
  integer, parameter :: cctki_use_set_trivial_rp_grid_function = kind(set_trivial_rp_grid_function)
  INTEGER*4 sources_spatial_order
  integer, parameter :: cctki_use_sources_spatial_order = kind(sources_spatial_order)
  INTEGER*4 sync_conserved_only
  integer, parameter :: cctki_use_sync_conserved_only = kind(sync_conserved_only)
  INTEGER*4 track_divB
  integer, parameter :: cctki_use_track_divB = kind(track_divB)
  INTEGER*4 transport_constraints
  integer, parameter :: cctki_use_transport_constraints = kind(transport_constraints)
  INTEGER*4 use_MoL_slow_multirate_sector
  integer, parameter :: cctki_use_use_MoL_slow_multirate_sector = kind(use_MoL_slow_multirate_sector)
  INTEGER*4 use_enhanced_ppm
  integer, parameter :: cctki_use_use_enhanced_ppm = kind(use_enhanced_ppm)
  INTEGER*4 use_min_tracer
  integer, parameter :: cctki_use_use_min_tracer = kind(use_min_tracer)
  INTEGER*4 use_optimized_ppm
  integer, parameter :: cctki_use_use_optimized_ppm = kind(use_optimized_ppm)
  INTEGER*4 use_weighted_fluxes
  integer, parameter :: cctki_use_use_weighted_fluxes = kind(use_weighted_fluxes)
  INTEGER*4 weno_adaptive_epsilon
  integer, parameter :: cctki_use_weno_adaptive_epsilon = kind(weno_adaptive_epsilon)
  INTEGER*4 wk_atmosphere
  integer, parameter :: cctki_use_wk_atmosphere = kind(wk_atmosphere)
  COMMON /GRHydrorest/GRHydro_Y_e_max, GRHydro_Y_e_min, GRHydro_atmo_tolerance, GRHydro_del_ptol, GRHydro_eos_rf_prec, GRHydro_eps_&
  &min, GRHydro_hot_atmo_Y_e, GRHydro_hot_atmo_temp, GRHydro_lorentz_overshoot_cutoff, GRHydro_max_temp, GRHydro_perc_ptol, GRHydro&
  &_rho_central, Tmunu_damping_radius_max, Tmunu_damping_radius_min, atmo_falloff_power, atmo_falloff_radius, atmo_tolerance_power,&
  & atmo_tolerance_radius, c2p_reset_pressure_to_value, comoving_factor, comoving_tanh_factor, comoving_tanh_offset, enhanced_ppm_C&
  &2, enhanced_ppm_C3, initial_Gamma, initial_atmosphere_factor, initial_k, initial_rho_abs_min, initial_rho_rel_min, kap_dc, max_m&
  &agnetic_to_gas_pressure_ratio, min_tracer, mp5_alpha, mp5_eps, myfloor, ppm_epsilon, ppm_epsilon_shock, ppm_eta1, ppm_eta2, ppm_&
  &k0, ppm_omega1, ppm_omega2, ppm_omega_tracer, ppm_small, rho_abs_min, rho_abs_min_after_recovery, rho_rel_min, setcharmax, setch&
  &armin, sqrtdet_thr, tau_rel_min, weno_eps, Avec_gauge, EoS_Change_type, GRHydro_c2p_failed_action, GRHydro_eos_table, GRHydro_eo&
  &s_type, HLLE_type, bound, comoving_attenuate, comoving_v_method, gradient_method, left_eigenvectors, method_type, numerical_visc&
  &osity, particle_interpolator, ppm_flatten, psidcspeed, recon_method, recon_vars, riemann_solver, tvd_limiter, use_evolution_mask&
  &, Check_Rho_Minimum, EoS_Change, GRHydro_MaxNumConstrainedVars, GRHydro_MaxNumEvolvedVars, GRHydro_MaxNumEvolvedVarsSlow, GRHydr&
  &o_MaxNumSandRVars, GRHydro_NaN_verbose, GRHydro_c2p_reset_eps_tau_hot_eos, GRHydro_c2p_warn_from_reflevel, GRHydro_c2p_warnlevel&
  &, GRHydro_countmax, GRHydro_countmin, GRHydro_enable_internal_excision, GRHydro_eos_hot_eps_fix, GRHydro_eos_hot_prim2con_warn, &
  &GRHydro_hydro_excision, GRHydro_oppm_reflevel, GRHydro_polish, GRHydro_stencil, WENO_order, apply_H_viscosity, c2p_reset_pressur&
  &e, c2p_resort_to_bisection, calculate_bcom, check_for_trivial_rp, clean_divergence, con2prim_oct_hack, decouple_normal_Bfield, e&
  &no_order, evolve_tracer, mp5_adaptive_eps, number_of_arrays, number_of_particles, number_of_tracers, particle_interpolation_orde&
  &r, ppm_detect, ppm_mppm, ppm_mppm_debug_eigenvalues, reconstruct_Wv, reconstruct_temper, set_trivial_rp_grid_function, sources_s&
  &patial_order, sync_conserved_only, track_divB, transport_constraints, use_MoL_slow_multirate_sector, use_enhanced_ppm, use_min_t&
  &racer, use_optimized_ppm, use_weighted_fluxes, weno_adaptive_epsilon, wk_atmosphere
  INTEGER*4 constrain_to_1D
  integer, parameter :: cctki_use_constrain_to_1D = kind(constrain_to_1D)
  INTEGER*4 use_cxx_code
  integer, parameter :: cctki_use_use_cxx_code = kind(use_cxx_code)
  INTEGER*4 verbose
  integer, parameter :: cctki_use_verbose = kind(verbose)
  COMMON /GRHydropriv/constrain_to_1D, use_cxx_code, verbose
  integer*8 CCTKH0
  integer, parameter :: cctki_use_CCTKH0 = kind(CCTKH0)
  integer*8 CCTKH1
  integer, parameter :: cctki_use_CCTKH1 = kind(CCTKH1)
  integer*8 CCTKH2
  integer, parameter :: cctki_use_CCTKH2 = kind(CCTKH2)
  integer*8 CCTKH3
  integer, parameter :: cctki_use_CCTKH3 = kind(CCTKH3)
  integer*8 CCTKH4
  integer, parameter :: cctki_use_CCTKH4 = kind(CCTKH4)
  integer*8 CCTKH5
  integer, parameter :: cctki_use_CCTKH5 = kind(CCTKH5)
  integer*8 CCTKH6
  integer, parameter :: cctki_use_CCTKH6 = kind(CCTKH6)
  integer*8 CCTKH7
  integer, parameter :: cctki_use_CCTKH7 = kind(CCTKH7)
  integer*8 initial_shift
  integer, parameter :: cctki_use_initial_shift = kind(initial_shift)
  integer*8 CCTKH8
  integer, parameter :: cctki_use_CCTKH8 = kind(CCTKH8)
  integer*8 CCTKH9
  integer, parameter :: cctki_use_CCTKH9 = kind(CCTKH9)
  integer*8 CCTKH11
  integer, parameter :: cctki_use_CCTKH11 = kind(CCTKH11)
  integer*8 metric_type
  integer, parameter :: cctki_use_metric_type = kind(metric_type)
  integer*8 shift_evolution_method
  integer, parameter :: cctki_use_shift_evolution_method = kind(shift_evolution_method)
  integer*8 CCTKH13
  integer, parameter :: cctki_use_CCTKH13 = kind(CCTKH13)
  INTEGER*4 CCTKH10
  integer, parameter :: cctki_use_CCTKH10 = kind(CCTKH10)
  INTEGER*4 CCTKH12
  integer, parameter :: cctki_use_CCTKH12 = kind(CCTKH12)
  INTEGER*4 CCTKH14
  integer, parameter :: cctki_use_CCTKH14 = kind(CCTKH14)
  COMMON /ADMBASErest/CCTKH0, CCTKH1, CCTKH2, CCTKH3, CCTKH4, CCTKH5, CCTKH6, CCTKH7, initial_shift, CCTKH8, CCTKH9, CCTKH11, metri&
  &c_type, shift_evolution_method, CCTKH13, CCTKH10, CCTKH12, CCTKH14
  REAL*8 CCTKH15
  integer, parameter :: cctki_use_CCTKH15 = kind(CCTKH15)
  REAL*8 CCTKH25
  integer, parameter :: cctki_use_CCTKH25 = kind(CCTKH25)
  REAL*8 CCTKH26
  integer, parameter :: cctki_use_CCTKH26 = kind(CCTKH26)
  REAL*8 CCTKH27 (10)
  integer, parameter :: cctki_use_CCTKH27 = kind(CCTKH27)
  REAL*8 CCTKH28
  integer, parameter :: cctki_use_CCTKH28 = kind(CCTKH28)
  REAL*8 CCTKH29
  integer, parameter :: cctki_use_CCTKH29 = kind(CCTKH29)
  REAL*8 CCTKH30
  integer, parameter :: cctki_use_CCTKH30 = kind(CCTKH30)
  REAL*8 CCTKH31
  integer, parameter :: cctki_use_CCTKH31 = kind(CCTKH31)
  REAL*8 CCTKH32
  integer, parameter :: cctki_use_CCTKH32 = kind(CCTKH32)
  REAL*8 CCTKH33 (9)
  integer, parameter :: cctki_use_CCTKH33 = kind(CCTKH33)
  REAL*8 CCTKH34
  integer, parameter :: cctki_use_CCTKH34 = kind(CCTKH34)
  REAL*8 CCTKH38
  integer, parameter :: cctki_use_CCTKH38 = kind(CCTKH38)
  REAL*8 CCTKH39
  integer, parameter :: cctki_use_CCTKH39 = kind(CCTKH39)
  REAL*8 poly_k
  integer, parameter :: cctki_use_poly_k = kind(poly_k)
  integer*8 CCTKH17
  integer, parameter :: cctki_use_CCTKH17 = kind(CCTKH17)
  integer*8 CCTKH20
  integer, parameter :: cctki_use_CCTKH20 = kind(CCTKH20)
  integer*8 CCTKH24
  integer, parameter :: cctki_use_CCTKH24 = kind(CCTKH24)
  integer*8 CCTKH37
  integer, parameter :: cctki_use_CCTKH37 = kind(CCTKH37)
  INTEGER*4 CCTKH16
  integer, parameter :: cctki_use_CCTKH16 = kind(CCTKH16)
  INTEGER*4 CCTKH18
  integer, parameter :: cctki_use_CCTKH18 = kind(CCTKH18)
  INTEGER*4 CCTKH19
  integer, parameter :: cctki_use_CCTKH19 = kind(CCTKH19)
  INTEGER*4 CCTKH21
  integer, parameter :: cctki_use_CCTKH21 = kind(CCTKH21)
  INTEGER*4 CCTKH22
  integer, parameter :: cctki_use_CCTKH22 = kind(CCTKH22)
  INTEGER*4 CCTKH23
  integer, parameter :: cctki_use_CCTKH23 = kind(CCTKH23)
  INTEGER*4 CCTKH35
  integer, parameter :: cctki_use_CCTKH35 = kind(CCTKH35)
  INTEGER*4 CCTKH36
  integer, parameter :: cctki_use_CCTKH36 = kind(CCTKH36)
  INTEGER*4 CCTKH40
  integer, parameter :: cctki_use_CCTKH40 = kind(CCTKH40)
  INTEGER*4 CCTKH41
  integer, parameter :: cctki_use_CCTKH41 = kind(CCTKH41)
  COMMON /EOS_OMNIrest/CCTKH15, CCTKH25, CCTKH26, CCTKH27, CCTKH28, CCTKH29, CCTKH30, CCTKH31, CCTKH32, CCTKH33, CCTKH34, CCTKH38, &
  &CCTKH39, poly_k, CCTKH17, CCTKH20, CCTKH24, CCTKH37, CCTKH16, CCTKH18, CCTKH19, CCTKH21, CCTKH22, CCTKH23, CCTKH35, CCTKH36, CCT&
  &KH40, CCTKH41
  integer*8 CCTKH42
  integer, parameter :: cctki_use_CCTKH42 = kind(CCTKH42)
  integer*8 Bvec_evolution_method
  integer, parameter :: cctki_use_Bvec_evolution_method = kind(Bvec_evolution_method)
  integer*8 Y_e_evolution_method
  integer, parameter :: cctki_use_Y_e_evolution_method = kind(Y_e_evolution_method)
  integer*8 entropy_evolution_method
  integer, parameter :: cctki_use_entropy_evolution_method = kind(entropy_evolution_method)
  integer*8 evolution_method
  integer, parameter :: cctki_use_evolution_method = kind(evolution_method)
  integer*8 CCTKH43
  integer, parameter :: cctki_use_CCTKH43 = kind(CCTKH43)
  integer*8 CCTKH44
  integer, parameter :: cctki_use_CCTKH44 = kind(CCTKH44)
  integer*8 CCTKH45
  integer, parameter :: cctki_use_CCTKH45 = kind(CCTKH45)
  integer*8 initial_Bvec
  integer, parameter :: cctki_use_initial_Bvec = kind(initial_Bvec)
  integer*8 CCTKH46
  integer, parameter :: cctki_use_CCTKH46 = kind(CCTKH46)
  integer*8 CCTKH47
  integer, parameter :: cctki_use_CCTKH47 = kind(CCTKH47)
  integer*8 CCTKH48
  integer, parameter :: cctki_use_CCTKH48 = kind(CCTKH48)
  integer*8 CCTKH49
  integer, parameter :: cctki_use_CCTKH49 = kind(CCTKH49)
  integer*8 prolongation_type
  integer, parameter :: cctki_use_prolongation_type = kind(prolongation_type)
  integer*8 temperature_evolution_method
  integer, parameter :: cctki_use_temperature_evolution_method = kind(temperature_evolution_method)
  INTEGER*4 hydro_excision
  integer, parameter :: cctki_use_hydro_excision = kind(hydro_excision)
  INTEGER*4 timelevels
  integer, parameter :: cctki_use_timelevels = kind(timelevels)
  COMMON /HYDROBASErest/CCTKH42, Bvec_evolution_method, Y_e_evolution_method, entropy_evolution_method, evolution_method, CCTKH43, &
  &CCTKH44, CCTKH45, initial_Bvec, CCTKH46, CCTKH47, CCTKH48, CCTKH49, prolongation_type, temperature_evolution_method, hydro_excis&
  &ion, timelevels
  INTEGER*4 MoL_Max_Evolved_Array_Size
  integer, parameter :: cctki_use_MoL_Max_Evolved_Array_Size = kind(MoL_Max_Evolved_Array_Size)
  INTEGER*4 CCTKH50
  integer, parameter :: cctki_use_CCTKH50 = kind(CCTKH50)
  INTEGER*4 MoL_Num_ArrayEvolved_Vars
  integer, parameter :: cctki_use_MoL_Num_ArrayEvolved_Vars = kind(MoL_Num_ArrayEvolved_Vars)
  INTEGER*4 CCTKH51
  integer, parameter :: cctki_use_CCTKH51 = kind(CCTKH51)
  INTEGER*4 MoL_Num_Constrained_Vars
  integer, parameter :: cctki_use_MoL_Num_Constrained_Vars = kind(MoL_Num_Constrained_Vars)
  INTEGER*4 MoL_Num_Evolved_Vars
  integer, parameter :: cctki_use_MoL_Num_Evolved_Vars = kind(MoL_Num_Evolved_Vars)
  INTEGER*4 MoL_Num_Evolved_Vars_Slow
  integer, parameter :: cctki_use_MoL_Num_Evolved_Vars_Slow = kind(MoL_Num_Evolved_Vars_Slow)
  INTEGER*4 MoL_Num_SaveAndRestore_Vars
  integer, parameter :: cctki_use_MoL_Num_SaveAndRestore_Vars = kind(MoL_Num_SaveAndRestore_Vars)
  INTEGER*4 CCTKH52
  integer, parameter :: cctki_use_CCTKH52 = kind(CCTKH52)
  COMMON /METHODOFLINESrest/MoL_Max_Evolved_Array_Size, CCTKH50, MoL_Num_ArrayEvolved_Vars, CCTKH51, MoL_Num_Constrained_Vars, MoL_&
  &Num_Evolved_Vars, MoL_Num_Evolved_Vars_Slow, MoL_Num_SaveAndRestore_Vars, CCTKH52
  INTEGER*4 use_mask
  integer, parameter :: cctki_use_use_mask = kind(use_mask)
  COMMON /SPACEMASKrest/use_mask
  interface
  integer*8 function CCTK_PointerTo (var)
  implicit none
  type(*),dimension(..),TARGET :: var
  end function CCTK_PointerTo
  end interface
  interface
  integer function CCTK_Equals (arg1, arg2)
  implicit none
  integer*8 arg1
  character(*) arg2
  end function CCTK_Equals
  integer function CCTK_MyProc (cctkGH)
  implicit none
  integer*8 cctkGH
  end function CCTK_MyProc
  integer function CCTK_nProcs (cctkGH)
  implicit none
  integer*8 cctkGH
  end function CCTK_nProcs
  integer function CCTK_IsThornActive (name)
  implicit none
  character(*) name
  end function CCTK_IsThornActive
  integer*8 function CCTK_NullPointer ()
  implicit none
  end function CCTK_NullPointer
  end interface
  interface
  INTEGER*4 function Boundary_SelectGroupForBC (GH, faces, boundary_width, table_handle, group_name, bc_name)
  implicit none
  integer*8 GH
  INTEGER*4 faces
  INTEGER*4 boundary_width
  INTEGER*4 table_handle
  character(*) group_name
  character(*) bc_name
  end function Boundary_SelectGroupForBC
  end interface
  interface
  INTEGER*4 function Boundary_SelectVarForBC (GH, faces, boundary_width, table_handle, var_name, bc_name)
  implicit none
  integer*8 GH
  INTEGER*4 faces
  INTEGER*4 boundary_width
  INTEGER*4 table_handle
  character(*) var_name
  character(*) bc_name
  end function Boundary_SelectVarForBC
  end interface
  interface
  subroutine Con2PrimGen (handle, dens, sx, sy, sz, tau, rho, velx, vely, velz, epsilon, pressure, w_lorentz, uxx, uxy, uxz, uyy, u&
  &yz, uzz, det, x, y, z, r, epsnegative, GRHydro_rho_min, pmin, epsmin, GRHydro_reflevel, retval)
  implicit none
  INTEGER*4 handle
  REAL*8 dens
  REAL*8 sx
  REAL*8 sy
  REAL*8 sz
  REAL*8 tau
  REAL*8 rho
  REAL*8 velx
  REAL*8 vely
  REAL*8 velz
  REAL*8 epsilon
  REAL*8 pressure
  REAL*8 w_lorentz
  REAL*8 uxx
  REAL*8 uxy
  REAL*8 uxz
  REAL*8 uyy
  REAL*8 uyz
  REAL*8 uzz
  REAL*8 det
  REAL*8 x
  REAL*8 y
  REAL*8 z
  REAL*8 r
  INTEGER*4 epsnegative
  REAL*8 GRHydro_rho_min
  REAL*8 pmin
  REAL*8 epsmin
  INTEGER*4 GRHydro_reflevel
  REAL*8 retval
  end subroutine Con2PrimGen
  end interface
  interface
  subroutine Con2PrimGenM (handle, keytemp, prec, gamma_eos, dens, sx, sy, sz, tau, Bconsx, Bconsy, Bconsz, y_e, temp, rho, velx, v&
  &ely, velz, epsilon, pressure, Bvecx, Bvecy, Bvecz, bvecsq, w_lorentz, gxx, gxy, gxz, gyy, gyz, gzz, uxx, uxy, uxz, uyy, uyz, uzz&
  &, det, epsnegative, retval)
  implicit none
  INTEGER*4 handle
  INTEGER*4 keytemp
  REAL*8 prec
  REAL*8 gamma_eos
  REAL*8 dens
  REAL*8 sx
  REAL*8 sy
  REAL*8 sz
  REAL*8 tau
  REAL*8 Bconsx
  REAL*8 Bconsy
  REAL*8 Bconsz
  REAL*8 y_e
  REAL*8 temp
  REAL*8 rho
  REAL*8 velx
  REAL*8 vely
  REAL*8 velz
  REAL*8 epsilon
  REAL*8 pressure
  REAL*8 Bvecx
  REAL*8 Bvecy
  REAL*8 Bvecz
  REAL*8 bvecsq
  REAL*8 w_lorentz
  REAL*8 gxx
  REAL*8 gxy
  REAL*8 gxz
  REAL*8 gyy
  REAL*8 gyz
  REAL*8 gzz
  REAL*8 uxx
  REAL*8 uxy
  REAL*8 uxz
  REAL*8 uyy
  REAL*8 uyz
  REAL*8 uzz
  REAL*8 det
  INTEGER*4 epsnegative
  REAL*8 retval
  end subroutine Con2PrimGenM
  end interface
  interface
  subroutine Con2PrimGenMee (handle, keytemp, prec, gamma_eos, dens, sx, sy, sz, tau, Bconsx, Bconsy, Bconsz, entropycons, y_e, tem&
  &p, rho, velx, vely, velz, epsilon, pressure, Bvecx, Bvecy, Bvecz, Bvecsq, w_lorentz, gxx, gxy, gxz, gyy, gyz, gzz, uxx, uxy, uxz&
  &, uyy, uyz, uzz, det, epsnegative, retval)
  implicit none
  INTEGER*4 handle
  INTEGER*4 keytemp
  REAL*8 prec
  REAL*8 gamma_eos
  REAL*8 dens
  REAL*8 sx
  REAL*8 sy
  REAL*8 sz
  REAL*8 tau
  REAL*8 Bconsx
  REAL*8 Bconsy
  REAL*8 Bconsz
  REAL*8 entropycons
  REAL*8 y_e
  REAL*8 temp
  REAL*8 rho
  REAL*8 velx
  REAL*8 vely
  REAL*8 velz
  REAL*8 epsilon
  REAL*8 pressure
  REAL*8 Bvecx
  REAL*8 Bvecy
  REAL*8 Bvecz
  REAL*8 Bvecsq
  REAL*8 w_lorentz
  REAL*8 gxx
  REAL*8 gxy
  REAL*8 gxz
  REAL*8 gyy
  REAL*8 gyz
  REAL*8 gzz
  REAL*8 uxx
  REAL*8 uxy
  REAL*8 uxz
  REAL*8 uyy
  REAL*8 uyz
  REAL*8 uzz
  REAL*8 det
  INTEGER*4 epsnegative
  REAL*8 retval
  end subroutine Con2PrimGenMee
  end interface
  interface
  subroutine Con2PrimPoly (handle, dens, sx, sy, sz, tau, rho, velx, vely, velz, epsilon, press, w_lorentz, uxx, uxy, uxz, uyy, uyz&
  &, uzz, det, x, y, z, r, rho_min, GRHydro_reflevel, GRHydro_C2P_failed)
  implicit none
  INTEGER*4 handle
  REAL*8 dens
  REAL*8 sx
  REAL*8 sy
  REAL*8 sz
  REAL*8 tau
  REAL*8 rho
  REAL*8 velx
  REAL*8 vely
  REAL*8 velz
  REAL*8 epsilon
  REAL*8 press
  REAL*8 w_lorentz
  REAL*8 uxx
  REAL*8 uxy
  REAL*8 uxz
  REAL*8 uyy
  REAL*8 uyz
  REAL*8 uzz
  REAL*8 det
  REAL*8 x
  REAL*8 y
  REAL*8 z
  REAL*8 r
  REAL*8 rho_min
  INTEGER*4 GRHydro_reflevel
  REAL*8 GRHydro_C2P_failed
  end subroutine Con2PrimPoly
  end interface
  interface
  subroutine Con2PrimPolyM (handle, gamma_eos, dens, sx, sy, sz, sc, Bconsx, Bconsy, Bconsz, rho, velx, vely, velz, epsilon, pressu&
  &re, Bvecx, Bvecy, Bvecz, Bvecsq, w_lorentz, gxx, gxy, gxz, gyy, gyz, gzz, uxx, uxy, uxz, uyy, uyz, uzz, det, epsnegative, retval)
  implicit none
  INTEGER*4 handle
  REAL*8 gamma_eos
  REAL*8 dens
  REAL*8 sx
  REAL*8 sy
  REAL*8 sz
  REAL*8 sc
  REAL*8 Bconsx
  REAL*8 Bconsy
  REAL*8 Bconsz
  REAL*8 rho
  REAL*8 velx
  REAL*8 vely
  REAL*8 velz
  REAL*8 epsilon
  REAL*8 pressure
  REAL*8 Bvecx
  REAL*8 Bvecy
  REAL*8 Bvecz
  REAL*8 Bvecsq
  REAL*8 w_lorentz
  REAL*8 gxx
  REAL*8 gxy
  REAL*8 gxz
  REAL*8 gyy
  REAL*8 gyz
  REAL*8 gzz
  REAL*8 uxx
  REAL*8 uxy
  REAL*8 uxz
  REAL*8 uyy
  REAL*8 uyz
  REAL*8 uzz
  REAL*8 det
  INTEGER*4 epsnegative
  REAL*8 retval
  end subroutine Con2PrimPolyM
  end interface
  interface
  subroutine EOS_Omni_DPressByDEps (eoskey, havetemp, rf_precision, npoints, rho, eps, temp, ye, dpdepsrho, keyerr, anyerr)
  implicit none
  INTEGER*4 eoskey
  INTEGER*4 havetemp
  REAL*8 rf_precision
  INTEGER*4 npoints
  REAL*8 rho(*)
  REAL*8 eps(*)
  REAL*8 temp(*)
  REAL*8 ye(*)
  REAL*8 dpdepsrho(*)
  INTEGER*4 keyerr(*)
  INTEGER*4 anyerr
  end subroutine EOS_Omni_DPressByDEps
  end interface
  interface
  subroutine EOS_Omni_DPressByDRho (eoskey, havetemp, rf_precision, npoints, rho, eps, temp, ye, dpdrhoeps, keyerr, anyerr)
  implicit none
  INTEGER*4 eoskey
  INTEGER*4 havetemp
  REAL*8 rf_precision
  INTEGER*4 npoints
  REAL*8 rho(*)
  REAL*8 eps(*)
  REAL*8 temp(*)
  REAL*8 ye(*)
  REAL*8 dpdrhoeps(*)
  INTEGER*4 keyerr(*)
  INTEGER*4 anyerr
  end subroutine EOS_Omni_DPressByDRho
  end interface
  interface
  subroutine EOS_Omni_EpsFromPress (eoskey, havetemp, rf_precision, npoints, rho, eps, temp, ye, press, xeps, keyerr, anyerr)
  implicit none
  INTEGER*4 eoskey
  INTEGER*4 havetemp
  REAL*8 rf_precision
  INTEGER*4 npoints
  REAL*8 rho(*)
  REAL*8 eps(*)
  REAL*8 temp(*)
  REAL*8 ye(*)
  REAL*8 press(*)
  REAL*8 xeps(*)
  INTEGER*4 keyerr(*)
  INTEGER*4 anyerr
  end subroutine EOS_Omni_EpsFromPress
  end interface
  interface
  INTEGER*4 function EOS_Omni_GetHandle (name)
  implicit none
  character(*) name
  end function EOS_Omni_GetHandle
  end interface
  interface
  subroutine EOS_Omni_cs2 (eoskey, havetemp, rf_precision, npoints, rho, eps, temp, ye, cs2, keyerr, anyerr)
  implicit none
  INTEGER*4 eoskey
  INTEGER*4 havetemp
  REAL*8 rf_precision
  INTEGER*4 npoints
  REAL*8 rho(*)
  REAL*8 eps(*)
  REAL*8 temp(*)
  REAL*8 ye(*)
  REAL*8 cs2(*)
  INTEGER*4 keyerr(*)
  INTEGER*4 anyerr
  end subroutine EOS_Omni_cs2
  end interface
  interface
  subroutine EOS_Omni_dpderho_dpdrhoe (eoskey, havetemp, rf_precision, npoints, rho, eps, temp, ye, dpderho, dpdrhoe, keyerr, anyer&
  &r)
  implicit none
  INTEGER*4 eoskey
  INTEGER*4 havetemp
  REAL*8 rf_precision
  INTEGER*4 npoints
  REAL*8 rho(*)
  REAL*8 eps(*)
  REAL*8 temp(*)
  REAL*8 ye(*)
  REAL*8 dpderho(*)
  REAL*8 dpdrhoe(*)
  INTEGER*4 keyerr(*)
  INTEGER*4 anyerr
  end subroutine EOS_Omni_dpderho_dpdrhoe
  end interface
  interface
  subroutine EOS_Omni_press (eoskey, havetemp, rf_precision, npoints, rho, eps, temp, ye, press, keyerr, anyerr)
  implicit none
  INTEGER*4 eoskey
  INTEGER*4 havetemp
  REAL*8 rf_precision
  INTEGER*4 npoints
  REAL*8 rho(*)
  REAL*8 eps(*)
  REAL*8 temp(*)
  REAL*8 ye(*)
  REAL*8 press(*)
  INTEGER*4 keyerr(*)
  INTEGER*4 anyerr
  end subroutine EOS_Omni_press
  end interface
  interface
  subroutine EOS_Omni_pressOMP (eoskey, havetemp, rf_precision, npoints, rho, eps, temp, ye, press, keyerr, anyerr)
  implicit none
  INTEGER*4 eoskey
  INTEGER*4 havetemp
  REAL*8 rf_precision
  INTEGER*4 npoints
  REAL*8 rho(*)
  REAL*8 eps(*)
  REAL*8 temp(*)
  REAL*8 ye(*)
  REAL*8 press(*)
  INTEGER*4 keyerr(*)
  INTEGER*4 anyerr
  end subroutine EOS_Omni_pressOMP
  end interface
  interface
  subroutine EOS_Omni_press_cs2 (eoskey, havetemp, rf_precision, npoints, rho, eps, temp, ye, press, cs2, keyerr, anyerr)
  implicit none
  INTEGER*4 eoskey
  INTEGER*4 havetemp
  REAL*8 rf_precision
  INTEGER*4 npoints
  REAL*8 rho(*)
  REAL*8 eps(*)
  REAL*8 temp(*)
  REAL*8 ye(*)
  REAL*8 press(*)
  REAL*8 cs2(*)
  INTEGER*4 keyerr(*)
  INTEGER*4 anyerr
  end subroutine EOS_Omni_press_cs2
  end interface
  interface
  INTEGER*4 function MoLRegisterConstrained (ConstrainedIndex)
  implicit none
  INTEGER*4 ConstrainedIndex
  end function MoLRegisterConstrained
  end interface
  interface
  INTEGER*4 function MoLRegisterConstrainedGroup (ConstrainedIndex)
  implicit none
  INTEGER*4 ConstrainedIndex
  end function MoLRegisterConstrainedGroup
  end interface
  interface
  INTEGER*4 function MoLRegisterEvolved (EvolvedIndex, RHSIndex)
  implicit none
  INTEGER*4 EvolvedIndex
  INTEGER*4 RHSIndex
  end function MoLRegisterEvolved
  end interface
  interface
  INTEGER*4 function MoLRegisterEvolvedGroup (EvolvedIndex, RHSIndex)
  implicit none
  INTEGER*4 EvolvedIndex
  INTEGER*4 RHSIndex
  end function MoLRegisterEvolvedGroup
  end interface
  interface
  INTEGER*4 function MoLRegisterEvolvedGroupSlow (EvolvedIndex, RHSIndexSlow)
  implicit none
  INTEGER*4 EvolvedIndex
  INTEGER*4 RHSIndexSlow
  end function MoLRegisterEvolvedGroupSlow
  end interface
  interface
  INTEGER*4 function MoLRegisterEvolvedSlow (EvolvedIndex, RHSIndexSlow)
  implicit none
  INTEGER*4 EvolvedIndex
  INTEGER*4 RHSIndexSlow
  end function MoLRegisterEvolvedSlow
  end interface
  interface
  INTEGER*4 function MoLRegisterSaveAndRestoreGroup (SandRIndex)
  implicit none
  INTEGER*4 SandRIndex
  end function MoLRegisterSaveAndRestoreGroup
  end interface
  interface
  subroutine Prim2ConGen (handle, gxx, gxy, gxz, gyy, gyz, gzz, det, dens, sx, sy, sz, tau, rho, velx, vely, velz, epsilon, press, &
  &w_lorentz)
  implicit none
  INTEGER*4 handle
  REAL*8 gxx
  REAL*8 gxy
  REAL*8 gxz
  REAL*8 gyy
  REAL*8 gyz
  REAL*8 gzz
  REAL*8 det
  REAL*8 dens
  REAL*8 sx
  REAL*8 sy
  REAL*8 sz
  REAL*8 tau
  REAL*8 rho
  REAL*8 velx
  REAL*8 vely
  REAL*8 velz
  REAL*8 epsilon
  REAL*8 press
  REAL*8 w_lorentz
  end subroutine Prim2ConGen
  end interface
  interface
  subroutine Prim2ConGenM (handle, gxx, gxy, gxz, gyy, gyz, gzz, det, dens, sx, sy, sz, tau, Bconsx, Bconsy, Bconsz, rho, velx, vel&
  &y, velz, epsilon, press, Bvecx, Bvecy, Bvecz, w_lorentz)
  implicit none
  INTEGER*4 handle
  REAL*8 gxx
  REAL*8 gxy
  REAL*8 gxz
  REAL*8 gyy
  REAL*8 gyz
  REAL*8 gzz
  REAL*8 det
  REAL*8 dens
  REAL*8 sx
  REAL*8 sy
  REAL*8 sz
  REAL*8 tau
  REAL*8 Bconsx
  REAL*8 Bconsy
  REAL*8 Bconsz
  REAL*8 rho
  REAL*8 velx
  REAL*8 vely
  REAL*8 velz
  REAL*8 epsilon
  REAL*8 press
  REAL*8 Bvecx
  REAL*8 Bvecy
  REAL*8 Bvecz
  REAL*8 w_lorentz
  end subroutine Prim2ConGenM
  end interface
  interface
  subroutine Prim2ConGenM_hot (handle, GRHydro_reflevel, i, j, k, x, y, z, gxx, gxy, gxz, gyy, gyz, gzz, det, dens, sx, sy, sz, tau&
  &, Bconsx, Bconsy, Bconsz, rho, velx, vely, velz, epsilon, press, Bvecx, Bvecy, Bvecz, w_lorentz, temperature, Y_e)
  implicit none
  INTEGER*4 handle
  INTEGER*4 GRHydro_reflevel
  INTEGER*4 i
  INTEGER*4 j
  INTEGER*4 k
  REAL*8 x
  REAL*8 y
  REAL*8 z
  REAL*8 gxx
  REAL*8 gxy
  REAL*8 gxz
  REAL*8 gyy
  REAL*8 gyz
  REAL*8 gzz
  REAL*8 det
  REAL*8 dens
  REAL*8 sx
  REAL*8 sy
  REAL*8 sz
  REAL*8 tau
  REAL*8 Bconsx
  REAL*8 Bconsy
  REAL*8 Bconsz
  REAL*8 rho
  REAL*8 velx
  REAL*8 vely
  REAL*8 velz
  REAL*8 epsilon
  REAL*8 press
  REAL*8 Bvecx
  REAL*8 Bvecy
  REAL*8 Bvecz
  REAL*8 w_lorentz
  REAL*8 temperature
  REAL*8 Y_e
  end subroutine Prim2ConGenM_hot
  end interface
  interface
  subroutine Prim2ConPoly (handle, gxx, gxy, gxz, gyy, gyz, gzz, det, dens, sx, sy, sz, tau, rho, velx, vely, velz, epsilon, press,&
  & w_lorentz)
  implicit none
  INTEGER*4 handle
  REAL*8 gxx
  REAL*8 gxy
  REAL*8 gxz
  REAL*8 gyy
  REAL*8 gyz
  REAL*8 gzz
  REAL*8 det
  REAL*8 dens
  REAL*8 sx
  REAL*8 sy
  REAL*8 sz
  REAL*8 tau
  REAL*8 rho
  REAL*8 velx
  REAL*8 vely
  REAL*8 velz
  REAL*8 epsilon
  REAL*8 press
  REAL*8 w_lorentz
  end subroutine Prim2ConPoly
  end interface
  interface
  subroutine Prim2ConPolyM (handle, gxx, gxy, gxz, gyy, gyz, gzz, det, dens, sx, sy, sz, tau, Bconsx, Bconsy, Bconsz, rho, velx, ve&
  &ly, velz, epsilon, press, Bvecx, Bvecy, Bvecz, w_lorentz)
  implicit none
  INTEGER*4 handle
  REAL*8 gxx
  REAL*8 gxy
  REAL*8 gxz
  REAL*8 gyy
  REAL*8 gyz
  REAL*8 gzz
  REAL*8 det
  REAL*8 dens
  REAL*8 sx
  REAL*8 sy
  REAL*8 sz
  REAL*8 tau
  REAL*8 Bconsx
  REAL*8 Bconsy
  REAL*8 Bconsz
  REAL*8 rho
  REAL*8 velx
  REAL*8 vely
  REAL*8 velz
  REAL*8 epsilon
  REAL*8 press
  REAL*8 Bvecx
  REAL*8 Bvecy
  REAL*8 Bvecz
  REAL*8 w_lorentz
  end subroutine Prim2ConPolyM
  end interface
  interface
  subroutine SetDriftCorrectPosition (GH_Pointer, x, y, z)
  implicit none
  integer*8 GH_Pointer
  REAL*8 x
  REAL*8 y
  REAL*8 z
  end subroutine SetDriftCorrectPosition
  end interface
  interface
  subroutine SpatialDet (gxx, gxy, gxz, gyy, gyz, gzz, det)
  implicit none
  REAL*8 gxx
  REAL*8 gxy
  REAL*8 gxz
  REAL*8 gyy
  REAL*8 gyz
  REAL*8 gzz
  REAL*8 det
  end subroutine SpatialDet
  end interface
  interface
  subroutine UpperMet (uxx, uxy, uxz, uyy, uyz, uzz, det, gxx, gxy, gxz, gyy, gyz, gzz)
  implicit none
  REAL*8 uxx
  REAL*8 uxy
  REAL*8 uxz
  REAL*8 uyy
  REAL*8 uyz
  REAL*8 uzz
  REAL*8 det
  REAL*8 gxx
  REAL*8 gxy
  REAL*8 gxz
  REAL*8 gyy
  REAL*8 gyz
  REAL*8 gzz
  end subroutine UpperMet
  end interface
  
  INTEGER*4 :: ierr

  call CCTK_RegisterBanner(ierr, "GRHydro: relativistic hydrodynamics, no ice.")
  
  GRHydro_Startup = 0

end function GRHydro_Startup
