




















































































































 


































































































































































 















































































































































































































 


























































 










 








































































































































































































































 










                                
                                

                                
                                

                                
                                

                                





















































































subroutine LWT_boundaries (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_levof&
  &f,cctk_levoffdenom,cctk_timefac,cctk_convlevel,cctk_convfac,cctk_nghostzones,cctk_iteration,cctkGH,cctk_ash1,cctk_ash2,cctk_ash3&
  &, alpha,betax,betay,betaz,diff_vx,diff_vy,diff_vz,dx_rho,dx_rho_p,dx_u,dx_u_p,dxx_u,dxx_u_p,dxy_u,dxy_u_p,dxz_u,dxz_u_p,dy_rho,d&
  &y_rho_p,dy_u,dy_u_p,dyy_u,dyy_u_p,dyz_u,dyz_u_p,dz_rho,dz_rho_p,dz_u,dz_u_p,dzz_u,dzz_u_p,energy,epsilon,error,error_rho,error_v&
  &x,error_vy,error_vz,errorperiodic,errorperiodic_rho,exact,exact_rho,guxx,guxy,guxz,guyy,guyz,guzz,gxx,gxy,gxz,gyy,gyz,gzz,min_sp&
  &acing,rho,rho_p,rhodot,u,u_p,udot,v2,vx,vx_p,vxdebug,vxdot,vy,vy_p,vydebug,vydot,vz,vz_p,vzdebug,vzdot,wx,wy,wz, J11,J12,J13,J21&
  &,J22,J23,J31,J32,J33,Sn,coarse_dx,coarse_dy,coarse_dz,dJ111,dJ112,dJ113,dJ122,dJ123,dJ133,dJ211,dJ212,dJ213,dJ222,dJ223,dJ233,dJ&
  &311,dJ312,dJ313,dJ322,dJ323,dJ333,general_coordinates,iJ11,iJ12,iJ13,iJ21,iJ22,iJ23,iJ31,iJ32,iJ33,interpolate_boundary_points,i&
  &nverse_jacobian_state,jacobian_derivative_state,jacobian_state,nmask,r,sbp_dx,sbp_dy,sbp_dz,volume_form,volume_form_state,x,y,z)
  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)
  REAL*8 alpha (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_alpha = kind(alpha)
  REAL*8 betax (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_betax = kind(betax)
  REAL*8 betay (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_betay = kind(betay)
  REAL*8 betaz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_betaz = kind(betaz)
  REAL*8 diff_vx (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_diff_vx = kind(diff_vx)
  REAL*8 diff_vy (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_diff_vy = kind(diff_vy)
  REAL*8 diff_vz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_diff_vz = kind(diff_vz)
  REAL*8 dx_rho (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dx_rho = kind(dx_rho)
  REAL*8 dx_rho_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dx_rho_p = kind(dx_rho_p)
  REAL*8 dx_u (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dx_u = kind(dx_u)
  REAL*8 dx_u_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dx_u_p = kind(dx_u_p)
  REAL*8 dxx_u (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dxx_u = kind(dxx_u)
  REAL*8 dxx_u_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dxx_u_p = kind(dxx_u_p)
  REAL*8 dxy_u (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dxy_u = kind(dxy_u)
  REAL*8 dxy_u_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dxy_u_p = kind(dxy_u_p)
  REAL*8 dxz_u (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dxz_u = kind(dxz_u)
  REAL*8 dxz_u_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dxz_u_p = kind(dxz_u_p)
  REAL*8 dy_rho (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dy_rho = kind(dy_rho)
  REAL*8 dy_rho_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dy_rho_p = kind(dy_rho_p)
  REAL*8 dy_u (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dy_u = kind(dy_u)
  REAL*8 dy_u_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dy_u_p = kind(dy_u_p)
  REAL*8 dyy_u (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dyy_u = kind(dyy_u)
  REAL*8 dyy_u_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dyy_u_p = kind(dyy_u_p)
  REAL*8 dyz_u (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dyz_u = kind(dyz_u)
  REAL*8 dyz_u_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dyz_u_p = kind(dyz_u_p)
  REAL*8 dz_rho (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dz_rho = kind(dz_rho)
  REAL*8 dz_rho_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dz_rho_p = kind(dz_rho_p)
  REAL*8 dz_u (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dz_u = kind(dz_u)
  REAL*8 dz_u_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dz_u_p = kind(dz_u_p)
  REAL*8 dzz_u (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dzz_u = kind(dzz_u)
  REAL*8 dzz_u_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dzz_u_p = kind(dzz_u_p)
  REAL*8 energy (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_energy = kind(energy)
  REAL*8 epsilon (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_epsilon = kind(epsilon)
  REAL*8 error (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_error = kind(error)
  REAL*8 error_rho (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_error_rho = kind(error_rho)
  REAL*8 error_vx (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_error_vx = kind(error_vx)
  REAL*8 error_vy (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_error_vy = kind(error_vy)
  REAL*8 error_vz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_error_vz = kind(error_vz)
  REAL*8 errorperiodic (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_errorperiodic = kind(errorperiodic)
  REAL*8 errorperiodic_rho (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_errorperiodic_rho = kind(errorperiodic_rho)
  REAL*8 exact (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_exact = kind(exact)
  REAL*8 exact_rho (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_exact_rho = kind(exact_rho)
  REAL*8 guxx (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_guxx = kind(guxx)
  REAL*8 guxy (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_guxy = kind(guxy)
  REAL*8 guxz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_guxz = kind(guxz)
  REAL*8 guyy (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_guyy = kind(guyy)
  REAL*8 guyz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_guyz = kind(guyz)
  REAL*8 guzz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_guzz = kind(guzz)
  REAL*8 gxx (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gxx = kind(gxx)
  REAL*8 gxy (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gxy = kind(gxy)
  REAL*8 gxz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gxz = kind(gxz)
  REAL*8 gyy (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gyy = kind(gyy)
  REAL*8 gyz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gyz = kind(gyz)
  REAL*8 gzz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_gzz = kind(gzz)
  REAL*8 min_spacing (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_min_spacing = kind(min_spacing)
  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 rhodot (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_rhodot = kind(rhodot)
  REAL*8 u (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_u = kind(u)
  REAL*8 u_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_u_p = kind(u_p)
  REAL*8 udot (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_udot = kind(udot)
  REAL*8 v2 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_v2 = kind(v2)
  REAL*8 vx (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_vx = kind(vx)
  REAL*8 vx_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_vx_p = kind(vx_p)
  REAL*8 vxdebug (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_vxdebug = kind(vxdebug)
  REAL*8 vxdot (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_vxdot = kind(vxdot)
  REAL*8 vy (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_vy = kind(vy)
  REAL*8 vy_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_vy_p = kind(vy_p)
  REAL*8 vydebug (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_vydebug = kind(vydebug)
  REAL*8 vydot (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_vydot = kind(vydot)
  REAL*8 vz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_vz = kind(vz)
  REAL*8 vz_p (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_vz_p = kind(vz_p)
  REAL*8 vzdebug (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_vzdebug = kind(vzdebug)
  REAL*8 vzdot (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_vzdot = kind(vzdot)
  REAL*8 wx (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_wx = kind(wx)
  REAL*8 wy (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_wy = kind(wy)
  REAL*8 wz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_wz = kind(wz)
  REAL*8 J11 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_J11 = kind(J11)
  REAL*8 J12 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_J12 = kind(J12)
  REAL*8 J13 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_J13 = kind(J13)
  REAL*8 J21 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_J21 = kind(J21)
  REAL*8 J22 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_J22 = kind(J22)
  REAL*8 J23 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_J23 = kind(J23)
  REAL*8 J31 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_J31 = kind(J31)
  REAL*8 J32 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_J32 = kind(J32)
  REAL*8 J33 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_J33 = kind(J33)
  INTEGER*4 Sn (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_Sn = kind(Sn)
  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)
  REAL*8 dJ111 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dJ111 = kind(dJ111)
  REAL*8 dJ112 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dJ112 = kind(dJ112)
  REAL*8 dJ113 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dJ113 = kind(dJ113)
  REAL*8 dJ122 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dJ122 = kind(dJ122)
  REAL*8 dJ123 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dJ123 = kind(dJ123)
  REAL*8 dJ133 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dJ133 = kind(dJ133)
  REAL*8 dJ211 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dJ211 = kind(dJ211)
  REAL*8 dJ212 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dJ212 = kind(dJ212)
  REAL*8 dJ213 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dJ213 = kind(dJ213)
  REAL*8 dJ222 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dJ222 = kind(dJ222)
  REAL*8 dJ223 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dJ223 = kind(dJ223)
  REAL*8 dJ233 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dJ233 = kind(dJ233)
  REAL*8 dJ311 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dJ311 = kind(dJ311)
  REAL*8 dJ312 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dJ312 = kind(dJ312)
  REAL*8 dJ313 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dJ313 = kind(dJ313)
  REAL*8 dJ322 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dJ322 = kind(dJ322)
  REAL*8 dJ323 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dJ323 = kind(dJ323)
  REAL*8 dJ333 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_dJ333 = kind(dJ333)
  INTEGER*4 general_coordinates
  integer, parameter :: cctki_use_general_coordinates = kind(general_coordinates)
  REAL*8 iJ11 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_iJ11 = kind(iJ11)
  REAL*8 iJ12 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_iJ12 = kind(iJ12)
  REAL*8 iJ13 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_iJ13 = kind(iJ13)
  REAL*8 iJ21 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_iJ21 = kind(iJ21)
  REAL*8 iJ22 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_iJ22 = kind(iJ22)
  REAL*8 iJ23 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_iJ23 = kind(iJ23)
  REAL*8 iJ31 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_iJ31 = kind(iJ31)
  REAL*8 iJ32 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_iJ32 = kind(iJ32)
  REAL*8 iJ33 (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_iJ33 = kind(iJ33)
  INTEGER*4 interpolate_boundary_points
  integer, parameter :: cctki_use_interpolate_boundary_points = kind(interpolate_boundary_points)
  INTEGER*4 inverse_jacobian_state
  integer, parameter :: cctki_use_inverse_jacobian_state = kind(inverse_jacobian_state)
  INTEGER*4 jacobian_derivative_state
  integer, parameter :: cctki_use_jacobian_derivative_state = kind(jacobian_derivative_state)
  INTEGER*4 jacobian_state
  integer, parameter :: cctki_use_jacobian_state = kind(jacobian_state)
  REAL*8 nmask (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_nmask = kind(nmask)
  REAL*8 r (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_r = kind(r)
  REAL*8 sbp_dx (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_sbp_dx = kind(sbp_dx)
  REAL*8 sbp_dy (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_sbp_dy = kind(sbp_dy)
  REAL*8 sbp_dz (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_sbp_dz = kind(sbp_dz)
  REAL*8 volume_form (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_volume_form = kind(volume_form)
  INTEGER*4 volume_form_state
  integer, parameter :: cctki_use_volume_form_state = kind(volume_form_state)
  REAL*8 x (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_x = kind(x)
  REAL*8 y (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_y = kind(y)
  REAL*8 z (cctk_ash1,cctk_ash2,cctk_ash3)
  integer, parameter :: cctki_use_z = kind(z)
  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 (cctkGH, faces, boundary_width, table_handle, group_name, bc_name)
  implicit none
  integer*8 cctkGH
  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 (cctkGH, faces, boundary_width, table_handle, var_name, bc_name)
  implicit none
  integer*8 cctkGH
  INTEGER*4 faces
  INTEGER*4 boundary_width
  INTEGER*4 table_handle
  character(*) var_name
  character(*) bc_name
  end function Boundary_SelectVarForBC
  end interface
  interface
  INTEGER*4 function Boundary_SelectedGVs (cctkGH, array_size, var_indicies, faces, boundary_widths, table_handles, bc_name)
  implicit none
  integer*8 cctkGH
  INTEGER*4 array_size
  INTEGER*4 var_indicies(*)
  INTEGER*4 faces(*)
  INTEGER*4 boundary_widths(*)
  INTEGER*4 table_handles(*)
  character(*) bc_name
  end function Boundary_SelectedGVs
  end interface
  interface
  subroutine Diff_gv (cctkGH, dir, var, dvar, table_handle)
  implicit none
  integer*8 cctkGH
  INTEGER*4 dir
  REAL*8 var(*)
  REAL*8 dvar(*)
  INTEGER*4 table_handle
  end subroutine Diff_gv
  end interface
  interface
  REAL*8 function GetScalProdCoeff ()
  implicit none
  end function GetScalProdCoeff
  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 MultiPatch_GetBbox (cctkGH, size, bbox)
  implicit none
  integer*8 cctkGH
  INTEGER*4 size
  INTEGER*4 bbox(*)
  end function MultiPatch_GetBbox
  end interface
  interface
  INTEGER*4 function MultiPatch_GetMap (cctkGH)
  implicit none
  integer*8 cctkGH
  end function MultiPatch_GetMap
  end interface
  interface
  INTEGER*4 function SymmetryHandleOfName (sym_name)
  implicit none
  character(*) sym_name
  end function SymmetryHandleOfName
  end interface
  interface
  integer*8 function SymmetryNameOfHandle (sym_handle)
  implicit none
  INTEGER*4 sym_handle
  end function SymmetryNameOfHandle
  end interface
  interface
  INTEGER*4 function SymmetryTableHandleForGrid (cctkGH)
  implicit none
  integer*8 cctkGH
  end function SymmetryTableHandleForGrid
  end interface
  interface
  subroutine globalDiff2_gv (cctkGH, dir1, dir2, var, dvar, J_dadx, J_dbdx, J_dcdx, J_dady, J_dbdy, J_dcdy, J_dadz, J_dbdz, J_dcdz,&
  & dJ_dadxdx, dJ_dbdxdx, dJ_dcdxdx, dJ_dadxdy, dJ_dbdxdy, dJ_dcdxdy, dJ_dadxdz, dJ_dbdxdz, dJ_dcdxdz, dJ_dadydy, dJ_dbdydy, dJ_dcd&
  &ydy, dJ_dadydz, dJ_dbdydz, dJ_dcdydz, dJ_dadzdz, dJ_dbdzdz, dJ_dcdzdz, table_handle)
  implicit none
  integer*8 cctkGH
  INTEGER*4 dir1
  INTEGER*4 dir2
  REAL*8 var(*)
  REAL*8 dvar(*)
  REAL*8 J_dadx(*)
  REAL*8 J_dbdx(*)
  REAL*8 J_dcdx(*)
  REAL*8 J_dady(*)
  REAL*8 J_dbdy(*)
  REAL*8 J_dcdy(*)
  REAL*8 J_dadz(*)
  REAL*8 J_dbdz(*)
  REAL*8 J_dcdz(*)
  REAL*8 dJ_dadxdx(*)
  REAL*8 dJ_dbdxdx(*)
  REAL*8 dJ_dcdxdx(*)
  REAL*8 dJ_dadxdy(*)
  REAL*8 dJ_dbdxdy(*)
  REAL*8 dJ_dcdxdy(*)
  REAL*8 dJ_dadxdz(*)
  REAL*8 dJ_dbdxdz(*)
  REAL*8 dJ_dcdxdz(*)
  REAL*8 dJ_dadydy(*)
  REAL*8 dJ_dbdydy(*)
  REAL*8 dJ_dcdydy(*)
  REAL*8 dJ_dadydz(*)
  REAL*8 dJ_dbdydz(*)
  REAL*8 dJ_dcdydz(*)
  REAL*8 dJ_dadzdz(*)
  REAL*8 dJ_dbdzdz(*)
  REAL*8 dJ_dcdzdz(*)
  INTEGER*4 table_handle
  end subroutine globalDiff2_gv
  end interface
  interface
  subroutine globalDiff_gv (cctkGH, dir, var, dvar, J_dxda, J_dxdb, J_dxdc, J_dyda, J_dydb, J_dydc, J_dzda, J_dzdb, J_dzdc, table_h&
  &andle)
  implicit none
  integer*8 cctkGH
  INTEGER*4 dir
  REAL*8 var(*)
  REAL*8 dvar(*)
  REAL*8 J_dxda(*)
  REAL*8 J_dxdb(*)
  REAL*8 J_dxdc(*)
  REAL*8 J_dyda(*)
  REAL*8 J_dydb(*)
  REAL*8 J_dydc(*)
  REAL*8 J_dzda(*)
  REAL*8 J_dzdb(*)
  REAL*8 J_dzdc(*)
  INTEGER*4 table_handle
  end subroutine globalDiff_gv
  end interface
  REAL*8 ANL
  integer, parameter :: cctki_use_ANL = kind(ANL)
  REAL*8 RNL
  integer, parameter :: cctki_use_RNL = kind(RNL)
  REAL*8 amplitude
  integer, parameter :: cctki_use_amplitude = kind(amplitude)
  REAL*8 deltaNL
  integer, parameter :: cctki_use_deltaNL = kind(deltaNL)
  REAL*8 eps
  integer, parameter :: cctki_use_eps = kind(eps)
  REAL*8 epsx
  integer, parameter :: cctki_use_epsx = kind(epsx)
  REAL*8 epsy
  integer, parameter :: cctki_use_epsy = kind(epsy)
  REAL*8 lapse
  integer, parameter :: cctki_use_lapse = kind(lapse)
  REAL*8 mass
  integer, parameter :: cctki_use_mass = kind(mass)
  REAL*8 muNL
  integer, parameter :: cctki_use_muNL = kind(muNL)
  REAL*8 omeNL
  integer, parameter :: cctki_use_omeNL = kind(omeNL)
  REAL*8 powerrhs
  integer, parameter :: cctki_use_powerrhs = kind(powerrhs)
  REAL*8 radius
  integer, parameter :: cctki_use_radius = kind(radius)
  REAL*8 shift (3)
  integer, parameter :: cctki_use_shift = kind(shift)
  REAL*8 shift_omega
  integer, parameter :: cctki_use_shift_omega = kind(shift_omega)
  REAL*8 space_offset (3)
  integer, parameter :: cctki_use_space_offset = kind(space_offset)
  REAL*8 spin
  integer, parameter :: cctki_use_spin = kind(spin)
  REAL*8 time_offset
  integer, parameter :: cctki_use_time_offset = kind(time_offset)
  REAL*8 wave_number (3)
  integer, parameter :: cctki_use_wave_number = kind(wave_number)
  REAL*8 width
  integer, parameter :: cctki_use_width = kind(width)
  integer*8 bound
  integer, parameter :: cctki_use_bound = kind(bound)
  integer*8 initial_data
  integer, parameter :: cctki_use_initial_data = kind(initial_data)
  integer*8 metric
  integer, parameter :: cctki_use_metric = kind(metric)
  integer*8 outer_bound
  integer, parameter :: cctki_use_outer_bound = kind(outer_bound)
  integer*8 outer_penalty_bound
  integer, parameter :: cctki_use_outer_penalty_bound = kind(outer_penalty_bound)
  integer*8 rhsbound
  integer, parameter :: cctki_use_rhsbound = kind(rhsbound)
  integer*8 shift_interpolation_type
  integer, parameter :: cctki_use_shift_interpolation_type = kind(shift_interpolation_type)
  INTEGER*4 NumEvolvedVars
  integer, parameter :: cctki_use_NumEvolvedVars = kind(NumEvolvedVars)
  INTEGER*4 compute_second_derivative_from_first_derivative
  integer, parameter :: cctki_use_compute_second_derivative_from_first_derivative = kind(compute_second_derivative_from_first_deriv&
  &ative)
  INTEGER*4 initial_data_analytic_derivatives
  integer, parameter :: cctki_use_initial_data_analytic_derivatives = kind(initial_data_analytic_derivatives)
  INTEGER*4 multipole_l
  integer, parameter :: cctki_use_multipole_l = kind(multipole_l)
  INTEGER*4 multipole_m
  integer, parameter :: cctki_use_multipole_m = kind(multipole_m)
  INTEGER*4 multipole_s
  integer, parameter :: cctki_use_multipole_s = kind(multipole_s)
  INTEGER*4 nonlinearrhs
  integer, parameter :: cctki_use_nonlinearrhs = kind(nonlinearrhs)
  INTEGER*4 recalculate_rhs
  integer, parameter :: cctki_use_recalculate_rhs = kind(recalculate_rhs)
  COMMON /LlamaWaveToypriv/ANL, RNL, amplitude, deltaNL, eps, epsx, epsy, lapse, mass, muNL, omeNL, powerrhs, radius, shift, shift_&
  &omega, space_offset, spin, time_offset, wave_number, width, bound, initial_data, metric, outer_bound, outer_penalty_bound, rhsbo&
  &und, shift_interpolation_type, NumEvolvedVars, compute_second_derivative_from_first_derivative, initial_data_analytic_derivative&
  &s, multipole_l, multipole_m, multipole_s, nonlinearrhs, recalculate_rhs
  integer*8 coordinate_system
  integer, parameter :: cctki_use_coordinate_system = kind(coordinate_system)
  COMMON /COORDINATESrest/coordinate_system
  INTEGER*4 CCTKH0
  integer, parameter :: cctki_use_CCTKH0 = kind(CCTKH0)
  INTEGER*4 CCTKH1
  integer, parameter :: cctki_use_CCTKH1 = kind(CCTKH1)
  INTEGER*4 CCTKH2
  integer, parameter :: cctki_use_CCTKH2 = kind(CCTKH2)
  INTEGER*4 CCTKH3
  integer, parameter :: cctki_use_CCTKH3 = kind(CCTKH3)
  INTEGER*4 CCTKH4
  integer, parameter :: cctki_use_CCTKH4 = kind(CCTKH4)
  INTEGER*4 MoL_Num_Evolved_Vars
  integer, parameter :: cctki_use_MoL_Num_Evolved_Vars = kind(MoL_Num_Evolved_Vars)
  INTEGER*4 CCTKH5
  integer, parameter :: cctki_use_CCTKH5 = kind(CCTKH5)
  INTEGER*4 CCTKH6
  integer, parameter :: cctki_use_CCTKH6 = kind(CCTKH6)
  INTEGER*4 CCTKH7
  integer, parameter :: cctki_use_CCTKH7 = kind(CCTKH7)
  COMMON /METHODOFLINESrest/CCTKH0, CCTKH1, CCTKH2, CCTKH3, CCTKH4, MoL_Num_Evolved_Vars, CCTKH5, CCTKH6, CCTKH7
  
  character :: fbound*1000
  integer   :: fboundlen
  integer   :: ierr
  
   call CCTK_FortranString (fboundlen, bound, fbound)
   if (fboundlen > len(fbound)) call CCTK_Warn(0,19,"boundaries.F90","LlamaWaveToy", "internal error")
   
    ierr = Boundary_SelectGroupForBC &
         (cctkGH, 16383, +1, -1, "LlamaWaveToy::scalar", fbound)
    if (ierr/=0) call CCTK_Warn(0,23,"boundaries.F90","LlamaWaveToy", "internal error")
 
    ierr = Boundary_SelectGroupForBC &
        (cctkGH, 16383, +1, -1, "LlamaWaveToy::density", fbound)
   if (ierr/=0) call CCTK_Warn(0,27,"boundaries.F90","LlamaWaveToy", "internal error")
   
end subroutine LWT_boundaries
