diff options
author | diener <diener@f69c4107-0314-4c4f-9ad4-17e986b73f4a> | 2005-02-23 17:51:10 +0000 |
---|---|---|
committer | diener <diener@f69c4107-0314-4c4f-9ad4-17e986b73f4a> | 2005-02-23 17:51:10 +0000 |
commit | f3222ee3543e8a837647d830f19d3ecd7639f149 (patch) | |
tree | 73903f4c267ca33598693f33f7d070ded0d68044 /src/get_coeffs.c | |
parent | 0615acc9c9fb001ac6413ef09b437cba68f8dca4 (diff) |
Routines for getting the coefficients for the various derivatives. By request from Bela.
git-svn-id: https://svn.cct.lsu.edu/repos/numrel/LSUThorns/SummationByParts/trunk@23 f69c4107-0314-4c4f-9ad4-17e986b73f4a
Diffstat (limited to 'src/get_coeffs.c')
-rw-r--r-- | src/get_coeffs.c | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/src/get_coeffs.c b/src/get_coeffs.c new file mode 100644 index 0000000..0d8e365 --- /dev/null +++ b/src/get_coeffs.c @@ -0,0 +1,135 @@ +#include "cctk.h" +#include "cctk_Parameters.h" +#include "cctk_Arguments.h" +#include "util_Table.h" +#include <stdio.h> + +#include <assert.h> + +void DiffCoeff ( const CCTK_POINTER_TO_CONST cctkGH_, const CCTK_INT dir, + const CCTK_INT nsize, CCTK_INT *imin, CCTK_INT *imax, + CCTK_REAL *q, const CCTK_INT table_handle ) +{ + cGH const * restrict const cctkGH = cctkGH_; + DECLARE_CCTK_PARAMETERS + DECLARE_CCTK_ARGUMENTS + + CCTK_INT ni, nj, nk, gsize, loc_order; + CCTK_INT ierr; + int nelements; + CCTK_INT lsh[3], bbox[6], bb[2], nghostzones[3]; + void CCTK_FCALL CCTK_FNAME(set_coeff_2_1)(const CCTK_INT *nsize, + const CCTK_INT *loc_order, + const CCTK_INT *bb, + const CCTK_INT *gsize, + CCTK_INT *imin, + CCTK_INT *imax, + CCTK_REAL *q); + void CCTK_FCALL CCTK_FNAME(set_coeff_4_2)(const CCTK_INT *nsize, + const CCTK_INT *loc_order, + const CCTK_INT *bb, + const CCTK_INT *gsize, + CCTK_INT *imin, + CCTK_INT *imax, + CCTK_REAL *q); + void CCTK_FCALL CCTK_FNAME(set_coeff_6_3)(const CCTK_INT *nsize, + const CCTK_INT *loc_order, + const CCTK_INT *bb, + const CCTK_INT *gsize, + CCTK_INT *imin, + CCTK_INT *imax, + CCTK_REAL *q); + void CCTK_FCALL CCTK_FNAME(set_coeff_8_4)(const CCTK_INT *nsize, + const CCTK_INT *loc_order, + const CCTK_INT *bb, + const CCTK_INT *gsize, + CCTK_INT *imin, + CCTK_INT *imax, + CCTK_REAL *q); + void CCTK_FCALL CCTK_FNAME(set_coeff_4_3)(const CCTK_INT *nsize, + const CCTK_INT *loc_order, + const CCTK_INT *bb, + const CCTK_INT *gsize, + CCTK_INT *imin, + CCTK_INT *imax, + CCTK_REAL *q); + void CCTK_FCALL CCTK_FNAME(set_coeff_6_5)(const CCTK_INT *nsize, + const CCTK_INT *loc_order, + const CCTK_INT *bb, + const CCTK_INT *gsize, + CCTK_INT *imin, + CCTK_INT *imax, + CCTK_REAL *q); + + ni = cctk_lsh[0]; nj = cctk_lsh[1]; nk = cctk_lsh[2]; + + if ( table_handle >=0 ) { + nelements = Util_TableGetInt ( table_handle, &loc_order, "order" ); + assert(nelements>0); + } else { + loc_order = order; + } +// printf("loc_order = %d\n",loc_order); +// printf("dir = %d, nsize = %d\n",dir,nsize); + + + switch(dir) { + case 0: { + assert(nsize==ni); + bb[0] = cctk_bbox[0]; bb[1] = cctk_bbox[1]; + gsize = cctk_nghostzones[0]; + break; + } + case 1: { + assert(nsize==nj); + bb[0] = cctk_bbox[2]; bb[1] = cctk_bbox[3]; + gsize = cctk_nghostzones[1]; + break; + } + case 2: { + assert(nsize==nk); + bb[0] = cctk_bbox[4]; bb[1] = cctk_bbox[5]; + gsize = cctk_nghostzones[2]; + break; + } + default: + assert(0); + } +// printf("bbox = [%d,%d], gsize = %d\n",bb[0],bb[1],gsize); + + if ( CCTK_Equals(norm_type,"Diagonal") ) { + switch(loc_order) { + case 2: { + CCTK_FNAME(set_coeff_2_1)(&nsize,&loc_order,bb,&gsize,imin,imax,q); + break; + } + case 4: { + CCTK_FNAME(set_coeff_4_2)(&nsize,&loc_order,bb,&gsize,imin,imax,q); + break; + } + case 6: { + CCTK_FNAME(set_coeff_6_3)(&nsize,&loc_order,bb,&gsize,imin,imax,q); + break; + } + case 8: { + CCTK_FNAME(set_coeff_8_4)(&nsize,&loc_order,bb,&gsize,imin,imax,q); + break; + } + default: + assert(0); + } + } else { + switch(loc_order) { + case 4: { + CCTK_FNAME(set_coeff_4_3)(&nsize,&loc_order,bb,&gsize,imin,imax,q); + break; + } + case 6: { + CCTK_FNAME(set_coeff_6_5)(&nsize,&loc_order,bb,&gsize,imin,imax,q); + break; + } + default: + assert(0); + } + } +} |