67 lines
1.5 KiB
C++
67 lines
1.5 KiB
C++
#ifndef BlockH
|
|
#define BlockH
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Block.h: interface for the Block class.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
#include <vector>
|
|
|
|
#include "Ls.h"
|
|
#include "DArray.h"
|
|
|
|
class DArray;
|
|
|
|
// Rectangular section of elements
|
|
|
|
class Block {
|
|
// std::vector of LS for every dimensions
|
|
std::vector<LS> LSDim;
|
|
|
|
public:
|
|
|
|
Block(std::vector<LS> &v);
|
|
Block();
|
|
Block(DArray *da, long ProcLI);
|
|
//grig
|
|
Block(DArray *da, long ProcLI,int a); // a - íå çíà÷àùèé ïàðàìåòð
|
|
//\grig
|
|
|
|
|
|
virtual ~Block();
|
|
|
|
// ìíîæèòåëü äëÿ îïðåäåëåíèÿ ðàçìåðà áëîêà, ïîëó÷àåìûé êàê
|
|
//ïðîèçâåäåíèå ðàçìåðîâ ïî âñåì èçìåðåíèÿì êðîìå óêàçàííîãî
|
|
long GetBlockSizeMult2(long dim1, long dim2);
|
|
long GetBlockSizeMult(long dim);
|
|
|
|
// true åñëè äëÿ äàííîãî áëîêà ïî äàííîìó èçìåðåíèþ äàííûé ýëåìåíò
|
|
// íàõîäèòñÿ ëåâåå (ïðàâåå) ýëåìåíòîâ áëîêà. Äëÿ ïóñòîãî áëîêà false
|
|
bool IsLeft(long arrDim, long elem);
|
|
bool IsRight(long arrDim, long elem);
|
|
|
|
// Ïðîâåðêà ïðèíàäëåæíîñòè ãðàíèöû ëîêàëüíîìó áëîêó
|
|
bool IsBoundIn(const std::vector<long>& ALeftBSizeArray,
|
|
const std::vector<long>& ARightBSizeArray);
|
|
|
|
Block & operator =(const Block & x);
|
|
long GetRank();
|
|
bool empty();
|
|
|
|
// ÷èñëî ýëåìåíòîâ â áëîêå
|
|
long GetBlockSize();
|
|
|
|
friend Block operator^ (Block &x, Block &y); // intersection
|
|
|
|
//====
|
|
long GetUpper(long i);
|
|
long GetLower(long i);
|
|
//=***
|
|
|
|
};
|
|
|
|
#endif
|