int C2F(genmdiag)(int *typ,int *m,int *n,int *k,int *dx,int *dy) { static int i, ix, mn; if (*k >= 0) mn=Max(0,Min(*m,*n-*k)); else mn=Max(0,Min(*m+*k,*n)); switch (*typ) { case 1: MDIAG(integer1); break; case 2: MDIAG(integer2); break; case 4: MDIAG(int) ; break; case 11: MDIAG(unsigned char); break; case 12: MDIAG(unsigned short); break; case 14: MDIAG(unsigned int); break; } return 0; }
static INT CheckVector (GRID *theGrid, VECTOR *v) { FORMAT *theFormat; NODE *theNode; VECTOR *w; INT nerr = 0; /* get format */ theFormat = MGFORMAT(MYMG(theGrid)); if ((FMT_S_MAT_TP(theFormat,DIAGMATRIXTYPE(VTYPE(v)))>0) && (!GHOST(v))) { if (VSTART(v) == NULL) { UserWriteF(PFMT "ERROR: no diagonal matrix vec=" VINDEX_FMTX "\n", me,VINDEX_PRTX(v)); nerr++; } else if (!MDIAG(VSTART(v))) { UserWriteF(PFMT "ERROR: VSTART no diagonal matrix vec=" VINDEX_FMTX "\n", me,VINDEX_PRTX(v)); nerr++; } } /* check flags locally */ if (NEW_DEFECT(v) != (VCLASS(v)>=2)) { UserWriteF(PFMT "ERROR: classes not match vec=" VINDEX_FMTX " NEW_DEFECT %d VCLASS %d\n", me,VINDEX_PRTX(v),NEW_DEFECT(v),VCLASS(v)); nerr++; } if (FINE_GRID_DOF(v) != ((VCLASS(v)>=2)&&(VNCLASS(v)<=1))) { UserWriteF(PFMT "ERROR: classes not match vec=" VINDEX_FMTX " FINE_GRID_DOF %d VNCLASS %d VCLASS %d\n", me,VINDEX_PRTX(v),FINE_GRID_DOF(v),VNCLASS(v),VCLASS(v)); nerr++; } if (FINE_GRID_DOF(v)) if (FULLREFINELEVEL(MYMG(theGrid)) > GLEVEL(theGrid)) { UserWriteF(PFMT "ERROR: FULLREFINELEVEL too large vec=" VINDEX_FMTX " FINE_GRID_DOF %d FULLREFINELEVEL %d\n", me,VINDEX_PRTX(v),FINE_GRID_DOF(v), FULLREFINELEVEL(MYMG(theGrid))); nerr++; } if (VOTYPE(v) == NODEVEC) { theNode = (NODE *) VOBJECT(v); if (theNode == NULL) { if (GLEVEL(theGrid) >= 0) { UserWriteF(PFMT "ERROR: nodevector has no NODE vec=" VINDEX_FMTX " \n", me,VINDEX_PRTX(v)); nerr++; } } else { if (OBJT(theNode) != NDOBJ) { UserWriteF(PFMT "ERROR: nodevector has no NODE object vec=" VINDEX_FMTX " OBJT %d\n", me,VINDEX_PRTX(v),OBJT(theNode)); nerr++; } if (NTYPE(theNode) == CORNER_NODE) { theNode = (NODE *)NFATHER(theNode); if (theNode != NULL) { w = NVECTOR(theNode); if (w == NULL) { UserWriteF(PFMT "ERROR:" " cornernode vector has no father vec=" VINDEX_FMTX "\n", me,VINDEX_PRTX(v)); nerr++; } if (VNCLASS(w) != VCLASS(v)) { UserWriteF(PFMT "ERROR:" " VCLASS and VNCLASS not matches vec=" VINDEX_FMTX " VCLASS %d father vec " VINDEX_FMTX " VNCLASS %d\n", me,VINDEX_PRTX(v),VCLASS(v), VINDEX_PRTX(w),VNCLASS(w)); nerr++; } } } } } return(nerr); }