$treeview $search $mathjax
|
Palabos
Version 1.1
$projectbrief
|
$projectbrief
|
$searchbox |
00001 /* This file is part of the Palabos library. 00002 * 00003 * Copyright (C) 2011 FlowKit Sarl 00004 * Avenue de Chailly 23 00005 * 1012 Lausanne, Switzerland 00006 * E-mail contact: contact@flowkit.com 00007 * 00008 * The most recent release of Palabos can be downloaded at 00009 * <http://www.palabos.org/> 00010 * 00011 * The library Palabos is free software: you can redistribute it and/or 00012 * modify it under the terms of the GNU Affero General Public License as 00013 * published by the Free Software Foundation, either version 3 of the 00014 * License, or (at your option) any later version. 00015 * 00016 * The library is distributed in the hope that it will be useful, 00017 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00018 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00019 * GNU Affero General Public License for more details. 00020 * 00021 * You should have received a copy of the GNU Affero General Public License 00022 * along with this program. If not, see <http://www.gnu.org/licenses/>. 00023 */ 00024 00030 #ifndef ATOMIC_CONTAINER_BLOCK_3D_H 00031 #define ATOMIC_CONTAINER_BLOCK_3D_H 00032 00033 #include "core/globalDefs.h" 00034 #include "atomicBlock/atomicBlock3D.h" 00035 #include "atomicBlock/atomicContainerBlock2D.h" 00036 00037 namespace plb { 00038 00039 class AtomicContainerDataTransfer3D : public BlockDataTransfer3D { 00040 public: 00041 AtomicContainerDataTransfer3D() { } 00042 virtual plint staticCellSize() const { return 0; } 00043 virtual void send(Box3D domain, std::vector<char>& buffer, modif::ModifT kind) const { } 00044 virtual void receive(Box3D domain, std::vector<char> const& buffer, modif::ModifT kind) { } 00045 virtual void receive( Box3D domain, std::vector<char> const& buffer, 00046 modif::ModifT kind, std::map<int,std::string> const& foreignIds ) { } 00047 virtual void attribute(Box3D toDomain, plint deltaX, plint deltaY, plint deltaZ, 00048 AtomicBlock3D const& from, modif::ModifT kind) { } 00049 }; 00050 00051 class AtomicContainerBlock3D : public AtomicBlock3D { 00052 public: 00053 AtomicContainerBlock3D(plint nx_, plint ny_, plint nz_); 00054 ~AtomicContainerBlock3D(); 00055 AtomicContainerBlock3D& operator=(AtomicContainerBlock3D const& rhs); 00056 AtomicContainerBlock3D(AtomicContainerBlock3D const& rhs); 00057 void swap(AtomicContainerBlock3D& rhs); 00058 public: 00059 void setData(ContainerBlockData* data_); 00060 ContainerBlockData* getData(); 00061 ContainerBlockData const* getData() const; 00062 virtual identifiers::BlockId getBlockId() const; 00063 public: 00064 virtual BlockDataTransfer3D& getDataTransfer() { 00065 return dataTransfer; 00066 } 00067 virtual BlockDataTransfer3D const& getDataTransfer() const { 00068 return dataTransfer; 00069 } 00070 private: 00071 ContainerBlockData* data; 00072 AtomicContainerDataTransfer3D dataTransfer; 00073 }; 00074 00075 } // namespace plb 00076 00077 #endif // ATOMIC_CONTAINER_BLOCK_3D_H
1.6.3
1.6.3