diff options
author | rhaas <rhaas@55d78c69-0c5c-4738-8e60-d8a2776539f3> | 2012-07-06 20:20:05 +0000 |
---|---|---|
committer | rhaas <rhaas@55d78c69-0c5c-4738-8e60-d8a2776539f3> | 2012-07-06 20:20:05 +0000 |
commit | 1f9ee68e329dd86482490a874fa61cccaa1b45aa (patch) | |
tree | 5f8a91f07c1604a7988f1a0bb2784aff3558b3a6 | |
parent | 44d6565b440ac24677afe618fdb974612b6361b0 (diff) |
replace string compare in innermost loop by integer comparison
git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinInitialData/Hydro_InitExcision/trunk@125 55d78c69-0c5c-4738-8e60-d8a2776539f3
-rw-r--r-- | src/Hydro_InitExcision.c | 46 |
1 files changed, 38 insertions, 8 deletions
diff --git a/src/Hydro_InitExcision.c b/src/Hydro_InitExcision.c index c9e7b08..df3b681 100644 --- a/src/Hydro_InitExcision.c +++ b/src/Hydro_InitExcision.c @@ -12,6 +12,7 @@ #include "cctk_Arguments.h" #include <stdio.h> #include <math.h> +#include <assert.h> /*@@ @routine Excision Mask @@ -34,18 +35,47 @@ void Hydro_InitExcisionMask(CCTK_ARGUMENTS) DECLARE_CCTK_ARGUMENTS; DECLARE_CCTK_PARAMETERS; + enum domain_vals {full = 0, octant, n_domain_vals}; + enum hydro_initexcision_type_vals { + box = 0, xaxis, yaxis, zaxis, diagonal, sphere, + n_hydro_initexcision_type_vals + }; + const char * domain_val_keywords[n_domain_vals] = {"full", "octant"}; + const char * hydro_initexcision_type_val_keywords[n_hydro_initexcision_type_vals] = { + "box", "x-axis", "y-axis", "z-axis", "diagonal", "sphere" + }; + CCTK_INT i,j,k, nx, ny, nz, point; CCTK_INT excised, normal; CCTK_REAL emask_excised, emask_normal; CCTK_REAL x_min, x_max, y_min, y_max, z_min, z_max; CCTK_REAL x_size, y_size, z_size; CCTK_REAL x_frac, y_frac, z_frac; + enum domain_vals domain_val; + enum hydro_initexcision_type_vals hydro_initexcision_type_val; if (hydro_initexcision) { CCTK_INFO("Setting up Hydro Initial Excision region."); } + /* decode keyword parameters */ + for (domain_val = 0 ; domain_val < n_domain_vals ; domain_val++) + { + if (CCTK_Equals(domain, domain_val_keywords[domain_val])) + break; + } + assert(domain_val < n_domain_vals); + for (hydro_initexcision_type_val = 0 ; + hydro_initexcision_type_val < n_hydro_initexcision_type_vals ; + hydro_initexcision_type_val++) + { + if (CCTK_Equals(hydro_initexcision_type, + hydro_initexcision_type_val_keywords[hydro_initexcision_type_val])) + break; + } + assert(hydro_initexcision_type_val < n_hydro_initexcision_type_vals); + nx = cctk_lsh[0]; ny = cctk_lsh[1]; nz = cctk_lsh[2]; @@ -84,9 +114,9 @@ void Hydro_InitExcisionMask(CCTK_ARGUMENTS) { if (hydro_initexcision_old_mask) emask[point]=emask_normal; - if (CCTK_Equals(hydro_initexcision_type,"box")) + if (hydro_initexcision_type_val == box) { - if (CCTK_Equals(domain,"full")) + if (domain_val == full) { if ( (hydro_initexcision_coordinate_length <= 0.0) && ( ( x_frac > 0.5 - hydro_initexcision_fraction) && @@ -115,7 +145,7 @@ void Hydro_InitExcisionMask(CCTK_ARGUMENTS) hydro_excision_mask[point] = normal; } } - else if (CCTK_Equals(domain,"octant")) + else if (domain_val == octant) { if ( ( (hydro_initexcision_coordinate_length <= 0.0) && ( x_frac < hydro_initexcision_fraction) && @@ -142,7 +172,7 @@ void Hydro_InitExcisionMask(CCTK_ARGUMENTS) } } } - else if (CCTK_Equals(hydro_initexcision_type,"x-axis")) + else if (hydro_initexcision_type_val == xaxis) { if ( x_frac < 1.0-hydro_initexcision_fraction ) { @@ -155,7 +185,7 @@ void Hydro_InitExcisionMask(CCTK_ARGUMENTS) emask[point]=emask_excised; } } - else if (CCTK_Equals(hydro_initexcision_type,"y-axis")) + else if (hydro_initexcision_type_val == yaxis) { if ( y_frac < 1.0-hydro_initexcision_fraction ) { @@ -168,7 +198,7 @@ void Hydro_InitExcisionMask(CCTK_ARGUMENTS) emask[point]=emask_excised; } } - else if (CCTK_Equals(hydro_initexcision_type,"z-axis")) + else if (hydro_initexcision_type_val == zaxis) { if ( z_frac < 1.0-hydro_initexcision_fraction ) { @@ -181,7 +211,7 @@ void Hydro_InitExcisionMask(CCTK_ARGUMENTS) emask[point]=emask_excised; } } - else if (CCTK_Equals(hydro_initexcision_type,"diagonal")) + else if (hydro_initexcision_type_val == diagonal) { if ( x_frac + y_frac + z_frac < 3.0*(1.0-hydro_initexcision_fraction) ) @@ -195,7 +225,7 @@ void Hydro_InitExcisionMask(CCTK_ARGUMENTS) emask[point]=emask_excised; } } - else if (CCTK_Equals(hydro_initexcision_type,"sphere")) + else if (hydro_initexcision_type_val == sphere) { if ( (hydro_initexcision_coordinate_length <= 0.0) && ( ( (x[point]-hydro_initexcision_position_x) * |