/*@@ @file ApplyCartoon.c @date 6 Jan 2003 @author David Rideout @desc Applies the Cartoon boundary condition to all variables selected for a bc. @enddesc @version $Header$ @@*/ #include "cctk.h" #include "cctk_Arguments.h" #include "util_Table.h" #include "Cartoon2D.h" #include "Cartoon2D_tensors.h" #include static const char *rcsid = "$Header$"; CCTK_FILEVERSION(BetaThorns_Cartoon2D_ApplyCartoon_c); /******************************************************************** ********************* Local Data Types *********************** ********************************************************************/ /* #define DEBUG 1 */ #define TENSORTYPE_BUFF_SIZE 7 #define PROLONG_BUFF_SIZE 1000 /******************************************************************** ********************* Local Routine Prototypes ********************* ********************************************************************/ /******************************************************************** ***************** Aliased Routine Prototypes *********************** ********************************************************************/ /******************************************************************** ***************** Scheduled Routine Prototypes ********************* ********************************************************************/ void Cartoon_ApplyBoundaries(CCTK_ARGUMENTS); /******************************************************************** ********************* Other Routine Prototypes ********************* ********************************************************************/ /******************************************************************** ********************* Local Data ***************************** ********************************************************************/ /******************************************************************** ********************* Aliased Routines ********************** ********************************************************************/ /******************************************************************** ********************* Scheduled Routines ********************** ********************************************************************/ /*@@ @routine Cartoon_ApplyBoundaries @date 6 Jan 2003 @author David Rideout @desc This will apply the Cartoon boundary condition to all variables selected for any (physical) boundary condition. @enddesc @calls @history @endhistory @var CCTK_ARGUMENTS @vdesc Cactus argument list @vtype CCTK_* @vio in @endvar @returntype void @returndesc @endreturndesc @@*/ void Cartoon_ApplyBoundaries(CCTK_ARGUMENTS) { DECLARE_CCTK_ARGUMENTS; int num_vars, err, i, gi, group_tags_table; CCTK_INT * vars; char tensortype[TENSORTYPE_BUFF_SIZE]; char prolongtype[PROLONG_BUFF_SIZE]; int prolongmethod; /* Check grid size */ if(cctk_gsh[1] != 2*cctk_nghostzones[1]+1) { CCTK_WARN(0, "Grid size in y direction inappropriate."); } /* Allocate memory to hold selected bcs */ num_vars = Boundary_SelectedGVs(cctkGH, 0, NULL, NULL, NULL, NULL, NULL); #ifdef DEBUG printf("Cartoon_ApplyBoundaries: num_vars is %d\n",num_vars); #endif vars = malloc(num_vars*sizeof *vars); /* get all selected vars */ err = Boundary_SelectedGVs(cctkGH, num_vars, vars, NULL, NULL, NULL, NULL); if (err != num_vars) { CCTK_VWarn(1, __LINE__, __FILE__, CCTK_THORNSTRING, "Boundary_SelectedGVs returned %d selected variables, but %d " "expected", err, num_vars); } /* Apply CartoonBC to each of them. */ /* One should probably check to see that the entire group has been * selected, since Cartoon operates on an entire group at a time. * For now I'll just skip a variable if it is not a 'group leader'. */ for (i=0; i