# PhasicFlow: IOPattern Class Reference
PhasicFlow is an open-source parallel DEM (discrete element method) package for simulating granular flow. It is developed in C++ and can be exectued on both GPU (like CUDA) and CPU.

IOPattern Class Reference

## Public Types

enum | IOType : int { MasterProcessorOnly = 0, AllProcessorsSimilar = 1, MasterProcessorDistribute = 4, AllProcessorsDifferent = 8 }
| Type of input/output. More...

## Public Member Functions

| IOPattern (IOPattern::IOType iotype)
| IOPattern (const IOPattern &)=default
| IOPattern (IOPattern &&)=default
IOPattern & | operator= (const IOPattern &)=default
IOPattern & | operator= (IOPattern &&)=default
| ~IOPattern ()=default
bool | isMasterProcessorOnly () const
bool | isAllProcessorSimilar () const
bool | isMasterProcessorDistribute () const
bool | isAllProcessorsDifferent () const
bool | isMaster () const
bool | isParallel () const
bool | thisCallRead () const
bool | thisCallWrite () const
bool | thisProcReadData () const
bool | thisProcWriteData () const
bool | thisProcReadHeader () const
bool | thisProcWriteHeader () const
auto | globalSize () const
auto | globalRank () const

## Static Public Member Functions

static word | exeMode ()

## Private Attributes

IOType | ioType_
int | globalSize_ = 1
int | globalRank_ = 0
bool | isMaster_ = true
bool | isParallel_ = false

## Detailed Description

Definition at line 32 of file IOPattern.hpp.

## Member Enumeration Documentation

## IOType

enum IOType : int

Type of input/output.

MasterProcessorOnly: Read or write is done on master processor and the data on master processor is affected.

MasterProcessorDistribute: Read is done on master processor, but the data should be distributed between processors based on an externally specified pattern. Write is done on master processor and the data is collected from all processors (collection is done based on the externally specified pattern).

AllProcessorsSimilar: Read is done on all processors and processors read the same data. Write is done on master processor, since all processors have the same copy of data.

Enumerator
MasterProcessorOnly |
AllProcessorsSimilar |
MasterProcessorDistribute |
AllProcessorsDifferent |

Definition at line 52 of file IOPattern.hpp.

## Constructor & Destructor Documentation

## IOPattern() [1/3]

IOPattern | ( | IOPattern::IOType | iotype | ) |

Definition at line 23 of file IOPattern.cpp.

## IOPattern() [2/3]

IOPattern | ( | const IOPattern & |  | ) |

default

## IOPattern() [3/3]

IOPattern | ( | IOPattern && |  | ) |

default

## ~IOPattern()

~IOPattern | ( |  | ) |

default

## Member Function Documentation

## operator=() [1/2]

IOPattern& operator= | ( | const IOPattern & |  | ) |

default

## operator=() [2/2]

IOPattern& operator= | ( | IOPattern && |  | ) |

default

## isMasterProcessorOnly()

bool isMasterProcessorOnly | ( |  | ) | const

inline

Definition at line 88 of file IOPattern.hpp.

References IOPattern::ioType_, and IOPattern::MasterProcessorOnly.

Referenced by IOPattern::thisCallRead(), IOPattern::thisCallWrite(), and IOPattern::thisProcReadData().

Here is the caller graph for this function:

## isAllProcessorSimilar()

bool isAllProcessorSimilar | ( |  | ) | const

inline

Definition at line 94 of file IOPattern.hpp.

References IOPattern::AllProcessorsSimilar, and IOPattern::ioType_.

## isMasterProcessorDistribute()

bool isMasterProcessorDistribute | ( |  | ) | const

inline

Definition at line 100 of file IOPattern.hpp.

References IOPattern::ioType_, and IOPattern::MasterProcessorDistribute.

Referenced by IOPattern::thisProcReadData().

Here is the caller graph for this function:

## isAllProcessorsDifferent()

bool isAllProcessorsDifferent | ( |  | ) | const

inline

Definition at line 106 of file IOPattern.hpp.

References IOPattern::AllProcessorsDifferent, and IOPattern::ioType_.

