diff options
Diffstat (limited to 'src/driver/setup.cc')
-rw-r--r-- | src/driver/setup.cc | 74 |
1 files changed, 53 insertions, 21 deletions
diff --git a/src/driver/setup.cc b/src/driver/setup.cc index cd9efd7..375e458 100644 --- a/src/driver/setup.cc +++ b/src/driver/setup.cc @@ -5,6 +5,7 @@ // <<<access to persistent data>>> // // AHFinderDirect_driver - top-level driver to setup persistent data structures +// Cactus_gridfn_data_ptr - get Cactus data pointer for CCTK_REAL gridfn /// /// decode_method - decode the method parameter /// decode_verbose_level - decode the verbose_level parameter @@ -82,10 +83,8 @@ extern struct state state; //****************************************************************************** // -// This function is called by the Cactus scheduler to set up the -// following data structures: -// state.gi -// state.cgi +// This function is called by the Cactus scheduler to set up all our +// persistent data structures. (These are stored in struct state .) // extern "C" void AHFinderDirect_setup(CCTK_ARGUMENTS) @@ -153,6 +152,7 @@ solver_info.Delta_h_norm_for_convergence = Delta_h_norm_for_convergence; solver_info.final_H_update_if_exit_x_H_small = (final_H_update_if_exit_x_H_small != 0); + // // set up the Cactus grid info // @@ -169,23 +169,23 @@ cgi.coord_delta[2] = cctk_delta_space[2]; cgi.gridfn_dims[0] = cctk_lsh[0]; cgi.gridfn_dims[1] = cctk_lsh[1]; cgi.gridfn_dims[2] = cctk_lsh[2]; -// CCTK_VarDataPtr() returns a void * , but we need a const fp *; -// since static_cast<> won't change const-ness, we need a 2-stage cast -// for this: -#define DATA_PTR_CAST(void_ptr_) \ - static_cast<const fp*>( const_cast<const void *>(void_ptr_) ) -cgi.g_dd_11_data = DATA_PTR_CAST(CCTK_VarDataPtr(cctkGH, 0, "ADMBase::gxx")); -cgi.g_dd_12_data = DATA_PTR_CAST(CCTK_VarDataPtr(cctkGH, 0, "ADMBase::gxy")); -cgi.g_dd_13_data = DATA_PTR_CAST(CCTK_VarDataPtr(cctkGH, 0, "ADMBase::gxz")); -cgi.g_dd_22_data = DATA_PTR_CAST(CCTK_VarDataPtr(cctkGH, 0, "ADMBase::gyy")); -cgi.g_dd_23_data = DATA_PTR_CAST(CCTK_VarDataPtr(cctkGH, 0, "ADMBase::gyz")); -cgi.g_dd_33_data = DATA_PTR_CAST(CCTK_VarDataPtr(cctkGH, 0, "ADMBase::gzz")); -cgi.K_dd_11_data = DATA_PTR_CAST(CCTK_VarDataPtr(cctkGH, 0, "ADMBase::kxx")); -cgi.K_dd_12_data = DATA_PTR_CAST(CCTK_VarDataPtr(cctkGH, 0, "ADMBase::kxy")); -cgi.K_dd_13_data = DATA_PTR_CAST(CCTK_VarDataPtr(cctkGH, 0, "ADMBase::kxz")); -cgi.K_dd_22_data = DATA_PTR_CAST(CCTK_VarDataPtr(cctkGH, 0, "ADMBase::kyy")); -cgi.K_dd_23_data = DATA_PTR_CAST(CCTK_VarDataPtr(cctkGH, 0, "ADMBase::kyz")); -cgi.K_dd_33_data = DATA_PTR_CAST(CCTK_VarDataPtr(cctkGH, 0, "ADMBase::kzz")); + +// dummy values -- real ones filled in in AHFinderDirect_find_horizons() +cgi.Cactus_conformal_metric = false; +cgi.psi_data = NULL; + +cgi.g_dd_11_data = Cactus_gridfn_data_ptr(cctkGH, "ADMBase::gxx"); +cgi.g_dd_12_data = Cactus_gridfn_data_ptr(cctkGH, "ADMBase::gxy"); +cgi.g_dd_13_data = Cactus_gridfn_data_ptr(cctkGH, "ADMBase::gxz"); +cgi.g_dd_22_data = Cactus_gridfn_data_ptr(cctkGH, "ADMBase::gyy"); +cgi.g_dd_23_data = Cactus_gridfn_data_ptr(cctkGH, "ADMBase::gyz"); +cgi.g_dd_33_data = Cactus_gridfn_data_ptr(cctkGH, "ADMBase::gzz"); +cgi.K_dd_11_data = Cactus_gridfn_data_ptr(cctkGH, "ADMBase::kxx"); +cgi.K_dd_12_data = Cactus_gridfn_data_ptr(cctkGH, "ADMBase::kxy"); +cgi.K_dd_13_data = Cactus_gridfn_data_ptr(cctkGH, "ADMBase::kxz"); +cgi.K_dd_22_data = Cactus_gridfn_data_ptr(cctkGH, "ADMBase::kyy"); +cgi.K_dd_23_data = Cactus_gridfn_data_ptr(cctkGH, "ADMBase::kyz"); +cgi.K_dd_33_data = Cactus_gridfn_data_ptr(cctkGH, "ADMBase::kzz"); // @@ -301,6 +301,38 @@ state.AH_info_ptrs.push_back(NULL); //****************************************************************************** // +// This function gets the Cactus data pointer for a gridfn, and checks +// to make sure this is non-NULL. +// +const CCTK_REAL* Cactus_gridfn_data_ptr(const cGH *GH, const char gridfn_name[]) +{ +const int time_level = 0; + +// +// CCTK_VarDataPtr() returns a void * , but we need a const CCTK_REAL*; +// since static_cast<> won't change const-ness, we need a 2-stage cast +// for this: +// +const CCTK_REAL *const data_ptr + = static_cast<const fp*>( + const_cast<const void *>( + CCTK_VarDataPtr(GH, time_level, gridfn_name) + ) + ); + +if (data_ptr == NULL) + then CCTK_VWarn(-1, __LINE__, __FILE__, CCTK_THORNSTRING, +"***** Cactus_gridfn_data_ptr(): can't find gridfn \"%s\"!", + gridfn_name); /*NOTREACHED*/ + +return data_ptr; +} + +//****************************************************************************** +//****************************************************************************** +//****************************************************************************** + +// // This function decodes the method parameter (string) into an // internal enum for future use. // |