Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Friends | List of all members
polyPatch Class Reference

A patch is a list of labels that address the faces in the global face list. More...

Inheritance diagram for polyPatch:
Inheritance graph
[legend]
Collaboration diagram for polyPatch:
Collaboration graph
[legend]

Public Member Functions

 TypeName ("patch")
 
 declareRunTimeSelectionTable (autoPtr, polyPatch, word,(const word &name, const label size, const label start, const label index, const polyBoundaryMesh &bm, const word &patchType),(name, size, start, index, bm, patchType))
 
 declareRunTimeSelectionTable (autoPtr, polyPatch, dictionary,(const word &name, const dictionary &dict, const label index, const polyBoundaryMesh &bm, const word &patchType),(name, dict, index, bm, patchType))
 
 polyPatch (const word &name, const label size, const label start, const label index, const polyBoundaryMesh &bm, const word &patchType)
 
 polyPatch (const word &name, const label size, const label start, const label index, const polyBoundaryMesh &bm, const word &physicalType, const wordList &inGroups)
 
 polyPatch (const word &name, const dictionary &dict, const label index, const polyBoundaryMesh &bm, const word &patchType)
 
 polyPatch (const polyPatch &, const polyBoundaryMesh &)
 
 polyPatch (const polyPatch &pp, const polyBoundaryMesh &bm, const label index, const label newSize, const label newStart)
 
 polyPatch (const polyPatch &pp, const polyBoundaryMesh &bm, const label index, const labelUList &mapAddressing, const label newStart)
 
 polyPatch (const polyPatch &p)
 
 polyPatch (const polyPatch &p, const labelList &faceCells)
 
virtual autoPtr< polyPatchclone (const labelList &faceCells) const
 
virtual autoPtr< polyPatchclone (const polyBoundaryMesh &bm) const
 
virtual autoPtr< polyPatchclone (const polyBoundaryMesh &bm, const label index, const label newSize, const label newStart) const
 
virtual autoPtr< polyPatchclone (const polyBoundaryMesh &bm, const label index, const labelUList &mapAddressing, const label newStart) const
 
virtual ~polyPatch ()
 
virtual void newInternalProcFaces (label &, label &) const
 
virtual const labelUListnbrCells () const
 
virtual label neighbPolyPatchID () const
 
virtual refPtr< labelListListmapCollocatedFaces () const
 
virtual bool masterImplicit () const
 
virtual word neighbRegionID () const
 
label offset () const
 
label start () const
 
labelRange range () const
 
const polyBoundaryMeshboundaryMesh () const
 
virtual bool coupled () const
 
template<class T >
const UIndirectList< TpatchInternalList (const UList< T > &internalValues) const
 
template<class T >
const List< T >::subList patchSlice (const UList< T > &l) const
 
template<class T >
const Field< T >::subField patchSlice (const Field< T > &l) const
 
virtual void write (Ostream &os) const
 
const vectorField::subField faceCentres () const
 
const vectorField::subField faceAreas () const
 
tmp< vectorFieldfaceCellCentres () const
 
tmp< scalarFieldareaFraction () const
 
const labelUListfaceCells () const
 
const labelListmeshEdges () const
 
virtual void clearAddressing ()
 
label whichFace (const label l) const
 
virtual void initOrder (PstreamBuffers &, const primitivePatch &) const
 
virtual bool order (PstreamBuffers &, const primitivePatch &, labelList &faceMap, labelList &rotation) const
 
virtual bool changeTopology () const
 
virtual bool setTopology (polyTopoChange &)
 
void operator= (const polyPatch &)
 
- Public Member Functions inherited from patchIdentifier
 patchIdentifier (const patchIdentifier &)=default
 
patchIdentifieroperator= (const patchIdentifier &)=default
 
virtual ~patchIdentifier ()=default
 
 patchIdentifier ()
 
 patchIdentifier (const word &name, const label index)
 
 patchIdentifier (const word &name, const label index, const word &physicalType, const wordList &inGroups=wordList())
 
 patchIdentifier (const word &name, const dictionary &dict, const label index)
 
 patchIdentifier (const patchIdentifier &ident, const label index)
 
const wordname () const noexcept
 
wordname () noexcept
 
label index () const noexcept
 
label & index () noexcept
 
