Beispiel #1
0
PetscErrorCode main(int argc, char *argv[]) {
  PetscFwk       fwk;
  PetscErrorCode ierr;
  PetscFunctionBegin;
  ierr = PetscInitialize(&argc, &argv, PETSC_NULL, PETSC_NULL); CHKERRQ(ierr);
  ierr = PetscFwkCreate(PETSC_COMM_WORLD, &fwk); CHKERRQ(ierr);
  ierr = PetscFwkRegisterDependence(fwk, 
                         "${PETSC_DIR}/${PETSC_ARCH}/lib/libtestcomponents.a:TestIIB",
                         "${PETSC_DIR}/${PETSC_ARCH}/lib/libtestcomponents.a:TestIB"); 
  CHKERRQ(ierr);
  ierr = PetscFwkRegisterComponent(fwk, 
                                   "${PETSC_DIR}/${PETSC_ARCH}/lib/libtestcomponents.so:TestIC");
  CHKERRQ(ierr);
  ierr = PetscFwkRegisterDependence(fwk, 
                         "${PETSC_DIR}/${PETSC_ARCH}/lib/libtestcomponents.so:TestIIA",
                         "${PETSC_DIR}/${PETSC_ARCH}/lib/libtestcomponents.so:TestIA");
  CHKERRQ(ierr);
  ierr = PetscFwkRegisterComponent(fwk, 
                                   "${PETSC_DIR}/${PETSC_ARCH}/lib/libtestcomponents.so:TestIIC");
  CHKERRQ(ierr);
  ierr = PetscViewerASCIIPrintf(PETSC_VIEWER_STDOUT_WORLD, "Component initialization order:\n"); CHKERRQ(ierr);
  ierr = PetscFwkViewConfigurationOrder(fwk, PETSC_VIEWER_STDOUT_WORLD); CHKERRQ(ierr);
  ierr = PetscFwkConfigure(fwk, 1); CHKERRQ(ierr);
  ierr = PetscFinalize();
  PetscFunctionReturn(0);
}/* main() */
Beispiel #2
0
PetscErrorCode PETSC_DLLEXPORT PetscFwkComponentConfigureTestIB(PetscFwk fwk, PetscInt state, PetscObject *component) {
  MPI_Comm       comm;
  PetscContainer container;
  PetscErrorCode ierr;
  PetscFunctionBegin;
  ierr = PetscObjectGetComm((PetscObject)fwk, &comm); CHKERRQ(ierr);
  if(!*component) {
    ierr = PetscContainerCreate(comm, &container); CHKERRQ(ierr);
    ierr = PetscObjectSetName((PetscObject)container, "TestIB"); CHKERRQ(ierr);
    *component = (PetscObject)container;
    ierr = PetscPrintf(comm, "%s: created component\n", __FUNCT__); CHKERRQ(ierr);
    ierr = PetscPrintf(comm, "%s: registering dependence: TestIB --> TestIA\n", __FUNCT__); CHKERRQ(ierr);
    ierr = PetscFwkRegisterDependence(fwk, 
                                      "${PETSC_DIR}/${PETSC_ARCH}/lib/libtestcomponents.a:TestIB",
                                      "${PETSC_DIR}/${PETSC_ARCH}/lib/libtestcomponents:TestIA"); CHKERRQ(ierr);
  }
  else {
    container = *((PetscContainer*)component);
    ierr = PetscPrintf(comm, "%s: configuring to state %d\n", __FUNCT__, state); CHKERRQ(ierr);
  }
  PetscFunctionReturn(0);
}/* PetscFwkComponentConfigureTestIB() */