mirror of
https://github.com/PhasicFlow/phasicFlow.git
synced 2025-07-08 03:07:03 +00:00
Particle insertion is added with anyList
- collision check is not active yet. - variable velocity is not active yet. - events and messages are not active yet.
This commit is contained in:
@ -17,11 +17,51 @@ Licence:
|
||||
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
-----------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
template<class T, class MemorySpace>
|
||||
bool pFlow::internalField<T, MemorySpace>::insert(const anyList& varList)
|
||||
{
|
||||
const word eventName = message::eventName(message::ITEM_INSERT);
|
||||
|
||||
const auto& indices = varList.getObject<uint32IndexContainer>(
|
||||
eventName);
|
||||
bool success = false;
|
||||
output<<"insert for field "<< name()<<endl;
|
||||
|
||||
if(varList.contains(name()))
|
||||
{
|
||||
// a single value is assigned
|
||||
T val = varList.getObject<T>(name());
|
||||
success = field_.insertSetElement(indices, val);
|
||||
|
||||
}
|
||||
else if(varList.contains(name()+"Vector"))
|
||||
{
|
||||
// a vector of values is going to be assigned
|
||||
const auto& valVec = varList.getObject<Vector<T>>(name()+"Vector");
|
||||
success = field_.insertSetElement(indices,valVec);
|
||||
}
|
||||
else
|
||||
{
|
||||
success = field_.insertSetElement(indices, defaultValue_);
|
||||
}
|
||||
|
||||
if(!success)
|
||||
{
|
||||
fatalErrorInFunction;
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
template<class T, class MemorySpace>
|
||||
pFlow::internalField<T, MemorySpace>::internalField
|
||||
(
|
||||
const word& name,
|
||||
const internalPoints& internal
|
||||
const internalPoints& internal,
|
||||
const T& defVal
|
||||
)
|
||||
:
|
||||
observer
|
||||
@ -37,6 +77,7 @@ pFlow::internalField<T, MemorySpace>::internalField
|
||||
internal.size(),
|
||||
RESERVE()
|
||||
),
|
||||
defaultValue_(defVal),
|
||||
internalPoints_(internal)
|
||||
{}
|
||||
|
||||
@ -45,6 +86,7 @@ pFlow::internalField<T, MemorySpace>::internalField
|
||||
(
|
||||
const word &name,
|
||||
const internalPoints &internal,
|
||||
const T& defVal,
|
||||
const T &val
|
||||
)
|
||||
:
|
||||
@ -61,6 +103,7 @@ pFlow::internalField<T, MemorySpace>::internalField
|
||||
internal.size(),
|
||||
RESERVE()
|
||||
),
|
||||
defaultValue_(defVal),
|
||||
internalPoints_(internal)
|
||||
{
|
||||
fillInternal(val);
|
||||
@ -131,8 +174,7 @@ bool pFlow::internalField<T, MemorySpace>:: hearChanges
|
||||
}
|
||||
if(msg.equivalentTo(message::ITEM_INSERT))
|
||||
{
|
||||
notImplementedFunction;
|
||||
return false;
|
||||
return insert(varList);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -52,8 +52,13 @@ public:
|
||||
|
||||
protected:
|
||||
|
||||
/// Field
|
||||
FieldType field_;
|
||||
|
||||
/// @brief value when a new item is added to field
|
||||
T defaultValue_;
|
||||
|
||||
/// const ref to internal points
|
||||
const internalPoints& internalPoints_;
|
||||
|
||||
static inline
|
||||
@ -66,15 +71,19 @@ protected:
|
||||
message::ITEM_DELETE
|
||||
);
|
||||
|
||||
bool insert(const anyList& varList);
|
||||
|
||||
public:
|
||||
|
||||
internalField(
|
||||
const word& name,
|
||||
const internalPoints& internal);
|
||||
const internalPoints& internal,
|
||||
const T& defVal);
|
||||
|
||||
internalField(
|
||||
const word& name,
|
||||
const internalPoints& internal,
|
||||
const T& defVal,
|
||||
const T& val);
|
||||
|
||||
inline
|
||||
@ -142,6 +151,12 @@ public:
|
||||
return field_.fieldKey();
|
||||
}
|
||||
|
||||
inline
|
||||
const T& defaultValue()const
|
||||
{
|
||||
return defaultValue_;
|
||||
}
|
||||
|
||||
inline
|
||||
auto activeRange()const
|
||||
{
|
||||
|
Reference in New Issue
Block a user