const wordphysicalType () const noexcept
 
wordphysicalType () noexcept
 
const wordListinGroups () const noexcept
 
wordListinGroups () noexcept
 
bool inGroup (const word &name) const
 
void write (Ostream &os) const
 
- Public Member Functions inherited from PrimitivePatch< FaceList, PointField >
 PrimitivePatch (const FaceList &faces, const PointField &points)
 
 PrimitivePatch (FaceList &&faces, const PointField &points)
 
 PrimitivePatch (FaceList &faces, PointField &points, const bool reuse)
 
 PrimitivePatch (const PrimitivePatch< FaceList, PointField > &pp)
 
virtual ~PrimitivePatch ()
 
void clearOut ()
 
void clearGeom ()
 
void clearTopology ()
 
void clearPatchMeshAddr ()
 
void swap (PrimitivePatch &)=delete
 
const Field< point_type > & points () const noexcept
 
label nFaces () const noexcept
 
label nPoints () const
 
label nEdges () const
 
const edgeListedges () const
 
const edgeList::subList internalEdges () const
 
const edgeList::subList boundaryEdges () const
 
label nInternalEdges () const
 
label nBoundaryEdges () const
 
bool isInternalEdge (const label edgei) const
 
const labelListboundaryPoints () const
 
const labelListListfaceFaces () const
 
const labelListListedgeFaces () const
 
const labelListListfaceEdges () const
 
const labelListListpointEdges () const
 
const labelListListpointFaces () const
 
const List< face_type > & localFaces () const
 
labelList boundaryFaces () const
 
labelList uniqBoundaryFaces () const
 
const labelListmeshPoints () const
 
const Map< label > & meshPointMap () const
 
const Field< point_type > & localPoints () const
 
const labelListlocalPointOrder () const
 
label whichPoint (const label gp) const
 
edge meshEdge (const label edgei) const
 
edge meshEdge (const edge &e) const
 
label findEdge (const edge &e) const
 
labelList meshEdges (const edgeList &allEdges, const labelListList &cellEdges, const labelList &faceCells) const
 
labelList meshEdges (const edgeList &allEdges, const labelListList &pointEdges) const
 
label meshEdge (const label edgei, const edgeList &allEdges, const labelListList &pointEdges) const
 
labelList meshEdges (const labelUList &edgeLabels, const edgeList &allEdges, const labelListList &pointEdges) const
 
const Field< point_type > & faceCentres () const
 
const Field< point_type > & faceAreas () const
 
const Field< scalar > & magFaceAreas () const
 
const Field< point_type > & faceNormals () const
 
const Field< point_type > & pointNormals () const
 
bool hasFaceAreas () const
 
bool hasFaceCentres () const
 
bool hasFaceNormals () const
 
bool hasPointNormals () const
 
bool hasBoundaryPoints () const
 
bool hasFaceFaces () const
 
bool hasEdgeFaces () const
 
bool hasFaceEdges () const
 
bool hasPointEdges () const
 
bool hasPointFaces () const
 
bool hasMeshPointMap () const
 
template<class ToPatch >
List< objectHitprojectPoints (const ToPatch &targetPatch, const Field< point_type > &projectionDirection, const intersection::algorithm=intersection::FULL_RAY, const intersection::direction=intersection::VECTOR) const
 
template<class ToPatch >
List< objectHitprojectFaceCentres (const ToPatch &targetPatch, const Field< point_type > &projectionDirection, const intersection::algorithm=intersection::FULL_RAY, const intersection::direction=intersection::VECTOR) const
 
const labelListListedgeLoops () const
 
surfaceTopo surfaceType () const
 
bool checkTopology (const bool report=false, labelHashSet *setPtr=nullptr) const
 
bool checkPointManifold (const bool report=false, labelHashSet *setPtr=nullptr) const
 
virtual void movePoints (const Field< point_type > &)
 
void operator= (const PrimitivePatch< FaceList, PointField > &rhs)
 
void operator= (PrimitivePatch< FaceList, PointField > &&rhs)
 
label whichEdge (const edge &e) const
 
template<class ToPatch >
Foam::List< Foam::objectHitprojectPoints (const ToPatch &targetPatch, const Field< typename Foam::PrimitivePatch< FaceList, PointField >::point_type > &projectionDirection, const intersection::algorithm alg, const intersection::direction dir) const
 
