#include "petsc.h"
#include "petscmat.h"
#include "omg.h"
#include "oda.h"
Go to the source code of this file.
Namespaces | |
namespace | ot |
Private Functions | |
PetscErrorCode | addRestrictMatVec (Mat R, Vec v1, Vec v2, Vec v3) |
PetscErrorCode | dummyRestrictMatVecType1 (TransferOpData *data) |
PetscErrorCode | restrictMatVecType1 (Mat R, Vec f, Vec c) |
PetscErrorCode | restrictMatVecType2 (Mat R, Vec f, Vec c) |
Defines | |
#define | iC(fun) {CHKERRQ(fun);} |
#define | INTERGRID_TRANSFER_LOOP_BLOCK(ITLB_SET_VALUE) |
#define | INTERGRID_TRANSFER_LOOP_BLOCK_DUMMY |
#define | INTERGRID_TRANSFER_LOOP_BLOCK_DUMMY_FINAL_A |
#define | INTERGRID_TRANSFER_LOOP_BLOCK_DUMMY_FINAL_W |
#define | ITLB_DUMMY_FCTR_BLOCK1 |
#define | ITLB_DUMMY_FCTR_BLOCK2 |
#define | ITLB_DUMMY_FINAL_SET_VALUE(nodeNum, idx) |
#define | ITLB_SET_VALUE_NO_SUPPRESSED_DOFS |
#define | ITLB_SET_VALUE_SUPPRESSED_DOFS |
Definition in file RestrictMatVec.C.
|
Definition at line 14 of file RestrictMatVec.C. |
|
Definition at line 82 of file RestrictMatVec.C. |
|
Definition at line 153 of file RestrictMatVec.C. |
|
Definition at line 370 of file RestrictMatVec.C. |
|
Value: {\ /*To avoid redundant writes, only the element whose anchor is */\ /*the regular fine grid node writes for all the 8 elements */\ /*surrounding this node. Note, that some of these elements */\ /* may be owned by other processors. So all processors take */\ /* care of all the 8 elements surrounding the node they own.*/\ /* The only other problem is with the positive boundary nodes. */\ /* The element whose anchor is this positive boundary node is only */\ /* a pseudo-element and will never be visited while looping through the */\ /* elements. To make things worse, we can have situtations where a */\ /* positive boundary node is owned by one processor and all the */\ /* true elements that share this node are on different processors. */\ /* Thus a writable loop will never suffice to take care of this */\ /* scenario. Hence, this WRITABLE loop will handle all nodes except */\ /* positive boundaries and a separate ALL loop will handle positive */\ /* boundary nodes alone. NOTE, that unlike the other loops in the */\ /* restriction/prolongation, these two loops are not simultaneous */\ /* loops through both the fine and coarse grids. Looping through the */\ /* fine mesh will suffice.*/\ unsigned char fhnMask = daf->getHangingNodeIndex(daf->curr());\ ITLB_DUMMY_FINAL_SET_VALUE(0,daf->curr())\ } Definition at line 347 of file RestrictMatVec.C. |
|
Definition at line 252 of file RestrictMatVec.C. |
|
Value: {\ if(dummyMapPtrs[dummyFctr]) {\ for(unsigned char dummyCctr = 0; dummyCctr < 8; dummyCctr++) {\ if(coarseVtxId == dummyMapPtrs[dummyFctr][dummyCctr]) {\ skipThisEntry = true;\ break;\ }\ }\ if(skipThisEntry) {\ break;\ }\ }\ } Definition at line 301 of file RestrictMatVec.C. |
|
Definition at line 315 of file RestrictMatVec.C. |
|
Value: {\ carr[cidx+l] += (Rval*farr[fidx+l]);\ } Definition at line 71 of file RestrictMatVec.C. |
|
Value: {\
if(!( (suppressedDOFf && suppressedDOFf[fidx+l]) ||\
(suppressedDOFc && suppressedDOFc[cidx+l]) )) {\
carr[cidx+l] += (Rval*farr[fidx+l]);\
}\
}
Definition at line 75 of file RestrictMatVec.C. |
|
Definition at line 32 of file RestrictMatVec.C. References iC. Referenced by ot::createInterpolationType1(), and ot::createInterpolationType2(). |
|
|
|
Definition at line 55 of file RestrictMatVec.C. References iC, ot::restrictMatVecType1(), and par::scatterValues(). Referenced by ot::createInterpolationType2(). |