aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--param.ccl6
-rw-r--r--src/D3_extract.F7
-rw-r--r--src/D3_extract_int.F5
-rw-r--r--src/D3_to_D2.F13
-rw-r--r--src/D3_to_D2_int.F6
-rw-r--r--src/Extract.F6
-rw-r--r--test/extract_physical.par1
-rw-r--r--test/test_extract.par1
8 files changed, 35 insertions, 10 deletions
diff --git a/param.ccl b/param.ccl
index 13b1826..1173c70 100644
--- a/param.ccl
+++ b/param.ccl
@@ -22,7 +22,6 @@ KEYWORD timecoord "Which time coordinate to use"
"both" :: ""
} "both"
-
BOOLEAN all_modes "Extract: all l,m modes up to l"
{
} "yes"
@@ -145,6 +144,11 @@ REAL Cauchy_dr "Gridspacing for Cauchy data extraction"
*:* :: ""
} 0.2
+STRING interpolation_operator "Interpolation operator to use (check LocalInterp)"
+{
+ .+ :: ""
+} "Lagrange polynomial interpolation"
+
INT interpolation_order "Order for interpolation" STEERABLE = ALWAYS
{
1:4 :: "Choose between first and forth order interpolation"
diff --git a/src/D3_extract.F b/src/D3_extract.F
index 9f6fcad..47a7fb3 100644
--- a/src/D3_extract.F
+++ b/src/D3_extract.F
@@ -4,7 +4,7 @@
c ==================================================================
SUBROUTINE D3_extract(cctkGH,conformal_state,do_ADMmass,do_momentum,do_spin,igrid,
- & origin,myproc,interpolation_order,Nt,Np,all_modes,
+ & origin,myproc,interpolation_operator,interpolation_order,Nt,Np,all_modes,
& l,m,x,y,z,Dx,Dy,Dz,Psi_power,Psi,
& g00,gxx,gxy,gxz,gyy,gyz,gzz,hxx,hxy,hxz,hyy,hyz,hzz,
& eta,ADMmass,momentum,spin,mass,rsch,Qodd,Qeven,Extract_temp3d,dtaudt)
@@ -85,6 +85,8 @@ c Input variables
& x,y,z
CCTK_REAL,INTENT(INOUT),DIMENSION(:,:,:) ::
& Extract_temp3d
+ CCTK_STRING,INTENT(IN) ::
+ & interpolation_operator
c Output variables
CCTK_REAL,INTENT(OUT) ::
@@ -162,7 +164,8 @@ c
c ------------------------------------------------------------------
CALL D3_to_D2(cctkGH,conformal_state,do_ADMmass,do_momentum,do_spin,
- & Psi_power,origin,myproc,interpolation_order,Dx,Dy,Dz,Psi,
+ & Psi_power,origin,myproc,interpolation_operator,interpolation_order,
+ & Dx,Dy,Dz,Psi,
& g00,gxx,gxy,gxz,gyy,gyz,gzz,hxx,hxy,hxz,hyy,hyz,hzz,
& x,y,z,eta,Nt,Np,theta,phi,Psis,g00s,gxxs,gxys,gxzs,
& gyys,gyzs,gzzs,dPsis,dgxxs,dgxys,dgxzs,dgyys,dgyzs,dgzzs,
diff --git a/src/D3_extract_int.F b/src/D3_extract_int.F
index 07d7dab..ce14b37 100644
--- a/src/D3_extract_int.F
+++ b/src/D3_extract_int.F
@@ -8,7 +8,7 @@ c ------------------------------------------------------------------
INTERFACE
SUBROUTINE D3_extract(cctkGH,conformal_state,do_ADMmass,do_momentum,do_spin,igrid,
- & origin,myproc,interpolation_order,
+ & origin,myproc,interpolation_operator,interpolation_order,
& Nt,Np,all_modes,l,m,x,y,z,Dx,Dy,Dz,Psi_power,Psi,
& g00,gxx,gxy,gxz,gyy,gyz,gzz,hxx,hxy,hxz,hyy,hyz,hzz,
& eta,ADMmass,momentum,spin,mass,rsch,Qodd,Qeven,
@@ -36,6 +36,9 @@ c ------------------------------------------------------------------
CCTK_REAL,INTENT(OUT) ::
& ADMmass(2),mass,rsch,Qodd(:,:,:),Qeven(:,:,:),dtaudt,
& momentum(3),spin(3)
+ CCTK_STRING,INTENT(IN) ::
+ & interpolation_operator
+
END SUBROUTINE
diff --git a/src/D3_to_D2.F b/src/D3_to_D2.F
index 7bc7586..da2294e 100644
--- a/src/D3_to_D2.F
+++ b/src/D3_to_D2.F
@@ -4,7 +4,8 @@
c ========================================================================
SUBROUTINE D3_to_D2(cctkGH,conformal_state,do_ADMmass,do_momentum,do_spin,
- & Psi_power,origin,myproc,interpolation_order,Dx,Dy,Dz,Psi,
+ & Psi_power,origin,myproc,interpolation_operator,interpolation_order,
+ & Dx,Dy,Dz,Psi,
& g00,gxx,gxy,gxz,gyy,gyz,gzz,hxx,hxy,hxz,hyy,hyz,hzz,
& x,y,z,eta,Nt,Np,theta,phi,
& Psis,g00s,gxxs,gxys,gxzs,gyys,gyzs,gzzs,dPsis,dgxxs,dgxys,dgxzs,
@@ -46,6 +47,8 @@ c Input variables
& Extract_temp3d
LOGICAL ::
& do_ADMmass(2)
+ CCTK_STRING,INTENT(IN) ::
+ & interpolation_operator
c Output variables
@@ -77,7 +80,9 @@ c Local variables, here only
CCTK_POINTER, dimension(8) :: out_arrays
CCTK_INT, dimension(8) :: out_array_type_codes
- character(30) options_string
+ character(128) options_string
+ character(128) operator
+ CCTK_INT nchars
c ------------------------------------------------------------------------
@@ -120,7 +125,9 @@ c --------------------------------------------------------------------
param_table_handle = -1
coord_system_handle = -1
- call CCTK_InterpHandle (interp_handle,"Lagrange polynomial interpolation")
+
+ call CCTK_FortranString(nchars,interpolation_operator,operator)
+ call CCTK_InterpHandle (interp_handle,operator)
if (interp_handle .lt. 0) then
call CCTK_WARN(0,"Cannot get handle for interpolation ! Forgot to activate an implementation providing interpolation operators ??")
endif
diff --git a/src/D3_to_D2_int.F b/src/D3_to_D2_int.F
index 8ca896c..db013a2 100644
--- a/src/D3_to_D2_int.F
+++ b/src/D3_to_D2_int.F
@@ -8,7 +8,8 @@ c ------------------------------------------------------------------
INTERFACE
SUBROUTINE D3_to_D2(cctkGH,conformal_state,do_ADMmass,do_momentum,do_spin,
- & Psi_power,origin,myproc,interpolation_order,Dx,Dy,Dz,Psi,
+ & Psi_power,origin,myproc,interpolation_operator,interpolation_order,
+ & Dx,Dy,Dz,Psi,
& g00,gxx,gxy,gxz,gyy,gyz,gzz,hxx,hxy,hxz,hyy,hyz,hzz,
& x,y,z,eta,Nt,Np,theta,phi,Psis,g00s,gxxs,gxys,
& gxzs,gyys,gyzs,gzzs,dPsis,dgxxs,dgxys,dgxzs,dgyys,dgyzs,
@@ -38,6 +39,9 @@ c ------------------------------------------------------------------
& spin_int1,spin_int2,spin_int3
CCTK_REAL,INTENT(INOUT),DIMENSION(:,:,:) ::
& Extract_temp3d
+ CCTK_STRING,INTENT(IN) ::
+ & interpolation_operator
+
END SUBROUTINE
END INTERFACE
diff --git a/src/Extract.F b/src/Extract.F
index 1ea5e86..ace99fb 100644
--- a/src/Extract.F
+++ b/src/Extract.F
@@ -378,7 +378,8 @@ c Do extraction at each radius
extract_at_each_radius: DO WHILE (radius < r2)
CALL D3_extract(cctkGH,conformal_state,do_ADMmass,do_momentum,do_spin,
- & igrid,orig,myproc,interpolation_order,Nt,Np,all_modes,lmode,
+ & igrid,orig,myproc,interpolation_operator,interpolation_order,
+ & Nt,Np,all_modes,lmode,
& mmode,x_1d,y_1d,z_1d,Dx,Dy,Dz,Psi_power,Psi,g00,
& gxx,gxy,gxz,gyy,gyz,gzz,kxx,kxy,kxz,kyy,kyz,kzz,
& radius,ADMmass,momentum,spin,mass,rsch,
@@ -549,7 +550,8 @@ c Cannot use the conformal equation for ADM mass now
END IF
CALL D3_extract(cctkGH,conformal_state,do_ADMmass,do_momentum,do_spin,
- & igrid,orig,myproc,interpolation_order,Nt,Np,all_modes,
+ & igrid,orig,myproc,interpolation_operator,interpolation_order,
+ & Nt,Np,all_modes,
& lmode,mmode,x_1d,y_1d,z_1d,
& Dx,Dy,Dz,Psi_power,Psi,g00,gxx,gxy,gxz,gyy,gyz,gzz,kxx,kxy,kxz,
& kyy,kyz,kzz,radius,ADMmass,momentum,spin,mass,rsch,
diff --git a/test/extract_physical.par b/test/extract_physical.par
index b75eade..c381b9c 100644
--- a/test/extract_physical.par
+++ b/test/extract_physical.par
@@ -30,6 +30,7 @@ ioascii::out1d_vars = "admbase::alp"
### Extraction parameters
extract::interpolation_order = 1
+extract::interpolation_operator="Lagrange polynomial interpolation (maximum degree)"
extract::num_detectors = 2
extract::itout = 1
diff --git a/test/test_extract.par b/test/test_extract.par
index db9de22..e09551d 100644
--- a/test/test_extract.par
+++ b/test/test_extract.par
@@ -30,6 +30,7 @@ ioascii::out1d_vars = "admbase::alp"
### Extraction parameters
extract::interpolation_order = 1
+extract::interpolation_operator="Lagrange polynomial interpolation (maximum degree)"
extract::num_detectors = 2
extract::itout = 1