template<class ToPatch >
Foam::List< Foam::objectHitprojectFaceCentres (const ToPatch &targetPatch, const Field< typename Foam::PrimitivePatch< FaceList, PointField >::point_type > &projectionDirection, const intersection::algorithm alg, const intersection::direction dir) const
 
- Public Member Functions inherited from PrimitivePatchBase
 ClassName ("PrimitivePatch")
 
 PrimitivePatchBase ()=default
 

Static Public Member Functions

static autoPtr< polyPatchNew (const word &patchType, const word &name, const label size, const label start, const label index, const polyBoundaryMesh &bm)
 
static autoPtr< polyPatchNew (const word &name, const dictionary &dict, const label index, const polyBoundaryMesh &bm)
 
static autoPtr< polyPatchNew (const word &patchType, const word &name, const dictionary &dict, const label index, const polyBoundaryMesh &bm)
 
static bool constraintType (const word &pt)
 
static wordList constraintTypes ()
 
- Static Public Member Functions inherited from patchIdentifier
static word defaultName (const label n=-1)
 

Static Public Attributes

static int disallowGenericPolyPatch
 

Protected Member Functions

virtual void initGeometry (PstreamBuffers &)
 
virtual void calcGeometry (PstreamBuffers &)
 
virtual void initMovePoints (PstreamBuffers &, const pointField &)
 
virtual void movePoints (PstreamBuffers &, const pointField &p)
 
virtual void initUpdateMesh (PstreamBuffers &)
 
virtual void updateMesh (PstreamBuffers &)
 
virtual void clearGeom ()
 
virtual void movePoints (const Field< point_type > &)
 

Friends

class polyBoundaryMesh
 
Ostreamoperator<< (Ostream &, const polyPatch &)
 

Additional Inherited Members

- Public Types inherited from PrimitivePatch< FaceList, PointField >
enum  surfaceTopo { MANIFOLD, OPEN, ILLEGAL }
 
typedef std::remove_reference< FaceList >::type::value_type face_type
 
typedef std::remove_reference< PointField >::type::value_type point_type
 
typedef FaceList FaceListType
 
typedef PointField PointFieldType
 
typedef face_type FaceType
 

Detailed Description

A patch is a list of labels that address the faces in the global face list.

The patch can calculate its own edges based on the global faces. Patch also contains all addressing between the faces.

Source files

Definition at line 64 of file polyPatch.H.

Constructor & Destructor Documentation

◆ polyPatch() [1/8]

polyPatch ( const word name,
const label  size,
const label  start,
const label  index,
const polyBoundaryMesh bm,
const word patchType 
)

Definition at line 76 of file polyPatch.C.

◆ polyPatch() [2/8]

polyPatch ( const word name,
const label  size,
const label  start,
const label  index,
const polyBoundaryMesh bm,
const word physicalType,
const wordList inGroups 
)

Definition at line 104 of file polyPatch.C.

◆ polyPatch() [3/8]

polyPatch ( const word name,
const dictionary dict,
const label  index,
const polyBoundaryMesh bm,
const word patchType 
)

Definition at line 128 of file polyPatch.C.

References List::appendUniq().

Here is the call graph for this function:

◆ polyPatch() [4/8]

polyPatch ( const polyPatch pp,
const polyBoundaryMesh bm 
)

Definition at line 160 of file polyPatch.C.

◆ polyPatch() [5/8]

polyPatch ( const polyPatch pp,
const polyBoundaryMesh bm,
const label  index,
const label  newSize,
const label  newStart 
)

Definition at line 184 of file polyPatch.C.

◆ polyPatch() [6/8]

polyPatch ( const polyPatch pp,
const polyBoundaryMesh bm,
const label  index,
const labelUList mapAddressing,
const label  newStart 
)

Definition at line 211 of file polyPatch.C.

◆ polyPatch() [7/8]

polyPatch ( const polyPatch p)

Definition at line 237 of file polyPatch.C.

◆ polyPatch() [8/8]

polyPatch ( const polyPatch p,
const labelList faceCells 
)

Definition at line 249 of file polyPatch.C.

◆ ~polyPatch()

~polyPatch ( )
virtual

