예제 #1
0
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);
}
예제 #2
0
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);
}
예제 #3
0
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);
}
예제 #4
0
N_Vector N_VCloneEmpty(N_Vector w)
{
  N_Vector v = NULL;
  v = N_VCloneEmpty_Serial(w);
  return(v);
}