aboutsummaryrefslogtreecommitdiff
path: root/src/SetupGroup.c
diff options
context:
space:
mode:
authorallen <allen@b61c5cb5-eaca-4651-9a7a-d64986f99364>2000-01-25 09:26:19 +0000
committerallen <allen@b61c5cb5-eaca-4651-9a7a-d64986f99364>2000-01-25 09:26:19 +0000
commitb5652dfba0c50916aaf8ebd9071f0a88691d3b08 (patch)
treef4c3689a1baea874de4a23764c3509a840cafe02 /src/SetupGroup.c
parent889886b91f72873111c6c4501e9c39c9f8f5d49f (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.c424
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;
+
}
+