void Foam::processorLduInterface::receive ( const Pstream::commsTypes commsType, UList<Type>& f ) const { if (commsType == Pstream::blocking || commsType == Pstream::scheduled) { IPstream::read ( commsType, neighbProcNo(), reinterpret_cast<char*>(f.begin()), f.byteSize(), tag() ); } else if (commsType == Pstream::nonBlocking) { memcpy(f.begin(), receiveBuf_.begin(), f.byteSize()); } else { FatalErrorIn("processorLduInterface::receive") << "Unsupported communications type " << commsType << exit(FatalError); } }
void Foam::processorLduInterface::send ( const Pstream::commsTypes commsType, const UList<Type>& f ) const { if (commsType == Pstream::blocking || commsType == Pstream::scheduled) { OPstream::write ( commsType, neighbProcNo(), reinterpret_cast<const char*>(f.begin()), f.byteSize(), tag() ); } else if (commsType == Pstream::nonBlocking) { resizeBuf(receiveBuf_, f.size()*sizeof(Type)); IPstream::read ( commsType, neighbProcNo(), receiveBuf_.begin(), receiveBuf_.size(), tag() ); resizeBuf(sendBuf_, f.byteSize()); memcpy(sendBuf_.begin(), f.begin(), f.byteSize()); OPstream::write ( commsType, neighbProcNo(), sendBuf_.begin(), f.byteSize(), tag() ); } else { FatalErrorIn("processorLduInterface::send") << "Unsupported communications type " << commsType << exit(FatalError); } }