diff -r 824ae77f61b6 src/sys/examples/tutorials/ex5.c --- a/src/sys/examples/tutorials/ex5.c Thu Mar 24 11:36:33 2011 -0500 +++ b/src/sys/examples/tutorials/ex5.c Thu Mar 24 17:25:41 2011 +0000 @@ -63,19 +63,21 @@ ierr = PetscInitialize(&argc,&argv,(char *)0,help);CHKERRQ(ierr); /* Create an empty bag */ - ierr = PetscBagCreate(PETSC_COMM_WORLD,sizeof(Parameter),&bag);CHKERRQ(ierr); - ierr = PetscBagGetData(bag,(void **)¶ms);CHKERRQ(ierr); + ierr = PetscBagCreate(PETSC_COMM_WORLD,sizeof(Parameter),&bag);CHKERRQ(ierr); + ierr = PetscBagGetData(bag,(void **)¶ms);CHKERRQ(ierr); + ierr = PetscBagSetName(bag,"ParameterBag","contains parameters for simulations of top-secret, dangerous physics");CHKERRQ(ierr); - /* register variables, defaults, names, help strings */ - ierr = PetscBagSetName(bag,"ParameterBag","contains parameters for simulations of top-secret, dangerous physics");CHKERRQ(ierr); + /* register real values first (required if using PETSc with quad precision) */ + ierr = PetscBagRegisterReal (bag,¶ms->rho,3.0,"rho","Density, kg/m^3");CHKERRQ(ierr); + ierr = PetscBagRegisterReal (bag,¶ms->pos.x1,1.0,"x1","x position");CHKERRQ(ierr); + ierr = PetscBagRegisterReal (bag,¶ms->pos.x2,1.9,"x2","y position");CHKERRQ(ierr); + + /* register other parameters */ ierr = PetscBagRegisterString(bag,¶ms->filename,PETSC_MAX_PATH_LEN,"myfile","filename","Name of secret file");CHKERRQ(ierr); - ierr = PetscBagRegisterReal (bag,¶ms->rho,3.0,"rho","Density, kg/m^3");CHKERRQ(ierr); ierr = PetscBagRegisterScalar(bag,¶ms->W, 5.0,"W","Vertical velocity, m/sec");CHKERRQ(ierr); ierr = PetscBagRegisterInt (bag,¶ms->Ii, 2,"modes_x","Number of modes in x-direction");CHKERRQ(ierr); - ierr = PetscBagRegisterBool (bag,¶ms->T, PETSC_FALSE,"do_output","Write output file (yes/no)");CHKERRQ(ierr); + ierr = PetscBagRegisterBool (bag,¶ms->T, PETSC_FALSE,"do_output","Write output file (yes/no)");CHKERRQ(ierr); ierr = PetscBagRegisterEnum (bag,¶ms->dt, PetscDataTypes,(PetscEnum)PETSC_INT,"dt","meaningless datatype");CHKERRQ(ierr); - ierr = PetscBagRegisterReal (bag,¶ms->pos.x1,1.0,"x1","x position");CHKERRQ(ierr); - ierr = PetscBagRegisterReal (bag,¶ms->pos.x2,1.9,"x2","y position");CHKERRQ(ierr); ierr = PetscBagRegisterEnum (bag,¶ms->which, EnumeratedChoices, (PetscEnum)THAT, "choose","Express yourself by choosing among enumerated things");CHKERRQ(ierr); /* write bag to stdio & binary file */