Added virtual function for fvPatch slicing: support for immersed boundary

This commit is contained in:
Hrvoje Jasak 2018-10-24 16:53:25 +01:00
parent f60da6ec49
commit d05d477f30
3 changed files with 25 additions and 3 deletions

View file

@ -74,11 +74,18 @@ public:
// Access // Access
//- Return patch size
virtual label size() const virtual label size() const
{ {
return 0; return 0;
} }
//- Return patch slice size
virtual label sliceSize() const
{
return 0;
}
//- Return faceCells of zero size //- Return faceCells of zero size
virtual const unallocLabelList& faceCells() const; virtual const unallocLabelList& faceCells() const;
}; };

View file

@ -191,12 +191,18 @@ public:
return polyPatch_.name(); return polyPatch_.name();
} }
//- Return size //- Return patch size
virtual label size() const virtual label size() const
{ {
return polyPatch_.size(); return polyPatch_.size();
} }
//- Return patch slice size. Immersed boundary support
virtual label sliceSize() const
{
return size();
}
//- Return true if this patch is coupled //- Return true if this patch is coupled
virtual bool coupled() const virtual bool coupled() const
{ {
@ -233,11 +239,12 @@ public:
{ {
return typename List<T>::subList return typename List<T>::subList
( (
l, size(), l, sliceSize(),
polyPatch_.start() polyPatch_.start()
); );
} }
//- Slice list to patch
template<class T> template<class T>
const typename Field<T>::subField patchSlice const typename Field<T>::subField patchSlice
( (
@ -246,7 +253,7 @@ public:
{ {
return typename Field<T>::subField return typename Field<T>::subField
( (
l, size(), l, sliceSize(),
polyPatch_.start() polyPatch_.start()
); );
} }

View file

@ -152,6 +152,14 @@ public:
//- Return size equal to number of intersected cells //- Return size equal to number of intersected cells
virtual label size() const; virtual label size() const;
//- Return patch slice size
// Note: since the immersed boundary patch keeps the faces
// in a separate list, slicing is not allowed. HJ, 10/Oct/2018
virtual label sliceSize() const
{
return 0;
}
//- Return faceCells next to the IB surface //- Return faceCells next to the IB surface
virtual const unallocLabelList& faceCells() const; virtual const unallocLabelList& faceCells() const;