Actual source code: f90_absoft.c

  1: /*$Id: f90_absoft.c,v 1.4 2001/03/23 23:20:56 balay Exp $*/

  3: /*-------------------------------------------------------------*/

  7: int F90GetID(PetscDataType type,int *id)
  8: {
 10:   if (type == PETSC_INT) {
 11:     *id = F90_INT_ID;
 12:   } else if (type == PETSC_DOUBLE) {
 13:     *id = F90_DOUBLE_ID;
 14: #if defined(PETSC_USE_COMPLEX)
 15:   } else if (type == PETSC_COMPLEX) {
 16:     *id = F90_COMPLEX_ID;
 17: #endif
 18:   } else if (type == PETSC_LONG) {
 19:     *id = F90_LONG_ID;
 20:   } else if (type == PETSC_CHAR) {
 21:     *id = F90_CHAR_ID;
 22:   } else {
 23:     SETERRQ(PETSC_ERR_ARG_OUTOFRANGE,"Unknown PETSc datatype");
 24:   }
 25:   return(0);
 26: }

 30: int F90Array1dCreate(void *array,PetscDataType type,int start,int len,F90Array1d *ptr)
 31: {
 32:   int size,size_int,ierr,id;

 37:   PetscDataTypeGetSize(type,&size);
 38:   PetscDataTypeGetSize(PETSC_INT,&size_int);
 39:   F90GetID(type,&id);

 41:   ptr->addr          = array;
 42:   ptr->sd            = size*8;
 43:   ptr->cookie        = F90_COOKIE;
 44:   ptr->dim_id        = 1024*8*1;
 45:   ptr->id            = id;
 46:   ptr->a             = 0;
 47:   ptr->b             = 0;
 48:   ptr->dim[0].extent = len;
 49:   ptr->dim[0].mult   = size/size_int;
 50:   ptr->dim[0].lower  = start;

 52:   return(0);
 53: }

 57: int F90Array2dCreate(void *array,PetscDataType type,int start1,int len1,int start2,int len2,F90Array2d *ptr)
 58: {
 59:   int size,size_int,ierr,id;

 64:   PetscDataTypeGetSize(type,&size);
 65:   PetscDataTypeGetSize(PETSC_INT,&size_int);
 66:   F90GetID(type,&id);

 68:   ptr->addr          = array;
 69:   ptr->sd            = size*8;
 70:   ptr->cookie        = F90_COOKIE;
 71:   ptr->dim_id        = 1024*8*2;
 72:   ptr->id            = id;
 73:   ptr->a             = 0;
 74:   ptr->b             = 0;
 75:   ptr->dim[0].extent = len1;
 76:   ptr->dim[0].mult   = size/size_int;
 77:   ptr->dim[0].lower  = start1;
 78:   ptr->dim[1].extent = len2;
 79:   ptr->dim[1].mult   = len1*size/size_int;
 80:   ptr->dim[1].lower  = len2;
 81:   return(0);
 82: }

 84: /*-------------------------------------------------------------*/