diff options
author | tbode <tbode@57fe0bb3-ccba-405f-9b23-de0201f165b7> | 2012-11-21 20:50:20 +0000 |
---|---|---|
committer | tbode <tbode@57fe0bb3-ccba-405f-9b23-de0201f165b7> | 2012-11-21 20:50:20 +0000 |
commit | a79a6ab37879bbb2e37be5a3998a0fe3944536ae (patch) | |
tree | 57ae41120c76ec35a09d0c8c43b03ce35b6f679c /src | |
parent | b833e38e6c75034d807693e7cfb5f824d6cc597a (diff) |
Add gridfunctions and boilerplate for vector potential.
git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinBase/HydroBase/trunk@59 57fe0bb3-ccba-405f-9b23-de0201f165b7
Diffstat (limited to 'src')
-rw-r--r-- | src/Initialisation.c | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/src/Initialisation.c b/src/Initialisation.c index 4ed861f..9c6e366 100644 --- a/src/Initialisation.c +++ b/src/Initialisation.c @@ -213,6 +213,106 @@ void HydroBase_Bvec_zero (CCTK_ARGUMENTS) } } +void HydroBase_Avec_zero (CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + int const np = cctk_lsh[0] * cctk_lsh[1] * cctk_lsh[2]; + +#pragma omp parallel for + for (int i=0; i<np; ++i) { + Avec[i] = 0.0; + Avec[i+ np] = 0.0; + Avec[i+2*np] = 0.0; + } + + if (CCTK_EQUALS (initial_data_setup_method, "init_some_levels") || + CCTK_EQUALS (initial_data_setup_method, "init_single_level")) + { + /* do nothing */ + } + else if (CCTK_EQUALS (initial_data_setup_method, "init_all_levels")) + { + + if (CCTK_ActiveTimeLevels(cctkGH, "HydroBase::Avec") >= 2) { +#pragma omp parallel for + for (int i=0; i<np; ++i) { + Avec_p[i] = 0.0; + Avec_p[i+ np] = 0.0; + Avec_p[i+2*np] = 0.0; + } + } + + if (CCTK_ActiveTimeLevels(cctkGH, "HydroBase::Avec") >= 3) { +#pragma omp parallel for + for (int i=0; i<np; ++i) { + Avec_p_p[i] = 0.0; + Avec_p_p[i+ np] = 0.0; + Avec_p_p[i+2*np] = 0.0; + } + } + + if (CCTK_ActiveTimeLevels(cctkGH, "HydroBase::Avec") >= 4) { + CCTK_WARN (CCTK_WARN_ABORT, + "Too many active time levels for HydroBase::Avec"); + } + + } + else + { + CCTK_WARN (CCTK_WARN_ABORT, + "Unsupported parameter value for InitBase::initial_data_setup_method"); + } +} + +void HydroBase_Aphi_zero (CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + int const np = cctk_lsh[0] * cctk_lsh[1] * cctk_lsh[2]; + +#pragma omp parallel for + for (int i=0; i<np; ++i) { + Aphi[i] = 0.0; + } + + if (CCTK_EQUALS (initial_data_setup_method, "init_some_levels") || + CCTK_EQUALS (initial_data_setup_method, "init_single_level")) + { + /* do nothing */ + } + else if (CCTK_EQUALS (initial_data_setup_method, "init_all_levels")) + { + + if (CCTK_ActiveTimeLevels(cctkGH, "HydroBase::Aphi") >= 2) { +#pragma omp parallel for + for (int i=0; i<np; ++i) { + Aphi_p[i] = 0.0; + } + } + + if (CCTK_ActiveTimeLevels(cctkGH, "HydroBase::Aphi") >= 3) { +#pragma omp parallel for + for (int i=0; i<np; ++i) { + Aphi_p_p[i] = 0.0; + } + } + + if (CCTK_ActiveTimeLevels(cctkGH, "HydroBase::Aphi") >= 4) { + CCTK_WARN (CCTK_WARN_ABORT, + "Too many active time levels for HydroBase::Aphi"); + } + + } + else + { + CCTK_WARN (CCTK_WARN_ABORT, + "Unsupported parameter value for InitBase::initial_data_setup_method"); + } +} + void HydroBase_InitExcisionMask (CCTK_ARGUMENTS) { DECLARE_CCTK_ARGUMENTS; |