Definition at line 262 of file polyPatch.C.

Member Function Documentation

◆ initGeometry()

virtual void initGeometry ( PstreamBuffers )
inlineprotectedvirtual

◆ calcGeometry()

virtual void calcGeometry ( PstreamBuffers )
inlineprotectedvirtual

◆ initMovePoints()

virtual void initMovePoints ( PstreamBuffers ,
const pointField  
)
inlineprotectedvirtual

◆ movePoints() [1/2]

void movePoints ( PstreamBuffers ,
const pointField p 
)
protectedvirtual

◆ initUpdateMesh()

virtual void initUpdateMesh ( PstreamBuffers )
inlineprotectedvirtual

◆ updateMesh()

void updateMesh ( PstreamBuffers )
protectedvirtual

◆ clearGeom()

void clearGeom ( )
protectedvirtual

Reimplemented in cyclicAMIPolyPatch, and cyclicACMIPolyPatch.

Definition at line 67 of file polyPatch.C.

References PrimitivePatch< FaceList, PointField >::clearGeom().

Referenced by cyclicAMIPolyPatch::clearGeom().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ TypeName()

TypeName ( "patch"  )

◆ declareRunTimeSelectionTable() [1/2]

declareRunTimeSelectionTable ( autoPtr  ,
polyPatch  ,
word  ,
(const word &name, const label size, const label start, const label index, const polyBoundaryMesh &bm, const word &patchType)  ,
(name, size, start, index, bm, patchType)   
)

◆ declareRunTimeSelectionTable() [2/2]

declareRunTimeSelectionTable ( autoPtr  ,
polyPatch  ,
dictionary  ,
(const word &name, const dictionary &dict, const label index, const polyBoundaryMesh &bm, const word &patchType)  ,
(name, dict, index, bm, patchType)   
)

◆ clone() [1/4]

virtual autoPtr<polyPatch> clone ( const labelList faceCells) const
inlinevirtual

Definition at line 231 of file polyPatch.H.

References autoPtr::New().

Referenced by boundaryMesh::patchify().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ clone() [2/4]

virtual autoPtr<polyPatch> clone ( const polyBoundaryMesh bm) const
inlinevirtual

◆ clone() [3/4]

virtual autoPtr<polyPatch> clone ( const polyBoundaryMesh bm,
const label  index,
const label  newSize,
const label  newStart 
) const
inlinevirtual

◆ clone() [4/4]

virtual autoPtr<polyPatch> clone ( const polyBoundaryMesh bm,
const label  index,
const labelUList mapAddressing,
const label  newStart 
) const
inlinevirtual

◆ New() [1/3]

Foam::autoPtr< Foam::polyPatch > New ( const word patchType,
const word name,
const label  size,
const label  start,
const label  index,
const polyBoundaryMesh bm 
)
static

◆ New() [2/3]

Foam::autoPtr< Foam::polyPatch > New ( const word name,
const dictionary dict,
const label  index,
const polyBoundaryMesh bm 
)
static

Definition at line 67 of file polyPatchNew.C.

References DebugInFunction, dict, Foam::endl(), Foam::name(), and Foam::New().

Here is the call graph for this function:

◆ New() [3/3]

Foam::autoPtr< Foam::polyPatch > New ( const word patchType,
const word name,
const dictionary dict,
const label  index,
const polyBoundaryMesh bm 
)
static

Definition at line 84 of file polyPatchNew.C.

References DebugInFunction, dict, Foam::endl(), Foam::exit(), Foam::FatalIOError, FatalIOErrorInLookup, and Foam::name().

Here is the call graph for this function:

◆ newInternalProcFaces()

virtual void newInternalProcFaces ( label &  ,
label &   
) const
inlinevirtual

Reimplemented in cyclicPolyPatch, mappedWallPolyPatch, mappedPolyPatch, cyclicAMIPolyPatch, and cyclicACMIPolyPatch.

Definition at line 312 of file polyPatch.H.

References NotImplemented.

Referenced by lduPrimitiveMeshAssembly::update().

Here is the caller graph for this function:

◆ nbrCells()

virtual const labelUList& nbrCells ( ) const
inlinevirtual

Reimplemented in cyclicAMIPolyPatch, cyclicPolyPatch, mappedWallPolyPatch, and mappedPolyPatch.

