diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Initialisation.c | 120 |
1 files changed, 101 insertions, 19 deletions
diff --git a/src/Initialisation.c b/src/Initialisation.c index de2411c..a739091 100644 --- a/src/Initialisation.c +++ b/src/Initialisation.c @@ -1,31 +1,113 @@ -#include "cctk.h" +#include <cctk.h> +#include <cctk_Arguments.h> +#include <cctk_Parameters.h> -#include "cctk_Arguments.h" -#include "cctk_Parameters.h" -void HydroBase_Y_e_one(CCTK_ARGUMENTS) + +void HydroBase_Zero (CCTK_ARGUMENTS) { DECLARE_CCTK_ARGUMENTS; DECLARE_CCTK_PARAMETERS; - int i; - - for(i = 0; i < cctk_lsh[0]*cctk_lsh[1]*cctk_lsh[2]; i++) - Y_e[i] = 1.0; - if (CCTK_ActiveTimeLevels(cctkGH, "HydroBase::Y_e") > 1) - for(i = 0; i < cctk_lsh[0]*cctk_lsh[1]*cctk_lsh[2]; i++) - Y_e_p[i] = 1.0; + int const np = cctk_lsh[0] * cctk_lsh[1] * cctk_lsh[2]; + +#pragma omp parallel for + for (int i=0; i<np; ++i) { + rho[i ] = 0.0; + vel[i ] = 0.0; + vel[i+ np] = 0.0; + vel[i+2*np] = 0.0; + eps[i ] = 0.0; + } - if (CCTK_ActiveTimeLevels(cctkGH, "HydroBase::Y_e") > 2) - for(i = 0; i < cctk_lsh[0]*cctk_lsh[1]*cctk_lsh[2]; i++) - Y_e_p_p[i] = 1.0; + if (CCTK_EQUALS (initial_data_setup_method, "init_some_levels") || + CCTK_EQUALS (initial_data_setup_method, "init_single_levels")) + { + /* do nothing */ + } + else if (CCTK_EQUALS (initial_data_setup_method, "init_all_levels")) + { + + if (CCTK_ActiveTimeLevels(cctkGH, "HydroBase::rho") >= 2) { +#pragma omp parallel for + for (int i=0; i<np; ++i) { + rho_p[i ] = 0.0; + vel_p[i ] = 0.0; + vel_p[i+ np] = 0.0; + vel_p[i+2*np] = 0.0; + eps_p[i ] = 0.0; + } + } + + if (CCTK_ActiveTimeLevels(cctkGH, "HydroBase::rho") >= 3) { +#pragma omp parallel for + for (int i=0; i<np; ++i) { + rho_p_p[i ] = 0.0; + vel_p_p[i ] = 0.0; + vel_p_p[i+ np] = 0.0; + vel_p_p[i+2*np] = 0.0; + eps_p_p[i ] = 0.0; + } + } + + if (CCTK_ActiveTimeLevels(cctkGH, "HydroBase::rho") >= 4) { + CCTK_WARN (CCTK_WARN_ABORT, + "Too many active time levels for HydroBase variables"); + } + + } + else + { + CCTK_WARN (CCTK_WARN_ABORT, + "Unsupported parameter value for InitBase::initial_data_setup_method"); + } } -/*void HydroBase_SetY_eStateOn(CCTK_ARGUMENTS) + + +void HydroBase_Y_e_one (CCTK_ARGUMENTS) { DECLARE_CCTK_ARGUMENTS; DECLARE_CCTK_PARAMETERS; - - *Y_e_state = 1; -}*/ - + + int const np = cctk_lsh[0] * cctk_lsh[1] * cctk_lsh[2]; + +#pragma omp parallel for + for (int i=0; i<np; ++i) { + Y_e[i] = 1.0; + } + + if (CCTK_EQUALS (initial_data_setup_method, "init_some_levels") || + CCTK_EQUALS (initial_data_setup_method, "init_single_levels")) + { + /* do nothing */ + } + else if (CCTK_EQUALS (initial_data_setup_method, "init_all_levels")) + { + + if (CCTK_ActiveTimeLevels(cctkGH, "HydroBase::Y_e") >= 2) { +#pragma omp parallel for + for (int i=0; i<np; ++i) { + Y_e_p[i] = 1.0; + } + } + + if (CCTK_ActiveTimeLevels(cctkGH, "HydroBase::Y_e") >= 3) { +#pragma omp parallel for + for (int i=0; i<np; ++i) { + Y_e_p_p[i] = 1.0; + } + } + + if (CCTK_ActiveTimeLevels(cctkGH, "HydroBase::Y_e") >= 4) { + CCTK_WARN (CCTK_WARN_ABORT, + "Too many active time levels for HydroBase::Y_e"); + } + + } + else + { + CCTK_WARN (CCTK_WARN_ABORT, + "Unsupported parameter value for InitBase::initial_data_setup_method"); + } +} |