Referenced by IOPattern::thisProcWriteData().

Here is the caller graph for this function:

## isMaster()

bool isMaster | ( |  | ) | const

inline

Definition at line 112 of file IOPattern.hpp.

References IOPattern::isMaster_.

Referenced by IOPattern::thisCallRead(), IOPattern::thisCallWrite(), IOPattern::thisProcReadData(), IOPattern::thisProcWriteData(), and IOPattern::thisProcWriteHeader().

Here is the caller graph for this function:

## isParallel()

bool isParallel | ( |  | ) | const

inline

Definition at line 118 of file IOPattern.hpp.

References IOPattern::isParallel_.

## thisCallRead()

bool thisCallRead | ( |  | ) | const

inline

Definition at line 124 of file IOPattern.hpp.

References IOPattern::isMaster(), and IOPattern::isMasterProcessorOnly().

Here is the call graph for this function:

## thisCallWrite()

bool thisCallWrite | ( |  | ) | const

inline

Definition at line 131 of file IOPattern.hpp.

References IOPattern::isMaster(), and IOPattern::isMasterProcessorOnly().

Here is the call graph for this function:

## thisProcReadData()

bool thisProcReadData | ( |  | ) | const

inline

Definition at line 138 of file IOPattern.hpp.

References IOPattern::isMaster(), IOPattern::isMasterProcessorDistribute(), and IOPattern::isMasterProcessorOnly().

Referenced by Field< uint32x3 >::read(), and IOPattern::thisProcReadHeader().

Here is the call graph for this function:
Here is the caller graph for this function:

## thisProcWriteData()

bool thisProcWriteData | ( |  | ) | const

inline

Definition at line 146 of file IOPattern.hpp.

References IOPattern::isAllProcessorsDifferent(), and IOPattern::isMaster().

Referenced by stationaryWall::write(), conveyorBeltMotion::write(), rotatingAxisMotion::write(), vibratingMotion::write(), insertion::write(), multiTriSurface::write(), and Field< uint32x3 >::write().

Here is the call graph for this function:
Here is the caller graph for this function:

## thisProcReadHeader()

bool thisProcReadHeader | ( |  | ) | const

inline

Definition at line 153 of file IOPattern.hpp.

References IOPattern::thisProcReadData().

Here is the call graph for this function:

## thisProcWriteHeader()

bool thisProcWriteHeader | ( |  | ) | const

inline

Definition at line 159 of file IOPattern.hpp.

References IOPattern::isMaster().

Here is the call graph for this function:

## globalSize()

auto globalSize | ( |  | ) | const

inline

Definition at line 165 of file IOPattern.hpp.

References IOPattern::globalSize_.

## globalRank()

auto globalRank | ( |  | ) | const

inline

Definition at line 171 of file IOPattern.hpp.

References IOPattern::globalRank_.

## exeMode()

pFlow::word exeMode | ( |  | ) |

static

Definition at line 32 of file IOPattern.cpp.

References processors::globalRunTypeName().

Here is the call graph for this function:

## Member Data Documentation

## ioType_

IOType ioType_

private

Definition at line 63 of file IOPattern.hpp.

Referenced by IOPattern::isAllProcessorsDifferent(), IOPattern::isAllProcessorSimilar(), IOPattern::isMasterProcessorDistribute(), and IOPattern::isMasterProcessorOnly().

## globalSize_

int globalSize_ = 1

private

Definition at line 65 of file IOPattern.hpp.

Referenced by IOPattern::globalSize().

## globalRank_

int globalRank_ = 0

private

Definition at line 67 of file IOPattern.hpp.

Referenced by IOPattern::globalRank().

## isMaster_

bool isMaster_ = true

private

Definition at line 69 of file IOPattern.hpp.

Referenced by IOPattern::isMaster().

## isParallel_

bool isParallel_ = false

private

Definition at line 71 of file IOPattern.hpp.

Referenced by IOPattern::isParallel().

The documentation for this class was generated from the following files:

- src/phasicFlow/repository/IOobject/IOPattern.hpp
- src/phasicFlow/repository/IOobject/IOPattern.cpp