Definition at line 318 of file polyPatch.H.

References NotImplemented, and UList::null().

Referenced by lduPrimitiveMeshAssembly::update().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ neighbPolyPatchID()

virtual label neighbPolyPatchID ( ) const
inlinevirtual

Reimplemented in cyclicAMIPolyPatch, cyclicPolyPatch, mappedWallPolyPatch, and mappedPolyPatch.

Definition at line 325 of file polyPatch.H.

References NotImplemented.

Referenced by fvMatrix< Type >::mapContributions(), and lduPrimitiveMeshAssembly::update().

Here is the caller graph for this function:

◆ mapCollocatedFaces()

virtual refPtr<labelListList> mapCollocatedFaces ( ) const
inlinevirtual

Reimplemented in cyclicAMIPolyPatch, cyclicPolyPatch, cyclicACMIPolyPatch, mappedWallPolyPatch, and mappedPolyPatch.

Definition at line 332 of file polyPatch.H.

References NotImplemented.

Referenced by lduPrimitiveMeshAssembly::update().

Here is the caller graph for this function:

◆ masterImplicit()

virtual bool masterImplicit ( ) const
inlinevirtual

◆ neighbRegionID()

virtual word neighbRegionID ( ) const
inlinevirtual

Reimplemented in mappedWallPolyPatch, and mappedPolyPatch.

Definition at line 346 of file polyPatch.H.

Referenced by lduPrimitiveMeshAssembly::findNbrMeshId().

Here is the caller graph for this function:

◆ offset()

Foam::label offset ( ) const

Definition at line 302 of file polyPatch.C.

Referenced by preservePatches::apply(), cyclicPolyPatch::transformGlobalFace(), and Foam::ensightOutput::writeVolField().

Here is the caller graph for this function:

◆ start()

label start ( ) const
inline

Definition at line 357 of file polyPatch.H.

Referenced by preservePatches::add(), polyMeshAdder::add(), cyclicAMIPolyPatch::addAMIFaces(), polyTopoChange::addMesh(), fvMeshTools::addPatch(), meshRefinement::addPatch(), cellToFaceStencil::allCoupledFacesPatch(), cellToFaceStencil::calcFaceStencil(), polyDualMesh::calcFeatures(), FaceCellWave< Type, int >::checkCyclic(), hexRef8::checkMesh(), particle< Type >::correctAfterParallelTransfer(), globalMeshData::coupledPatch(), meshRefinement::createBaffles(), structuredDecomp::decompose(), Bezier::dndbBasedSensitivities(), NURBS3DVolume::dndbBasedSensitivities(), faceCoupleInfo::faceLabels(), polyMeshTools::faceOrthogonality(), mappedPatchBase::facePoints(), polyMeshTools::faceSkewness(), polyMeshTools::faceWeights(), patchProbes::findElements(), externalDisplacementMeshMover::getPatch(), particle< Type >::hitCyclicACMIPatch(), particle< Type >::hitCyclicAMIPatch(), fluxSummary::initialiseCellZoneAndDirection(), isoSurfacePoint::isoSurfacePoint(), meshRefinement::makePatch(), combine< Type, TrackingData >::operator()(), polyMeshAdder::patchFacePairs(), boundaryMesh::patchify(), PatchCollisionDensity< CloudType >::postPatch(), fvMeshDistribute::printMeshInfo(), boundaryMesh::read(), cyclicAMIPolyPatch::removeAMIFaces(), structuredRenumber::renumber(), snappySnapDriver::repatchToSurface(), sampledPatchInternalField::sampleOnPoints(), sampledPatch::sampleOnPoints(), sampledFaceZone::sampleOnPoints(), fvMeshSubset::setCellSubset(), rotorDiskSource::setFaceArea(), lumpedPointMovement::setPatchControl(), removeFaces::setRefinement(), fvPatch::start(), syncTools::syncBoundaryFaceList(), syncTools::syncFaceList(), meshRefinement::testSyncBoundaryFaceList(), cyclicPolyPatch::transformGlobalFace(), sampledPatch::update(), cellToFaceStencil::validBoundaryFaces(), polyMeshTools::volRatio(), wallLayerCells::wallLayerCells(), regionSizeDistribution::write(), and meshRefinement::zonify().

