














































 







































































 


































































































































































 

















































































































































































































































































































































































































































 






































































































 










 








































































































































































































































 










                                
                                

                                
                                

                                
                                

                                



















































































 

subroutine GRHydro_WENOSetup(cctk_dim,cctk_gsh,cctk_lsh,cctk_lbnd,cctk_ubnd,cctk_tile_min,cctk_tile_max,cctk_ash,cctk_alignment,cct&
  &k_alignment_offset,cctk_from,cctk_to,cctk_bbox,cctk_delta_time,cctk_time,cctk_delta_space,cctk_origin_space,cctk_levfac,cctk_lev&
  &off,cctk_levoffdenom,cctk_timefac,cctk_convlevel,cctk_convfac,cctk_nghostzones,cctk_iteration,cctkGH,cctk_ash1,cctk_ash2,cctk_as&
  &h3, GRHydro_tracer_cons_bext_length,GRHydro_tracer_flux_length,GRHydro_tracer_flux_splitting_length,GRHydro_tracer_prim_bext_len&
  &gth,GRHydro_tracer_rhs_length,X0particle_arrays,X0particle_rhs,X0particles,Aphiminus,Aphiplus,Avecxminus,Avecxplus,Avecyminus,Av&
  &ecyplus,Aveczminus,Aveczplus,Bconsxminus,Bconsxplus,Bconsyminus,Bconsyplus,Bconszminus,Bconszplus,Bvecxminus,Bvecxplus,Bvecyminu&
  &s,Bvecyplus,Bveczminus,Bveczplus,DiffRho,GRHydro_maxima_iteration,GRHydro_mppm_eigenvalue_x_left,GRHydro_mppm_eigenvalue_x_right&
  &,GRHydro_mppm_eigenvalue_y_left,GRHydro_mppm_eigenvalue_y_right,GRHydro_mppm_eigenvalue_z_left,GRHydro_mppm_eigenvalue_z_right,G&
  &RHydro_mppm_xwind,GRHydro_proper_separation,GRHydro_separation,GRHydro_trivial_rp_gf_x,GRHydro_trivial_rp_gf_y,GRHydro_trivial_r&
  &p_gf_z,GRHydro_x,GRHydro_x_p,GRHydro_x_p_p,GRHydro_x_rhs,GRHydro_y,GRHydro_y_p,GRHydro_y_p_p,GRHydro_y_rhs,GRHydro_z,GRHydro_z_p&
  &,GRHydro_z_p_p,GRHydro_z_rhs,InLastMoLPostStep,Y_e_minus,Y_e_plus,cons_tracerflux,cons_tracerminus,cons_tracerplus,cons_tracerrh&
  &s,densfminus,densfplus,densminus,densplus,entropyconsminus,entropyconsplus,entropyminus,entropyplus,eos_c,eos_cs2_ave,eos_cs2_m,&
  &eos_cs2_p,eos_dpdeps_ave,eos_dpdeps_m,eos_dpdeps_p,eos_dpdeps_temp,eos_dpdrho_temp,eps_ave,execute_MoL_PostStep,execute_MoL_Step&
  &,fs_alpha1,fs_alpha2,fs_alpha3,fs_alpha4,fs_alpha5,maxima_i,maxima_j,maxima_k,particle_alp,particle_betax,particle_betay,particl&
  &e_betaz,particle_vx,particle_vy,particle_vz,particle_x,particle_x_p,particle_x_p_p,particle_x_rhs,particle_y,particle_y_p,partic&
  &le_y_p_p,particle_y_rhs,particle_z,particle_z_p,particle_z_p_p,particle_z_rhs,press_ave,press_new,press_old,psidcminus,psidcplus&
  &,rho_ave,sxfminus,sxfplus,sxminus,sxplus,syfminus,syfplus,syminus,syplus,szfminus,szfplus,szminus,szplus,taufminus,taufplus,taum&
  &inus,tauplus,tempminus,tempplus,tracerfminus,tracerfplus,tracerminus,tracerplus,velx_ave,vely_ave,velz_ave,whichpsidcspeed, Avec&
  &_length,Avecrhs_length,Bcons_length,Bconsrhs_length,Bvec_length,Evec_length,GRHydro_cons_tracers_length,GRHydro_tracers_length,b&
  &com_length,lBvec_length,lvel_length,scon_length,srhs_length,vel_length,Abar,Abar_p,Abar_p_p,Aphi,Aphi_p,Aphi_p_p,Aphiflux,Aphirh&
  &s,Avec,Avec_p,Avec_p_p,Avecrhs,Avecxflux,Avecyflux,Aveczflux,Bcons,Bcons_p,Bcons_p_p,Bconsrhs,Bconsxflux,Bconsyflux,Bconszflux,B&
  &vec,Bvec_p,Bvec_p_p,Evec,GRHydro_C2P_failed,GRHydro_eos_handle,GRHydro_polytrope_handle,GRHydro_reflevel,GRHydro_rho_min,GRHydro&
  &_tau_min,Y_e,Y_e_p,Y_e_p_p,Y_e_con,Y_e_con_p,Y_e_con_p_p,Y_e_con_flux,Y_e_con_rhs,alp,alp_p,alp_p_p,atmosphere_atmosp_descriptor&
  &,atmosphere_field_descriptor,atmosphere_mask,atmosphere_mask_real,atmosphere_normal_descriptor,bcom,bcom_p,bcom_p_p,bcom0,bcom0_&
  &p,bcom0_p_p,bcom_sq,bcom_sq_p,bcom_sq_p_p,betaa,betab,betac,betax,betax_p,betax_p_p,betay,betay_p,betay_p_p,betaz,betaz_p,betaz_&
  &p_p,coarse_dx,coarse_dy,coarse_dz,conformal_state,cons_tracer,cons_tracer_p,cons_tracer_p_p,cs2minus,cs2plus,dens,dens_p,dens_p_&
  &p,densflux,densrhs,divB,dtalp,dtalp_p,dtalp_p_p,dtbetax,dtbetax_p,dtbetax_p_p,dtbetay,dtbetay_p,dtbetay_p_p,dtbetaz,dtbetaz_p,dt&
  &betaz_p_p,dtlapse_state,dtshift_state,eTtt,eTtt_p,eTtt_p_p,eTtx,eTtx_p,eTtx_p_p,eTty,eTty_p,eTty_p_p,eTtz,eTtz_p,eTtz_p_p,eTxx,e&
  &Txx_p,eTxx_p_p,eTxy,eTxy_p,eTxy_p_p,eTxz,eTxz_p,eTxz_p_p,eTyy,eTyy_p,eTyy_p_p,eTyz,eTyz_p,eTyz_p_p,eTzz,eTzz_p,eTzz_p_p,emask,en&
  &tropy,entropy_p,entropy_p_p,entropycons,entropycons_p,entropycons_p_p,entropyflux,entropyrhs,eps,eps_p,eps_p_p,epsminus,epsplus,&
  &evolve_Lorenz_gge,evolve_MHD,evolve_Y_e,evolve_entropy,evolve_temper,flux_direction,gaa,gaa_p,gaa_p_p,gab,gab_p,gab_p_p,gac,gac_&
  &p,gac_p_p,gbb,gbb_p,gbb_p_p,gbc,gbc_p,gbc_p_p,gcc,gcc_p,gcc_p_p,gxx,gxx_p,gxx_p_p,gxy,gxy_p,gxy_p_p,gxz,gxz_p,gxz_p_p,gyy,gyy_p,&
  &gyy_p_p,gyz,gyz_p,gyz_p_p,gzz,gzz_p,gzz_p_p,hydro_excision_mask,kaa,kab,kac,kbb,kbc,kcc,kxx,kxx_p,kxx_p_p,kxy,kxy_p,kxy_p_p,kxz,&
  &kxz_p,kxz_p_p,kyy,kyy_p,kyy_p_p,kyz,kyz_p,kyz_p_p,kzz,kzz_p,kzz_p_p,lBvec,lBvec_p,lBvec_p_p,lvel,lvel_p,lvel_p_p,maxima_x,maxima&
  &_y,maxima_z,maximum_density,maxrho_global,press,press_p,press_p_p,pressminus,pressplus,psi,psidc,psidc_p,psidc_p_p,psidcflux,psi&
  &dcrhs,psix,psixx,psixy,psixz,psiy,psiyy,psiyz,psiz,psizz,r,rho,rho_p,rho_p_p,rhominus,rhoplus,scon,scon_p,scon_p_p,sdetg,shift_s&
  &tate,space_mask,srhs,stress_energy_state,sxflux,syflux,szflux,tau,tau_p,tau_p_p,tauflux,taurhs,temperature,temperature_p,tempera&
  &ture_p_p,tracer,tracer_p,tracer_p_p,vel,vel_p,vel_p_p,velxminus,velxplus,velyminus,velyplus,velzminus,velzplus,w_lorentz,w_loren&
  &tz_p,w_lorentz_p_p,w_lorentzminus,w_lorentzplus,x,xoffset,y,yoffset,z,zoffset)

  USE GRHydro_WENOScalars

  implicit none


  INTEGER cctk_dim
  integer, parameter :: cctki_use_cctk_dim = kind(cctk_dim)
  INTEGER cctk_gsh (cctk_dim)
  integer, parameter :: cctki_use_cctk_gsh = kind(cctk_gsh)
  INTEGER cctk_lsh (cctk_dim)
  integer, parameter :: cctki_use_cctk_lsh = kind(cctk_lsh)
  INTEGER cctk_lbnd (cctk_dim)
  integer, parameter :: cctki_use_cctk_lbnd = kind(cctk_lbnd)
  INTEGER cctk_ubnd (cctk_dim)
  integer, parameter :: cctki_use_cctk_ubnd = kind(cctk_ubnd)
  INTEGER cctk_tile_min (cctk_dim)
  integer, parameter :: cctki_use_cctk_tile_min = kind(cctk_tile_min)
  INTEGER cctk_tile_max (cctk_dim)
  integer, parameter :: cctki_use_cctk_tile_max = kind(cctk_tile_max)
  INTEGER cctk_ash (cctk_dim)
  integer, parameter :: cctki_use_cctk_ash = kind(cctk_ash)
  INTEGER cctk_alignment
  integer, parameter :: cctki_use_cctk_alignment = kind(cctk_alignment)
  INTEGER cctk_alignment_offset
  integer, parameter :: cctki_use_cctk_alignment_offset = kind(cctk_alignment_offset)
  INTEGER cctk_from (cctk_dim)
  integer, parameter :: cctki_use_cctk_from = kind(cctk_from)
  INTEGER cctk_to (cctk_dim)
  integer, parameter :: cctki_use_cctk_to = kind(cctk_to)
  INTEGER cctk_bbox (2*cctk_dim)
  integer, parameter :: cctki_use_cctk_bbox = kind(cctk_bbox)
  REAL*8 cctk_delta_time
  integer, parameter :: cctki_use_cctk_delta_time = kind(cctk_delta_time)
  REAL*8 cctk_time
  integer, parameter :: cctki_use_cctk_time = kind(cctk_time)
  REAL*8 cctk_delta_space (cctk_dim)
  integer, parameter :: cctki_use_cctk_delta_space = kind(cctk_delta_space)
  REAL*8 cctk_origin_space (cctk_dim)
  integer, parameter :: cctki_use_cctk_origin_space = kind(cctk_origin_space)
  INTEGER cctk_levfac (cctk_dim)
  integer, parameter :: cctki_use_cctk_levfac = kind(cctk_levfac)
  INTEGER cctk_levoff (cctk_dim)
  integer, parameter :: cctki_use_cctk_levoff = kind(cctk_levoff)
  INTEGER cctk_levoffdenom (cctk_dim)
  integer, parameter :: cctki_use_cctk_levoffdenom = kind(cctk_levoffdenom)
  INTEGER cctk_timefac
  integer, parameter :: cctki_use_cctk_timefac = kind(cctk_timefac)
  INTEGER cctk_convlevel
  integer, parameter :: cctki_use_cctk_convlevel = kind(cctk_convlevel)
  INTEGER cctk_convfac
  integer, parameter :: cctki_use_cctk_convfac = kind(cctk_convfac)
  INTEGER cctk_nghostzones (cctk_dim)
  integer, parameter :: cctki_use_cctk_nghostzones = kind(cctk_nghostzones)
  INTEGER cctk_iteration
  integer, parameter :: cctki_use_cctk_iteration = kind(cctk_iteration)
  integer*8 cctkGH
  integer, parameter :: cctki_use_cctkGH = kind(cctkGH)
  INTEGER cctk_ash1
  integer, parameter :: cctki_use_cctk_ash1 = kind(cctk_ash1)
  INTEGER cctk_ash2
  integer, parameter :: cctki_use_cctk_ash2 = kind(cctk_ash2)
  INTEGER cctk_ash3
  integer, parameter :: cctki_use_cctk_ash3 = kind(cctk_ash3)
  INTEGER GRHydro_tracer_cons_bext_length
  INTEGER GRHydro_tracer_flux_length
  INTEGER GRHydro_tracer_flux_splitting_length
  INTEGER GRHydro_tracer_prim_bext_length
  INTEGER GRHydro_tracer_rhs_length
  INTEGER X0particle_arrays
  INTEGER X0particle_rhs
  INTEGER X0particles
  REAL*8 Aphiminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Aphiminus = kind(Aphiminus)
  REAL*8 Aphiplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Aphiplus = kind(Aphiplus)
  REAL*8 Avecxminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Avecxminus = kind(Avecxminus)
  REAL*8 Avecxplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Avecxplus = kind(Avecxplus)
  REAL*8 Avecyminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Avecyminus = kind(Avecyminus)
  REAL*8 Avecyplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Avecyplus = kind(Avecyplus)
  REAL*8 Aveczminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Aveczminus = kind(Aveczminus)
  REAL*8 Aveczplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Aveczplus = kind(Aveczplus)
  REAL*8 Bconsxminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Bconsxminus = kind(Bconsxminus)
  REAL*8 Bconsxplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Bconsxplus = kind(Bconsxplus)
  REAL*8 Bconsyminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Bconsyminus = kind(Bconsyminus)
  REAL*8 Bconsyplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Bconsyplus = kind(Bconsyplus)
  REAL*8 Bconszminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Bconszminus = kind(Bconszminus)
  REAL*8 Bconszplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Bconszplus = kind(Bconszplus)
  REAL*8 Bvecxminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Bvecxminus = kind(Bvecxminus)
  REAL*8 Bvecxplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Bvecxplus = kind(Bvecxplus)
  REAL*8 Bvecyminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Bvecyminus = kind(Bvecyminus)
  REAL*8 Bvecyplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Bvecyplus = kind(Bvecyplus)
  REAL*8 Bveczminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Bveczminus = kind(Bveczminus)
  REAL*8 Bveczplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Bveczplus = kind(Bveczplus)
  REAL*8 DiffRho (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_DiffRho = kind(DiffRho)
  INTEGER*4 GRHydro_maxima_iteration
  integer, parameter :: cctki_use_GRHydro_maxima_iteration = kind(GRHydro_maxima_iteration)
  REAL*8 GRHydro_mppm_eigenvalue_x_left (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_mppm_eigenvalue_x_left = kind(GRHydro_mppm_eigenvalue_x_left)
  REAL*8 GRHydro_mppm_eigenvalue_x_right (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_mppm_eigenvalue_x_right = kind(GRHydro_mppm_eigenvalue_x_right)
  REAL*8 GRHydro_mppm_eigenvalue_y_left (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_mppm_eigenvalue_y_left = kind(GRHydro_mppm_eigenvalue_y_left)
  REAL*8 GRHydro_mppm_eigenvalue_y_right (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_mppm_eigenvalue_y_right = kind(GRHydro_mppm_eigenvalue_y_right)
  REAL*8 GRHydro_mppm_eigenvalue_z_left (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_mppm_eigenvalue_z_left = kind(GRHydro_mppm_eigenvalue_z_left)
  REAL*8 GRHydro_mppm_eigenvalue_z_right (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_mppm_eigenvalue_z_right = kind(GRHydro_mppm_eigenvalue_z_right)
  REAL*8 GRHydro_mppm_xwind (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_mppm_xwind = kind(GRHydro_mppm_xwind)
  REAL*8 GRHydro_proper_separation
  integer, parameter :: cctki_use_GRHydro_proper_separation = kind(GRHydro_proper_separation)
  REAL*8 GRHydro_separation
  integer, parameter :: cctki_use_GRHydro_separation = kind(GRHydro_separation)
  INTEGER*4 GRHydro_trivial_rp_gf_x (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_trivial_rp_gf_x = kind(GRHydro_trivial_rp_gf_x)
  INTEGER*4 GRHydro_trivial_rp_gf_y (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_trivial_rp_gf_y = kind(GRHydro_trivial_rp_gf_y)
  INTEGER*4 GRHydro_trivial_rp_gf_z (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_trivial_rp_gf_z = kind(GRHydro_trivial_rp_gf_z)
  REAL*8 GRHydro_x (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_x = kind(GRHydro_x)
  REAL*8 GRHydro_x_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_x_p = kind(GRHydro_x_p)
  REAL*8 GRHydro_x_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_x_p_p = kind(GRHydro_x_p_p)
  REAL*8 GRHydro_x_rhs (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_x_rhs = kind(GRHydro_x_rhs)
  REAL*8 GRHydro_y (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_y = kind(GRHydro_y)
  REAL*8 GRHydro_y_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_y_p = kind(GRHydro_y_p)
  REAL*8 GRHydro_y_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_y_p_p = kind(GRHydro_y_p_p)
  REAL*8 GRHydro_y_rhs (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_y_rhs = kind(GRHydro_y_rhs)
  REAL*8 GRHydro_z (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_z = kind(GRHydro_z)
  REAL*8 GRHydro_z_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_z_p = kind(GRHydro_z_p)
  REAL*8 GRHydro_z_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_z_p_p = kind(GRHydro_z_p_p)
  REAL*8 GRHydro_z_rhs (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_z_rhs = kind(GRHydro_z_rhs)
  INTEGER*4 InLastMoLPostStep
  integer, parameter :: cctki_use_InLastMoLPostStep = kind(InLastMoLPostStep)
  REAL*8 Y_e_minus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Y_e_minus = kind(Y_e_minus)
  REAL*8 Y_e_plus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Y_e_plus = kind(Y_e_plus)
  REAL*8 cons_tracerflux (cctk_ash1,cctk_ash2,cctk_ash3,GRHydro_tracer_flux_length)
  integer, parameter :: cctki_use_cons_tracerflux = kind(cons_tracerflux)
  REAL*8 cons_tracerminus (cctk_ash1,cctk_ash2,cctk_ash3,GRHydro_tracer_cons_bext_length)
  integer, parameter :: cctki_use_cons_tracerminus = kind(cons_tracerminus)
  REAL*8 cons_tracerplus (cctk_ash1,cctk_ash2,cctk_ash3,GRHydro_tracer_cons_bext_length)
  integer, parameter :: cctki_use_cons_tracerplus = kind(cons_tracerplus)
  REAL*8 cons_tracerrhs (cctk_ash1,cctk_ash2,cctk_ash3,GRHydro_tracer_rhs_length)
  integer, parameter :: cctki_use_cons_tracerrhs = kind(cons_tracerrhs)
  REAL*8 densfminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_densfminus = kind(densfminus)
  REAL*8 densfplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_densfplus = kind(densfplus)
  REAL*8 densminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_densminus = kind(densminus)
  REAL*8 densplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_densplus = kind(densplus)
  REAL*8 entropyconsminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_entropyconsminus = kind(entropyconsminus)
  REAL*8 entropyconsplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_entropyconsplus = kind(entropyconsplus)
  REAL*8 entropyminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_entropyminus = kind(entropyminus)
  REAL*8 entropyplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_entropyplus = kind(entropyplus)
  REAL*8 eos_c (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eos_c = kind(eos_c)
  REAL*8 eos_cs2_ave (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eos_cs2_ave = kind(eos_cs2_ave)
  REAL*8 eos_cs2_m (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eos_cs2_m = kind(eos_cs2_m)
  REAL*8 eos_cs2_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eos_cs2_p = kind(eos_cs2_p)
  REAL*8 eos_dpdeps_ave (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eos_dpdeps_ave = kind(eos_dpdeps_ave)
  REAL*8 eos_dpdeps_m (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eos_dpdeps_m = kind(eos_dpdeps_m)
  REAL*8 eos_dpdeps_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eos_dpdeps_p = kind(eos_dpdeps_p)
  REAL*8 eos_dpdeps_temp (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eos_dpdeps_temp = kind(eos_dpdeps_temp)
  REAL*8 eos_dpdrho_temp (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eos_dpdrho_temp = kind(eos_dpdrho_temp)
  REAL*8 eps_ave (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eps_ave = kind(eps_ave)
  INTEGER*4 execute_MoL_PostStep
  integer, parameter :: cctki_use_execute_MoL_PostStep = kind(execute_MoL_PostStep)
  INTEGER*4 execute_MoL_Step
  integer, parameter :: cctki_use_execute_MoL_Step = kind(execute_MoL_Step)
  REAL*8 fs_alpha1
  integer, parameter :: cctki_use_fs_alpha1 = kind(fs_alpha1)
  REAL*8 fs_alpha2
  integer, parameter :: cctki_use_fs_alpha2 = kind(fs_alpha2)
  REAL*8 fs_alpha3
  integer, parameter :: cctki_use_fs_alpha3 = kind(fs_alpha3)
  REAL*8 fs_alpha4
  integer, parameter :: cctki_use_fs_alpha4 = kind(fs_alpha4)
  REAL*8 fs_alpha5
  integer, parameter :: cctki_use_fs_alpha5 = kind(fs_alpha5)
  REAL*8 maxima_i
  integer, parameter :: cctki_use_maxima_i = kind(maxima_i)
  REAL*8 maxima_j
  integer, parameter :: cctki_use_maxima_j = kind(maxima_j)
  REAL*8 maxima_k
  integer, parameter :: cctki_use_maxima_k = kind(maxima_k)
  REAL*8 particle_alp (X0particle_arrays)
  integer, parameter :: cctki_use_particle_alp = kind(particle_alp)
  REAL*8 particle_betax (X0particle_arrays)
  integer, parameter :: cctki_use_particle_betax = kind(particle_betax)
  REAL*8 particle_betay (X0particle_arrays)
  integer, parameter :: cctki_use_particle_betay = kind(particle_betay)
  REAL*8 particle_betaz (X0particle_arrays)
  integer, parameter :: cctki_use_particle_betaz = kind(particle_betaz)
  REAL*8 particle_vx (X0particle_arrays)
  integer, parameter :: cctki_use_particle_vx = kind(particle_vx)
  REAL*8 particle_vy (X0particle_arrays)
  integer, parameter :: cctki_use_particle_vy = kind(particle_vy)
  REAL*8 particle_vz (X0particle_arrays)
  integer, parameter :: cctki_use_particle_vz = kind(particle_vz)
  REAL*8 particle_x (X0particles)
  integer, parameter :: cctki_use_particle_x = kind(particle_x)
  REAL*8 particle_x_p (X0particles)
  integer, parameter :: cctki_use_particle_x_p = kind(particle_x_p)
  REAL*8 particle_x_p_p (X0particles)
  integer, parameter :: cctki_use_particle_x_p_p = kind(particle_x_p_p)
  REAL*8 particle_x_rhs (X0particle_rhs)
  integer, parameter :: cctki_use_particle_x_rhs = kind(particle_x_rhs)
  REAL*8 particle_y (X0particles)
  integer, parameter :: cctki_use_particle_y = kind(particle_y)
  REAL*8 particle_y_p (X0particles)
  integer, parameter :: cctki_use_particle_y_p = kind(particle_y_p)
  REAL*8 particle_y_p_p (X0particles)
  integer, parameter :: cctki_use_particle_y_p_p = kind(particle_y_p_p)
  REAL*8 particle_y_rhs (X0particle_rhs)
  integer, parameter :: cctki_use_particle_y_rhs = kind(particle_y_rhs)
  REAL*8 particle_z (X0particles)
  integer, parameter :: cctki_use_particle_z = kind(particle_z)
  REAL*8 particle_z_p (X0particles)
  integer, parameter :: cctki_use_particle_z_p = kind(particle_z_p)
  REAL*8 particle_z_p_p (X0particles)
  integer, parameter :: cctki_use_particle_z_p_p = kind(particle_z_p_p)
  REAL*8 particle_z_rhs (X0particle_rhs)
  integer, parameter :: cctki_use_particle_z_rhs = kind(particle_z_rhs)
  REAL*8 press_ave (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_press_ave = kind(press_ave)
  REAL*8 press_new (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_press_new = kind(press_new)
  REAL*8 press_old (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_press_old = kind(press_old)
  REAL*8 psidcminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_psidcminus = kind(psidcminus)
  REAL*8 psidcplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_psidcplus = kind(psidcplus)
  REAL*8 rho_ave (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_rho_ave = kind(rho_ave)
  REAL*8 sxfminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_sxfminus = kind(sxfminus)
  REAL*8 sxfplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_sxfplus = kind(sxfplus)
  REAL*8 sxminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_sxminus = kind(sxminus)
  REAL*8 sxplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_sxplus = kind(sxplus)
  REAL*8 syfminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_syfminus = kind(syfminus)
  REAL*8 syfplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_syfplus = kind(syfplus)
  REAL*8 syminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_syminus = kind(syminus)
  REAL*8 syplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_syplus = kind(syplus)
  REAL*8 szfminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_szfminus = kind(szfminus)
  REAL*8 szfplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_szfplus = kind(szfplus)
  REAL*8 szminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_szminus = kind(szminus)
  REAL*8 szplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_szplus = kind(szplus)
  REAL*8 taufminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_taufminus = kind(taufminus)
  REAL*8 taufplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_taufplus = kind(taufplus)
  REAL*8 tauminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_tauminus = kind(tauminus)
  REAL*8 tauplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_tauplus = kind(tauplus)
  REAL*8 tempminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_tempminus = kind(tempminus)
  REAL*8 tempplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_tempplus = kind(tempplus)
  REAL*8 tracerfminus (cctk_ash1,cctk_ash2,cctk_ash3,GRHydro_tracer_flux_splitting_length)
  integer, parameter :: cctki_use_tracerfminus = kind(tracerfminus)
  REAL*8 tracerfplus (cctk_ash1,cctk_ash2,cctk_ash3,GRHydro_tracer_flux_splitting_length)
  integer, parameter :: cctki_use_tracerfplus = kind(tracerfplus)
  REAL*8 tracerminus (cctk_ash1,cctk_ash2,cctk_ash3,GRHydro_tracer_prim_bext_length)
  integer, parameter :: cctki_use_tracerminus = kind(tracerminus)
  REAL*8 tracerplus (cctk_ash1,cctk_ash2,cctk_ash3,GRHydro_tracer_prim_bext_length)
  integer, parameter :: cctki_use_tracerplus = kind(tracerplus)
  REAL*8 velx_ave (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_velx_ave = kind(velx_ave)
  REAL*8 vely_ave (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_vely_ave = kind(vely_ave)
  REAL*8 velz_ave (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_velz_ave = kind(velz_ave)
  INTEGER*4 whichpsidcspeed
  integer, parameter :: cctki_use_whichpsidcspeed = kind(whichpsidcspeed)
  INTEGER Avec_length
  INTEGER Avecrhs_length
  INTEGER Bcons_length
  INTEGER Bconsrhs_length
  INTEGER Bvec_length
  INTEGER Evec_length
  INTEGER GRHydro_cons_tracers_length
  INTEGER GRHydro_tracers_length
  INTEGER bcom_length
  INTEGER lBvec_length
  INTEGER lvel_length
  INTEGER scon_length
  INTEGER srhs_length
  INTEGER vel_length
  REAL*8 Abar (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Abar = kind(Abar)
  REAL*8 Abar_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Abar_p = kind(Abar_p)
  REAL*8 Abar_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Abar_p_p = kind(Abar_p_p)
  REAL*8 Aphi (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Aphi = kind(Aphi)
  REAL*8 Aphi_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Aphi_p = kind(Aphi_p)
  REAL*8 Aphi_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Aphi_p_p = kind(Aphi_p_p)
  REAL*8 Aphiflux (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Aphiflux = kind(Aphiflux)
  REAL*8 Aphirhs (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Aphirhs = kind(Aphirhs)
  REAL*8 Avec (cctk_ash1,cctk_ash2,cctk_ash3,Avec_length)
  integer, parameter :: cctki_use_Avec = kind(Avec)
  REAL*8 Avec_p (cctk_ash1,cctk_ash2,cctk_ash3,Avec_length)
  integer, parameter :: cctki_use_Avec_p = kind(Avec_p)
  REAL*8 Avec_p_p (cctk_ash1,cctk_ash2,cctk_ash3,Avec_length)
  integer, parameter :: cctki_use_Avec_p_p = kind(Avec_p_p)
  REAL*8 Avecrhs (cctk_ash1,cctk_ash2,cctk_ash3,Avecrhs_length)
  integer, parameter :: cctki_use_Avecrhs = kind(Avecrhs)
  REAL*8 Avecxflux (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Avecxflux = kind(Avecxflux)
  REAL*8 Avecyflux (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Avecyflux = kind(Avecyflux)
  REAL*8 Aveczflux (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Aveczflux = kind(Aveczflux)
  REAL*8 Bcons (cctk_ash1,cctk_ash2,cctk_ash3,Bcons_length)
  integer, parameter :: cctki_use_Bcons = kind(Bcons)
  REAL*8 Bcons_p (cctk_ash1,cctk_ash2,cctk_ash3,Bcons_length)
  integer, parameter :: cctki_use_Bcons_p = kind(Bcons_p)
  REAL*8 Bcons_p_p (cctk_ash1,cctk_ash2,cctk_ash3,Bcons_length)
  integer, parameter :: cctki_use_Bcons_p_p = kind(Bcons_p_p)
  REAL*8 Bconsrhs (cctk_ash1,cctk_ash2,cctk_ash3,Bconsrhs_length)
  integer, parameter :: cctki_use_Bconsrhs = kind(Bconsrhs)
  REAL*8 Bconsxflux (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Bconsxflux = kind(Bconsxflux)
  REAL*8 Bconsyflux (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Bconsyflux = kind(Bconsyflux)
  REAL*8 Bconszflux (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Bconszflux = kind(Bconszflux)
  REAL*8 Bvec (cctk_ash1,cctk_ash2,cctk_ash3,Bvec_length)
  integer, parameter :: cctki_use_Bvec = kind(Bvec)
  REAL*8 Bvec_p (cctk_ash1,cctk_ash2,cctk_ash3,Bvec_length)
  integer, parameter :: cctki_use_Bvec_p = kind(Bvec_p)
  REAL*8 Bvec_p_p (cctk_ash1,cctk_ash2,cctk_ash3,Bvec_length)
  integer, parameter :: cctki_use_Bvec_p_p = kind(Bvec_p_p)
  REAL*8 Evec (cctk_ash1,cctk_ash2,cctk_ash3,Evec_length)
  integer, parameter :: cctki_use_Evec = kind(Evec)
  REAL*8 GRHydro_C2P_failed (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_C2P_failed = kind(GRHydro_C2P_failed)
  INTEGER*4 GRHydro_eos_handle
  integer, parameter :: cctki_use_GRHydro_eos_handle = kind(GRHydro_eos_handle)
  INTEGER*4 GRHydro_polytrope_handle
  integer, parameter :: cctki_use_GRHydro_polytrope_handle = kind(GRHydro_polytrope_handle)
  INTEGER*4 GRHydro_reflevel
  integer, parameter :: cctki_use_GRHydro_reflevel = kind(GRHydro_reflevel)
  REAL*8 GRHydro_rho_min
  integer, parameter :: cctki_use_GRHydro_rho_min = kind(GRHydro_rho_min)
  REAL*8 GRHydro_tau_min
  integer, parameter :: cctki_use_GRHydro_tau_min = kind(GRHydro_tau_min)
  REAL*8 Y_e (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Y_e = kind(Y_e)
  REAL*8 Y_e_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Y_e_p = kind(Y_e_p)
  REAL*8 Y_e_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Y_e_p_p = kind(Y_e_p_p)
  REAL*8 Y_e_con (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Y_e_con = kind(Y_e_con)
  REAL*8 Y_e_con_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Y_e_con_p = kind(Y_e_con_p)
  REAL*8 Y_e_con_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Y_e_con_p_p = kind(Y_e_con_p_p)
  REAL*8 Y_e_con_flux (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Y_e_con_flux = kind(Y_e_con_flux)
  REAL*8 Y_e_con_rhs (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Y_e_con_rhs = kind(Y_e_con_rhs)
  REAL*8 alp (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_alp = kind(alp)
  REAL*8 alp_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_alp_p = kind(alp_p)
  REAL*8 alp_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_alp_p_p = kind(alp_p_p)
  INTEGER*4 atmosphere_atmosp_descriptor
  integer, parameter :: cctki_use_atmosphere_atmosp_descriptor = kind(atmosphere_atmosp_descriptor)
  INTEGER*4 atmosphere_field_descriptor
  integer, parameter :: cctki_use_atmosphere_field_descriptor = kind(atmosphere_field_descriptor)
  INTEGER*4 atmosphere_mask (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_atmosphere_mask = kind(atmosphere_mask)
  REAL*8 atmosphere_mask_real (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_atmosphere_mask_real = kind(atmosphere_mask_real)
  INTEGER*4 atmosphere_normal_descriptor
  integer, parameter :: cctki_use_atmosphere_normal_descriptor = kind(atmosphere_normal_descriptor)
  REAL*8 bcom (cctk_ash1,cctk_ash2,cctk_ash3,bcom_length)
  integer, parameter :: cctki_use_bcom = kind(bcom)
  REAL*8 bcom_p (cctk_ash1,cctk_ash2,cctk_ash3,bcom_length)
  integer, parameter :: cctki_use_bcom_p = kind(bcom_p)
  REAL*8 bcom_p_p (cctk_ash1,cctk_ash2,cctk_ash3,bcom_length)
  integer, parameter :: cctki_use_bcom_p_p = kind(bcom_p_p)
  REAL*8 bcom0 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_bcom0 = kind(bcom0)
  REAL*8 bcom0_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_bcom0_p = kind(bcom0_p)
  REAL*8 bcom0_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_bcom0_p_p = kind(bcom0_p_p)
  REAL*8 bcom_sq (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_bcom_sq = kind(bcom_sq)
  REAL*8 bcom_sq_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_bcom_sq_p = kind(bcom_sq_p)
  REAL*8 bcom_sq_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_bcom_sq_p_p = kind(bcom_sq_p_p)
  REAL*8 betaa (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_betaa = kind(betaa)
  REAL*8 betab (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_betab = kind(betab)
  REAL*8 betac (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_betac = kind(betac)
  REAL*8 betax (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_betax = kind(betax)
  REAL*8 betax_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_betax_p = kind(betax_p)
  REAL*8 betax_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_betax_p_p = kind(betax_p_p)
  REAL*8 betay (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_betay = kind(betay)
  REAL*8 betay_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_betay_p = kind(betay_p)
  REAL*8 betay_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_betay_p_p = kind(betay_p_p)
  REAL*8 betaz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_betaz = kind(betaz)
  REAL*8 betaz_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_betaz_p = kind(betaz_p)
  REAL*8 betaz_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_betaz_p_p = kind(betaz_p_p)
  REAL*8 coarse_dx
  integer, parameter :: cctki_use_coarse_dx = kind(coarse_dx)
  REAL*8 coarse_dy
  integer, parameter :: cctki_use_coarse_dy = kind(coarse_dy)
  REAL*8 coarse_dz
  integer, parameter :: cctki_use_coarse_dz = kind(coarse_dz)
  INTEGER*4 conformal_state
  integer, parameter :: cctki_use_conformal_state = kind(conformal_state)
  REAL*8 cons_tracer (cctk_ash1,cctk_ash2,cctk_ash3,GRHydro_cons_tracers_length)
  integer, parameter :: cctki_use_cons_tracer = kind(cons_tracer)
  REAL*8 cons_tracer_p (cctk_ash1,cctk_ash2,cctk_ash3,GRHydro_cons_tracers_length)
  integer, parameter :: cctki_use_cons_tracer_p = kind(cons_tracer_p)
  REAL*8 cons_tracer_p_p (cctk_ash1,cctk_ash2,cctk_ash3,GRHydro_cons_tracers_length)
  integer, parameter :: cctki_use_cons_tracer_p_p = kind(cons_tracer_p_p)
  REAL*8 cs2minus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_cs2minus = kind(cs2minus)
  REAL*8 cs2plus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_cs2plus = kind(cs2plus)
  REAL*8 dens (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dens = kind(dens)
  REAL*8 dens_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dens_p = kind(dens_p)
  REAL*8 dens_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dens_p_p = kind(dens_p_p)
  REAL*8 densflux (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_densflux = kind(densflux)
  REAL*8 densrhs (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_densrhs = kind(densrhs)
  REAL*8 divB (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_divB = kind(divB)
  REAL*8 dtalp (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dtalp = kind(dtalp)
  REAL*8 dtalp_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dtalp_p = kind(dtalp_p)
  REAL*8 dtalp_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dtalp_p_p = kind(dtalp_p_p)
  REAL*8 dtbetax (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dtbetax = kind(dtbetax)
  REAL*8 dtbetax_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dtbetax_p = kind(dtbetax_p)
  REAL*8 dtbetax_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dtbetax_p_p = kind(dtbetax_p_p)
  REAL*8 dtbetay (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dtbetay = kind(dtbetay)
  REAL*8 dtbetay_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dtbetay_p = kind(dtbetay_p)
  REAL*8 dtbetay_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dtbetay_p_p = kind(dtbetay_p_p)
  REAL*8 dtbetaz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dtbetaz = kind(dtbetaz)
  REAL*8 dtbetaz_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dtbetaz_p = kind(dtbetaz_p)
  REAL*8 dtbetaz_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dtbetaz_p_p = kind(dtbetaz_p_p)
  INTEGER*4 dtlapse_state
  integer, parameter :: cctki_use_dtlapse_state = kind(dtlapse_state)
  INTEGER*4 dtshift_state
  integer, parameter :: cctki_use_dtshift_state = kind(dtshift_state)
  REAL*8 eTtt (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTtt = kind(eTtt)
  REAL*8 eTtt_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTtt_p = kind(eTtt_p)
  REAL*8 eTtt_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTtt_p_p = kind(eTtt_p_p)
  REAL*8 eTtx (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTtx = kind(eTtx)
  REAL*8 eTtx_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTtx_p = kind(eTtx_p)
  REAL*8 eTtx_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTtx_p_p = kind(eTtx_p_p)
  REAL*8 eTty (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTty = kind(eTty)
  REAL*8 eTty_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTty_p = kind(eTty_p)
  REAL*8 eTty_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTty_p_p = kind(eTty_p_p)
  REAL*8 eTtz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTtz = kind(eTtz)
  REAL*8 eTtz_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTtz_p = kind(eTtz_p)
  REAL*8 eTtz_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTtz_p_p = kind(eTtz_p_p)
  REAL*8 eTxx (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTxx = kind(eTxx)
  REAL*8 eTxx_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTxx_p = kind(eTxx_p)
  REAL*8 eTxx_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTxx_p_p = kind(eTxx_p_p)
  REAL*8 eTxy (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTxy = kind(eTxy)
  REAL*8 eTxy_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTxy_p = kind(eTxy_p)
  REAL*8 eTxy_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTxy_p_p = kind(eTxy_p_p)
  REAL*8 eTxz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTxz = kind(eTxz)
  REAL*8 eTxz_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTxz_p = kind(eTxz_p)
  REAL*8 eTxz_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTxz_p_p = kind(eTxz_p_p)
  REAL*8 eTyy (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTyy = kind(eTyy)
  REAL*8 eTyy_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTyy_p = kind(eTyy_p)
  REAL*8 eTyy_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTyy_p_p = kind(eTyy_p_p)
  REAL*8 eTyz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTyz = kind(eTyz)
  REAL*8 eTyz_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTyz_p = kind(eTyz_p)
  REAL*8 eTyz_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTyz_p_p = kind(eTyz_p_p)
  REAL*8 eTzz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTzz = kind(eTzz)
  REAL*8 eTzz_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTzz_p = kind(eTzz_p)
  REAL*8 eTzz_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTzz_p_p = kind(eTzz_p_p)
  REAL*8 emask (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_emask = kind(emask)
  REAL*8 entropy (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_entropy = kind(entropy)
  REAL*8 entropy_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_entropy_p = kind(entropy_p)
  REAL*8 entropy_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_entropy_p_p = kind(entropy_p_p)
  REAL*8 entropycons (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_entropycons = kind(entropycons)
  REAL*8 entropycons_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_entropycons_p = kind(entropycons_p)
  REAL*8 entropycons_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_entropycons_p_p = kind(entropycons_p_p)
  REAL*8 entropyflux (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_entropyflux = kind(entropyflux)
  REAL*8 entropyrhs (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_entropyrhs = kind(entropyrhs)
  REAL*8 eps (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eps = kind(eps)
  REAL*8 eps_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eps_p = kind(eps_p)
  REAL*8 eps_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eps_p_p = kind(eps_p_p)
  REAL*8 epsminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_epsminus = kind(epsminus)
  REAL*8 epsplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_epsplus = kind(epsplus)
  INTEGER*4 evolve_Lorenz_gge
  integer, parameter :: cctki_use_evolve_Lorenz_gge = kind(evolve_Lorenz_gge)
  INTEGER*4 evolve_MHD
  integer, parameter :: cctki_use_evolve_MHD = kind(evolve_MHD)
  INTEGER*4 evolve_Y_e
  integer, parameter :: cctki_use_evolve_Y_e = kind(evolve_Y_e)
  INTEGER*4 evolve_entropy
  integer, parameter :: cctki_use_evolve_entropy = kind(evolve_entropy)
  INTEGER*4 evolve_temper
  integer, parameter :: cctki_use_evolve_temper = kind(evolve_temper)
  INTEGER*4 flux_direction
  integer, parameter :: cctki_use_flux_direction = kind(flux_direction)
  REAL*8 gaa (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gaa = kind(gaa)
  REAL*8 gaa_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gaa_p = kind(gaa_p)
  REAL*8 gaa_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gaa_p_p = kind(gaa_p_p)
  REAL*8 gab (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gab = kind(gab)
  REAL*8 gab_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gab_p = kind(gab_p)
  REAL*8 gab_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gab_p_p = kind(gab_p_p)
  REAL*8 gac (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gac = kind(gac)
  REAL*8 gac_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gac_p = kind(gac_p)
  REAL*8 gac_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gac_p_p = kind(gac_p_p)
  REAL*8 gbb (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gbb = kind(gbb)
  REAL*8 gbb_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gbb_p = kind(gbb_p)
  REAL*8 gbb_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gbb_p_p = kind(gbb_p_p)
  REAL*8 gbc (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gbc = kind(gbc)
  REAL*8 gbc_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gbc_p = kind(gbc_p)
  REAL*8 gbc_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gbc_p_p = kind(gbc_p_p)
  REAL*8 gcc (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gcc = kind(gcc)
  REAL*8 gcc_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gcc_p = kind(gcc_p)
  REAL*8 gcc_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gcc_p_p = kind(gcc_p_p)
  REAL*8 gxx (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gxx = kind(gxx)
  REAL*8 gxx_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gxx_p = kind(gxx_p)
  REAL*8 gxx_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gxx_p_p = kind(gxx_p_p)
  REAL*8 gxy (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gxy = kind(gxy)
  REAL*8 gxy_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gxy_p = kind(gxy_p)
  REAL*8 gxy_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gxy_p_p = kind(gxy_p_p)
  REAL*8 gxz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gxz = kind(gxz)
  REAL*8 gxz_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gxz_p = kind(gxz_p)
  REAL*8 gxz_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gxz_p_p = kind(gxz_p_p)
  REAL*8 gyy (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gyy = kind(gyy)
  REAL*8 gyy_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gyy_p = kind(gyy_p)
  REAL*8 gyy_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gyy_p_p = kind(gyy_p_p)
  REAL*8 gyz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gyz = kind(gyz)
  REAL*8 gyz_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gyz_p = kind(gyz_p)
  REAL*8 gyz_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gyz_p_p = kind(gyz_p_p)
  REAL*8 gzz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gzz = kind(gzz)
  REAL*8 gzz_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gzz_p = kind(gzz_p)
  REAL*8 gzz_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gzz_p_p = kind(gzz_p_p)
  INTEGER*4 hydro_excision_mask (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_hydro_excision_mask = kind(hydro_excision_mask)
  REAL*8 kaa (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kaa = kind(kaa)
  REAL*8 kab (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kab = kind(kab)
  REAL*8 kac (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kac = kind(kac)
  REAL*8 kbb (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kbb = kind(kbb)
  REAL*8 kbc (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kbc = kind(kbc)
  REAL*8 kcc (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kcc = kind(kcc)
  REAL*8 kxx (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kxx = kind(kxx)
  REAL*8 kxx_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kxx_p = kind(kxx_p)
  REAL*8 kxx_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kxx_p_p = kind(kxx_p_p)
  REAL*8 kxy (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kxy = kind(kxy)
  REAL*8 kxy_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kxy_p = kind(kxy_p)
  REAL*8 kxy_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kxy_p_p = kind(kxy_p_p)
  REAL*8 kxz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kxz = kind(kxz)
  REAL*8 kxz_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kxz_p = kind(kxz_p)
  REAL*8 kxz_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kxz_p_p = kind(kxz_p_p)
  REAL*8 kyy (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kyy = kind(kyy)
  REAL*8 kyy_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kyy_p = kind(kyy_p)
  REAL*8 kyy_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kyy_p_p = kind(kyy_p_p)
  REAL*8 kyz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kyz = kind(kyz)
  REAL*8 kyz_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kyz_p = kind(kyz_p)
  REAL*8 kyz_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kyz_p_p = kind(kyz_p_p)
  REAL*8 kzz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kzz = kind(kzz)
  REAL*8 kzz_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kzz_p = kind(kzz_p)
  REAL*8 kzz_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kzz_p_p = kind(kzz_p_p)
  REAL*8 lBvec (cctk_ash1,cctk_ash2,cctk_ash3,lBvec_length)
  integer, parameter :: cctki_use_lBvec = kind(lBvec)
  REAL*8 lBvec_p (cctk_ash1,cctk_ash2,cctk_ash3,lBvec_length)
  integer, parameter :: cctki_use_lBvec_p = kind(lBvec_p)
  REAL*8 lBvec_p_p (cctk_ash1,cctk_ash2,cctk_ash3,lBvec_length)
  integer, parameter :: cctki_use_lBvec_p_p = kind(lBvec_p_p)
  REAL*8 lvel (cctk_ash1,cctk_ash2,cctk_ash3,lvel_length)
  integer, parameter :: cctki_use_lvel = kind(lvel)
  REAL*8 lvel_p (cctk_ash1,cctk_ash2,cctk_ash3,lvel_length)
  integer, parameter :: cctki_use_lvel_p = kind(lvel_p)
  REAL*8 lvel_p_p (cctk_ash1,cctk_ash2,cctk_ash3,lvel_length)
  integer, parameter :: cctki_use_lvel_p_p = kind(lvel_p_p)
  REAL*8 maxima_x
  integer, parameter :: cctki_use_maxima_x = kind(maxima_x)
  REAL*8 maxima_y
  integer, parameter :: cctki_use_maxima_y = kind(maxima_y)
  REAL*8 maxima_z
  integer, parameter :: cctki_use_maxima_z = kind(maxima_z)
  REAL*8 maximum_density
  integer, parameter :: cctki_use_maximum_density = kind(maximum_density)
  REAL*8 maxrho_global
  integer, parameter :: cctki_use_maxrho_global = kind(maxrho_global)
  REAL*8 press (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_press = kind(press)
  REAL*8 press_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_press_p = kind(press_p)
  REAL*8 press_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_press_p_p = kind(press_p_p)
  REAL*8 pressminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_pressminus = kind(pressminus)
  REAL*8 pressplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_pressplus = kind(pressplus)
  REAL*8 psi (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_psi = kind(psi)
  REAL*8 psidc (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_psidc = kind(psidc)
  REAL*8 psidc_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_psidc_p = kind(psidc_p)
  REAL*8 psidc_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_psidc_p_p = kind(psidc_p_p)
  REAL*8 psidcflux (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_psidcflux = kind(psidcflux)
  REAL*8 psidcrhs (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_psidcrhs = kind(psidcrhs)
  REAL*8 psix (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_psix = kind(psix)
  REAL*8 psixx (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_psixx = kind(psixx)
  REAL*8 psixy (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_psixy = kind(psixy)
  REAL*8 psixz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_psixz = kind(psixz)
  REAL*8 psiy (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_psiy = kind(psiy)
  REAL*8 psiyy (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_psiyy = kind(psiyy)
  REAL*8 psiyz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_psiyz = kind(psiyz)
  REAL*8 psiz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_psiz = kind(psiz)
  REAL*8 psizz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_psizz = kind(psizz)
  REAL*8 r (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_r = kind(r)
  REAL*8 rho (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_rho = kind(rho)
  REAL*8 rho_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_rho_p = kind(rho_p)
  REAL*8 rho_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_rho_p_p = kind(rho_p_p)
  REAL*8 rhominus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_rhominus = kind(rhominus)
  REAL*8 rhoplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_rhoplus = kind(rhoplus)
  REAL*8 scon (cctk_ash1,cctk_ash2,cctk_ash3,scon_length)
  integer, parameter :: cctki_use_scon = kind(scon)
  REAL*8 scon_p (cctk_ash1,cctk_ash2,cctk_ash3,scon_length)
  integer, parameter :: cctki_use_scon_p = kind(scon_p)
  REAL*8 scon_p_p (cctk_ash1,cctk_ash2,cctk_ash3,scon_length)
  integer, parameter :: cctki_use_scon_p_p = kind(scon_p_p)
  REAL*8 sdetg (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_sdetg = kind(sdetg)
  INTEGER*4 shift_state
  integer, parameter :: cctki_use_shift_state = kind(shift_state)
  INTEGER*4 space_mask (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_space_mask = kind(space_mask)
  REAL*8 srhs (cctk_ash1,cctk_ash2,cctk_ash3,srhs_length)
  integer, parameter :: cctki_use_srhs = kind(srhs)
  INTEGER*4 stress_energy_state
  integer, parameter :: cctki_use_stress_energy_state = kind(stress_energy_state)
  REAL*8 sxflux (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_sxflux = kind(sxflux)
  REAL*8 syflux (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_syflux = kind(syflux)
  REAL*8 szflux (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_szflux = kind(szflux)
  REAL*8 tau (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_tau = kind(tau)
  REAL*8 tau_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_tau_p = kind(tau_p)
  REAL*8 tau_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_tau_p_p = kind(tau_p_p)
  REAL*8 tauflux (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_tauflux = kind(tauflux)
  REAL*8 taurhs (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_taurhs = kind(taurhs)
  REAL*8 temperature (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_temperature = kind(temperature)
  REAL*8 temperature_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_temperature_p = kind(temperature_p)
  REAL*8 temperature_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_temperature_p_p = kind(temperature_p_p)
  REAL*8 tracer (cctk_ash1,cctk_ash2,cctk_ash3,GRHydro_tracers_length)
  integer, parameter :: cctki_use_tracer = kind(tracer)
  REAL*8 tracer_p (cctk_ash1,cctk_ash2,cctk_ash3,GRHydro_tracers_length)
  integer, parameter :: cctki_use_tracer_p = kind(tracer_p)
  REAL*8 tracer_p_p (cctk_ash1,cctk_ash2,cctk_ash3,GRHydro_tracers_length)
  integer, parameter :: cctki_use_tracer_p_p = kind(tracer_p_p)
  REAL*8 vel (cctk_ash1,cctk_ash2,cctk_ash3,vel_length)
  integer, parameter :: cctki_use_vel = kind(vel)
  REAL*8 vel_p (cctk_ash1,cctk_ash2,cctk_ash3,vel_length)
  integer, parameter :: cctki_use_vel_p = kind(vel_p)
  REAL*8 vel_p_p (cctk_ash1,cctk_ash2,cctk_ash3,vel_length)
  integer, parameter :: cctki_use_vel_p_p = kind(vel_p_p)
  REAL*8 velxminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_velxminus = kind(velxminus)
  REAL*8 velxplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_velxplus = kind(velxplus)
  REAL*8 velyminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_velyminus = kind(velyminus)
  REAL*8 velyplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_velyplus = kind(velyplus)
  REAL*8 velzminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_velzminus = kind(velzminus)
  REAL*8 velzplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_velzplus = kind(velzplus)
  REAL*8 w_lorentz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_w_lorentz = kind(w_lorentz)
  REAL*8 w_lorentz_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_w_lorentz_p = kind(w_lorentz_p)
  REAL*8 w_lorentz_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_w_lorentz_p_p = kind(w_lorentz_p_p)
  REAL*8 w_lorentzminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_w_lorentzminus = kind(w_lorentzminus)
  REAL*8 w_lorentzplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_w_lorentzplus = kind(w_lorentzplus)
  REAL*8 x (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_x = kind(x)
  INTEGER*4 xoffset
  integer, parameter :: cctki_use_xoffset = kind(xoffset)
  REAL*8 y (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_y = kind(y)
  INTEGER*4 yoffset
  integer, parameter :: cctki_use_yoffset = kind(yoffset)
  REAL*8 z (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_z = kind(z)
  INTEGER*4 zoffset
  integer, parameter :: cctki_use_zoffset = kind(zoffset)
  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 :: allocstat

  if(.not.allocated(weno_coeffs)) then 
     
     allocate(weno_coeffs(3, 5), STAT=allocstat)
     if (allocstat .ne. 0) then
       call CCTK_Error(51,"GRHydro_WENOReconstruct.F90","GRHydro","Failed to allocate WENO coefficient arrays!")
       STOP
     end if
     allocate(beta_shu(3, 6), STAT=allocstat)
     if (allocstat .ne. 0) then
       call CCTK_Error(56,"GRHydro_WENOReconstruct.F90","GRHydro","Failed to allocate smoothness indicator stencil coefficient arra&
  &ys!")
       STOP
     end if
  endif

  
  if ((CCTK_Equals(recon_method,"weno-z") .ne. 0)) then
      weno_coeffs(1,1) =   2.0d0/6.0d0
      weno_coeffs(1,2) =  -7.0d0/6.0d0
      weno_coeffs(1,3) =  11.0d0/6.0d0
      weno_coeffs(1,4) =   0.0d0
      weno_coeffs(1,5) =   0.0d0
      
      weno_coeffs(2,1) =   0.0d0
      weno_coeffs(2,2) =  -1.0d0/6.0d0
      weno_coeffs(2,3) =   5.0d0/6.0d0
      weno_coeffs(2,4) =   2.0d0/6.0d0
      weno_coeffs(2,5) =   0.0d0
      
      weno_coeffs(3,1) =   0.0d0
      weno_coeffs(3,2) =   0.0d0
      weno_coeffs(3,3) =   2.0d0/6.0d0
      weno_coeffs(3,4) =   5.0d0/6.0d0
      weno_coeffs(3,5) =  -1.0d0/6.0d0
  else
      weno_coeffs(1,1) =   3.0d0/8.0d0
      weno_coeffs(1,2) =  -5.0d0/4.0d0
      weno_coeffs(1,3) =  15.0d0/8.0d0
      weno_coeffs(1,4) =   0.0d0
      weno_coeffs(1,5) =   0.0d0
      
      weno_coeffs(2,1) =   0.0d0
      weno_coeffs(2,2) =  -1.0d0/8.0d0
      weno_coeffs(2,3) =   3.0d0/4.0d0
      weno_coeffs(2,4) =   3.0d0/8.0d0
      weno_coeffs(2,5) =   0.0d0
      
      weno_coeffs(3,1) =   0.0d0
      weno_coeffs(3,2) =   0.0d0
      weno_coeffs(3,3) =   3.0d0/8.0d0
      weno_coeffs(3,4) =   3.0d0/4.0d0
      weno_coeffs(3,5) =  -1.0d0/8.0d0
  endif
   
  
  beta_shu(1,1) =   4.0d0/3.0d0
  beta_shu(1,2) = -19.0d0/3.0d0
  beta_shu(1,3) =  25.0d0/3.0d0
  beta_shu(1,4) =  11.0d0/3.0d0
  beta_shu(1,5) = -31.0d0/3.0d0
  beta_shu(1,6) =  10.0d0/3.0d0
  
  beta_shu(2,1) =   4.0d0/3.0d0
  beta_shu(2,2) = -13.0d0/3.0d0
  beta_shu(2,3) =  13.0d0/3.0d0
  beta_shu(2,4) =   5.0d0/3.0d0
  beta_shu(2,5) = -13.0d0/3.0d0
  beta_shu(2,6) =   4.0d0/3.0d0
  
  beta_shu(3,1) =  10.0d0/3.0d0
  beta_shu(3,2) = -31.0d0/3.0d0
  beta_shu(3,3) =  25.0d0/3.0d0
  beta_shu(3,4) =  11.0d0/3.0d0
  beta_shu(3,5) = -19.0d0/3.0d0
  beta_shu(3,6) =   4.0d0/3.0d0
  
end subroutine GRHydro_WENOSetup

 

subroutine GRHydro_WENOShutdown(cctk_dim,cctk_gsh,cctk_lsh,cctk_lbnd,cctk_ubnd,cctk_tile_min,cctk_tile_max,cctk_ash,cctk_alignment,&
  &cctk_alignment_offset,cctk_from,cctk_to,cctk_bbox,cctk_delta_time,cctk_time,cctk_delta_space,cctk_origin_space,cctk_levfac,cctk_&
  &levoff,cctk_levoffdenom,cctk_timefac,cctk_convlevel,cctk_convfac,cctk_nghostzones,cctk_iteration,cctkGH,cctk_ash1,cctk_ash2,cctk&
  &_ash3, GRHydro_tracer_cons_bext_length,GRHydro_tracer_flux_length,GRHydro_tracer_flux_splitting_length,GRHydro_tracer_prim_bext_&
  &length,GRHydro_tracer_rhs_length,X0particle_arrays,X0particle_rhs,X0particles,Aphiminus,Aphiplus,Avecxminus,Avecxplus,Avecyminus&
  &,Avecyplus,Aveczminus,Aveczplus,Bconsxminus,Bconsxplus,Bconsyminus,Bconsyplus,Bconszminus,Bconszplus,Bvecxminus,Bvecxplus,Bvecym&
  &inus,Bvecyplus,Bveczminus,Bveczplus,DiffRho,GRHydro_maxima_iteration,GRHydro_mppm_eigenvalue_x_left,GRHydro_mppm_eigenvalue_x_ri&
  &ght,GRHydro_mppm_eigenvalue_y_left,GRHydro_mppm_eigenvalue_y_right,GRHydro_mppm_eigenvalue_z_left,GRHydro_mppm_eigenvalue_z_righ&
  &t,GRHydro_mppm_xwind,GRHydro_proper_separation,GRHydro_separation,GRHydro_trivial_rp_gf_x,GRHydro_trivial_rp_gf_y,GRHydro_trivia&
  &l_rp_gf_z,GRHydro_x,GRHydro_x_p,GRHydro_x_p_p,GRHydro_x_rhs,GRHydro_y,GRHydro_y_p,GRHydro_y_p_p,GRHydro_y_rhs,GRHydro_z,GRHydro_&
  &z_p,GRHydro_z_p_p,GRHydro_z_rhs,InLastMoLPostStep,Y_e_minus,Y_e_plus,cons_tracerflux,cons_tracerminus,cons_tracerplus,cons_trace&
  &rrhs,densfminus,densfplus,densminus,densplus,entropyconsminus,entropyconsplus,entropyminus,entropyplus,eos_c,eos_cs2_ave,eos_cs2&
  &_m,eos_cs2_p,eos_dpdeps_ave,eos_dpdeps_m,eos_dpdeps_p,eos_dpdeps_temp,eos_dpdrho_temp,eps_ave,execute_MoL_PostStep,execute_MoL_S&
  &tep,fs_alpha1,fs_alpha2,fs_alpha3,fs_alpha4,fs_alpha5,maxima_i,maxima_j,maxima_k,particle_alp,particle_betax,particle_betay,part&
  &icle_betaz,particle_vx,particle_vy,particle_vz,particle_x,particle_x_p,particle_x_p_p,particle_x_rhs,particle_y,particle_y_p,par&
  &ticle_y_p_p,particle_y_rhs,particle_z,particle_z_p,particle_z_p_p,particle_z_rhs,press_ave,press_new,press_old,psidcminus,psidcp&
  &lus,rho_ave,sxfminus,sxfplus,sxminus,sxplus,syfminus,syfplus,syminus,syplus,szfminus,szfplus,szminus,szplus,taufminus,taufplus,t&
  &auminus,tauplus,tempminus,tempplus,tracerfminus,tracerfplus,tracerminus,tracerplus,velx_ave,vely_ave,velz_ave,whichpsidcspeed, A&
  &vec_length,Avecrhs_length,Bcons_length,Bconsrhs_length,Bvec_length,Evec_length,GRHydro_cons_tracers_length,GRHydro_tracers_lengt&
  &h,bcom_length,lBvec_length,lvel_length,scon_length,srhs_length,vel_length,Abar,Abar_p,Abar_p_p,Aphi,Aphi_p,Aphi_p_p,Aphiflux,Aph&
  &irhs,Avec,Avec_p,Avec_p_p,Avecrhs,Avecxflux,Avecyflux,Aveczflux,Bcons,Bcons_p,Bcons_p_p,Bconsrhs,Bconsxflux,Bconsyflux,Bconszflu&
  &x,Bvec,Bvec_p,Bvec_p_p,Evec,GRHydro_C2P_failed,GRHydro_eos_handle,GRHydro_polytrope_handle,GRHydro_reflevel,GRHydro_rho_min,GRHy&
  &dro_tau_min,Y_e,Y_e_p,Y_e_p_p,Y_e_con,Y_e_con_p,Y_e_con_p_p,Y_e_con_flux,Y_e_con_rhs,alp,alp_p,alp_p_p,atmosphere_atmosp_descrip&
  &tor,atmosphere_field_descriptor,atmosphere_mask,atmosphere_mask_real,atmosphere_normal_descriptor,bcom,bcom_p,bcom_p_p,bcom0,bco&
  &m0_p,bcom0_p_p,bcom_sq,bcom_sq_p,bcom_sq_p_p,betaa,betab,betac,betax,betax_p,betax_p_p,betay,betay_p,betay_p_p,betaz,betaz_p,bet&
  &az_p_p,coarse_dx,coarse_dy,coarse_dz,conformal_state,cons_tracer,cons_tracer_p,cons_tracer_p_p,cs2minus,cs2plus,dens,dens_p,dens&
  &_p_p,densflux,densrhs,divB,dtalp,dtalp_p,dtalp_p_p,dtbetax,dtbetax_p,dtbetax_p_p,dtbetay,dtbetay_p,dtbetay_p_p,dtbetaz,dtbetaz_p&
  &,dtbetaz_p_p,dtlapse_state,dtshift_state,eTtt,eTtt_p,eTtt_p_p,eTtx,eTtx_p,eTtx_p_p,eTty,eTty_p,eTty_p_p,eTtz,eTtz_p,eTtz_p_p,eTx&
  &x,eTxx_p,eTxx_p_p,eTxy,eTxy_p,eTxy_p_p,eTxz,eTxz_p,eTxz_p_p,eTyy,eTyy_p,eTyy_p_p,eTyz,eTyz_p,eTyz_p_p,eTzz,eTzz_p,eTzz_p_p,emask&
  &,entropy,entropy_p,entropy_p_p,entropycons,entropycons_p,entropycons_p_p,entropyflux,entropyrhs,eps,eps_p,eps_p_p,epsminus,epspl&
  &us,evolve_Lorenz_gge,evolve_MHD,evolve_Y_e,evolve_entropy,evolve_temper,flux_direction,gaa,gaa_p,gaa_p_p,gab,gab_p,gab_p_p,gac,g&
  &ac_p,gac_p_p,gbb,gbb_p,gbb_p_p,gbc,gbc_p,gbc_p_p,gcc,gcc_p,gcc_p_p,gxx,gxx_p,gxx_p_p,gxy,gxy_p,gxy_p_p,gxz,gxz_p,gxz_p_p,gyy,gyy&
  &_p,gyy_p_p,gyz,gyz_p,gyz_p_p,gzz,gzz_p,gzz_p_p,hydro_excision_mask,kaa,kab,kac,kbb,kbc,kcc,kxx,kxx_p,kxx_p_p,kxy,kxy_p,kxy_p_p,k&
  &xz,kxz_p,kxz_p_p,kyy,kyy_p,kyy_p_p,kyz,kyz_p,kyz_p_p,kzz,kzz_p,kzz_p_p,lBvec,lBvec_p,lBvec_p_p,lvel,lvel_p,lvel_p_p,maxima_x,max&
  &ima_y,maxima_z,maximum_density,maxrho_global,press,press_p,press_p_p,pressminus,pressplus,psi,psidc,psidc_p,psidc_p_p,psidcflux,&
  &psidcrhs,psix,psixx,psixy,psixz,psiy,psiyy,psiyz,psiz,psizz,r,rho,rho_p,rho_p_p,rhominus,rhoplus,scon,scon_p,scon_p_p,sdetg,shif&
  &t_state,space_mask,srhs,stress_energy_state,sxflux,syflux,szflux,tau,tau_p,tau_p_p,tauflux,taurhs,temperature,temperature_p,temp&
  &erature_p_p,tracer,tracer_p,tracer_p_p,vel,vel_p,vel_p_p,velxminus,velxplus,velyminus,velyplus,velzminus,velzplus,w_lorentz,w_lo&
  &rentz_p,w_lorentz_p_p,w_lorentzminus,w_lorentzplus,x,xoffset,y,yoffset,z,zoffset)

  USE GRHydro_WENOScalars

  implicit none


  INTEGER cctk_dim
  integer, parameter :: cctki_use_cctk_dim = kind(cctk_dim)
  INTEGER cctk_gsh (cctk_dim)
  integer, parameter :: cctki_use_cctk_gsh = kind(cctk_gsh)
  INTEGER cctk_lsh (cctk_dim)
  integer, parameter :: cctki_use_cctk_lsh = kind(cctk_lsh)
  INTEGER cctk_lbnd (cctk_dim)
  integer, parameter :: cctki_use_cctk_lbnd = kind(cctk_lbnd)
  INTEGER cctk_ubnd (cctk_dim)
  integer, parameter :: cctki_use_cctk_ubnd = kind(cctk_ubnd)
  INTEGER cctk_tile_min (cctk_dim)
  integer, parameter :: cctki_use_cctk_tile_min = kind(cctk_tile_min)
  INTEGER cctk_tile_max (cctk_dim)
  integer, parameter :: cctki_use_cctk_tile_max = kind(cctk_tile_max)
  INTEGER cctk_ash (cctk_dim)
  integer, parameter :: cctki_use_cctk_ash = kind(cctk_ash)
  INTEGER cctk_alignment
  integer, parameter :: cctki_use_cctk_alignment = kind(cctk_alignment)
  INTEGER cctk_alignment_offset
  integer, parameter :: cctki_use_cctk_alignment_offset = kind(cctk_alignment_offset)
  INTEGER cctk_from (cctk_dim)
  integer, parameter :: cctki_use_cctk_from = kind(cctk_from)
  INTEGER cctk_to (cctk_dim)
  integer, parameter :: cctki_use_cctk_to = kind(cctk_to)
  INTEGER cctk_bbox (2*cctk_dim)
  integer, parameter :: cctki_use_cctk_bbox = kind(cctk_bbox)
  REAL*8 cctk_delta_time
  integer, parameter :: cctki_use_cctk_delta_time = kind(cctk_delta_time)
  REAL*8 cctk_time
  integer, parameter :: cctki_use_cctk_time = kind(cctk_time)
  REAL*8 cctk_delta_space (cctk_dim)
  integer, parameter :: cctki_use_cctk_delta_space = kind(cctk_delta_space)
  REAL*8 cctk_origin_space (cctk_dim)
  integer, parameter :: cctki_use_cctk_origin_space = kind(cctk_origin_space)
  INTEGER cctk_levfac (cctk_dim)
  integer, parameter :: cctki_use_cctk_levfac = kind(cctk_levfac)
  INTEGER cctk_levoff (cctk_dim)
  integer, parameter :: cctki_use_cctk_levoff = kind(cctk_levoff)
  INTEGER cctk_levoffdenom (cctk_dim)
  integer, parameter :: cctki_use_cctk_levoffdenom = kind(cctk_levoffdenom)
  INTEGER cctk_timefac
  integer, parameter :: cctki_use_cctk_timefac = kind(cctk_timefac)
  INTEGER cctk_convlevel
  integer, parameter :: cctki_use_cctk_convlevel = kind(cctk_convlevel)
  INTEGER cctk_convfac
  integer, parameter :: cctki_use_cctk_convfac = kind(cctk_convfac)
  INTEGER cctk_nghostzones (cctk_dim)
  integer, parameter :: cctki_use_cctk_nghostzones = kind(cctk_nghostzones)
  INTEGER cctk_iteration
  integer, parameter :: cctki_use_cctk_iteration = kind(cctk_iteration)
  integer*8 cctkGH
  integer, parameter :: cctki_use_cctkGH = kind(cctkGH)
  INTEGER cctk_ash1
  integer, parameter :: cctki_use_cctk_ash1 = kind(cctk_ash1)
  INTEGER cctk_ash2
  integer, parameter :: cctki_use_cctk_ash2 = kind(cctk_ash2)
  INTEGER cctk_ash3
  integer, parameter :: cctki_use_cctk_ash3 = kind(cctk_ash3)
  INTEGER GRHydro_tracer_cons_bext_length
  INTEGER GRHydro_tracer_flux_length
  INTEGER GRHydro_tracer_flux_splitting_length
  INTEGER GRHydro_tracer_prim_bext_length
  INTEGER GRHydro_tracer_rhs_length
  INTEGER X0particle_arrays
  INTEGER X0particle_rhs
  INTEGER X0particles
  REAL*8 Aphiminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Aphiminus = kind(Aphiminus)
  REAL*8 Aphiplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Aphiplus = kind(Aphiplus)
  REAL*8 Avecxminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Avecxminus = kind(Avecxminus)
  REAL*8 Avecxplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Avecxplus = kind(Avecxplus)
  REAL*8 Avecyminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Avecyminus = kind(Avecyminus)
  REAL*8 Avecyplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Avecyplus = kind(Avecyplus)
  REAL*8 Aveczminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Aveczminus = kind(Aveczminus)
  REAL*8 Aveczplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Aveczplus = kind(Aveczplus)
  REAL*8 Bconsxminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Bconsxminus = kind(Bconsxminus)
  REAL*8 Bconsxplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Bconsxplus = kind(Bconsxplus)
  REAL*8 Bconsyminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Bconsyminus = kind(Bconsyminus)
  REAL*8 Bconsyplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Bconsyplus = kind(Bconsyplus)
  REAL*8 Bconszminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Bconszminus = kind(Bconszminus)
  REAL*8 Bconszplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Bconszplus = kind(Bconszplus)
  REAL*8 Bvecxminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Bvecxminus = kind(Bvecxminus)
  REAL*8 Bvecxplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Bvecxplus = kind(Bvecxplus)
  REAL*8 Bvecyminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Bvecyminus = kind(Bvecyminus)
  REAL*8 Bvecyplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Bvecyplus = kind(Bvecyplus)
  REAL*8 Bveczminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Bveczminus = kind(Bveczminus)
  REAL*8 Bveczplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Bveczplus = kind(Bveczplus)
  REAL*8 DiffRho (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_DiffRho = kind(DiffRho)
  INTEGER*4 GRHydro_maxima_iteration
  integer, parameter :: cctki_use_GRHydro_maxima_iteration = kind(GRHydro_maxima_iteration)
  REAL*8 GRHydro_mppm_eigenvalue_x_left (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_mppm_eigenvalue_x_left = kind(GRHydro_mppm_eigenvalue_x_left)
  REAL*8 GRHydro_mppm_eigenvalue_x_right (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_mppm_eigenvalue_x_right = kind(GRHydro_mppm_eigenvalue_x_right)
  REAL*8 GRHydro_mppm_eigenvalue_y_left (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_mppm_eigenvalue_y_left = kind(GRHydro_mppm_eigenvalue_y_left)
  REAL*8 GRHydro_mppm_eigenvalue_y_right (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_mppm_eigenvalue_y_right = kind(GRHydro_mppm_eigenvalue_y_right)
  REAL*8 GRHydro_mppm_eigenvalue_z_left (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_mppm_eigenvalue_z_left = kind(GRHydro_mppm_eigenvalue_z_left)
  REAL*8 GRHydro_mppm_eigenvalue_z_right (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_mppm_eigenvalue_z_right = kind(GRHydro_mppm_eigenvalue_z_right)
  REAL*8 GRHydro_mppm_xwind (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_mppm_xwind = kind(GRHydro_mppm_xwind)
  REAL*8 GRHydro_proper_separation
  integer, parameter :: cctki_use_GRHydro_proper_separation = kind(GRHydro_proper_separation)
  REAL*8 GRHydro_separation
  integer, parameter :: cctki_use_GRHydro_separation = kind(GRHydro_separation)
  INTEGER*4 GRHydro_trivial_rp_gf_x (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_trivial_rp_gf_x = kind(GRHydro_trivial_rp_gf_x)
  INTEGER*4 GRHydro_trivial_rp_gf_y (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_trivial_rp_gf_y = kind(GRHydro_trivial_rp_gf_y)
  INTEGER*4 GRHydro_trivial_rp_gf_z (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_trivial_rp_gf_z = kind(GRHydro_trivial_rp_gf_z)
  REAL*8 GRHydro_x (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_x = kind(GRHydro_x)
  REAL*8 GRHydro_x_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_x_p = kind(GRHydro_x_p)
  REAL*8 GRHydro_x_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_x_p_p = kind(GRHydro_x_p_p)
  REAL*8 GRHydro_x_rhs (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_x_rhs = kind(GRHydro_x_rhs)
  REAL*8 GRHydro_y (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_y = kind(GRHydro_y)
  REAL*8 GRHydro_y_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_y_p = kind(GRHydro_y_p)
  REAL*8 GRHydro_y_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_y_p_p = kind(GRHydro_y_p_p)
  REAL*8 GRHydro_y_rhs (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_y_rhs = kind(GRHydro_y_rhs)
  REAL*8 GRHydro_z (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_z = kind(GRHydro_z)
  REAL*8 GRHydro_z_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_z_p = kind(GRHydro_z_p)
  REAL*8 GRHydro_z_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_z_p_p = kind(GRHydro_z_p_p)
  REAL*8 GRHydro_z_rhs (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_z_rhs = kind(GRHydro_z_rhs)
  INTEGER*4 InLastMoLPostStep
  integer, parameter :: cctki_use_InLastMoLPostStep = kind(InLastMoLPostStep)
  REAL*8 Y_e_minus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Y_e_minus = kind(Y_e_minus)
  REAL*8 Y_e_plus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Y_e_plus = kind(Y_e_plus)
  REAL*8 cons_tracerflux (cctk_ash1,cctk_ash2,cctk_ash3,GRHydro_tracer_flux_length)
  integer, parameter :: cctki_use_cons_tracerflux = kind(cons_tracerflux)
  REAL*8 cons_tracerminus (cctk_ash1,cctk_ash2,cctk_ash3,GRHydro_tracer_cons_bext_length)
  integer, parameter :: cctki_use_cons_tracerminus = kind(cons_tracerminus)
  REAL*8 cons_tracerplus (cctk_ash1,cctk_ash2,cctk_ash3,GRHydro_tracer_cons_bext_length)
  integer, parameter :: cctki_use_cons_tracerplus = kind(cons_tracerplus)
  REAL*8 cons_tracerrhs (cctk_ash1,cctk_ash2,cctk_ash3,GRHydro_tracer_rhs_length)
  integer, parameter :: cctki_use_cons_tracerrhs = kind(cons_tracerrhs)
  REAL*8 densfminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_densfminus = kind(densfminus)
  REAL*8 densfplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_densfplus = kind(densfplus)
  REAL*8 densminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_densminus = kind(densminus)
  REAL*8 densplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_densplus = kind(densplus)
  REAL*8 entropyconsminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_entropyconsminus = kind(entropyconsminus)
  REAL*8 entropyconsplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_entropyconsplus = kind(entropyconsplus)
  REAL*8 entropyminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_entropyminus = kind(entropyminus)
  REAL*8 entropyplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_entropyplus = kind(entropyplus)
  REAL*8 eos_c (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eos_c = kind(eos_c)
  REAL*8 eos_cs2_ave (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eos_cs2_ave = kind(eos_cs2_ave)
  REAL*8 eos_cs2_m (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eos_cs2_m = kind(eos_cs2_m)
  REAL*8 eos_cs2_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eos_cs2_p = kind(eos_cs2_p)
  REAL*8 eos_dpdeps_ave (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eos_dpdeps_ave = kind(eos_dpdeps_ave)
  REAL*8 eos_dpdeps_m (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eos_dpdeps_m = kind(eos_dpdeps_m)
  REAL*8 eos_dpdeps_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eos_dpdeps_p = kind(eos_dpdeps_p)
  REAL*8 eos_dpdeps_temp (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eos_dpdeps_temp = kind(eos_dpdeps_temp)
  REAL*8 eos_dpdrho_temp (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eos_dpdrho_temp = kind(eos_dpdrho_temp)
  REAL*8 eps_ave (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eps_ave = kind(eps_ave)
  INTEGER*4 execute_MoL_PostStep
  integer, parameter :: cctki_use_execute_MoL_PostStep = kind(execute_MoL_PostStep)
  INTEGER*4 execute_MoL_Step
  integer, parameter :: cctki_use_execute_MoL_Step = kind(execute_MoL_Step)
  REAL*8 fs_alpha1
  integer, parameter :: cctki_use_fs_alpha1 = kind(fs_alpha1)
  REAL*8 fs_alpha2
  integer, parameter :: cctki_use_fs_alpha2 = kind(fs_alpha2)
  REAL*8 fs_alpha3
  integer, parameter :: cctki_use_fs_alpha3 = kind(fs_alpha3)
  REAL*8 fs_alpha4
  integer, parameter :: cctki_use_fs_alpha4 = kind(fs_alpha4)
  REAL*8 fs_alpha5
  integer, parameter :: cctki_use_fs_alpha5 = kind(fs_alpha5)
  REAL*8 maxima_i
  integer, parameter :: cctki_use_maxima_i = kind(maxima_i)
  REAL*8 maxima_j
  integer, parameter :: cctki_use_maxima_j = kind(maxima_j)
  REAL*8 maxima_k
  integer, parameter :: cctki_use_maxima_k = kind(maxima_k)
  REAL*8 particle_alp (X0particle_arrays)
  integer, parameter :: cctki_use_particle_alp = kind(particle_alp)
  REAL*8 particle_betax (X0particle_arrays)
  integer, parameter :: cctki_use_particle_betax = kind(particle_betax)
  REAL*8 particle_betay (X0particle_arrays)
  integer, parameter :: cctki_use_particle_betay = kind(particle_betay)
  REAL*8 particle_betaz (X0particle_arrays)
  integer, parameter :: cctki_use_particle_betaz = kind(particle_betaz)
  REAL*8 particle_vx (X0particle_arrays)
  integer, parameter :: cctki_use_particle_vx = kind(particle_vx)
  REAL*8 particle_vy (X0particle_arrays)
  integer, parameter :: cctki_use_particle_vy = kind(particle_vy)
  REAL*8 particle_vz (X0particle_arrays)
  integer, parameter :: cctki_use_particle_vz = kind(particle_vz)
  REAL*8 particle_x (X0particles)
  integer, parameter :: cctki_use_particle_x = kind(particle_x)
  REAL*8 particle_x_p (X0particles)
  integer, parameter :: cctki_use_particle_x_p = kind(particle_x_p)
  REAL*8 particle_x_p_p (X0particles)
  integer, parameter :: cctki_use_particle_x_p_p = kind(particle_x_p_p)
  REAL*8 particle_x_rhs (X0particle_rhs)
  integer, parameter :: cctki_use_particle_x_rhs = kind(particle_x_rhs)
  REAL*8 particle_y (X0particles)
  integer, parameter :: cctki_use_particle_y = kind(particle_y)
  REAL*8 particle_y_p (X0particles)
  integer, parameter :: cctki_use_particle_y_p = kind(particle_y_p)
  REAL*8 particle_y_p_p (X0particles)
  integer, parameter :: cctki_use_particle_y_p_p = kind(particle_y_p_p)
  REAL*8 particle_y_rhs (X0particle_rhs)
  integer, parameter :: cctki_use_particle_y_rhs = kind(particle_y_rhs)
  REAL*8 particle_z (X0particles)
  integer, parameter :: cctki_use_particle_z = kind(particle_z)
  REAL*8 particle_z_p (X0particles)
  integer, parameter :: cctki_use_particle_z_p = kind(particle_z_p)
  REAL*8 particle_z_p_p (X0particles)
  integer, parameter :: cctki_use_particle_z_p_p = kind(particle_z_p_p)
  REAL*8 particle_z_rhs (X0particle_rhs)
  integer, parameter :: cctki_use_particle_z_rhs = kind(particle_z_rhs)
  REAL*8 press_ave (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_press_ave = kind(press_ave)
  REAL*8 press_new (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_press_new = kind(press_new)
  REAL*8 press_old (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_press_old = kind(press_old)
  REAL*8 psidcminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_psidcminus = kind(psidcminus)
  REAL*8 psidcplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_psidcplus = kind(psidcplus)
  REAL*8 rho_ave (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_rho_ave = kind(rho_ave)
  REAL*8 sxfminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_sxfminus = kind(sxfminus)
  REAL*8 sxfplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_sxfplus = kind(sxfplus)
  REAL*8 sxminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_sxminus = kind(sxminus)
  REAL*8 sxplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_sxplus = kind(sxplus)
  REAL*8 syfminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_syfminus = kind(syfminus)
  REAL*8 syfplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_syfplus = kind(syfplus)
  REAL*8 syminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_syminus = kind(syminus)
  REAL*8 syplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_syplus = kind(syplus)
  REAL*8 szfminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_szfminus = kind(szfminus)
  REAL*8 szfplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_szfplus = kind(szfplus)
  REAL*8 szminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_szminus = kind(szminus)
  REAL*8 szplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_szplus = kind(szplus)
  REAL*8 taufminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_taufminus = kind(taufminus)
  REAL*8 taufplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_taufplus = kind(taufplus)
  REAL*8 tauminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_tauminus = kind(tauminus)
  REAL*8 tauplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_tauplus = kind(tauplus)
  REAL*8 tempminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_tempminus = kind(tempminus)
  REAL*8 tempplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_tempplus = kind(tempplus)
  REAL*8 tracerfminus (cctk_ash1,cctk_ash2,cctk_ash3,GRHydro_tracer_flux_splitting_length)
  integer, parameter :: cctki_use_tracerfminus = kind(tracerfminus)
  REAL*8 tracerfplus (cctk_ash1,cctk_ash2,cctk_ash3,GRHydro_tracer_flux_splitting_length)
  integer, parameter :: cctki_use_tracerfplus = kind(tracerfplus)
  REAL*8 tracerminus (cctk_ash1,cctk_ash2,cctk_ash3,GRHydro_tracer_prim_bext_length)
  integer, parameter :: cctki_use_tracerminus = kind(tracerminus)
  REAL*8 tracerplus (cctk_ash1,cctk_ash2,cctk_ash3,GRHydro_tracer_prim_bext_length)
  integer, parameter :: cctki_use_tracerplus = kind(tracerplus)
  REAL*8 velx_ave (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_velx_ave = kind(velx_ave)
  REAL*8 vely_ave (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_vely_ave = kind(vely_ave)
  REAL*8 velz_ave (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_velz_ave = kind(velz_ave)
  INTEGER*4 whichpsidcspeed
  integer, parameter :: cctki_use_whichpsidcspeed = kind(whichpsidcspeed)
  INTEGER Avec_length
  INTEGER Avecrhs_length
  INTEGER Bcons_length
  INTEGER Bconsrhs_length
  INTEGER Bvec_length
  INTEGER Evec_length
  INTEGER GRHydro_cons_tracers_length
  INTEGER GRHydro_tracers_length
  INTEGER bcom_length
  INTEGER lBvec_length
  INTEGER lvel_length
  INTEGER scon_length
  INTEGER srhs_length
  INTEGER vel_length
  REAL*8 Abar (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Abar = kind(Abar)
  REAL*8 Abar_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Abar_p = kind(Abar_p)
  REAL*8 Abar_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Abar_p_p = kind(Abar_p_p)
  REAL*8 Aphi (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Aphi = kind(Aphi)
  REAL*8 Aphi_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Aphi_p = kind(Aphi_p)
  REAL*8 Aphi_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Aphi_p_p = kind(Aphi_p_p)
  REAL*8 Aphiflux (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Aphiflux = kind(Aphiflux)
  REAL*8 Aphirhs (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Aphirhs = kind(Aphirhs)
  REAL*8 Avec (cctk_ash1,cctk_ash2,cctk_ash3,Avec_length)
  integer, parameter :: cctki_use_Avec = kind(Avec)
  REAL*8 Avec_p (cctk_ash1,cctk_ash2,cctk_ash3,Avec_length)
  integer, parameter :: cctki_use_Avec_p = kind(Avec_p)
  REAL*8 Avec_p_p (cctk_ash1,cctk_ash2,cctk_ash3,Avec_length)
  integer, parameter :: cctki_use_Avec_p_p = kind(Avec_p_p)
  REAL*8 Avecrhs (cctk_ash1,cctk_ash2,cctk_ash3,Avecrhs_length)
  integer, parameter :: cctki_use_Avecrhs = kind(Avecrhs)
  REAL*8 Avecxflux (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Avecxflux = kind(Avecxflux)
  REAL*8 Avecyflux (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Avecyflux = kind(Avecyflux)
  REAL*8 Aveczflux (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Aveczflux = kind(Aveczflux)
  REAL*8 Bcons (cctk_ash1,cctk_ash2,cctk_ash3,Bcons_length)
  integer, parameter :: cctki_use_Bcons = kind(Bcons)
  REAL*8 Bcons_p (cctk_ash1,cctk_ash2,cctk_ash3,Bcons_length)
  integer, parameter :: cctki_use_Bcons_p = kind(Bcons_p)
  REAL*8 Bcons_p_p (cctk_ash1,cctk_ash2,cctk_ash3,Bcons_length)
  integer, parameter :: cctki_use_Bcons_p_p = kind(Bcons_p_p)
  REAL*8 Bconsrhs (cctk_ash1,cctk_ash2,cctk_ash3,Bconsrhs_length)
  integer, parameter :: cctki_use_Bconsrhs = kind(Bconsrhs)
  REAL*8 Bconsxflux (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Bconsxflux = kind(Bconsxflux)
  REAL*8 Bconsyflux (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Bconsyflux = kind(Bconsyflux)
  REAL*8 Bconszflux (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Bconszflux = kind(Bconszflux)
  REAL*8 Bvec (cctk_ash1,cctk_ash2,cctk_ash3,Bvec_length)
  integer, parameter :: cctki_use_Bvec = kind(Bvec)
  REAL*8 Bvec_p (cctk_ash1,cctk_ash2,cctk_ash3,Bvec_length)
  integer, parameter :: cctki_use_Bvec_p = kind(Bvec_p)
  REAL*8 Bvec_p_p (cctk_ash1,cctk_ash2,cctk_ash3,Bvec_length)
  integer, parameter :: cctki_use_Bvec_p_p = kind(Bvec_p_p)
  REAL*8 Evec (cctk_ash1,cctk_ash2,cctk_ash3,Evec_length)
  integer, parameter :: cctki_use_Evec = kind(Evec)
  REAL*8 GRHydro_C2P_failed (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_GRHydro_C2P_failed = kind(GRHydro_C2P_failed)
  INTEGER*4 GRHydro_eos_handle
  integer, parameter :: cctki_use_GRHydro_eos_handle = kind(GRHydro_eos_handle)
  INTEGER*4 GRHydro_polytrope_handle
  integer, parameter :: cctki_use_GRHydro_polytrope_handle = kind(GRHydro_polytrope_handle)
  INTEGER*4 GRHydro_reflevel
  integer, parameter :: cctki_use_GRHydro_reflevel = kind(GRHydro_reflevel)
  REAL*8 GRHydro_rho_min
  integer, parameter :: cctki_use_GRHydro_rho_min = kind(GRHydro_rho_min)
  REAL*8 GRHydro_tau_min
  integer, parameter :: cctki_use_GRHydro_tau_min = kind(GRHydro_tau_min)
  REAL*8 Y_e (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Y_e = kind(Y_e)
  REAL*8 Y_e_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Y_e_p = kind(Y_e_p)
  REAL*8 Y_e_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Y_e_p_p = kind(Y_e_p_p)
  REAL*8 Y_e_con (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Y_e_con = kind(Y_e_con)
  REAL*8 Y_e_con_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Y_e_con_p = kind(Y_e_con_p)
  REAL*8 Y_e_con_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Y_e_con_p_p = kind(Y_e_con_p_p)
  REAL*8 Y_e_con_flux (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Y_e_con_flux = kind(Y_e_con_flux)
  REAL*8 Y_e_con_rhs (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Y_e_con_rhs = kind(Y_e_con_rhs)
  REAL*8 alp (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_alp = kind(alp)
  REAL*8 alp_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_alp_p = kind(alp_p)
  REAL*8 alp_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_alp_p_p = kind(alp_p_p)
  INTEGER*4 atmosphere_atmosp_descriptor
  integer, parameter :: cctki_use_atmosphere_atmosp_descriptor = kind(atmosphere_atmosp_descriptor)
  INTEGER*4 atmosphere_field_descriptor
  integer, parameter :: cctki_use_atmosphere_field_descriptor = kind(atmosphere_field_descriptor)
  INTEGER*4 atmosphere_mask (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_atmosphere_mask = kind(atmosphere_mask)
  REAL*8 atmosphere_mask_real (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_atmosphere_mask_real = kind(atmosphere_mask_real)
  INTEGER*4 atmosphere_normal_descriptor
  integer, parameter :: cctki_use_atmosphere_normal_descriptor = kind(atmosphere_normal_descriptor)
  REAL*8 bcom (cctk_ash1,cctk_ash2,cctk_ash3,bcom_length)
  integer, parameter :: cctki_use_bcom = kind(bcom)
  REAL*8 bcom_p (cctk_ash1,cctk_ash2,cctk_ash3,bcom_length)
  integer, parameter :: cctki_use_bcom_p = kind(bcom_p)
  REAL*8 bcom_p_p (cctk_ash1,cctk_ash2,cctk_ash3,bcom_length)
  integer, parameter :: cctki_use_bcom_p_p = kind(bcom_p_p)
  REAL*8 bcom0 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_bcom0 = kind(bcom0)
  REAL*8 bcom0_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_bcom0_p = kind(bcom0_p)
  REAL*8 bcom0_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_bcom0_p_p = kind(bcom0_p_p)
  REAL*8 bcom_sq (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_bcom_sq = kind(bcom_sq)
  REAL*8 bcom_sq_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_bcom_sq_p = kind(bcom_sq_p)
  REAL*8 bcom_sq_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_bcom_sq_p_p = kind(bcom_sq_p_p)
  REAL*8 betaa (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_betaa = kind(betaa)
  REAL*8 betab (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_betab = kind(betab)
  REAL*8 betac (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_betac = kind(betac)
  REAL*8 betax (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_betax = kind(betax)
  REAL*8 betax_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_betax_p = kind(betax_p)
  REAL*8 betax_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_betax_p_p = kind(betax_p_p)
  REAL*8 betay (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_betay = kind(betay)
  REAL*8 betay_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_betay_p = kind(betay_p)
  REAL*8 betay_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_betay_p_p = kind(betay_p_p)
  REAL*8 betaz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_betaz = kind(betaz)
  REAL*8 betaz_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_betaz_p = kind(betaz_p)
  REAL*8 betaz_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_betaz_p_p = kind(betaz_p_p)
  REAL*8 coarse_dx
  integer, parameter :: cctki_use_coarse_dx = kind(coarse_dx)
  REAL*8 coarse_dy
  integer, parameter :: cctki_use_coarse_dy = kind(coarse_dy)
  REAL*8 coarse_dz
  integer, parameter :: cctki_use_coarse_dz = kind(coarse_dz)
  INTEGER*4 conformal_state
  integer, parameter :: cctki_use_conformal_state = kind(conformal_state)
  REAL*8 cons_tracer (cctk_ash1,cctk_ash2,cctk_ash3,GRHydro_cons_tracers_length)
  integer, parameter :: cctki_use_cons_tracer = kind(cons_tracer)
  REAL*8 cons_tracer_p (cctk_ash1,cctk_ash2,cctk_ash3,GRHydro_cons_tracers_length)
  integer, parameter :: cctki_use_cons_tracer_p = kind(cons_tracer_p)
  REAL*8 cons_tracer_p_p (cctk_ash1,cctk_ash2,cctk_ash3,GRHydro_cons_tracers_length)
  integer, parameter :: cctki_use_cons_tracer_p_p = kind(cons_tracer_p_p)
  REAL*8 cs2minus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_cs2minus = kind(cs2minus)
  REAL*8 cs2plus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_cs2plus = kind(cs2plus)
  REAL*8 dens (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dens = kind(dens)
  REAL*8 dens_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dens_p = kind(dens_p)
  REAL*8 dens_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dens_p_p = kind(dens_p_p)
  REAL*8 densflux (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_densflux = kind(densflux)
  REAL*8 densrhs (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_densrhs = kind(densrhs)
  REAL*8 divB (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_divB = kind(divB)
  REAL*8 dtalp (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dtalp = kind(dtalp)
  REAL*8 dtalp_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dtalp_p = kind(dtalp_p)
  REAL*8 dtalp_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dtalp_p_p = kind(dtalp_p_p)
  REAL*8 dtbetax (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dtbetax = kind(dtbetax)
  REAL*8 dtbetax_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dtbetax_p = kind(dtbetax_p)
  REAL*8 dtbetax_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dtbetax_p_p = kind(dtbetax_p_p)
  REAL*8 dtbetay (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dtbetay = kind(dtbetay)
  REAL*8 dtbetay_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dtbetay_p = kind(dtbetay_p)
  REAL*8 dtbetay_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dtbetay_p_p = kind(dtbetay_p_p)
  REAL*8 dtbetaz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dtbetaz = kind(dtbetaz)
  REAL*8 dtbetaz_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dtbetaz_p = kind(dtbetaz_p)
  REAL*8 dtbetaz_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dtbetaz_p_p = kind(dtbetaz_p_p)
  INTEGER*4 dtlapse_state
  integer, parameter :: cctki_use_dtlapse_state = kind(dtlapse_state)
  INTEGER*4 dtshift_state
  integer, parameter :: cctki_use_dtshift_state = kind(dtshift_state)
  REAL*8 eTtt (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTtt = kind(eTtt)
  REAL*8 eTtt_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTtt_p = kind(eTtt_p)
  REAL*8 eTtt_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTtt_p_p = kind(eTtt_p_p)
  REAL*8 eTtx (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTtx = kind(eTtx)
  REAL*8 eTtx_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTtx_p = kind(eTtx_p)
  REAL*8 eTtx_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTtx_p_p = kind(eTtx_p_p)
  REAL*8 eTty (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTty = kind(eTty)
  REAL*8 eTty_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTty_p = kind(eTty_p)
  REAL*8 eTty_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTty_p_p = kind(eTty_p_p)
  REAL*8 eTtz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTtz = kind(eTtz)
  REAL*8 eTtz_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTtz_p = kind(eTtz_p)
  REAL*8 eTtz_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTtz_p_p = kind(eTtz_p_p)
  REAL*8 eTxx (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTxx = kind(eTxx)
  REAL*8 eTxx_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTxx_p = kind(eTxx_p)
  REAL*8 eTxx_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTxx_p_p = kind(eTxx_p_p)
  REAL*8 eTxy (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTxy = kind(eTxy)
  REAL*8 eTxy_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTxy_p = kind(eTxy_p)
  REAL*8 eTxy_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTxy_p_p = kind(eTxy_p_p)
  REAL*8 eTxz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTxz = kind(eTxz)
  REAL*8 eTxz_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTxz_p = kind(eTxz_p)
  REAL*8 eTxz_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTxz_p_p = kind(eTxz_p_p)
  REAL*8 eTyy (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTyy = kind(eTyy)
  REAL*8 eTyy_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTyy_p = kind(eTyy_p)
  REAL*8 eTyy_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTyy_p_p = kind(eTyy_p_p)
  REAL*8 eTyz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTyz = kind(eTyz)
  REAL*8 eTyz_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTyz_p = kind(eTyz_p)
  REAL*8 eTyz_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTyz_p_p = kind(eTyz_p_p)
  REAL*8 eTzz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTzz = kind(eTzz)
  REAL*8 eTzz_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTzz_p = kind(eTzz_p)
  REAL*8 eTzz_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eTzz_p_p = kind(eTzz_p_p)
  REAL*8 emask (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_emask = kind(emask)
  REAL*8 entropy (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_entropy = kind(entropy)
  REAL*8 entropy_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_entropy_p = kind(entropy_p)
  REAL*8 entropy_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_entropy_p_p = kind(entropy_p_p)
  REAL*8 entropycons (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_entropycons = kind(entropycons)
  REAL*8 entropycons_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_entropycons_p = kind(entropycons_p)
  REAL*8 entropycons_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_entropycons_p_p = kind(entropycons_p_p)
  REAL*8 entropyflux (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_entropyflux = kind(entropyflux)
  REAL*8 entropyrhs (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_entropyrhs = kind(entropyrhs)
  REAL*8 eps (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eps = kind(eps)
  REAL*8 eps_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eps_p = kind(eps_p)
  REAL*8 eps_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_eps_p_p = kind(eps_p_p)
  REAL*8 epsminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_epsminus = kind(epsminus)
  REAL*8 epsplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_epsplus = kind(epsplus)
  INTEGER*4 evolve_Lorenz_gge
  integer, parameter :: cctki_use_evolve_Lorenz_gge = kind(evolve_Lorenz_gge)
  INTEGER*4 evolve_MHD
  integer, parameter :: cctki_use_evolve_MHD = kind(evolve_MHD)
  INTEGER*4 evolve_Y_e
  integer, parameter :: cctki_use_evolve_Y_e = kind(evolve_Y_e)
  INTEGER*4 evolve_entropy
  integer, parameter :: cctki_use_evolve_entropy = kind(evolve_entropy)
  INTEGER*4 evolve_temper
  integer, parameter :: cctki_use_evolve_temper = kind(evolve_temper)
  INTEGER*4 flux_direction
  integer, parameter :: cctki_use_flux_direction = kind(flux_direction)
  REAL*8 gaa (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gaa = kind(gaa)
  REAL*8 gaa_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gaa_p = kind(gaa_p)
  REAL*8 gaa_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gaa_p_p = kind(gaa_p_p)
  REAL*8 gab (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gab = kind(gab)
  REAL*8 gab_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gab_p = kind(gab_p)
  REAL*8 gab_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gab_p_p = kind(gab_p_p)
  REAL*8 gac (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gac = kind(gac)
  REAL*8 gac_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gac_p = kind(gac_p)
  REAL*8 gac_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gac_p_p = kind(gac_p_p)
  REAL*8 gbb (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gbb = kind(gbb)
  REAL*8 gbb_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gbb_p = kind(gbb_p)
  REAL*8 gbb_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gbb_p_p = kind(gbb_p_p)
  REAL*8 gbc (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gbc = kind(gbc)
  REAL*8 gbc_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gbc_p = kind(gbc_p)
  REAL*8 gbc_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gbc_p_p = kind(gbc_p_p)
  REAL*8 gcc (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gcc = kind(gcc)
  REAL*8 gcc_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gcc_p = kind(gcc_p)
  REAL*8 gcc_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gcc_p_p = kind(gcc_p_p)
  REAL*8 gxx (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gxx = kind(gxx)
  REAL*8 gxx_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gxx_p = kind(gxx_p)
  REAL*8 gxx_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gxx_p_p = kind(gxx_p_p)
  REAL*8 gxy (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gxy = kind(gxy)
  REAL*8 gxy_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gxy_p = kind(gxy_p)
  REAL*8 gxy_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gxy_p_p = kind(gxy_p_p)
  REAL*8 gxz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gxz = kind(gxz)
  REAL*8 gxz_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gxz_p = kind(gxz_p)
  REAL*8 gxz_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gxz_p_p = kind(gxz_p_p)
  REAL*8 gyy (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gyy = kind(gyy)
  REAL*8 gyy_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gyy_p = kind(gyy_p)
  REAL*8 gyy_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gyy_p_p = kind(gyy_p_p)
  REAL*8 gyz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gyz = kind(gyz)
  REAL*8 gyz_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gyz_p = kind(gyz_p)
  REAL*8 gyz_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gyz_p_p = kind(gyz_p_p)
  REAL*8 gzz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gzz = kind(gzz)
  REAL*8 gzz_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gzz_p = kind(gzz_p)
  REAL*8 gzz_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gzz_p_p = kind(gzz_p_p)
  INTEGER*4 hydro_excision_mask (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_hydro_excision_mask = kind(hydro_excision_mask)
  REAL*8 kaa (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kaa = kind(kaa)
  REAL*8 kab (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kab = kind(kab)
  REAL*8 kac (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kac = kind(kac)
  REAL*8 kbb (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kbb = kind(kbb)
  REAL*8 kbc (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kbc = kind(kbc)
  REAL*8 kcc (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kcc = kind(kcc)
  REAL*8 kxx (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kxx = kind(kxx)
  REAL*8 kxx_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kxx_p = kind(kxx_p)
  REAL*8 kxx_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kxx_p_p = kind(kxx_p_p)
  REAL*8 kxy (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kxy = kind(kxy)
  REAL*8 kxy_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kxy_p = kind(kxy_p)
  REAL*8 kxy_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kxy_p_p = kind(kxy_p_p)
  REAL*8 kxz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kxz = kind(kxz)
  REAL*8 kxz_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kxz_p = kind(kxz_p)
  REAL*8 kxz_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kxz_p_p = kind(kxz_p_p)
  REAL*8 kyy (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kyy = kind(kyy)
  REAL*8 kyy_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kyy_p = kind(kyy_p)
  REAL*8 kyy_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kyy_p_p = kind(kyy_p_p)
  REAL*8 kyz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kyz = kind(kyz)
  REAL*8 kyz_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kyz_p = kind(kyz_p)
  REAL*8 kyz_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kyz_p_p = kind(kyz_p_p)
  REAL*8 kzz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kzz = kind(kzz)
  REAL*8 kzz_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kzz_p = kind(kzz_p)
  REAL*8 kzz_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_kzz_p_p = kind(kzz_p_p)
  REAL*8 lBvec (cctk_ash1,cctk_ash2,cctk_ash3,lBvec_length)
  integer, parameter :: cctki_use_lBvec = kind(lBvec)
  REAL*8 lBvec_p (cctk_ash1,cctk_ash2,cctk_ash3,lBvec_length)
  integer, parameter :: cctki_use_lBvec_p = kind(lBvec_p)
  REAL*8 lBvec_p_p (cctk_ash1,cctk_ash2,cctk_ash3,lBvec_length)
  integer, parameter :: cctki_use_lBvec_p_p = kind(lBvec_p_p)
  REAL*8 lvel (cctk_ash1,cctk_ash2,cctk_ash3,lvel_length)
  integer, parameter :: cctki_use_lvel = kind(lvel)
  REAL*8 lvel_p (cctk_ash1,cctk_ash2,cctk_ash3,lvel_length)
  integer, parameter :: cctki_use_lvel_p = kind(lvel_p)
  REAL*8 lvel_p_p (cctk_ash1,cctk_ash2,cctk_ash3,lvel_length)
  integer, parameter :: cctki_use_lvel_p_p = kind(lvel_p_p)
  REAL*8 maxima_x
  integer, parameter :: cctki_use_maxima_x = kind(maxima_x)
  REAL*8 maxima_y
  integer, parameter :: cctki_use_maxima_y = kind(maxima_y)
  REAL*8 maxima_z
  integer, parameter :: cctki_use_maxima_z = kind(maxima_z)
  REAL*8 maximum_density
  integer, parameter :: cctki_use_maximum_density = kind(maximum_density)
  REAL*8 maxrho_global
  integer, parameter :: cctki_use_maxrho_global = kind(maxrho_global)
  REAL*8 press (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_press = kind(press)
  REAL*8 press_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_press_p = kind(press_p)
  REAL*8 press_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_press_p_p = kind(press_p_p)
  REAL*8 pressminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_pressminus = kind(pressminus)
  REAL*8 pressplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_pressplus = kind(pressplus)
  REAL*8 psi (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_psi = kind(psi)
  REAL*8 psidc (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_psidc = kind(psidc)
  REAL*8 psidc_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_psidc_p = kind(psidc_p)
  REAL*8 psidc_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_psidc_p_p = kind(psidc_p_p)
  REAL*8 psidcflux (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_psidcflux = kind(psidcflux)
  REAL*8 psidcrhs (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_psidcrhs = kind(psidcrhs)
  REAL*8 psix (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_psix = kind(psix)
  REAL*8 psixx (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_psixx = kind(psixx)
  REAL*8 psixy (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_psixy = kind(psixy)
  REAL*8 psixz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_psixz = kind(psixz)
  REAL*8 psiy (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_psiy = kind(psiy)
  REAL*8 psiyy (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_psiyy = kind(psiyy)
  REAL*8 psiyz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_psiyz = kind(psiyz)
  REAL*8 psiz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_psiz = kind(psiz)
  REAL*8 psizz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_psizz = kind(psizz)
  REAL*8 r (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_r = kind(r)
  REAL*8 rho (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_rho = kind(rho)
  REAL*8 rho_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_rho_p = kind(rho_p)
  REAL*8 rho_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_rho_p_p = kind(rho_p_p)
  REAL*8 rhominus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_rhominus = kind(rhominus)
  REAL*8 rhoplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_rhoplus = kind(rhoplus)
  REAL*8 scon (cctk_ash1,cctk_ash2,cctk_ash3,scon_length)
  integer, parameter :: cctki_use_scon = kind(scon)
  REAL*8 scon_p (cctk_ash1,cctk_ash2,cctk_ash3,scon_length)
  integer, parameter :: cctki_use_scon_p = kind(scon_p)
  REAL*8 scon_p_p (cctk_ash1,cctk_ash2,cctk_ash3,scon_length)
  integer, parameter :: cctki_use_scon_p_p = kind(scon_p_p)
  REAL*8 sdetg (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_sdetg = kind(sdetg)
  INTEGER*4 shift_state
  integer, parameter :: cctki_use_shift_state = kind(shift_state)
  INTEGER*4 space_mask (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_space_mask = kind(space_mask)
  REAL*8 srhs (cctk_ash1,cctk_ash2,cctk_ash3,srhs_length)
  integer, parameter :: cctki_use_srhs = kind(srhs)
  INTEGER*4 stress_energy_state
  integer, parameter :: cctki_use_stress_energy_state = kind(stress_energy_state)
  REAL*8 sxflux (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_sxflux = kind(sxflux)
  REAL*8 syflux (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_syflux = kind(syflux)
  REAL*8 szflux (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_szflux = kind(szflux)
  REAL*8 tau (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_tau = kind(tau)
  REAL*8 tau_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_tau_p = kind(tau_p)
  REAL*8 tau_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_tau_p_p = kind(tau_p_p)
  REAL*8 tauflux (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_tauflux = kind(tauflux)
  REAL*8 taurhs (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_taurhs = kind(taurhs)
  REAL*8 temperature (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_temperature = kind(temperature)
  REAL*8 temperature_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_temperature_p = kind(temperature_p)
  REAL*8 temperature_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_temperature_p_p = kind(temperature_p_p)
  REAL*8 tracer (cctk_ash1,cctk_ash2,cctk_ash3,GRHydro_tracers_length)
  integer, parameter :: cctki_use_tracer = kind(tracer)
  REAL*8 tracer_p (cctk_ash1,cctk_ash2,cctk_ash3,GRHydro_tracers_length)
  integer, parameter :: cctki_use_tracer_p = kind(tracer_p)
  REAL*8 tracer_p_p (cctk_ash1,cctk_ash2,cctk_ash3,GRHydro_tracers_length)
  integer, parameter :: cctki_use_tracer_p_p = kind(tracer_p_p)
  REAL*8 vel (cctk_ash1,cctk_ash2,cctk_ash3,vel_length)
  integer, parameter :: cctki_use_vel = kind(vel)
  REAL*8 vel_p (cctk_ash1,cctk_ash2,cctk_ash3,vel_length)
  integer, parameter :: cctki_use_vel_p = kind(vel_p)
  REAL*8 vel_p_p (cctk_ash1,cctk_ash2,cctk_ash3,vel_length)
  integer, parameter :: cctki_use_vel_p_p = kind(vel_p_p)
  REAL*8 velxminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_velxminus = kind(velxminus)
  REAL*8 velxplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_velxplus = kind(velxplus)
  REAL*8 velyminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_velyminus = kind(velyminus)
  REAL*8 velyplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_velyplus = kind(velyplus)
  REAL*8 velzminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_velzminus = kind(velzminus)
  REAL*8 velzplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_velzplus = kind(velzplus)
  REAL*8 w_lorentz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_w_lorentz = kind(w_lorentz)
  REAL*8 w_lorentz_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_w_lorentz_p = kind(w_lorentz_p)
  REAL*8 w_lorentz_p_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_w_lorentz_p_p = kind(w_lorentz_p_p)
  REAL*8 w_lorentzminus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_w_lorentzminus = kind(w_lorentzminus)
  REAL*8 w_lorentzplus (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_w_lorentzplus = kind(w_lorentzplus)
  REAL*8 x (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_x = kind(x)
  INTEGER*4 xoffset
  integer, parameter :: cctki_use_xoffset = kind(xoffset)
  REAL*8 y (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_y = kind(y)
  INTEGER*4 yoffset
  integer, parameter :: cctki_use_yoffset = kind(yoffset)
  REAL*8 z (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_z = kind(z)
  INTEGER*4 zoffset
  integer, parameter :: cctki_use_zoffset = kind(zoffset)
  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 :: deallocstat

  if(allocated(weno_coeffs)) then
     deallocate(weno_coeffs, STAT = deallocstat)
     if (deallocstat .ne. 0) then
       call CCTK_Error(153,"GRHydro_WENOReconstruct.F90","GRHydro","Failed to deallocate WENO coefficients.")
       STOP
     end if
     deallocate(beta_shu, STAT = deallocstat)
     if (deallocstat .ne. 0) then
       call CCTK_Error(158,"GRHydro_WENOReconstruct.F90","GRHydro","Failed to deallocate shu smoothness indicator coefficients.")
       STOP
     end if
  endif

end subroutine GRHydro_WENOShutdown

 




subroutine GRHydro_WENOReconstruct1d(order, nx, v, vminus, vplus, trivial_rp, &
     hydro_excision_mask)
  USE GRHydro_WENOScalars

  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 :: order, nx, i, j
  REAL*8, dimension(nx) :: v, vplus, vminus

  INTEGER*4, dimension(nx) :: hydro_excision_mask
  logical, dimension(nx) :: trivial_rp
  logical, dimension(nx) :: excise
  logical :: normal_weno
  logical :: wenoZ

  REAL*8 :: beta1, beta2, beta3, vnorm, betanorm
  REAL*8 :: wplus1, wplus2, wplus3, wbarplus1, wbarplus2, wbarplus3
  REAL*8 :: wminus1, wminus2, wminus3, wbarminus1, wbarminus2, wbarminus3

  vminus = 0.d0
  vplus = 0.d0

  excise = .false.
  trivial_rp = .false.

  if ((CCTK_Equals(recon_method,"weno-z") .ne. 0)) then
     wenoZ = .true.
  else
     wenoZ = .false.
  endif
  

  do i = 1, nx
    if (GRHydro_enable_internal_excision /= 0 .and. (hydro_excision_mask(i) .ne. 0)) then
      trivial_rp(i) = .true.
      excise(i) = .true.
      if (i > 1) then
        trivial_rp(i-1) = .true.
      end if
    end if
  end do

  do i = 3, nx-2

    normal_weno = .true.
    if (i < nx) then
     if (excise(i+1)) then
      vminus(i) = v(i)
      vplus(i) = v(i)
      normal_weno = .false.
     end if
    end if
    if (i > 1) then
     if (excise(i-1)) then
      vminus(i) = v(i)
      vplus(i) = v(i)
      normal_weno = .false.
     end if
    end if

    if (normal_weno) then

      if (wenoZ) then

         beta1 = 13.0d0/12.d0*(v(i-2)-2.0d0*v(i-1)+v(i))**2 + 1.0d0/4.d0*(v(i-2)-4.0d0*v(i-1)+3.0d0*v(i))**2
         beta2 = 13.0d0/12.d0*(v(i-1)-2.0d0*v(i)+v(i+1))**2 + 1.0d0/4.d0*(v(i-1)-v(i+1))**2
         beta3 = 13.0d0/12.d0*(v(i)-2.0d0*v(i+1)+v(i+2))**2 + 1.0d0/4.d0*(3.0d0*v(i)-4.0d0*v(i+1)+v(i+2))**2
      
      
      
         wbarplus1 = 1.0d0/10.0d0 * (1.0d0 + abs(beta1-beta3) / (weno_eps + beta1))
         wbarplus2 = 3.0d0/5.0d0 * (1.0d0 + abs(beta1-beta3) / (weno_eps + beta2))
         wbarplus3 = 3.0d0/10.0d0 * (1.0d0 + abs(beta1-beta3) / (weno_eps + beta3))

         wbarminus1 = 3.0d0/10.0d0 * (1.0d0 + abs(beta1-beta3) / (weno_eps + beta1))
         wbarminus2 = 3.0d0/5.0d0 * (1.0d0 + abs(beta1-beta3) / (weno_eps + beta2))
         wbarminus3 = 1.0d0/10.0d0 * (1.0d0 + abs(beta1-beta3) / (weno_eps + beta3))

      
      else
      
   
         beta1  = beta_shu(1,1)*v(i-2)**2      &
               + beta_shu(1,2)*v(i-2)*v(i-1)  &
               + beta_shu(1,3)*v(i-1)**2      &
               + beta_shu(1,4)*v(i-2)*v(i)    &
               + beta_shu(1,5)*v(i-1)*v(i)    &
               + beta_shu(1,6)*v(i)**2
      
         beta2  = beta_shu(2,1)*v(i-1)**2      &
               + beta_shu(2,2)*v(i-1)*v(i)    &
               + beta_shu(2,3)*v(i)**2        &
               + beta_shu(2,4)*v(i-1)*v(i+1)  &
               + beta_shu(2,5)*v(i)*v(i+1)    &
               + beta_shu(2,6)*v(i+1)**2
      
         beta3  = beta_shu(3,1)*v(i)**2       &
               + beta_shu(3,2)*v(i)*v(i+1)   &
               + beta_shu(3,3)*v(i+1)**2     &
               + beta_shu(3,4)*v(i)*v(i+2)   &
               + beta_shu(3,5)*v(i+1)*v(i+2) &
               + beta_shu(3,6)*v(i+2)**2
      
   
         if (weno_adaptive_epsilon.ne.0) then
            vnorm = (v(i-2)**2 + v(i-1)**2 + v(i)**2 + v(i+1)**2 + v(i+2)**2)
            
            beta1 = beta1 + 100.0d0*weno_eps*(vnorm + 1.0d0)
            beta2 = beta2 + 100.0d0*weno_eps*(vnorm + 1.0d0)
            beta3 = beta3 + 100.0d0*weno_eps*(vnorm + 1.0d0)
            
            betanorm = beta1 + beta2 + beta3
            
            beta1 = beta1 / betanorm
            beta2 = beta2 / betanorm
            beta3 = beta3 / betanorm
         endif
         
         wbarplus1 = 1.0d0/16.0d0 / (weno_eps + beta1)**2
         wbarplus2 = 5.0d0/8.0d0 / (weno_eps + beta2)**2
         wbarplus3 = 5.0d0/16.0d0 / (weno_eps + beta3)**2
      
         wbarminus1 = 5.0d0/16.0d0 / (weno_eps + beta1)**2
         wbarminus2 = 5.0d0/8.0d0 / (weno_eps + beta2)**2
         wbarminus3 = 1.0d0/16.0d0 / (weno_eps + beta3)**2

      endif
      
      wplus1 = wbarplus1 / (wbarplus1 + wbarplus2 + wbarplus3)
      wplus2 = wbarplus2 / (wbarplus1 + wbarplus2 + wbarplus3)
      wplus3 = wbarplus3 / (wbarplus1 + wbarplus2 + wbarplus3)
    
      wminus1 = wbarminus1 / (wbarminus1 + wbarminus2 + wbarminus3)
      wminus2 = wbarminus2 / (wbarminus1 + wbarminus2 + wbarminus3)
      wminus3 = wbarminus3 / (wbarminus1 + wbarminus2 + wbarminus3)
            

      do j = 1, 5
         vplus(i) = vplus(i) + wplus1 * weno_coeffs(1,j)*v(i-3+j) &
                             + wplus2 * weno_coeffs(2,j)*v(i-3+j) &
                             + wplus3 * weno_coeffs(3,j)*v(i-3+j)
         vminus(i) = vminus(i) + wminus1 * weno_coeffs(3,6-j)*v(i-3+j) &
                               + wminus2 * weno_coeffs(2,6-j)*v(i-3+j) &
                               + wminus3 * weno_coeffs(1,6-j)*v(i-3+j)
      end do
      
      
            
    end if
  end do

  do i = 1, nx
    if (excise(i)) then
      if (i > 1) then
        if (.not. excise(i-1)) then
          vminus(i) = vplus(i-1)
        end if
      end if
      vplus(i) = vminus(i)
    end if
  end do
  do i = nx, 1, -1
    if (excise(i)) then
      if (i < nx) then
        if (.not. excise(i+1)) then
          vplus(i) = vminus(i+1)
        end if
      end if
      vminus(i) = vplus(i)
    end if
  end do

end subroutine GRHydro_WENOReconstruct1d
