aboutsummaryrefslogtreecommitdiff
path: root/src/call_derivs.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/call_derivs.c')
-rw-r--r--src/call_derivs.c113
1 files changed, 83 insertions, 30 deletions
diff --git a/src/call_derivs.c b/src/call_derivs.c
index 2932e24..7d69c6d 100644
--- a/src/call_derivs.c
+++ b/src/call_derivs.c
@@ -45,6 +45,15 @@ void DiffGv ( const CCTK_POINTER_TO_CONST cctkGH_, const CCTK_INT dir,
const CCTK_INT *gsize,
const CCTK_REAL *delta,
CCTK_REAL *dvar);
+ void CCTK_FCALL CCTK_FNAME(deriv_gf_4_3_opt)(const CCTK_REAL *var,
+ const CCTK_INT *ni,
+ const CCTK_INT *nj,
+ const CCTK_INT *nk,
+ const CCTK_INT *dir,
+ const CCTK_INT *bb,
+ const CCTK_INT *gsize,
+ const CCTK_REAL *delta,
+ CCTK_REAL *dvar);
void CCTK_FCALL CCTK_FNAME(deriv_gf_6_3)(const CCTK_REAL *var,
const CCTK_INT *ni,
const CCTK_INT *nj,
@@ -63,6 +72,15 @@ void DiffGv ( const CCTK_POINTER_TO_CONST cctkGH_, const CCTK_INT dir,
const CCTK_INT *gsize,
const CCTK_REAL *delta,
CCTK_REAL *dvar);
+ void CCTK_FCALL CCTK_FNAME(deriv_gf_6_5_opt)(const CCTK_REAL *var,
+ const CCTK_INT *ni,
+ const CCTK_INT *nj,
+ const CCTK_INT *nk,
+ const CCTK_INT *dir,
+ const CCTK_INT *bb,
+ const CCTK_INT *gsize,
+ const CCTK_REAL *delta,
+ CCTK_REAL *dvar);
void CCTK_FCALL CCTK_FNAME(deriv_gf_8_4)(const CCTK_REAL *var,
const CCTK_INT *ni,
const CCTK_INT *nj,
@@ -72,6 +90,15 @@ void DiffGv ( const CCTK_POINTER_TO_CONST cctkGH_, const CCTK_INT dir,
const CCTK_INT *gsize,
const CCTK_REAL *delta,
CCTK_REAL *dvar);
+ void CCTK_FCALL CCTK_FNAME(deriv_gf_8_4_opt)(const CCTK_REAL *var,
+ const CCTK_INT *ni,
+ const CCTK_INT *nj,
+ const CCTK_INT *nk,
+ const CCTK_INT *dir,
+ const CCTK_INT *bb,
+ const CCTK_INT *gsize,
+ const CCTK_REAL *delta,
+ CCTK_REAL *dvar);
ni = cctk_lsh[0]; nj = cctk_lsh[1]; nk = cctk_lsh[2];
@@ -111,38 +138,64 @@ void DiffGv ( const CCTK_POINTER_TO_CONST cctkGH_, const CCTK_INT dir,
}
if ( CCTK_Equals(norm_type,"Diagonal") ) {
- switch(loc_order) {
- case 2: {
- CCTK_FNAME(deriv_gf_2_1)(var,&ni,&nj,&nk,&dir,bb,&gsize,&delta,dvar);
- break;
- }
- case 4: {
- CCTK_FNAME(deriv_gf_4_2)(var,&ni,&nj,&nk,&dir,bb,&gsize,&delta,dvar);
- break;
- }
- case 6: {
- CCTK_FNAME(deriv_gf_6_3)(var,&ni,&nj,&nk,&dir,bb,&gsize,&delta,dvar);
- break;
- }
- case 8: {
- CCTK_FNAME(deriv_gf_8_4)(var,&ni,&nj,&nk,&dir,bb,&gsize,&delta,dvar);
- break;
- }
- default:
- CCTK_WARN (0, "Unknown stencil specified");
+ if ( CCTK_Equals(operator_type,"Minimal Bandwidth") ) {
+ switch(loc_order) {
+ case 2: {
+ CCTK_FNAME(deriv_gf_2_1)(var,&ni,&nj,&nk,&dir,bb,&gsize,&delta,dvar);
+ break;
+ }
+ case 4: {
+ CCTK_FNAME(deriv_gf_4_2)(var,&ni,&nj,&nk,&dir,bb,&gsize,&delta,dvar);
+ break;
+ }
+ case 6: {
+ CCTK_FNAME(deriv_gf_6_3)(var,&ni,&nj,&nk,&dir,bb,&gsize,&delta,dvar);
+ break;
+ }
+ case 8: {
+ CCTK_FNAME(deriv_gf_8_4)(var,&ni,&nj,&nk,&dir,bb,&gsize,&delta,dvar);
+ break;
+ }
+ default:
+ CCTK_WARN (0, "Unknown stencil specified");
+ }
+ } else {
+ switch(loc_order) {
+ case 8: {
+ CCTK_FNAME(deriv_gf_8_4_opt)(var,&ni,&nj,&nk,&dir,bb,&gsize,&delta,dvar);
+ break;
+ }
+ default:
+ CCTK_WARN (0, "Unknown stencil specified");
+ }
}
} else {
- switch(loc_order) {
- case 4: {
- CCTK_FNAME(deriv_gf_4_3)(var,&ni,&nj,&nk,&dir,bb,&gsize,&delta,dvar);
- break;
- }
- case 6: {
- CCTK_FNAME(deriv_gf_6_5)(var,&ni,&nj,&nk,&dir,bb,&gsize,&delta,dvar);
- break;
- }
- default:
- CCTK_WARN (0, "Unknown stencil specified");
+ if ( CCTK_Equals(operator_type,"Minimal Bandwidth") ) {
+ switch(loc_order) {
+ case 4: {
+ CCTK_FNAME(deriv_gf_4_3)(var,&ni,&nj,&nk,&dir,bb,&gsize,&delta,dvar);
+ break;
+ }
+ case 6: {
+ CCTK_FNAME(deriv_gf_6_5)(var,&ni,&nj,&nk,&dir,bb,&gsize,&delta,dvar);
+ break;
+ }
+ default:
+ CCTK_WARN (0, "Unknown stencil specified");
+ }
+ } else {
+ switch(loc_order) {
+ case 4: {
+ CCTK_FNAME(deriv_gf_4_3_opt)(var,&ni,&nj,&nk,&dir,bb,&gsize,&delta,dvar);
+ break;
+ }
+ case 6: {
+ CCTK_FNAME(deriv_gf_6_5_opt)(var,&ni,&nj,&nk,&dir,bb,&gsize,&delta,dvar);
+ break;
+ }
+ default:
+ CCTK_WARN (0, "Unknown stencil specified");
+ }
}
}
}