






















































































































 


































































































































































 
























































































































































































 



















































 










 








































































































































































































































 










                                
                                

                                
                                

                                
                                

                                
























































































subroutine NullConstr_Driver(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, Null_AuxConstr_length,Null_AuxConstr_south_length,Null_R00_length,Null_R00_south_length,Null_R01_length,Null_R01_south_lengt&
  &h,Null_R0A_length,Null_R0A_south_length,Null_R0A_split_length,X0EG_mask,X0EQ_mask,X0EV_mask,X0NullGrParArrI,X0NullGrParArrR,X0Nu&
  &ll_AuxConstr,X0Null_AuxConstr_south,X0Null_R00,X0Null_R00_south,X0Null_R01,X0Null_R01_south,X0Null_R0A,X0Null_R0A_south,X0Null_R&
  &0A_split,X0RadCrd,X0StCmCrd,X0StCrd,X0cmplxcharfuncs_aux,X0cmplxcharfuncs_basic,X0guard_mask,X0null_mask,X0realcharfuncs,X0tmp_c&
  &gf,X0tmp_cgf3,X0tmp_rgf,X1EG_mask,X1EQ_mask,X1EV_mask,X1Null_AuxConstr,X1Null_AuxConstr_south,X1Null_R00,X1Null_R00_south,X1Null&
  &_R01,X1Null_R01_south,X1Null_R0A,X1Null_R0A_south,X1Null_R0A_split,X1StCmCrd,X1StCrd,X1cmplxcharfuncs_aux,X1cmplxcharfuncs_basic&
  &,X1guard_mask,X1null_mask,X1realcharfuncs,X1tmp_cgf,X1tmp_cgf3,X1tmp_rgf,cmplxcharfuncs_aux_length,cmplxcharfuncs_basic_length,r&
  &ealcharfuncs_length,EG_mask,EQ_mask,EV_mask,Null_AuxConstr_cbcn,Null_AuxConstr_cbcs,Null_AuxConstr_ckcn,Null_AuxConstr_ckcs,Null&
  &_AuxConstr_nucn,Null_AuxConstr_nucs,Null_R00,Null_R00_south,Null_R01,Null_R01_south,Null_R0A,Null_R0A_i,Null_R0A_r,Null_R0A_sout&
  &h,bcn,bcn_p,bcs,bcs_p,boundary_maskn,boundary_masks,cbcn,cbcn_p,cbcs,cbcs_p,ckcn,ckcn_p,ckcs,ckcs_p,dxjcn,dxjcn_p,dxjcs,dxjcs_p,&
  &eth2jcn,eth2jcn_p,eth2jcs,eth2jcs_p,evolution_maskn,evolution_masks,evolution_radius,guard_mask,jcn,jcn_p,jcs,jcs_p,nucn,nucn_p,&
  &nucs,nucs_p,null_delta,null_dx,null_gsh,null_lbnd,null_lsh,null_rb,null_rbh,null_ubnd,null_xb,null_xbh,qcn,qcn_p,qcs,qcs_p,qsize&
  &,stereo_p,stereo_pp,stereo_q,tmp_cgfn,tmp_cgfn1,tmp_cgfn2,tmp_cgfn3,tmp_cgfs,tmp_cgfs1,tmp_cgfs2,tmp_cgfs3,tmp_rgfn,tmp_rgfs,ucn&
  &,ucn_p,ucs,ucs_p,wcn,wcn_p,wcs,wcs_p,zeta)

  use cctk
  use NullGrid_Vars
  use NullInterp
  use NullEvol_Mask
  use NullConstr_Util
  use NullConstr_R00
  use NullConstr_R01
  use NullConstr_R0A

  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 Null_AuxConstr_length
  INTEGER Null_AuxConstr_south_length
  INTEGER Null_R00_length
  INTEGER Null_R00_south_length
  INTEGER Null_R01_length
  INTEGER Null_R01_south_length
  INTEGER Null_R0A_length
  INTEGER Null_R0A_south_length
  INTEGER Null_R0A_split_length
  INTEGER X0EG_mask
  INTEGER X0EQ_mask
  INTEGER X0EV_mask
  INTEGER X0NullGrParArrI
  INTEGER X0NullGrParArrR
  INTEGER X0Null_AuxConstr
  INTEGER X0Null_AuxConstr_south
  INTEGER X0Null_R00
  INTEGER X0Null_R00_south
  INTEGER X0Null_R01
  INTEGER X0Null_R01_south
  INTEGER X0Null_R0A
  INTEGER X0Null_R0A_south
  INTEGER X0Null_R0A_split
  INTEGER X0RadCrd
  INTEGER X0StCmCrd
  INTEGER X0StCrd
  INTEGER X0cmplxcharfuncs_aux
  INTEGER X0cmplxcharfuncs_basic
  INTEGER X0guard_mask
  INTEGER X0null_mask
  INTEGER X0realcharfuncs
  INTEGER X0tmp_cgf
  INTEGER X0tmp_cgf3
  INTEGER X0tmp_rgf
  INTEGER X1EG_mask
  INTEGER X1EQ_mask
  INTEGER X1EV_mask
  INTEGER X1Null_AuxConstr
  INTEGER X1Null_AuxConstr_south
  INTEGER X1Null_R00
  INTEGER X1Null_R00_south
  INTEGER X1Null_R01
  INTEGER X1Null_R01_south
  INTEGER X1Null_R0A
  INTEGER X1Null_R0A_south
  INTEGER X1Null_R0A_split
  INTEGER X1StCmCrd
  INTEGER X1StCrd
  INTEGER X1cmplxcharfuncs_aux
  INTEGER X1cmplxcharfuncs_basic
  INTEGER X1guard_mask
  INTEGER X1null_mask
  INTEGER X1realcharfuncs
  INTEGER X1tmp_cgf
  INTEGER X1tmp_cgf3
  INTEGER X1tmp_rgf
  INTEGER cmplxcharfuncs_aux_length
  INTEGER cmplxcharfuncs_basic_length
  INTEGER realcharfuncs_length
  INTEGER*4 EG_mask (X0EG_mask,X1EG_mask)
  integer, parameter :: cctki_use_EG_mask = kind(EG_mask)
  INTEGER*4 EQ_mask (X0EQ_mask,X1EQ_mask)
  integer, parameter :: cctki_use_EQ_mask = kind(EQ_mask)
  INTEGER*4 EV_mask (X0EV_mask,X1EV_mask)
  integer, parameter :: cctki_use_EV_mask = kind(EV_mask)
  COMPLEX*16 Null_AuxConstr_cbcn (X0Null_AuxConstr,X1Null_AuxConstr,Null_AuxConstr_length)
  integer, parameter :: cctki_use_Null_AuxConstr_cbcn = kind(Null_AuxConstr_cbcn)
  COMPLEX*16 Null_AuxConstr_cbcs (X0Null_AuxConstr_south,X1Null_AuxConstr_south,Null_AuxConstr_south_length)
  integer, parameter :: cctki_use_Null_AuxConstr_cbcs = kind(Null_AuxConstr_cbcs)
  COMPLEX*16 Null_AuxConstr_ckcn (X0Null_AuxConstr,X1Null_AuxConstr,Null_AuxConstr_length)
  integer, parameter :: cctki_use_Null_AuxConstr_ckcn = kind(Null_AuxConstr_ckcn)
  COMPLEX*16 Null_AuxConstr_ckcs (X0Null_AuxConstr_south,X1Null_AuxConstr_south,Null_AuxConstr_south_length)
  integer, parameter :: cctki_use_Null_AuxConstr_ckcs = kind(Null_AuxConstr_ckcs)
  COMPLEX*16 Null_AuxConstr_nucn (X0Null_AuxConstr,X1Null_AuxConstr,Null_AuxConstr_length)
  integer, parameter :: cctki_use_Null_AuxConstr_nucn = kind(Null_AuxConstr_nucn)
  COMPLEX*16 Null_AuxConstr_nucs (X0Null_AuxConstr_south,X1Null_AuxConstr_south,Null_AuxConstr_south_length)
  integer, parameter :: cctki_use_Null_AuxConstr_nucs = kind(Null_AuxConstr_nucs)
  REAL*8 Null_R00 (X0Null_R00,X1Null_R00,Null_R00_length)
  integer, parameter :: cctki_use_Null_R00 = kind(Null_R00)
  REAL*8 Null_R00_south (X0Null_R00_south,X1Null_R00_south,Null_R00_south_length)
  integer, parameter :: cctki_use_Null_R00_south = kind(Null_R00_south)
  REAL*8 Null_R01 (X0Null_R01,X1Null_R01,Null_R01_length)
  integer, parameter :: cctki_use_Null_R01 = kind(Null_R01)
  REAL*8 Null_R01_south (X0Null_R01_south,X1Null_R01_south,Null_R01_south_length)
  integer, parameter :: cctki_use_Null_R01_south = kind(Null_R01_south)
  COMPLEX*16 Null_R0A (X0Null_R0A,X1Null_R0A,Null_R0A_length)
  integer, parameter :: cctki_use_Null_R0A = kind(Null_R0A)
  REAL*8 Null_R0A_i (X0Null_R0A_split,X1Null_R0A_split,Null_R0A_split_length)
  integer, parameter :: cctki_use_Null_R0A_i = kind(Null_R0A_i)
  REAL*8 Null_R0A_r (X0Null_R0A_split,X1Null_R0A_split,Null_R0A_split_length)
  integer, parameter :: cctki_use_Null_R0A_r = kind(Null_R0A_r)
  COMPLEX*16 Null_R0A_south (X0Null_R0A_south,X1Null_R0A_south,Null_R0A_south_length)
  integer, parameter :: cctki_use_Null_R0A_south = kind(Null_R0A_south)
  REAL*8 bcn (X0realcharfuncs,X1realcharfuncs,realcharfuncs_length)
  integer, parameter :: cctki_use_bcn = kind(bcn)
  REAL*8 bcn_p (X0realcharfuncs,X1realcharfuncs,realcharfuncs_length)
  integer, parameter :: cctki_use_bcn_p = kind(bcn_p)
  REAL*8 bcs (X0realcharfuncs,X1realcharfuncs,realcharfuncs_length)
  integer, parameter :: cctki_use_bcs = kind(bcs)
  REAL*8 bcs_p (X0realcharfuncs,X1realcharfuncs,realcharfuncs_length)
  integer, parameter :: cctki_use_bcs_p = kind(bcs_p)
  INTEGER*4 boundary_maskn (X0null_mask,X1null_mask)
  integer, parameter :: cctki_use_boundary_maskn = kind(boundary_maskn)
  INTEGER*4 boundary_masks (X0null_mask,X1null_mask)
  integer, parameter :: cctki_use_boundary_masks = kind(boundary_masks)
  COMPLEX*16 cbcn (X0cmplxcharfuncs_aux,X1cmplxcharfuncs_aux,cmplxcharfuncs_aux_length)
  integer, parameter :: cctki_use_cbcn = kind(cbcn)
  COMPLEX*16 cbcn_p (X0cmplxcharfuncs_aux,X1cmplxcharfuncs_aux,cmplxcharfuncs_aux_length)
  integer, parameter :: cctki_use_cbcn_p = kind(cbcn_p)
  COMPLEX*16 cbcs (X0cmplxcharfuncs_aux,X1cmplxcharfuncs_aux,cmplxcharfuncs_aux_length)
  integer, parameter :: cctki_use_cbcs = kind(cbcs)
  COMPLEX*16 cbcs_p (X0cmplxcharfuncs_aux,X1cmplxcharfuncs_aux,cmplxcharfuncs_aux_length)
  integer, parameter :: cctki_use_cbcs_p = kind(cbcs_p)
  COMPLEX*16 ckcn (X0cmplxcharfuncs_aux,X1cmplxcharfuncs_aux,cmplxcharfuncs_aux_length)
  integer, parameter :: cctki_use_ckcn = kind(ckcn)
  COMPLEX*16 ckcn_p (X0cmplxcharfuncs_aux,X1cmplxcharfuncs_aux,cmplxcharfuncs_aux_length)
  integer, parameter :: cctki_use_ckcn_p = kind(ckcn_p)
  COMPLEX*16 ckcs (X0cmplxcharfuncs_aux,X1cmplxcharfuncs_aux,cmplxcharfuncs_aux_length)
  integer, parameter :: cctki_use_ckcs = kind(ckcs)
  COMPLEX*16 ckcs_p (X0cmplxcharfuncs_aux,X1cmplxcharfuncs_aux,cmplxcharfuncs_aux_length)
  integer, parameter :: cctki_use_ckcs_p = kind(ckcs_p)
  COMPLEX*16 dxjcn (X0cmplxcharfuncs_basic,X1cmplxcharfuncs_basic,cmplxcharfuncs_basic_length)
  integer, parameter :: cctki_use_dxjcn = kind(dxjcn)
  COMPLEX*16 dxjcn_p (X0cmplxcharfuncs_basic,X1cmplxcharfuncs_basic,cmplxcharfuncs_basic_length)
  integer, parameter :: cctki_use_dxjcn_p = kind(dxjcn_p)
  COMPLEX*16 dxjcs (X0cmplxcharfuncs_basic,X1cmplxcharfuncs_basic,cmplxcharfuncs_basic_length)
  integer, parameter :: cctki_use_dxjcs = kind(dxjcs)
  COMPLEX*16 dxjcs_p (X0cmplxcharfuncs_basic,X1cmplxcharfuncs_basic,cmplxcharfuncs_basic_length)
  integer, parameter :: cctki_use_dxjcs_p = kind(dxjcs_p)
  COMPLEX*16 eth2jcn (X0cmplxcharfuncs_basic,X1cmplxcharfuncs_basic,cmplxcharfuncs_basic_length)
  integer, parameter :: cctki_use_eth2jcn = kind(eth2jcn)
  COMPLEX*16 eth2jcn_p (X0cmplxcharfuncs_basic,X1cmplxcharfuncs_basic,cmplxcharfuncs_basic_length)
  integer, parameter :: cctki_use_eth2jcn_p = kind(eth2jcn_p)
  COMPLEX*16 eth2jcs (X0cmplxcharfuncs_basic,X1cmplxcharfuncs_basic,cmplxcharfuncs_basic_length)
  integer, parameter :: cctki_use_eth2jcs = kind(eth2jcs)
  COMPLEX*16 eth2jcs_p (X0cmplxcharfuncs_basic,X1cmplxcharfuncs_basic,cmplxcharfuncs_basic_length)
  integer, parameter :: cctki_use_eth2jcs_p = kind(eth2jcs_p)
  INTEGER*4 evolution_maskn (X0null_mask,X1null_mask)
  integer, parameter :: cctki_use_evolution_maskn = kind(evolution_maskn)
  INTEGER*4 evolution_masks (X0null_mask,X1null_mask)
  integer, parameter :: cctki_use_evolution_masks = kind(evolution_masks)
  REAL*8 evolution_radius
  integer, parameter :: cctki_use_evolution_radius = kind(evolution_radius)
  INTEGER*4 guard_mask (X0guard_mask,X1guard_mask)
  integer, parameter :: cctki_use_guard_mask = kind(guard_mask)
  COMPLEX*16 jcn (X0cmplxcharfuncs_basic,X1cmplxcharfuncs_basic,cmplxcharfuncs_basic_length)
  integer, parameter :: cctki_use_jcn = kind(jcn)
  COMPLEX*16 jcn_p (X0cmplxcharfuncs_basic,X1cmplxcharfuncs_basic,cmplxcharfuncs_basic_length)
  integer, parameter :: cctki_use_jcn_p = kind(jcn_p)
  COMPLEX*16 jcs (X0cmplxcharfuncs_basic,X1cmplxcharfuncs_basic,cmplxcharfuncs_basic_length)
  integer, parameter :: cctki_use_jcs = kind(jcs)
  COMPLEX*16 jcs_p (X0cmplxcharfuncs_basic,X1cmplxcharfuncs_basic,cmplxcharfuncs_basic_length)
  integer, parameter :: cctki_use_jcs_p = kind(jcs_p)
  COMPLEX*16 nucn (X0cmplxcharfuncs_aux,X1cmplxcharfuncs_aux,cmplxcharfuncs_aux_length)
  integer, parameter :: cctki_use_nucn = kind(nucn)
  COMPLEX*16 nucn_p (X0cmplxcharfuncs_aux,X1cmplxcharfuncs_aux,cmplxcharfuncs_aux_length)
  integer, parameter :: cctki_use_nucn_p = kind(nucn_p)
  COMPLEX*16 nucs (X0cmplxcharfuncs_aux,X1cmplxcharfuncs_aux,cmplxcharfuncs_aux_length)
  integer, parameter :: cctki_use_nucs = kind(nucs)
  COMPLEX*16 nucs_p (X0cmplxcharfuncs_aux,X1cmplxcharfuncs_aux,cmplxcharfuncs_aux_length)
  integer, parameter :: cctki_use_nucs_p = kind(nucs_p)
  REAL*8 null_delta (X0NullGrParArrR)
  integer, parameter :: cctki_use_null_delta = kind(null_delta)
  REAL*8 null_dx
  integer, parameter :: cctki_use_null_dx = kind(null_dx)
  INTEGER*4 null_gsh (X0NullGrParArrI)
  integer, parameter :: cctki_use_null_gsh = kind(null_gsh)
  INTEGER*4 null_lbnd (X0NullGrParArrI)
  integer, parameter :: cctki_use_null_lbnd = kind(null_lbnd)
  INTEGER*4 null_lsh (X0NullGrParArrI)
  integer, parameter :: cctki_use_null_lsh = kind(null_lsh)
  REAL*8 null_rb (X0RadCrd)
  integer, parameter :: cctki_use_null_rb = kind(null_rb)
  REAL*8 null_rbh (X0RadCrd)
  integer, parameter :: cctki_use_null_rbh = kind(null_rbh)
  INTEGER*4 null_ubnd (X0NullGrParArrI)
  integer, parameter :: cctki_use_null_ubnd = kind(null_ubnd)
  REAL*8 null_xb (X0RadCrd)
  integer, parameter :: cctki_use_null_xb = kind(null_xb)
  REAL*8 null_xbh (X0RadCrd)
  integer, parameter :: cctki_use_null_xbh = kind(null_xbh)
  COMPLEX*16 qcn (X0cmplxcharfuncs_basic,X1cmplxcharfuncs_basic,cmplxcharfuncs_basic_length)
  integer, parameter :: cctki_use_qcn = kind(qcn)
  COMPLEX*16 qcn_p (X0cmplxcharfuncs_basic,X1cmplxcharfuncs_basic,cmplxcharfuncs_basic_length)
  integer, parameter :: cctki_use_qcn_p = kind(qcn_p)
  COMPLEX*16 qcs (X0cmplxcharfuncs_basic,X1cmplxcharfuncs_basic,cmplxcharfuncs_basic_length)
  integer, parameter :: cctki_use_qcs = kind(qcs)
  COMPLEX*16 qcs_p (X0cmplxcharfuncs_basic,X1cmplxcharfuncs_basic,cmplxcharfuncs_basic_length)
  integer, parameter :: cctki_use_qcs_p = kind(qcs_p)
  REAL*8 qsize
  integer, parameter :: cctki_use_qsize = kind(qsize)
  REAL*8 stereo_p (X0StCrd,X1StCrd)
  integer, parameter :: cctki_use_stereo_p = kind(stereo_p)
  REAL*8 stereo_pp (X0StCrd,X1StCrd)
  integer, parameter :: cctki_use_stereo_pp = kind(stereo_pp)
  REAL*8 stereo_q (X0StCrd,X1StCrd)
  integer, parameter :: cctki_use_stereo_q = kind(stereo_q)
  COMPLEX*16 tmp_cgfn (X0tmp_cgf,X1tmp_cgf)
  integer, parameter :: cctki_use_tmp_cgfn = kind(tmp_cgfn)
  COMPLEX*16 tmp_cgfn1 (X0tmp_cgf3,X1tmp_cgf3)
  integer, parameter :: cctki_use_tmp_cgfn1 = kind(tmp_cgfn1)
  COMPLEX*16 tmp_cgfn2 (X0tmp_cgf3,X1tmp_cgf3)
  integer, parameter :: cctki_use_tmp_cgfn2 = kind(tmp_cgfn2)
  COMPLEX*16 tmp_cgfn3 (X0tmp_cgf3,X1tmp_cgf3)
  integer, parameter :: cctki_use_tmp_cgfn3 = kind(tmp_cgfn3)
  COMPLEX*16 tmp_cgfs (X0tmp_cgf,X1tmp_cgf)
  integer, parameter :: cctki_use_tmp_cgfs = kind(tmp_cgfs)
  COMPLEX*16 tmp_cgfs1 (X0tmp_cgf3,X1tmp_cgf3)
  integer, parameter :: cctki_use_tmp_cgfs1 = kind(tmp_cgfs1)
  COMPLEX*16 tmp_cgfs2 (X0tmp_cgf3,X1tmp_cgf3)
  integer, parameter :: cctki_use_tmp_cgfs2 = kind(tmp_cgfs2)
  COMPLEX*16 tmp_cgfs3 (X0tmp_cgf3,X1tmp_cgf3)
  integer, parameter :: cctki_use_tmp_cgfs3 = kind(tmp_cgfs3)
  REAL*8 tmp_rgfn (X0tmp_rgf,X1tmp_rgf)
  integer, parameter :: cctki_use_tmp_rgfn = kind(tmp_rgfn)
  REAL*8 tmp_rgfs (X0tmp_rgf,X1tmp_rgf)
  integer, parameter :: cctki_use_tmp_rgfs = kind(tmp_rgfs)
  COMPLEX*16 ucn (X0cmplxcharfuncs_basic,X1cmplxcharfuncs_basic,cmplxcharfuncs_basic_length)
  integer, parameter :: cctki_use_ucn = kind(ucn)
  COMPLEX*16 ucn_p (X0cmplxcharfuncs_basic,X1cmplxcharfuncs_basic,cmplxcharfuncs_basic_length)
  integer, parameter :: cctki_use_ucn_p = kind(ucn_p)
  COMPLEX*16 ucs (X0cmplxcharfuncs_basic,X1cmplxcharfuncs_basic,cmplxcharfuncs_basic_length)
  integer, parameter :: cctki_use_ucs = kind(ucs)
  COMPLEX*16 ucs_p (X0cmplxcharfuncs_basic,X1cmplxcharfuncs_basic,cmplxcharfuncs_basic_length)
  integer, parameter :: cctki_use_ucs_p = kind(ucs_p)
  REAL*8 wcn (X0realcharfuncs,X1realcharfuncs,realcharfuncs_length)
  integer, parameter :: cctki_use_wcn = kind(wcn)
  REAL*8 wcn_p (X0realcharfuncs,X1realcharfuncs,realcharfuncs_length)
  integer, parameter :: cctki_use_wcn_p = kind(wcn_p)
  REAL*8 wcs (X0realcharfuncs,X1realcharfuncs,realcharfuncs_length)
  integer, parameter :: cctki_use_wcs = kind(wcs)
  REAL*8 wcs_p (X0realcharfuncs,X1realcharfuncs,realcharfuncs_length)
  integer, parameter :: cctki_use_wcs_p = kind(wcs_p)
  COMPLEX*16 zeta (X0StCmCrd,X1StCmCrd)
  integer, parameter :: cctki_use_zeta = kind(zeta)
  INTEGER*4 calculate_constraints
  integer, parameter :: cctki_use_calculate_constraints = kind(calculate_constraints)
  COMMON /NullConstrrest/calculate_constraints
  REAL*8 CCTKH9
  integer, parameter :: cctki_use_CCTKH9 = kind(CCTKH9)
  integer*8 CCTKH10
  integer, parameter :: cctki_use_CCTKH10 = kind(CCTKH10)
  integer*8 CCTKH12
  integer, parameter :: cctki_use_CCTKH12 = kind(CCTKH12)
  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 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)
  INTEGER*4 CCTKH8
  integer, parameter :: cctki_use_CCTKH8 = kind(CCTKH8)
  INTEGER*4 CCTKH11
  integer, parameter :: cctki_use_CCTKH11 = kind(CCTKH11)
  INTEGER*4 first_order_scheme
  integer, parameter :: cctki_use_first_order_scheme = kind(first_order_scheme)
  INTEGER*4 CCTKH13
  integer, parameter :: cctki_use_CCTKH13 = kind(CCTKH13)
  COMMON /NULLEVOLVErest/CCTKH9, CCTKH10, CCTKH12, CCTKH0, CCTKH1, CCTKH2, CCTKH3, CCTKH4, CCTKH5, CCTKH6, CCTKH7, CCTKH8, CCTKH11,&
  & first_order_scheme, CCTKH13
  REAL*8 CCTKH14
  integer, parameter :: cctki_use_CCTKH14 = kind(CCTKH14)
  REAL*8 CCTKH15
  integer, parameter :: cctki_use_CCTKH15 = kind(CCTKH15)
  INTEGER*4 N_ang_ev_outside_eq
  integer, parameter :: cctki_use_N_ang_ev_outside_eq = kind(N_ang_ev_outside_eq)
  INTEGER*4 N_ang_ghost_pts
  integer, parameter :: cctki_use_N_ang_ghost_pts = kind(N_ang_ghost_pts)
  INTEGER*4 N_ang_pts_inside_eq
  integer, parameter :: cctki_use_N_ang_pts_inside_eq = kind(N_ang_pts_inside_eq)
  INTEGER*4 N_ang_stencil_size
  integer, parameter :: cctki_use_N_ang_stencil_size = kind(N_ang_stencil_size)
  INTEGER*4 N_radial_pts
  integer, parameter :: cctki_use_N_radial_pts = kind(N_radial_pts)
  INTEGER*4 CCTKH16
  integer, parameter :: cctki_use_CCTKH16 = kind(CCTKH16)
  COMMON /NULLGRIDrest/CCTKH14, CCTKH15, N_ang_ev_outside_eq, N_ang_ghost_pts, N_ang_pts_inside_eq, N_ang_stencil_size, N_radial_pt&
  &s, CCTKH16
  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 GZPatchSystem_patch_number_from_global_XYZ (psn, x, y, z)
  implicit none
  INTEGER*4 psn
  REAL*8 x
  REAL*8 y
  REAL*8 z
  end function GZPatchSystem_patch_number_from_global_XYZ
  end interface
  interface
  subroutine GZPatchSystem_sync_groups (GH, N_groups_to_sync, group_names, psn, min_jwr, max_jwr)
  implicit none
  integer*8 GH
  INTEGER*4 N_groups_to_sync
  integer*8 group_names(*)
  INTEGER*4 psn
  INTEGER*4 min_jwr
  INTEGER*4 max_jwr
  end subroutine GZPatchSystem_sync_groups
  end interface

  INTEGER*4 :: i

  REAL*8, allocatable, save, dimension(:) :: &
       dr_dx,d2r_dx2,dr_dxh,d2r_dx2h

  REAL*8, allocatable, save, dimension(:,:) :: &
       w_00,w_01,w_04,w_11,w_14,&
       b_00,b_01,b_04,b_11,b_14,&
       k_00,k_01,k_04,k_11,k_14

  REAL*8, allocatable, save, dimension(:,:,:) :: kc, kc_p

  COMPLEX*16, allocatable, save, dimension(:,:) :: &
       w_02,w_03,w_12,w_13,w_22,w_23,w_24,w_33,w_34,&
       b_02,b_03,b_12,b_13,b_22,b_23,b_24,b_33,b_34,&
       k_02,k_03,k_12,k_13,k_22,k_23,k_24,k_33,k_34,&
       j_00,j_01,j_04,j_11,j_14,&
       j_02,j_03,j_12,j_13,j_22,j_23,j_24,j_33,j_34,&
       jb_00,jb_01,jb_04,jb_11,jb_14,&
       jb_02,jb_03,jb_12,jb_13,jb_22,jb_23,jb_24,jb_33,jb_34,&
       u_00,u_01,u_04,u_11,u_14,&
       u_02,u_03,u_12,u_13,u_22,u_23,u_24,u_33,u_34,&
       ub_00,ub_01,ub_04,ub_11,ub_14,&
       ub_02,ub_03,ub_12,ub_13,ub_22,ub_23,ub_24,ub_33,ub_34

  INTEGER*4, parameter :: izero = 0
  integer, parameter :: ik = kind(izero)

  LOGICAL, save :: FirstTime = .true.
  integer :: l1, l2, reduce_handle
  INTEGER*4 :: mn, reval, global_mn

  call CCTK_ReductionArrayHandle(reduce_handle, "minimum");
  if (reduce_handle .lt. 0 ) then
     call CCTK_Warn(0,64,"NullConstr_Driver.F90","NullConstr","Could not get reduction handle")
  endif

  if (.true.) then
     mn = min(minval(boundary_masks(1:null_lsh(1),1:null_lsh(2))),&
          minval(boundary_maskn(1:null_lsh(1),1:null_lsh(2))))
  else
     mn = minval(boundary_maskn(1:null_lsh(1),1:null_lsh(2)))
  end if

  call CCTK_ReduceLocScalar(reval, cctkGH, -1, reduce_handle,&
       mn, global_mn, 120)

  if (reval .ne. 0 ) then
     call CCTK_Warn(0,78,"NullConstr_Driver.F90","NullConstr","Error in obtaining Minimum of mask")
  endif

  call CCTK_ActiveTimeLevels(l1, cctkGH, "NullVars::realcharfuncs")
  call CCTK_ActiveTimeLevels(l2, cctkGH, "NullVars::cmplxcharfuncs_basic")

  if (min(l1,l2).lt.2) then
     call CCTK_Warn(1,85,"NullConstr_Driver.F90","NullConstr", "cannot calculate constraints -- not enough allocated time-levels")
     
     return
  end if
  if (FirstTime) then
     FirstTime = .false.
     allocate(dr_dx(N_radial_pts),d2r_dx2(N_radial_pts),dr_dxh(N_radial_pts),d2r_dx2h(N_radial_pts),&
          kc(null_lsh(1),null_lsh(2),N_radial_pts),kc_p(null_lsh(1),null_lsh(2),N_radial_pts), &
          w_00(null_lsh(1),null_lsh(2)),w_01(null_lsh(1),null_lsh(2)),&
          w_04(null_lsh(1),null_lsh(2)),w_11(null_lsh(1),null_lsh(2)),&
          w_14(null_lsh(1),null_lsh(2)), w_02(null_lsh(1),null_lsh(2)),&
          w_03(null_lsh(1),null_lsh(2)),w_12(null_lsh(1),null_lsh(2)),&
          w_13(null_lsh(1),null_lsh(2)),w_22(null_lsh(1),null_lsh(2)),&
          w_23(null_lsh(1),null_lsh(2)),w_24(null_lsh(1),null_lsh(2)),&
          w_33(null_lsh(1),null_lsh(2)),w_34(null_lsh(1),null_lsh(2)),&
          b_00(null_lsh(1),null_lsh(2)),b_01(null_lsh(1),null_lsh(2)),&
          b_04(null_lsh(1),null_lsh(2)),b_11(null_lsh(1),null_lsh(2)),&
          b_14(null_lsh(1),null_lsh(2)),b_02(null_lsh(1),null_lsh(2)),&
          b_03(null_lsh(1),null_lsh(2)),b_12(null_lsh(1),null_lsh(2)),&
          b_13(null_lsh(1),null_lsh(2)),b_22(null_lsh(1),null_lsh(2)),&
          b_23(null_lsh(1),null_lsh(2)),b_24(null_lsh(1),null_lsh(2)),&
          b_33(null_lsh(1),null_lsh(2)),b_34(null_lsh(1),null_lsh(2)),&
          k_00(null_lsh(1),null_lsh(2)),k_01(null_lsh(1),null_lsh(2)),&
          k_04(null_lsh(1),null_lsh(2)),k_11(null_lsh(1),null_lsh(2)),&
          k_14(null_lsh(1),null_lsh(2)),k_02(null_lsh(1),null_lsh(2)),&
          k_03(null_lsh(1),null_lsh(2)),k_12(null_lsh(1),null_lsh(2)),&
          k_13(null_lsh(1),null_lsh(2)),k_22(null_lsh(1),null_lsh(2)),&
          k_23(null_lsh(1),null_lsh(2)),k_24(null_lsh(1),null_lsh(2)),&
          k_33(null_lsh(1),null_lsh(2)),k_34(null_lsh(1),null_lsh(2)),&
          j_00(null_lsh(1),null_lsh(2)),j_01(null_lsh(1),null_lsh(2)),&
          j_04(null_lsh(1),null_lsh(2)),j_11(null_lsh(1),null_lsh(2)),&
          j_14(null_lsh(1),null_lsh(2)),j_02(null_lsh(1),null_lsh(2)),&
          j_03(null_lsh(1),null_lsh(2)),j_12(null_lsh(1),null_lsh(2)),&
          j_13(null_lsh(1),null_lsh(2)),j_22(null_lsh(1),null_lsh(2)),&
          j_23(null_lsh(1),null_lsh(2)),j_24(null_lsh(1),null_lsh(2)),&
          j_33(null_lsh(1),null_lsh(2)),j_34(null_lsh(1),null_lsh(2)),&
          jb_00(null_lsh(1),null_lsh(2)),jb_01(null_lsh(1),null_lsh(2)),&
          jb_04(null_lsh(1),null_lsh(2)),jb_11(null_lsh(1),null_lsh(2)),&
          jb_14(null_lsh(1),null_lsh(2)),jb_02(null_lsh(1),null_lsh(2)),&
          jb_03(null_lsh(1),null_lsh(2)),jb_12(null_lsh(1),null_lsh(2)),&
          jb_13(null_lsh(1),null_lsh(2)),jb_22(null_lsh(1),null_lsh(2)),&
          jb_23(null_lsh(1),null_lsh(2)),jb_24(null_lsh(1),null_lsh(2)),&
          jb_33(null_lsh(1),null_lsh(2)),jb_34(null_lsh(1),null_lsh(2)),&
          u_00(null_lsh(1),null_lsh(2)),u_01(null_lsh(1),null_lsh(2)),&
          u_04(null_lsh(1),null_lsh(2)),u_11(null_lsh(1),null_lsh(2)),&
          u_14(null_lsh(1),null_lsh(2)),u_02(null_lsh(1),null_lsh(2)),&
          u_03(null_lsh(1),null_lsh(2)),u_12(null_lsh(1),null_lsh(2)),&
          u_13(null_lsh(1),null_lsh(2)),u_22(null_lsh(1),null_lsh(2)),&
          u_23(null_lsh(1),null_lsh(2)),u_24(null_lsh(1),null_lsh(2)),&
          u_33(null_lsh(1),null_lsh(2)),u_34(null_lsh(1),null_lsh(2)),&
          ub_00(null_lsh(1),null_lsh(2)),ub_01(null_lsh(1),null_lsh(2)),&
          ub_04(null_lsh(1),null_lsh(2)),ub_11(null_lsh(1),null_lsh(2)),&
          ub_14(null_lsh(1),null_lsh(2)),ub_02(null_lsh(1),null_lsh(2)),&
          ub_03(null_lsh(1),null_lsh(2)),ub_12(null_lsh(1),null_lsh(2)),&
          ub_13(null_lsh(1),null_lsh(2)),ub_22(null_lsh(1),null_lsh(2)),&
          ub_23(null_lsh(1),null_lsh(2)),ub_24(null_lsh(1),null_lsh(2)),&
          ub_33(null_lsh(1),null_lsh(2)),ub_34(null_lsh(1),null_lsh(2)))
  end if

  Null_R00 = 0; Null_R01 = 0; Null_R0A = 0
  if (cctk_iteration .eq. 0) then
    
    return
  endif

  call x2r_derivs(dr_dx,d2r_dx2,dr_dxh,d2r_dx2h,N_radial_pts,xb,xbh)

  kc = dsqrt(1+dble(jcn*conjg(jcn)))
  kc_p = dsqrt(1+dble(jcn_p*conjg(jcn_p)))


 

  do i = global_mn+1, N_radial_pts  

     call real_derivs (wcn,wcn_p,cctk_delta_time,dx,N_radial_pts,null_lsh,i,dr_dx(i),d2r_dx2(i), &
          w_00,w_01,w_02,w_03,w_04,w_11,w_12,w_13,w_14, &
          w_22,w_23,w_24,w_33,w_34)
     call real_derivs (bcn,bcn_p,cctk_delta_time,dx,N_radial_pts,null_lsh,i,dr_dx(i),d2r_dx2(i), &
          b_00,b_01,b_02,b_03,b_04,b_11,b_12,b_13,b_14, &
          b_22,b_23,b_24,b_33,b_34)
     call real_derivs (kc,kc_p,cctk_delta_time,dx,N_radial_pts,null_lsh,i,dr_dx(i),d2r_dx2(i), &
          k_00,k_01,k_02,k_03,k_04,k_11,k_12,k_13,k_14, &
          k_22,k_23,k_24,k_33,k_34)
     call cmplx_derivs &
          (jcn,jcn_p,cctk_delta_time,dx,N_radial_pts,null_lsh,i,2_ik,dr_dx(i),d2r_dx2(i),.FALSE., &
          j_00,j_01,j_02,j_03,j_04,j_11,j_12,j_13,j_14, &
          j_22,j_23,j_24,j_33,j_34, &
          jb_00,jb_01,jb_02,jb_03,jb_04,jb_11,jb_12,jb_13,jb_14, &
          jb_22,jb_23,jb_24,jb_33,jb_34)
     call cmplx_derivs &
          (ucn,ucn_p,cctk_delta_time,dx,N_radial_pts,null_lsh,i,1_ik,dr_dx(i),d2r_dx2(i),.TRUE., &
          u_00,u_01,u_02,u_03,u_04,u_11,u_12,u_13,u_14, &
          u_22,u_23,u_24,u_33,u_34, &
          ub_00,ub_01,ub_02,ub_03,ub_04,ub_11,ub_12,ub_13,ub_14, &
          ub_22,ub_23,ub_24,ub_33,ub_34)

     

     call NullConstr_R00_calc (Null_R00(:,:,i),null_lsh(1),null_lsh(2),null_rb(i), &
          w_00,w_01,w_02,w_03,w_04,w_11,w_12,w_13,w_14, &
          w_22,w_23,w_24,w_33,w_34, &
          b_00,b_01,b_02,b_03,b_04,b_11,b_12,b_13,b_14, &
          b_22,b_23,b_24,b_33,b_34, &
          k_00,k_01,k_02,k_03,k_04,k_11,k_12,k_13,k_14, &
          k_22,k_23,k_24,k_33,k_34, &
          j_00,j_01,j_02,j_03,j_04,j_11,j_12,j_13,j_14, &
          j_22,j_23,j_24,j_33,j_34, &
          jb_00,jb_01,jb_02,jb_03,jb_04,jb_11,jb_12,jb_13,jb_14, &
          jb_22,jb_23,jb_24,jb_33,jb_34, &
          u_00,u_01,u_02,u_03,u_04,u_11,u_12,u_13,u_14, &
          u_22,u_23,u_24,u_33,u_34, &
          ub_00,ub_01,ub_02,ub_03,ub_04,ub_11,ub_12,ub_13,ub_14, &
          ub_22,ub_23,ub_24,ub_33,ub_34)

     call NullConstr_R0A_calc (Null_R0A(:,:,i),null_lsh(1),null_lsh(2),null_rb(i), &
          w_00,w_01,w_02,w_03,w_04,w_11,w_12,w_13,w_14, &
          w_22,w_23,w_24,w_33,w_34, &
          b_00,b_01,b_02,b_03,b_04,b_11,b_12,b_13,b_14, &
          b_22,b_23,b_24,b_33,b_34, &
          k_00,k_01,k_02,k_03,k_04,k_11,k_12,k_13,k_14, &
          k_22,k_23,k_24,k_33,k_34, &
          j_00,j_01,j_02,j_03,j_04,j_11,j_12,j_13,j_14, &
          j_22,j_23,j_24,j_33,j_34, &
          jb_00,jb_01,jb_02,jb_03,jb_04,jb_11,jb_12,jb_13,jb_14, &
          jb_22,jb_23,jb_24,jb_33,jb_34, &
          u_00,u_01,u_02,u_03,u_04,u_11,u_12,u_13,u_14, &
          u_22,u_23,u_24,u_33,u_34, &
          ub_00,ub_01,ub_02,ub_03,ub_04,ub_11,ub_12,ub_13,ub_14, &
          ub_22,ub_23,ub_24,ub_33,ub_34)

     call NullConstr_R01_calc (Null_R01(:,:,i),null_lsh(1),null_lsh(2),null_rb(i), &
          w_00,w_01,w_02,w_03,w_04,w_11,w_12,w_13,w_14, &
          w_22,w_23,w_24,w_33,w_34, &
          b_00,b_01,b_02,b_03,b_04,b_11,b_12,b_13,b_14, &
          b_22,b_23,b_24,b_33,b_34, &
          k_00,k_01,k_02,k_03,k_04,k_11,k_12,k_13,k_14, &
          k_22,k_23,k_24,k_33,k_34, &
          j_00,j_01,j_02,j_03,j_04,j_11,j_12,j_13,j_14, &
          j_22,j_23,j_24,j_33,j_34, &
          jb_00,jb_01,jb_02,jb_03,jb_04,jb_11,jb_12,jb_13,jb_14, &
          jb_22,jb_23,jb_24,jb_33,jb_34, &
          u_00,u_01,u_02,u_03,u_04,u_11,u_12,u_13,u_14, &
          u_22,u_23,u_24,u_33,u_34, &
          ub_00,ub_01,ub_02,ub_03,ub_04,ub_11,ub_12,ub_13,ub_14, &
          ub_22,ub_23,ub_24,ub_33,ub_34)


     call NullEvol_remask (i, boundary_maskn, evolution_maskn)

     Null_R00(:,:,i) = evolution_maskn * Null_R00(:,:,i)
     Null_R0A(:,:,i) = evolution_maskn * Null_R0A(:,:,i)
     Null_R01(:,:,i) = evolution_maskn * Null_R01(:,:,i)

 end do
 Null_R0A_r = dble(Null_R0A)
 Null_R0A_i = dimag(Null_R0A)

 

 if (.true.) then

    kc = dsqrt(1+dble(jcs*conjg(jcs)))
    kc_p = dsqrt(1+dble(jcs_p*conjg(jcs_p)))

    Null_R00_south = 0; Null_R01_south = 0; Null_R0A_south = 0

    do i = global_mn+1, N_radial_pts  

        call real_derivs (wcs,wcs_p,cctk_delta_time,dx,N_radial_pts,null_lsh,i,dr_dx(i),d2r_dx2(i), &
             w_00,w_01,w_02,w_03,w_04,w_11,w_12,w_13,w_14, &
             w_22,w_23,w_24,w_33,w_34)
        call real_derivs (bcs,bcs_p,cctk_delta_time,dx,N_radial_pts,null_lsh,i,dr_dx(i),d2r_dx2(i), &
             b_00,b_01,b_02,b_03,b_04,b_11,b_12,b_13,b_14, &
             b_22,b_23,b_24,b_33,b_34)
        call real_derivs (kc,kc_p,cctk_delta_time,dx,N_radial_pts,null_lsh,i,dr_dx(i),d2r_dx2(i), &
             k_00,k_01,k_02,k_03,k_04,k_11,k_12,k_13,k_14, &
             k_22,k_23,k_24,k_33,k_34)
        call cmplx_derivs &
             (jcs,jcs_p,cctk_delta_time,dx,N_radial_pts,null_lsh,i,2_ik,dr_dx(i),d2r_dx2(i),.FALSE., &
             j_00,j_01,j_02,j_03,j_04,j_11,j_12,j_13,j_14, &
             j_22,j_23,j_24,j_33,j_34, &
             jb_00,jb_01,jb_02,jb_03,jb_04,jb_11,jb_12,jb_13,jb_14, &
             jb_22,jb_23,jb_24,jb_33,jb_34)
        call cmplx_derivs &
             (ucs,ucs_p,cctk_delta_time,dx,N_radial_pts,null_lsh,i,1_ik,dr_dx(i),d2r_dx2(i),.TRUE., &
             u_00,u_01,u_02,u_03,u_04,u_11,u_12,u_13,u_14, &
             u_22,u_23,u_24,u_33,u_34, &
             ub_00,ub_01,ub_02,ub_03,ub_04,ub_11,ub_12,ub_13,ub_14, &
             ub_22,ub_23,ub_24,ub_33,ub_34)

        
        call NullConstr_R00_calc (Null_R00_south(:,:,i),null_lsh(1),null_lsh(2),null_rb(i), &
             w_00,w_01,w_02,w_03,w_04,w_11,w_12,w_13,w_14, &
             w_22,w_23,w_24,w_33,w_34, &
             b_00,b_01,b_02,b_03,b_04,b_11,b_12,b_13,b_14, &
             b_22,b_23,b_24,b_33,b_34, &
             k_00,k_01,k_02,k_03,k_04,k_11,k_12,k_13,k_14, &
             k_22,k_23,k_24,k_33,k_34, &
             j_00,j_01,j_02,j_03,j_04,j_11,j_12,j_13,j_14, &
             j_22,j_23,j_24,j_33,j_34, &
             jb_00,jb_01,jb_02,jb_03,jb_04,jb_11,jb_12,jb_13,jb_14, &
             jb_22,jb_23,jb_24,jb_33,jb_34, &
             u_00,u_01,u_02,u_03,u_04,u_11,u_12,u_13,u_14, &
             u_22,u_23,u_24,u_33,u_34, &
             ub_00,ub_01,ub_02,ub_03,ub_04,ub_11,ub_12,ub_13,ub_14, &
             ub_22,ub_23,ub_24,ub_33,ub_34)

        call NullConstr_R0A_calc (Null_R0A_south(:,:,i),null_lsh(1),null_lsh(2),null_rb(i), &
             w_00,w_01,w_02,w_03,w_04,w_11,w_12,w_13,w_14, &
             w_22,w_23,w_24,w_33,w_34, &
             b_00,b_01,b_02,b_03,b_04,b_11,b_12,b_13,b_14, &
             b_22,b_23,b_24,b_33,b_34, &
             k_00,k_01,k_02,k_03,k_04,k_11,k_12,k_13,k_14, &
             k_22,k_23,k_24,k_33,k_34, &
             j_00,j_01,j_02,j_03,j_04,j_11,j_12,j_13,j_14, &
             j_22,j_23,j_24,j_33,j_34, &
             jb_00,jb_01,jb_02,jb_03,jb_04,jb_11,jb_12,jb_13,jb_14, &
             jb_22,jb_23,jb_24,jb_33,jb_34, &
             u_00,u_01,u_02,u_03,u_04,u_11,u_12,u_13,u_14, &
             u_22,u_23,u_24,u_33,u_34, &
             ub_00,ub_01,ub_02,ub_03,ub_04,ub_11,ub_12,ub_13,ub_14, &
             ub_22,ub_23,ub_24,ub_33,ub_34)

        call NullConstr_R01_calc (Null_R01_south(:,:,i),null_lsh(1),null_lsh(2),null_rb(i), &
             w_00,w_01,w_02,w_03,w_04,w_11,w_12,w_13,w_14, &
             w_22,w_23,w_24,w_33,w_34, &
             b_00,b_01,b_02,b_03,b_04,b_11,b_12,b_13,b_14, &
             b_22,b_23,b_24,b_33,b_34, &
             k_00,k_01,k_02,k_03,k_04,k_11,k_12,k_13,k_14, &
             k_22,k_23,k_24,k_33,k_34, &
             j_00,j_01,j_02,j_03,j_04,j_11,j_12,j_13,j_14, &
             j_22,j_23,j_24,j_33,j_34, &
             jb_00,jb_01,jb_02,jb_03,jb_04,jb_11,jb_12,jb_13,jb_14, &
             jb_22,jb_23,jb_24,jb_33,jb_34, &
             u_00,u_01,u_02,u_03,u_04,u_11,u_12,u_13,u_14, &
             u_22,u_23,u_24,u_33,u_34, &
             ub_00,ub_01,ub_02,ub_03,ub_04,ub_11,ub_12,ub_13,ub_14, &
             ub_22,ub_23,ub_24,ub_33,ub_34)


        call NullEvol_remask (i, boundary_masks, evolution_masks)

        Null_R00_south(:,:,i) = evolution_masks * Null_R00_south(:,:,i)
        Null_R0A_south(:,:,i) = evolution_masks * Null_R0A_south(:,:,i)
        Null_R01_south(:,:,i) = evolution_masks * Null_R01_south(:,:,i)

        call NullInterp_cinterp(cctkGH, tmp_cgfn, tmp_cgfs, Null_R0A(:,:,i),Null_R0A_south(:,:,i), 1_ik)
        call NullInterp_rinterp(cctkGH, tmp_rgfn, tmp_rgfs, Null_R00(:,:,i), Null_R00_south(:,:,i))
        call NullInterp_rinterp(cctkGH, tmp_rgfn, tmp_rgfs, Null_R01(:,:,i), Null_R01_south(:,:,i))

     end do

  end if

  call CCTK_Info("NullConstr","CALCULATED NULL_R00, NULL_R0A, NULL_R01")
end subroutine NullConstr_Driver
