/** * output_singular * ------ * Output the left and right singular vectors. */ PetscErrorCode output_singular(char *output_name, const Vec u, const Vec v) { PetscFunctionBegin; PetscErrorCode ierr; char output_name_prefixed[PETSC_MAX_PATH_LEN]; //const char *prefix = "/out/"; const char *u_extension = ".U"; const char *v_extension = ".V"; //ierr = PetscStrcpy(output_name_prefixed, getenv("FD3D_ROOT")); CHKERRQ(ierr); //ierr = PetscStrcat(output_name_prefixed, prefix); CHKERRQ(ierr); //ierr = PetscStrcat(output_name_prefixed, output_name); CHKERRQ(ierr); ierr = PetscStrcpy(output_name_prefixed, output_name); CHKERRQ(ierr); char u_file[PETSC_MAX_PATH_LEN]; char v_file[PETSC_MAX_PATH_LEN]; ierr = PetscStrcpy(u_file, output_name_prefixed); CHKERRQ(ierr); ierr = PetscStrcat(u_file, u_extension); CHKERRQ(ierr); ierr = PetscStrcpy(v_file, output_name_prefixed); CHKERRQ(ierr); ierr = PetscStrcat(v_file, v_extension); CHKERRQ(ierr); PetscViewer viewer; //viewer = PETSC_VIEWER_STDOUT_WORLD; //ierr = PetscViewerHDF5Open(PETSC_COMM_WORLD, h_file, FILE_MODE_WRITE, &viewer); CHKERRQ(ierr); /** Write the left singular vector u. */ ierr = PetscViewerCreate(PETSC_COMM_WORLD, &viewer); CHKERRQ(ierr); ierr = PetscViewerSetType(viewer, PETSCVIEWERBINARY); CHKERRQ(ierr); ierr = PetscViewerFileSetMode(viewer, FILE_MODE_WRITE); CHKERRQ(ierr); ierr = PetscViewerBinarySkipInfo(viewer); CHKERRQ(ierr); ierr = PetscViewerFileSetName(viewer, u_file); CHKERRQ(ierr); /* ierr = PetscViewerBinaryOpen(PETSC_COMM_WORLD, e_file, FILE_MODE_WRITE, &viewer); CHKERRQ(ierr); */ ierr = VecView(u, viewer); CHKERRQ(ierr); /** Write the right singular vector v. */ ierr = PetscViewerDestroy(&viewer); CHKERRQ(ierr); ierr = PetscViewerCreate(PETSC_COMM_WORLD, &viewer); CHKERRQ(ierr); ierr = PetscViewerSetType(viewer, PETSCVIEWERBINARY); CHKERRQ(ierr); ierr = PetscViewerFileSetMode(viewer, FILE_MODE_WRITE); CHKERRQ(ierr); ierr = PetscViewerBinarySkipInfo(viewer); CHKERRQ(ierr); ierr = PetscViewerFileSetName(viewer, v_file); CHKERRQ(ierr); /* ierr = PetscViewerBinaryOpen(PETSC_COMM_WORLD, h_file, FILE_MODE_WRITE, &viewer); CHKERRQ(ierr); */ ierr = VecView(v, viewer); CHKERRQ(ierr); ierr = PetscViewerDestroy(&viewer); CHKERRQ(ierr); PetscFunctionReturn(0); }
void PETSC_STDCALL petscviewerbinaryskipinfo_(PetscViewer viewer, int *__ierr ){ *__ierr = PetscViewerBinarySkipInfo( (PetscViewer)PetscToPointer((viewer) )); }