diff options
author | jthorn <jthorn@f88db872-0e4f-0410-b76b-b9085cfa78c5> | 2005-02-28 14:25:44 +0000 |
---|---|---|
committer | jthorn <jthorn@f88db872-0e4f-0410-b76b-b9085cfa78c5> | 2005-02-28 14:25:44 +0000 |
commit | 80ba194efcad80bd36bcb621d4678701f3987fb2 (patch) | |
tree | 3181c6e0f2bb22c9cd9c63688e1c8801169966de /src/driver | |
parent | 528c16bc31082e8b2b6b00ce7bf96d8177d05260 (diff) |
make some of the mask parameters steerable (finally!!!)
-- thanks to Frank Loeffler for the basic patches for this
git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinAnalysis/AHFinderDirect/trunk@1397 f88db872-0e4f-0410-b76b-b9085cfa78c5
Diffstat (limited to 'src/driver')
-rw-r--r-- | src/driver/driver.hh | 4 | ||||
-rw-r--r-- | src/driver/setup.cc | 121 |
2 files changed, 85 insertions, 40 deletions
diff --git a/src/driver/driver.hh b/src/driver/driver.hh index 1b19a7a..326cbc7 100644 --- a/src/driver/driver.hh +++ b/src/driver/driver.hh @@ -397,6 +397,10 @@ struct state extern "C" void AHFinderDirect_setup(CCTK_ARGUMENTS); +// ... called from Cactus Scheduler +extern "C" + void AHFinderDirect_setupupdate(CCTK_ARGUMENTS); + // find_horizons.cc // ... called from Cactus Scheduler extern "C" diff --git a/src/driver/setup.cc b/src/driver/setup.cc index e2507a0..51c5562 100644 --- a/src/driver/setup.cc +++ b/src/driver/setup.cc @@ -5,6 +5,9 @@ // <<<access to persistent data>>> // // AHFinderDirect_setup - top-level driver to setup persistent data structures +// AHFinderDirect_update - top-level driver to update from steerable parameters +// +/// set_mask_pars - set internal data structures from mask parameters /// /// decode_method - decode the method parameter /// decode_verbose_level - decode the verbose_level parameter @@ -64,6 +67,8 @@ using jtutil::error_exit; // namespace { +void set_mask_pars(CCTK_ARGUMENTS); + enum method decode_method(const char method_string[]); enum verbose_level @@ -97,9 +102,6 @@ extern struct state state; // This function is called by the Cactus scheduler to set up all our // persistent data structures. (These are stored in struct state .) // -// This function is the only one in this thorn which looks directly at -// the Cactus parameters. -// extern "C" void AHFinderDirect_setup(CCTK_ARGUMENTS) { @@ -322,45 +324,12 @@ mask_info.set_mask_for_this_horizon = new bool[N_horizons+1]; } } if (mask_info.set_mask_for_any_horizon) - then { - mask_info.radius_multiplier = mask_radius_multiplier; - mask_info.radius_offset = mask_radius_offset; - mask_info.buffer_thickness = mask_buffer_thickness; - mask_info.mask_is_noshrink = mask_is_noshrink; - mask_info.min_horizon_radius_points_for_mask - = min_horizon_radius_points_for_mask; - mask_info.set_old_style_mask = (set_old_style_mask != 0); - mask_info.set_new_style_mask = (set_new_style_mask != 0); - if (mask_info.set_old_style_mask) - then { - struct mask_info::old_style_mask_info& osmi - = mask_info.old_style_mask_info; - osmi.gridfn_name = old_style_mask_gridfn_name; - osmi.gridfn_varindex = Cactus_gridfn_varindex(osmi.gridfn_name); - osmi.gridfn_dataptr = NULL; // dummy value; fixup later - osmi.inside_value = old_style_mask_inside_value; - osmi.buffer_value = old_style_mask_buffer_value; - osmi.outside_value = old_style_mask_outside_value; - } - if (mask_info.set_new_style_mask) - then { - struct mask_info::new_style_mask_info& nsmi - = mask_info.new_style_mask_info; - nsmi.gridfn_name = new_style_mask_gridfn_name; - nsmi.gridfn_varindex = Cactus_gridfn_varindex(nsmi.gridfn_name); - nsmi.gridfn_dataptr = NULL; // dummy value; fixup later - nsmi.bitfield_name = new_style_mask_bitfield_name; - nsmi.bitfield_bitmask = 0; // dummy value; fixup later - nsmi.inside_value = new_style_mask_inside_value; - nsmi.buffer_value = new_style_mask_buffer_value; - nsmi.outside_value = new_style_mask_outside_value; - nsmi.inside_bitvalue = 0; // dummy value; fixup later - nsmi.buffer_bitvalue = 0; // dummy value; fixup later - nsmi.outside_bitvalue = 0; // dummy value; fixup later - } - } + then set_mask_pars(CCTK_PASS_CTOC); +// +// announce parameters +// state.announce_centroid_flag = (which_horizon_to_announce_centroid != 0); if (state.announce_centroid_flag) then { @@ -601,6 +570,78 @@ if (strlen(surface_interpolator_name) > 0) } //****************************************************************************** + +// +// This function is called by the Cactus scheduler to update some of our +// persistent data structures (stored in struct state ) from parameters +// which may have been steered. It is also called by AHFinderDirect_setup() +// (above) as part of the initial setup of these data structures. +// +extern "C" + void AHFinderDirect_update(CCTK_ARGUMENTS) +{ +set_mask_pars(CCTK_PASS_CTOC); +} + +//****************************************************************************** +//****************************************************************************** +//****************************************************************************** + +// +// This function sets our internal data structures from the the mask +// parameters. +// +namespace { +void set_mask_pars(CCTK_ARGUMENTS) +{ +DECLARE_CCTK_ARGUMENTS +DECLARE_CCTK_PARAMETERS + +struct mask_info& mask_info = state.mask_info; +mask_info.set_old_style_mask = (set_old_style_mask != 0); +mask_info.set_new_style_mask = (set_new_style_mask != 0); +if (mask_info.set_mask_for_any_horizon) + then { + mask_info.radius_multiplier = mask_radius_multiplier; + mask_info.radius_offset = mask_radius_offset; + mask_info.buffer_thickness = mask_buffer_thickness; + mask_info.mask_is_noshrink = mask_is_noshrink; + mask_info.min_horizon_radius_points_for_mask + = min_horizon_radius_points_for_mask; + mask_info.set_old_style_mask = (set_old_style_mask != 0); + mask_info.set_new_style_mask = (set_new_style_mask != 0); + if (mask_info.set_old_style_mask) + then { + struct mask_info::old_style_mask_info& osmi + = mask_info.old_style_mask_info; + osmi.gridfn_name = old_style_mask_gridfn_name; + osmi.gridfn_varindex = Cactus_gridfn_varindex(osmi.gridfn_name); + osmi.gridfn_dataptr = NULL; // dummy value; fixup later + osmi.inside_value = old_style_mask_inside_value; + osmi.buffer_value = old_style_mask_buffer_value; + osmi.outside_value = old_style_mask_outside_value; + } + if (mask_info.set_new_style_mask) + then { + struct mask_info::new_style_mask_info& nsmi + = mask_info.new_style_mask_info; + nsmi.gridfn_name = new_style_mask_gridfn_name; + nsmi.gridfn_varindex = Cactus_gridfn_varindex(nsmi.gridfn_name); + nsmi.gridfn_dataptr = NULL; // dummy value; fixup later + nsmi.bitfield_name = new_style_mask_bitfield_name; + nsmi.bitfield_bitmask = 0; // dummy value; fixup later + nsmi.inside_value = new_style_mask_inside_value; + nsmi.buffer_value = new_style_mask_buffer_value; + nsmi.outside_value = new_style_mask_outside_value; + nsmi.inside_bitvalue = 0; // dummy value; fixup later + nsmi.buffer_bitvalue = 0; // dummy value; fixup later + nsmi.outside_bitvalue = 0; // dummy value; fixup later + } + } +} + } + +//****************************************************************************** //****************************************************************************** //****************************************************************************** |