N_Vector N_VClone_Serial(N_Vector w) { N_Vector v; realtype *data; long int length; v = N_VCloneEmpty_Serial(w); if (v == NULL) return(NULL); length = NV_LENGTH_S(w); /* Create data */ if (length > 0) { /* Allocate memory */ #if HAVE_MEMALIGN if (posix_memalign((void**)&data, 64, length*sizeof(realtype)) != 0) { N_VDestroy_Serial(v);return(NULL); } #else data = (realtype *) malloc(length * sizeof(realtype)); #endif if(data == NULL) {N_VDestroy_Serial(v);return(NULL);} /* Attach data */ NV_OWN_DATA_S(v) = TRUE; NV_DATA_S(v) = data; } return(v); }
N_Vector N_VClone_Serial(N_Vector w) { N_Vector v; realtype *data; long int length; v = NULL; v = N_VCloneEmpty_Serial(w); if (v == NULL) return(NULL); length = NV_LENGTH_S(w); /* Create data */ if (length > 0) { /* Allocate memory */ data = NULL; data = (realtype *) malloc(length * sizeof(realtype)); if(data == NULL) { N_VDestroy_Serial(v); return(NULL); } /* Attach data */ NV_OWN_DATA_S(v) = TRUE; NV_DATA_S(v) = data; } return(v); }
N_Vector *N_VCloneVectorArrayEmpty_Serial(int count, N_Vector w) { N_Vector *vs; int j; if (count <= 0) return(NULL); vs = NULL; vs = (N_Vector *) malloc(count * sizeof(N_Vector)); if(vs == NULL) return(NULL); for (j = 0; j < count; j++) { vs[j] = NULL; vs[j] = N_VCloneEmpty_Serial(w); if (vs[j] == NULL) { N_VDestroyVectorArray_Serial(vs, j-1); return(NULL); } } return(vs); }
N_Vector N_VCloneEmpty(N_Vector w) { N_Vector v = NULL; v = N_VCloneEmpty_Serial(w); return(v); }