Actual source code: test.c

  1: #ifdef PETSC_RCS_HEADER
  2: static char vcid[] = "$Id: test.c,v 1.2 2000/01/10 03:54:22 knepley Exp $";
  3: #endif

 5:  #include src/mesh/impls/triangular/triimpl.h

  7: EXTERN_C_BEGIN
  8: /*
  9:     MeshOrdering_Triangular_2D_Test - Test ordering for the nodes of a given mesh.
 10: */
 11: #undef __FUNCT__  
 13: int MeshOrdering_Triangular_2D_Test(Mesh mesh, MatOrderingType type, AO *ordering)
 14: {
 15:   int        numNodes = mesh->numNodes;
 16:   int       *AppOrdering;   /* The initial ordering (0, 1, ...) */
 17:   int       *PetscOrdering; /* The RCM ordering */
 18:   char       typeName[256];
 19:   int        i;
 20:   PetscTruth opt, isidentity, isreverse, isflip;
 21:   int        ierr;

 23:   PetscMalloc(numNodes * sizeof(int), &AppOrdering);
 24:   PetscMalloc(numNodes * sizeof(int), &PetscOrdering);

 26:   PetscStrcpy(typeName, "identity");
 27:   PetscOptionsGetString(mesh->prefix, "-mesh_ordering_subtype", typeName, 256, &opt);
 28:   PetscStrcasecmp(typeName, "identity", &isidentity);
 29:   PetscStrcasecmp(typeName, "reverse",  &isreverse);
 30:   PetscStrcasecmp(typeName, "flip",     &isflip);
 31:   if (isidentity == PETSC_TRUE) {
 32:     for(i = 0; i < numNodes; i++) {
 33:       AppOrdering[i]   = i;
 34:       PetscOrdering[i] = i;
 35:     }
 36:   } else if (isreverse == PETSC_TRUE) {
 37:     for(i = 0; i < numNodes; i++) {
 38:       AppOrdering[i]   = i;
 39:       PetscOrdering[i] = numNodes-(i+1);
 40:     }
 41:   } else if (isflip == PETSC_TRUE) {
 42:     for(i = 0; i < numNodes; i++) {
 43:       AppOrdering[i]   = i;
 44:       PetscOrdering[i] = i;
 45:     }
 46:     PetscOrdering[0]   = 1;
 47:     PetscOrdering[1]   = 0;
 48:   } else {
 49:     SETERRQ1(PETSC_ERR_ARG_WRONG, "Invalid ordering subtype: %s", typeName);
 50:   }
 51:   /* Create the ordering object */
 52:   AOCreateBasic(mesh->comm, numNodes, AppOrdering, PetscOrdering, ordering);

 54:   PetscFree(AppOrdering);
 55:   PetscFree(PetscOrdering);
 56:   return(0);
 57: }
 58: EXTERN_C_END