//#####################################################################
// Function Update
//#####################################################################
template<int d,class T_ARRAY> void FORCE_ELEMENTS::
Update(const ARRAY_BASE<VECTOR<int,d>,T_ARRAY>& base_elements,const ARRAY<bool>& particle_is_simulated)
{
    const T_ARRAY& elements=base_elements.Derived();
    indices.Remove_All();
    for(int i=1;i<=elements.Size();i++)
        if(particle_is_simulated.Subset(elements(i)).Contains(true))
            indices.Append(i);
}
//#####################################################################
// Function Mark_Nodes_Referenced
//#####################################################################
template<int d> template<class T> void SIMPLEX_MESH<d>::
Mark_Nodes_Referenced(ARRAY<T>& marks,const T& mark) const
{
    for(int e=1;e<=elements.m;e++){INDIRECT_ARRAY<ARRAY<T>,VECTOR<int,d+1>&> subset=marks.Subset(elements(e));ARRAYS_COMPUTATIONS::Fill(subset,mark);}
}
//#####################################################################
// Function Mark_Nodes_Referenced
//#####################################################################
void HEXAHEDRON_MESH::
Mark_Nodes_Referenced(ARRAY<int>& marks,const int mark) const
{
    for(int e=1;e<=elements.m;e++){INDIRECT_ARRAY<ARRAY<int>,VECTOR<int,8>&> subset=marks.Subset(elements(e));ARRAYS_COMPUTATIONS::Fill(subset,mark);}
}