aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorherrmann <herrmann@f4913095-0e4f-0410-abea-a123d184f1f3>2005-03-18 15:38:18 +0000
committerherrmann <herrmann@f4913095-0e4f-0410-abea-a123d184f1f3>2005-03-18 15:38:18 +0000
commitccdd5a80d7f6c6cd0300fa0eb765cfd50c6621f7 (patch)
treedb8e1b3ffdb3c40e1a4f35e3fbbc7d521c70a39d
parent346288ed2b578ff90ce34a15ba3302a81880f46a (diff)
fix seg fault with more than 1 var
git-svn-id: http://svn.cactuscode.org/arrangements/CactusNumerical/Norms/trunk@7 f4913095-0e4f-0410-abea-a123d184f1f3
-rw-r--r--src/Compute_Norm.c25
-rw-r--r--src/Setup_Vars.c20
2 files changed, 42 insertions, 3 deletions
diff --git a/src/Compute_Norm.c b/src/Compute_Norm.c
index 4eddb1e..b6cdcff 100644
--- a/src/Compute_Norm.c
+++ b/src/Compute_Norm.c
@@ -81,6 +81,11 @@ void Norms_Compute_Norms (CCTK_ARGUMENTS)
CCTK_VARIABLE_REAL,&result,1,varindices_1st[vind]);
if (ierr<0)
CCTK_WARN(1,"reduction failed");
+ if (verbose>4) {
+ fprintf(stderr," vind=%d vi=%d var=%s result=%1.8g\n",
+ vind,varindices_1st[vind],
+ CCTK_VarName(varindices_1st[vind]),result);
+ }
*norm=*norm+result*result;
}
@@ -93,6 +98,11 @@ void Norms_Compute_Norms (CCTK_ARGUMENTS)
CCTK_VARIABLE_REAL,&result,1,varindices_2nd[vind]);
if (ierr<0)
CCTK_WARN(1,"reduction failed");
+ if (verbose>4) {
+ fprintf(stderr," vind=%d vi=%d var=%s result=%1.8g\n",
+ vind,varindices_2nd[vind],
+ CCTK_VarName(varindices_2nd[vind]),result);
+ }
*norm=*norm+result*result;
}
@@ -117,6 +127,11 @@ void Norms_Compute_Norms (CCTK_ARGUMENTS)
CCTK_VarIndex("norms::diff_term"));
if (ierr<0)
CCTK_WARN(1,"reduction failed");
+ if (verbose>4) {
+ fprintf(stderr," vind=%d vi=%d var=%s result=%1.8g\n",
+ vind,varindices_2nd[vind],
+ CCTK_VarName(varindices_2nd[vind]),result);
+ }
*norm=*norm+result*result;
}
@@ -140,6 +155,11 @@ void Norms_Compute_Norms (CCTK_ARGUMENTS)
CCTK_VarIndex("norms::diff_term"));
if (ierr<0)
CCTK_WARN(1,"reduction failed");
+ if (verbose>4) {
+ fprintf(stderr," vind=%d vi=%d var=%s result=%1.8g\n",
+ vind,varindices_2nd[vind],
+ CCTK_VarName(varindices_2nd[vind]),result);
+ }
*norm=*norm+result*result;
}
@@ -163,6 +183,11 @@ void Norms_Compute_Norms (CCTK_ARGUMENTS)
CCTK_VarIndex("norms::diff_term"));
if (ierr<0)
CCTK_WARN(1,"reduction failed");
+ if (verbose>4) {
+ fprintf(stderr," vind=%d vi=%d var=%s result=%1.8g\n",
+ vind,varindices_2nd[vind],
+ CCTK_VarName(varindices_2nd[vind]),result);
+ }
*norm=*norm+result*result;
}
diff --git a/src/Setup_Vars.c b/src/Setup_Vars.c
index b09b594..8f14a88 100644
--- a/src/Setup_Vars.c
+++ b/src/Setup_Vars.c
@@ -116,6 +116,10 @@ void Norms_Setup_Vars (CCTK_ARGUMENTS)
else
*do_nothing=0;
+ for(i=0;i<max_nr_vars;i++) {
+ varindices_1st[i]=-1;
+ varindices_2nd[i]=-1;
+ }
nvars = CCTK_NumVars();
assert (nvars >= 0);
@@ -134,12 +138,11 @@ void Norms_Setup_Vars (CCTK_ARGUMENTS)
(gridfunctions_2nd, getopt, norms_opts_2nd, CCTK_GROUP_OR_VAR);
assert (ierr >= 0);
- i=0;
if (verbose>0)
CCTK_INFO("We will compute norms for the following variables");
for (n=0; n<nvars; ++n) {
if (norms_opts_1st[n].active) {
- varindices_1st[i]=norms_opts_1st[n].vi;
+ varindices_1st[*nr1stvars]=norms_opts_1st[n].vi;
if (verbose>0) {
CCTK_VInfo(CCTK_THORNSTRING," %s (1st order var)",
CCTK_FullName(varindices_1st[i]));
@@ -147,7 +150,7 @@ void Norms_Setup_Vars (CCTK_ARGUMENTS)
*nr1stvars=*nr1stvars+1;
}
if (norms_opts_2nd[n].active) {
- varindices_2nd[i]=norms_opts_2nd[n].vi;
+ varindices_2nd[*nr2ndvars]=norms_opts_2nd[n].vi;
if (verbose>0) {
CCTK_VInfo(CCTK_THORNSTRING," %s (2nd order var)",
CCTK_FullName(varindices_2nd[i]));
@@ -155,9 +158,20 @@ void Norms_Setup_Vars (CCTK_ARGUMENTS)
*nr2ndvars=*nr2ndvars+1;
}
}
+ assert(*nr1stvars<max_nr_vars);
+ assert(*nr2ndvars<max_nr_vars);
if (verbose>2)
fprintf(stderr," nr1stvars %d nr2ndvars %d\n",*nr1stvars,*nr2ndvars);
+ if (verbose>4) {
+ fprintf(stderr," The actual variable arrays look like\n");
+ for (n=0;n<max_nr_vars;n++) {
+ fprintf(stderr," i:%d 1st (vi:%d vn:%s) 2nd (vi:%d vn:%s)\n",
+ n,varindices_1st[n],CCTK_VarName(varindices_1st[n]),
+ varindices_2nd[n],CCTK_VarName(varindices_2nd[n]));
+ }
+ }
+
free (norms_opts_1st);
free (norms_opts_2nd);
}