From ccdd5a80d7f6c6cd0300fa0eb765cfd50c6621f7 Mon Sep 17 00:00:00 2001 From: herrmann Date: Fri, 18 Mar 2005 15:38:18 +0000 Subject: 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 --- src/Compute_Norm.c | 25 +++++++++++++++++++++++++ src/Setup_Vars.c | 20 +++++++++++++++++--- 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= 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; n0) { 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(*nr1stvars2) 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