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:
Hamidreza Norouzi
2024-04-12 22:39:09 -07:00
parent 97f0ddf82e
commit 9c2a9a81b0
71 changed files with 1878 additions and 1534 deletions

View File

@ -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;
}

View File

@ -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
{