On Thu, Apr 12, 2018 at 12:26 PM, Vaclav Hapla <vaclav.ha...@erdw.ethz.ch> wrote:
> At master, configured with > --download-exodusii --download-hdf5 --download-netcdf --download-pnetcdf > --with-scalar-type=complex > I get bunch of compiler warnings > warning: passing argument 2 of ‘VecGetArrayRead’ from incompatible > pointer type > warning: passing argument 2 of ‘VecRestoreArrayRead’ from incompatible > pointer type > in > src/dm/impls/plex/plexexodusii.c. > > Is this configuration not covered by nightly tests? > > > I want to fix it anyway. Do you agree with the following scheme? > I think we can do it inline. Can you send the compile error? Thanks, Matt > Vec v; > const PetscScalar *arr; > PetscReal *arr_real; > #if defined(PETSC_USE_COMPLEX) > PetscInt i; > #endif > > ... > ierr = VecGetArrayRead(v, &arr);CHKERRQ(ierr); > #if defined(PETSC_USE_COMPLEX) > ierr = PetscMalloc1(size, &arr_real);CHKERRQ(ierr); > for (i = 0; i < size; ++i) { > arr_real[i] = PetscRealPart(arr[i]); > #if defined(PETSC_USE_DEBUG) > if (PetscImaginaryPart(arr[i])) { > SETERRQ(PETSC_COMM_SELF, PETSC_ERR_SUP, "Vector contains complex > numbers but only real vectors are currently supported."); > } > #endif > } > #else > arr_real = (PetscReal*)arr; > #endif > > ... > ierr = VecRestoreArrayRead(v, &arr);CHKERRQ(ierr); > #if defined(PETSC_USE_COMPLEX) > ierr = PetscFree(arr_real);CHKERRQ(ierr); > #endif > > > Thanks, > Vaclav -- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener https://www.cse.buffalo.edu/~knepley/ <http://www.caam.rice.edu/~mk51/>