aboutsummaryrefslogtreecommitdiff
path: root/src/id_noise.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/id_noise.c')
-rw-r--r--src/id_noise.c62
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");
+ }
+}