diff options
Diffstat (limited to 'src/id_noise.c')
-rw-r--r-- | src/id_noise.c | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/id_noise.c b/src/id_noise.c new file mode 100644 index 0000000..e94ec2b --- /dev/null +++ b/src/id_noise.c @@ -0,0 +1,62 @@ +/* + IDRandom + + Denis Pollney <pollney@aei.mpg.de> + 14 February 2002 + + Put random data into the evolution variables for robust stability + testing a-la-winicour. + + $Header$ +*/ + +#include <stdlib.h> + +#include "noise.h" + +#include "cctk_Arguments.h" +#include "cctk_Parameters.h" + +void +add_noise_to_group (int idx, const char* optstring, void* cctkGH) +{ + int i, j, k, ijk; + CCTK_REAL* data; + CCTK_REAL amplitude; + CCTK_REAL offset; + cGH* GH = cctkGH; + int type; + + data = (CCTK_REAL*) CCTK_VarDataPtrI(GH, 0, idx); + + amplitude = *((CCTK_REAL*) CCTK_ParameterGet("amplitude", "Noise", &type)) + / RAND_MAX; + offset = 0.5 * amplitude; + + for (k=1; k< GH->cctk_lsh[2]-1; ++k) + { + for (j=1; j< GH->cctk_lsh[1]-1; ++j) + { + for (i=1; i< GH->cctk_lsh[0]-1; ++i) + { + ijk = CCTK_GFINDEX3D(GH, i, j, k); + + data[ijk] += RAND_VAL; + } + } + } +} + + +void +id_noise(CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS + DECLARE_CCTK_PARAMETERS + + if (CCTK_TraverseString(noisy_id_vars, add_noise_to_group, cctkGH, + CCTK_GROUP_OR_VAR) < 0) + { + CCTK_WARN (1, "Failed to parse 'IDRandom::noisy_id_vars' parameter"); + } +} |