# PhasicFlow: src/Interaction/interaction/interaction.hpp Source File
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.

interaction.hpp
Go to the documentation of this file.
/*------------------------------- phasicFlow ---------------------------------
O C enter of
O O E ngineering and
O O M ultiscale modeling of
OOOOOOO F luid flow
------------------------------------------------------------------------------
Copyright (C): www.cemf.ir
email: hamid.r.norouzi AT gmail.com
------------------------------------------------------------------------------
Licence:
This file is part of phasicFlow code. It is a free software for simulating
granular and multiphase flows. You can redistribute it and/or modify it under
the terms of GNU General Public License v3 or any other later versions.
phasicFlow is distributed to help others in their research in the field of
granular and multiphase flows, but WITHOUT ANY WARRANTY; without even the
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-----------------------------------------------------------------------------*/
#ifndef __interaction_hpp__
#define __interaction_hpp__
#include "demComponent.hpp"
#include "property.hpp"
#include "observer.hpp"
#include "systemControl.hpp"
#include "contactSearch.hpp"
namespace pFlow
{
class particles;
class geometry;
class interaction
:
public property,
public observer,
public demComponent
{
private:
const particles& particles_;
const geometry& geometry_;
static inline
const message msg_ = message::ITEM_REARRANGE;
public:
TypeInfo("interaction");
interaction(
systemControl& control,
const particles& prtcl,
const geometry& geom );
~interaction() override = default;
create_vCtor
(
interaction,
systemControl,
(
systemControl& control,
const particles& prtcl,
const geometry& geom
),
(control, prtcl, geom)
);
inline
const auto& Particles()const
{
return particles_;
}
inline
const auto& Geometry()const
{
return geometry_;
}
static
uniquePtr<interaction> create(
systemControl& control,
const particles& prtcl,
const geometry& geom);
};
}
#endif //__interaction_hpp__
pFlow::observer
Definition: observer.hpp:33
pFlow::message
Definition: message.hpp:33
pFlow::demComponent::control
const auto & control() const
Const ref to systemControl.
Definition: demComponent.hpp:88
pFlow::interaction::~interaction
~interaction() override=default
pFlow::interaction::geometry_
const geometry & geometry_
reference to geometry object
Definition: interaction.hpp:51
systemControl.hpp
observer.hpp
pFlow::interaction::create
static uniquePtr< interaction > create(systemControl &control, const particles &prtcl, const geometry &geom)
Definition: interaction.cpp:48
pFlow::systemControl
Definition: systemControl.hpp:41
pFlow::interaction::Geometry
const auto & Geometry() const
Definition: interaction.hpp:89
pFlow::interaction::TypeInfo
TypeInfo("interaction")
pFlow::message::ITEM_REARRANGE
@ ITEM_REARRANGE
Definition: message.hpp:44
pFlow
Definition: demGeometry.hpp:27
pFlow::interaction::create_vCtor
create_vCtor(interaction, systemControl,(systemControl &control, const particles &prtcl, const geometry &geom),(control, prtcl, geom))
pFlow::particles
Definition: particles.hpp:33
pFlow::demComponent
A base class for every main component of DEM system.
Definition: demComponent.hpp:42
pFlow::interaction::Particles
const auto & Particles() const
Definition: interaction.hpp:83
pFlow::interaction::msg_
static const message msg_
Definition: interaction.hpp:54
pFlow::interaction::particles_
const particles & particles_
reference to particles object
Definition: interaction.hpp:48
pFlow::property
property holds the pure properties of materials.
Definition: property.hpp:37
demComponent.hpp
pFlow::uniquePtr
Definition: uniquePtr.hpp:42
pFlow::geometry
Base class for geometry for managing tri-surfaces, geometry motion, and surface physical properties.
Definition: geometry.hpp:44
contactSearch.hpp
property.hpp
pFlow::interaction::interaction
interaction(systemControl &control, const particles &prtcl, const geometry &geom)
Definition: interaction.cpp:27
pFlow::interaction
Definition: interaction.hpp:38