diff options
author | allen <allen@b61c5cb5-eaca-4651-9a7a-d64986f99364> | 2000-01-25 09:26:19 +0000 |
---|---|---|
committer | allen <allen@b61c5cb5-eaca-4651-9a7a-d64986f99364> | 2000-01-25 09:26:19 +0000 |
commit | b5652dfba0c50916aaf8ebd9071f0a88691d3b08 (patch) | |
tree | f4c3689a1baea874de4a23764c3509a840cafe02 /src/SetupGroup.c | |
parent | 889886b91f72873111c6c4501e9c39c9f8f5d49f (diff) |
Arrays (no communication yet)
General tidying
git-svn-id: http://svn.cactuscode.org/arrangements/CactusPUGH/PUGH/trunk@153 b61c5cb5-eaca-4651-9a7a-d64986f99364
Diffstat (limited to 'src/SetupGroup.c')
-rw-r--r-- | src/SetupGroup.c | 424 |
1 files changed, 258 insertions, 166 deletions
diff --git a/src/SetupGroup.c b/src/SetupGroup.c index e6ad426..de5d508 100644 --- a/src/SetupGroup.c +++ b/src/SetupGroup.c @@ -15,64 +15,48 @@ static char *rcisd = "$Header$"; -pGF *SetupPGF(pGH *GH, - const char *name, - int dim, - int varsize, - int vtype, - int staggercode); - -int pugh_SetupScalarGroup(pGH *newGH, int vtype, int n_variables, int n_timelevels); -int pugh_SetupArrayGroup(pGH *newGH, int vtype, int dim, int n_variables, - int staggergroup, int n_timelevels); -int pugh_SetupGFGroup(pGH *newGH, int vtype, int dim, int n_variables, - int staggercode, int n_timelevels); +pGExtras *pugh_SetupPGExtras + ( + int dim, + int periodic, + int stagger, + int *sh, + int *nghosts, + int total_procs, + int *nprocs, + int this_proc + ); + +pConnectivity *pugh_SetupConnectivity + ( + int dim, + int total_procs, + int *nprocs, + int periodic + ); + +pGF *SetupPGF + ( + pGH *GH, + const char *name, + int dim, + int varsize, + int vtype, + int staggercode + ); + +pGA *SetupPGA + ( + void *parent, + pGExtras *extras, + pConnectivity *connectivity, + const char *name, + int id, + int varsize, + int vtype, + int stagger + ); - /*@@ - @routine pugh_SetupGroup - @date Mon Feb 8 19:37:55 1999 - @author Tom Goodale - @desc - Sets up a group on a pGH - @enddesc - @calls - @calledby - @history - - @endhistory - -@@*/ -int pugh_SetupGroup(pGH *newGH, int gtype, int vtype, int dim, int n_variables, - int staggercode, int n_timelevels) -{ - int returncode; - switch(gtype) - { - case GROUP_SCALAR : returncode = pugh_SetupScalarGroup(newGH, - vtype, - n_variables, - n_timelevels); - break; - case GROUP_ARRAY : returncode = pugh_SetupArrayGroup(newGH, - vtype, - dim, - n_variables, - staggercode, - n_timelevels); - break; - case GROUP_GF : returncode = pugh_SetupGFGroup(newGH, - vtype, - dim, - n_variables, - staggercode, - n_timelevels); - break; - default : CCTK_WARN(0, "Unknown group type in pugh_SetupGroup"); - returncode = 1; - } - - return returncode; -} /*@@ @routine pugh_SetupScalarGroup @@ -88,81 +72,23 @@ int pugh_SetupGroup(pGH *newGH, int gtype, int vtype, int dim, int n_variables, @endhistory @@*/ -int pugh_SetupScalarGroup(pGH *newGH, int vtype, int n_variables, int n_timelevels) + +int pugh_SetupScalarGroup + ( + pGH *newGH, + int vtype, + int n_variables, + int n_timelevels + ) { + int retval=PUGH_SUCCESS; int variable; - char *msg; - int var_size; - + int var_size = CCTK_VarTypeSize(vtype); int level; void ***temp; - int returncode; - - switch(vtype) - { - case CCTK_VARIABLE_CHAR: - var_size = sizeof(CCTK_CHAR); - break; - - case CCTK_VARIABLE_INT: - var_size = sizeof(CCTK_INT) ; - break; - -#ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - var_size = sizeof(CCTK_INT2); - break; -#endif - -#ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - var_size = sizeof(CCTK_INT4); - break; -#endif - -#ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - var_size = sizeof(CCTK_INT8); - break; -#endif - - case CCTK_VARIABLE_REAL: - var_size = sizeof(CCTK_REAL); - break; - -#ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - var_size = sizeof(CCTK_REAL4); - break; -#endif - -#ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - var_size = sizeof(CCTK_REAL8); - break; -#endif - -#ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - var_size = sizeof(CCTK_REAL16); - break; -#endif - - case CCTK_VARIABLE_COMPLEX: - var_size = sizeof(CCTK_COMPLEX); - break; - - default: - msg = malloc( 200*sizeof(char) ); - sprintf(msg,"Unknown variable type (%d) in pugh_SetupScalarGroup",vtype); - CCTK_WARN(0,msg); - free(msg); - var_size = 1; - - } - - temp = (void ***)realloc(newGH->variables, (newGH->nvariables+n_variables)*sizeof(void **)); + temp = (void ***)realloc + (newGH->variables, (newGH->nvariables+n_variables)*sizeof(void **)); if(temp) { @@ -170,7 +96,8 @@ int pugh_SetupScalarGroup(pGH *newGH, int vtype, int n_variables, int n_timeleve for(variable = 0; variable < n_variables; variable++) { - newGH->variables[newGH->nvariables] = (void **)malloc(n_timelevels*sizeof(void *)); + newGH->variables[newGH->nvariables] = + (void **)malloc(n_timelevels*sizeof(void *)); if(newGH->variables[newGH->nvariables]) { @@ -182,38 +109,97 @@ int pugh_SetupScalarGroup(pGH *newGH, int vtype, int n_variables, int n_timeleve } else { - CCTK_WARN(1," Memory A error in SetupScalarGroup: "); + CCTK_WARN(1,"Memory error in SetupScalarGroup"); + retval = PUGH_ERRORMEMORY; break; } } } else { - CCTK_WARN(1," Memory A error in SetupScalarGroup: "); + CCTK_WARN(1,"Memory error in SetupScalarGroup"); + retval = PUGH_ERRORMEMORY; } - return 0; + return retval; } -int pugh_SetupArrayGroup(pGH *newGH, int vtype, int dim, int n_variables, - int staggercode, int n_timelevels) -{ - int variable; - char *msg; - int var_size; - void ***temp; + /*@@ + @routine pugh_SetupArrayGroup + @date January 19 2000 + @author Gabrielle Allen + @desc + Set up a group of array variables on a pGH. + @enddesc + @calls + @calledby + @history + + @endhistory - int returncode; +@@*/ - int level; +int pugh_SetupArrayGroup + ( + pGH *newGH, + int *nsize, + int *ghostsize, + int vtype, + int dim, + int n_variables, + int staggercode, + int n_timelevels + ) +{ + + int i; + int variable; + int var_size = CCTK_VarTypeSize(vtype); + int retval; + int level; + char *msg; + void ***temp; + pConnectivity *connectivity; + pGExtras *extras; + + int periodic=0; + int *nprocs; + int *nghostzones; + + /* FIXME: Arrays can't have manual set up yet GAB */ + nprocs = (int *) malloc(dim*sizeof(int)); + for (i=0;i<dim;i++) + { + nprocs[i]=0; + } - var_size = CCTK_VarTypeSize(vtype); + connectivity = pugh_SetupConnectivity(dim,newGH->nprocs,nprocs,periodic); + + /* FIXME: For now default ghostzones 0 for array GAB */ + nghostzones = (int *)malloc(dim*sizeof(int)); + for (i=0;i<dim;i++) + { + nghostzones[i]=0; + } - /* Call Extras and (connectivity) */ + extras = pugh_SetupPGExtras + ( + dim, + periodic, + staggercode, + nsize, + nghostzones, + newGH->nprocs, + connectivity->nprocs, + newGH->myproc + ); - temp = (void ***)realloc(newGH->variables, - (newGH->nvariables+n_variables)*sizeof(void **)); + free(nprocs); + free(nghostzones); + + temp = (void ***)realloc + (newGH->variables,(newGH->nvariables+n_variables)*sizeof(void **)); if(temp) { @@ -228,25 +214,38 @@ int pugh_SetupArrayGroup(pGH *newGH, int vtype, int dim, int n_variables, { for(level = 0; level < n_timelevels; level++) { - /* newGH->variables[newGH->nvariables][level] = - SetupPGV(newGH, - CCTK_VarName(newGH->nvariables), - dim, - var_size, - vtype, - PUGH_VERTEXCTR);*/ + newGH->variables[newGH->nvariables][level] = SetupPGA + ( + newGH, + extras, + connectivity, + CCTK_VarName(newGH->nvariables), + newGH->nvariables, + var_size, + vtype, + staggercode + ); } newGH->nvariables++; } + else + { + CCTK_WARN(1,"Memory error in SetupArrayGroup"); + retval = PUGH_ERRORMEMORY; + break; + } } } - - fprintf(stderr, "PUGH doesn't yet support array groups, sorry !\n"); - exit(1); - - return 0; + else + { + CCTK_WARN(1,"Memory error in SetupArrayGroup"); + retval = PUGH_ERRORMEMORY; + } + + return retval; } + /*@@ @routine pugh_SetupGFGroup @date Wed Feb 17 04:45:49 1999 @@ -270,18 +269,12 @@ int pugh_SetupGFGroup(pGH *newGH, { int variable; + int var_size=CCTK_VarTypeSize(vtype); + int retval=PUGH_SUCCESS; + int level; char *msg; - int var_size; - void ***temp; - int returncode; - - int level; - - - var_size = CCTK_VarTypeSize(vtype); - temp = (void ***)realloc(newGH->variables, (newGH->nvariables+n_variables)*sizeof(void **)); @@ -305,10 +298,109 @@ int pugh_SetupGFGroup(pGH *newGH, var_size, vtype, staggercode); + /* newGH->variables[newGH->nvariables][level] = + SetupPGA(newGH, + newGH->GFExtras[dim-1], + newGH->Connectivity[dim-1], + CCTK_VarName(newGH->nvariables), + newGH->nvariables, + var_size, + vtype, + staggercode);*/ } newGH->nvariables++; } + else + { + CCTK_WARN(1,"Memory error in SetupGFGroup"); + retval = PUGH_ERRORMEMORY; + break; + } } } - return 0; + else + { + CCTK_WARN(1,"Memory error in SetupGFGroup"); + retval = PUGH_ERRORMEMORY; + } + + return retval; + +} + + + /*@@ + @routine pugh_SetupGroup + @date Mon Feb 8 19:37:55 1999 + @author Tom Goodale + @desc + Sets up a group on a pGH + @enddesc + @calls + @calledby + @history + + @endhistory + +@@*/ + +int PUGH_SetupGroup + ( + pGH *newGH, + int *nsize, + int *nghostsize, + int gtype, + int vtype, + int dim, + int n_variables, + int staggercode, + int n_timelevels + ) +{ + + int returncode=PUGH_SUCCESS; + + switch(gtype) + { + case CCTK_SCALAR : + returncode = pugh_SetupScalarGroup + ( + newGH, + vtype, + n_variables, + n_timelevels + ); + break; + case CCTK_ARRAY : + returncode = pugh_SetupArrayGroup + ( + newGH, + nsize, + nghostsize, + vtype, + dim, + n_variables, + staggercode, + n_timelevels + ); + break; + case CCTK_GF : + returncode = pugh_SetupGFGroup + ( + newGH, + vtype, + dim, + n_variables, + staggercode, + n_timelevels + ); + break; + default : + CCTK_WARN(0, "Unknown group type in pugh_SetupGroup"); + returncode = PUGH_ERROR; + } + + return returncode; + } + |