◆ range()

labelRange range ( ) const
inline

Definition at line 363 of file polyPatch.H.

Referenced by mappedPatchBase::findLocalSamples(), labelRangeOp< polyPatch >::operator()(), and perfectInterface::setRefinement().

Here is the caller graph for this function:

◆ boundaryMesh()

◆ coupled()

virtual bool coupled ( ) const
inlinevirtual

◆ constraintType()

bool constraintType ( const word pt)
static

Definition at line 270 of file polyPatch.C.

References found.

Referenced by Foam::evaluateConstraintTypes(), surfaceDistance::execute(), KinematicParcel::hitPatch(), meshRefinement::meshedPatches(), and Foam::reusable().

Here is the caller graph for this function:

◆ constraintTypes()

Foam::wordList constraintTypes ( )
static

Definition at line 280 of file polyPatch.C.

References forAllConstIters(), and List::setSize().

Here is the call graph for this function:

◆ patchInternalList()

const UIndirectList<T> patchInternalList ( const UList< T > &  internalValues) const
inline

Definition at line 387 of file polyPatch.H.

References polyPatch::faceCells().

Here is the call graph for this function:

◆ patchSlice() [1/2]

const List<T>::subList patchSlice ( const UList< T > &  l) const
inline

Definition at line 396 of file polyPatch.H.

Referenced by isoSurfacePoint::isoSurfacePoint().

Here is the caller graph for this function:

◆ patchSlice() [2/2]

const Field<T>::subField patchSlice ( const Field< T > &  l) const
inline

Definition at line 403 of file polyPatch.H.

◆ write()

void write ( Ostream os) const
virtual

◆ faceCentres()

const Foam::vectorField::subField faceCentres ( ) const

◆ faceAreas()

const Foam::vectorField::subField faceAreas ( ) const

◆ faceCellCentres()

Foam::tmp< Foam::vectorField > faceCellCentres ( ) const

Definition at line 326 of file polyPatch.C.

References forAll, and tmp::ref().

Here is the call graph for this function:

◆ areaFraction()

Foam::tmp< Foam::scalarField > areaFraction ( ) const

Definition at line 345 of file polyPatch.C.

References forAll, face::mag(), Foam::mag(), points, and tmp::ref().

Here is the call graph for this function:

◆ faceCells()

const Foam::labelUList & faceCells ( ) const

◆ meshEdges()

const Foam::labelList & meshEdges ( ) const

Definition at line 378 of file polyPatch.C.

References mesh, and PrimitivePatch< FaceList, PointField >::meshEdges().

Here is the call graph for this function:

◆ clearAddressing()

void clearAddressing ( )
virtual

◆ whichFace()

label whichFace ( const label  l) const
inline

◆ initOrder()

void initOrder ( PstreamBuffers ,
const primitivePatch  
) const
virtual

◆ order()

bool order ( PstreamBuffers ,
const primitivePatch ,
labelList faceMap,
labelList rotation 
) const
virtual

◆ changeTopology()

virtual bool changeTopology ( ) const
inlinevirtual

Reimplemented in cyclicAMIPolyPatch.

Definition at line 469 of file polyPatch.H.

Referenced by dynamicMotionSolverFvMeshAMI::update().

Here is the caller graph for this function:

◆ setTopology()

virtual bool setTopology ( polyTopoChange )
inlinevirtual

Reimplemented in cyclicAMIPolyPatch.

Definition at line 475 of file polyPatch.H.

◆ operator=()

void operator= ( const polyPatch p)

Definition at line 434 of file polyPatch.C.

References patchIdentifier::operator=(), PrimitivePatch< FaceList, PointField >::operator=(), and p.

Here is the call graph for this function:

◆ movePoints() [2/2]

void movePoints
protected

Definition at line 164 of file PrimitivePatch.C.

Friends And Related Function Documentation

◆ polyBoundaryMesh

friend class polyBoundaryMesh
friend

Definition at line 92 of file polyPatch.H.

◆ operator<<

Ostream& operator<< ( Ostream ,
const polyPatch  
)
friend

Member Data Documentation

◆ disallowGenericPolyPatch

int disallowGenericPolyPatch
static

Definition at line 126 of file polyPatch.H.


The documentation for this class was generated from the following files: