17d0a6c19SBarry Smith 2e5c89e4eSSatish Balay /* 3e5c89e4eSSatish Balay Provides utility routines for manulating any type of PETSc object. 4e5c89e4eSSatish Balay */ 5*afcb2eb5SJed Brown #include <petsc-private/petscimpl.h> /*I "petscsys.h" I*/ 6e5c89e4eSSatish Balay 7e5c89e4eSSatish Balay #undef __FUNCT__ 8e5c89e4eSSatish Balay #define __FUNCT__ "PetscObjectGetComm" 9e5c89e4eSSatish Balay /*@C 10e5c89e4eSSatish Balay PetscObjectGetComm - Gets the MPI communicator for any PetscObject, 11e5c89e4eSSatish Balay regardless of the type. 12e5c89e4eSSatish Balay 13e5c89e4eSSatish Balay Not Collective 14e5c89e4eSSatish Balay 15e5c89e4eSSatish Balay Input Parameter: 16e5c89e4eSSatish Balay . obj - any PETSc object, for example a Vec, Mat or KSP. Thus must be 17e5c89e4eSSatish Balay cast with a (PetscObject), for example, 18e5c89e4eSSatish Balay PetscObjectGetComm((PetscObject)mat,&comm); 19e5c89e4eSSatish Balay 20e5c89e4eSSatish Balay Output Parameter: 21e5c89e4eSSatish Balay . comm - the MPI communicator 22e5c89e4eSSatish Balay 23e5c89e4eSSatish Balay Level: advanced 24e5c89e4eSSatish Balay 25e5c89e4eSSatish Balay Concepts: communicator^getting from object 26e5c89e4eSSatish Balay Concepts: MPI communicator^getting from object 27e5c89e4eSSatish Balay 28e5c89e4eSSatish Balay @*/ 297087cfbeSBarry Smith PetscErrorCode PetscObjectGetComm(PetscObject obj,MPI_Comm *comm) 30e5c89e4eSSatish Balay { 31e5c89e4eSSatish Balay PetscErrorCode ierr; 32e5c89e4eSSatish Balay 33e5c89e4eSSatish Balay PetscFunctionBegin; 343cfa8680SLisandro Dalcin PetscValidHeader(obj,1); 353cfa8680SLisandro Dalcin PetscValidPointer(comm,2); 36e5c89e4eSSatish Balay if (obj->bops->getcomm) { 37e5c89e4eSSatish Balay ierr = obj->bops->getcomm(obj,comm);CHKERRQ(ierr); 38a297a907SKarl Rupp } else *comm = obj->comm; 39e5c89e4eSSatish Balay PetscFunctionReturn(0); 40e5c89e4eSSatish Balay } 41e5c89e4eSSatish Balay 421cee3971SBarry Smith #undef __FUNCT__ 431cee3971SBarry Smith #define __FUNCT__ "PetscObjectGetTabLevel" 44cbf1b8bfSBarry Smith /*@ 451cee3971SBarry Smith PetscObjectGetTabLevel - Gets the number of tabs that ASCII output for that object use 46e5c89e4eSSatish Balay 471cee3971SBarry Smith Not Collective 481cee3971SBarry Smith 491cee3971SBarry Smith Input Parameter: 501cee3971SBarry Smith . obj - any PETSc object, for example a Vec, Mat or KSP. Thus must be 511cee3971SBarry Smith cast with a (PetscObject), for example, 521cee3971SBarry Smith PetscObjectGetComm((PetscObject)mat,&comm); 531cee3971SBarry Smith 541cee3971SBarry Smith Output Parameter: 551cee3971SBarry Smith . tab - the number of tabs 561cee3971SBarry Smith 571cee3971SBarry Smith Level: developer 581cee3971SBarry Smith 591cee3971SBarry Smith Notes: this is used to manage the output from options that are imbedded in other objects. For example 601cee3971SBarry Smith the KSP object inside a SNES object. By indenting each lower level further the heirarchy of objects 611cee3971SBarry Smith is very clear. 621cee3971SBarry Smith 631cee3971SBarry Smith .seealso: PetscObjectIncrementTabLevel() 641cee3971SBarry Smith 651cee3971SBarry Smith @*/ 667087cfbeSBarry Smith PetscErrorCode PetscObjectGetTabLevel(PetscObject obj,PetscInt *tab) 671cee3971SBarry Smith { 681cee3971SBarry Smith PetscFunctionBegin; 691cee3971SBarry Smith PetscValidHeader(obj,1); 701cee3971SBarry Smith *tab = obj->tablevel; 711cee3971SBarry Smith PetscFunctionReturn(0); 721cee3971SBarry Smith } 731cee3971SBarry Smith 7453c77d0aSJed Brown #undef __FUNCT__ 75da35de2aSMatthew G Knepley #define __FUNCT__ "PetscObjectSetTabLevel" 76da35de2aSMatthew G Knepley /*@ 77da35de2aSMatthew G Knepley PetscObjectSetTabLevel - Sets the number of tabs that ASCII output for that object use 78da35de2aSMatthew G Knepley 79da35de2aSMatthew G Knepley Not Collective 80da35de2aSMatthew G Knepley 81da35de2aSMatthew G Knepley Input Parameters: 82da35de2aSMatthew G Knepley + obj - any PETSc object, for example a Vec, Mat or KSP. Thus must be 83da35de2aSMatthew G Knepley cast with a (PetscObject), for example, 84da35de2aSMatthew G Knepley PetscObjectGetComm((PetscObject)mat,&comm); 85da35de2aSMatthew G Knepley - tab - the number of tabs 86da35de2aSMatthew G Knepley 87da35de2aSMatthew G Knepley Level: developer 88da35de2aSMatthew G Knepley 89da35de2aSMatthew G Knepley Notes: this is used to manage the output from options that are imbedded in other objects. For example 90da35de2aSMatthew G Knepley the KSP object inside a SNES object. By indenting each lower level further the heirarchy of objects 91da35de2aSMatthew G Knepley is very clear. 92da35de2aSMatthew G Knepley 93da35de2aSMatthew G Knepley .seealso: PetscObjectIncrementTabLevel() 94da35de2aSMatthew G Knepley @*/ 95da35de2aSMatthew G Knepley PetscErrorCode PetscObjectSetTabLevel(PetscObject obj,PetscInt tab) 96da35de2aSMatthew G Knepley { 97da35de2aSMatthew G Knepley PetscFunctionBegin; 98da35de2aSMatthew G Knepley PetscValidHeader(obj,1); 99da35de2aSMatthew G Knepley obj->tablevel = tab; 100da35de2aSMatthew G Knepley PetscFunctionReturn(0); 101da35de2aSMatthew G Knepley } 102da35de2aSMatthew G Knepley 103da35de2aSMatthew G Knepley #undef __FUNCT__ 10453c77d0aSJed Brown #define __FUNCT__ "PetscObjectIncrementTabLevel" 105cbf1b8bfSBarry Smith /*@ 1061cee3971SBarry Smith PetscObjectIncrementTabLevel - Sets the number of tabs that ASCII output for that object use based on 1071cee3971SBarry Smith the tablevel of another object. This should be called immediately after the object is created. 1081cee3971SBarry Smith 1091cee3971SBarry Smith Not Collective 1101cee3971SBarry Smith 1111cee3971SBarry Smith Input Parameter: 1121cee3971SBarry Smith + obj - any PETSc object where we are changing the tab 1131cee3971SBarry Smith . oldobj - the object providing the tab 1141cee3971SBarry Smith - tab - the increment that is added to the old objects tab 1151cee3971SBarry Smith 1161cee3971SBarry Smith 1171cee3971SBarry Smith Level: developer 1181cee3971SBarry Smith 1191cee3971SBarry Smith Notes: this is used to manage the output from options that are imbedded in other objects. For example 1201cee3971SBarry Smith the KSP object inside a SNES object. By indenting each lower level further the heirarchy of objects 1211cee3971SBarry Smith is very clear. 1221cee3971SBarry Smith 1231cee3971SBarry Smith .seealso: PetscObjectSetLabLevel(), PetscObjectGetTabLevel() 1241cee3971SBarry Smith 1251cee3971SBarry Smith @*/ 1267087cfbeSBarry Smith PetscErrorCode PetscObjectIncrementTabLevel(PetscObject obj,PetscObject oldobj,PetscInt tab) 1271cee3971SBarry Smith { 1281cee3971SBarry Smith 1291cee3971SBarry Smith PetscFunctionBegin; 1301cee3971SBarry Smith PetscValidHeader(obj,1); 131a297a907SKarl Rupp if (oldobj) obj->tablevel = oldobj->tablevel + tab; 132a297a907SKarl Rupp else obj->tablevel = tab; 1331cee3971SBarry Smith PetscFunctionReturn(0); 1341cee3971SBarry Smith } 135