This is the complete list of members for processorCyclicFvPatchField< Type >, including all inherited members.
| append(const Type &) | List< Type > | inline |
| append(const UList< Type > &) | List< Type > | inline |
| append(const UIndirectList< Type > &) | List< Type > | inline |
| assignable() const | fvPatchField< Type > | inlinevirtual |
| begin() | UList< Type > | inline |
| begin() const | UList< Type > | inline |
| block(const label start) const | Field< Type > | |
| byteSize() const | UList< Type > | |
| Calculated typedef | fvPatchField< Type > | |
| calculatedType() | fvPatchField< Type > | static |
| cbegin() const | UList< Type > | inline |
| cdata() const | UList< Type > | inline |
| cend() const | UList< Type > | inline |
| check(const fvPatchField< Type > &) const | fvPatchField< Type > | |
| checkIndex(const label i) const | UList< Type > | inline |
| checkSize(const label size) const | UList< Type > | inline |
| checkStart(const label start) const | UList< Type > | inline |
| clear() | List< Type > | inline |
| clone(const DimensionedField< Type, volMesh > &iF) const | processorCyclicFvPatchField< Type > | inlinevirtual |
| clone(const fvPatch &patch, const DimensionedField< Type, volMesh > &iF) const | processorCyclicFvPatchField< Type > | inlinevirtual |
| Foam::fvPatchField::clone() const | fvPatchField< Type > | inline |
| cmptType typedef | Field< Type > | |
| comm() const | processorFvPatchField< Type > | inlinevirtual |
| component(const direction) const | Field< Type > | |
| const_iterator typedef | UList< Type > | |
| const_reference typedef | UList< Type > | |
| const_reverse_iterator typedef | UList< Type > | |
| count() const | refCount | inline |
| coupled() const | processorFvPatchField< Type > | inlinevirtual |
| coupledFvPatchField(const fvPatch &, const DimensionedField< Type, volMesh > &) | coupledFvPatchField< Type > | |
| coupledFvPatchField(const fvPatch &, const DimensionedField< Type, volMesh > &, const Field< Type > &) | coupledFvPatchField< Type > | |
| coupledFvPatchField(const fvPatch &, const DimensionedField< Type, volMesh > &, const dictionary &, const bool valueRequired=true) | coupledFvPatchField< Type > | |
| coupledFvPatchField(const coupledFvPatchField< Type > &, const fvPatch &, const DimensionedField< Type, volMesh > &, const fieldMapper &) | coupledFvPatchField< Type > | |
| coupledFvPatchField(const coupledFvPatchField< Type > &)=delete | coupledFvPatchField< Type > | |
| coupledFvPatchField(const coupledFvPatchField< Type > &, const DimensionedField< Type, volMesh > &) | coupledFvPatchField< Type > | |
| crbegin() const | UList< Type > | inline |
| crend() const | UList< Type > | inline |
| data() | UList< Type > | inline |
| db() const | fvPatchField< Type > | |
| declareRunTimeSelectionTable(tmp, fvPatchField, patch,(const fvPatch &p, const DimensionedField< Type, volMesh > &iF),(p, iF)) | fvPatchField< Type > | |
| declareRunTimeSelectionTable(tmp, fvPatchField, patchMapper,(const fvPatchField< Type > &ptf, const fvPatch &p, const DimensionedField< Type, volMesh > &iF, const fieldMapper &m),(dynamic_cast< const fvPatchFieldType & >(ptf), p, iF, m)) | fvPatchField< Type > | |
| declareRunTimeSelectionTable(tmp, fvPatchField, dictionary,(const fvPatch &p, const DimensionedField< Type, volMesh > &iF, const dictionary &dict),(p, iF, dict)) | fvPatchField< Type > | |
| deepCopy(const UList< Type > &) | UList< Type > | |
| difference_type typedef | UList< Type > | |
| disallowGenericFvPatchField | fvPatchField< Type > | static |
| empty() const | UList< Type > | inline |
| end() | UList< Type > | inline |
| end() const | UList< Type > | inline |
| evaluate(const Pstream::commsTypes commsType) | processorFvPatchField< Type > | virtual |
| evaluateNoUpdateCoeffs() | coupledFvPatchField< Type > | |
| fcIndex(const label i) const | UList< Type > | inline |
| Field() | Field< Type > | |
| Field(const label) | Field< Type > | explicit |
| Field(const label, const Type &) | Field< Type > | |
| Field(const label, const zero) | Field< Type > | |
| Field(const UList< Type > &) | Field< Type > | explicit |
| Field(List< Type > &&) | Field< Type > | explicit |
| Field(const UIndirectList< Type > &) | Field< Type > | explicit |
| Field(const Field< Type > &) | Field< Type > | |
| Field(Field< Type > &, bool reuse) | Field< Type > | |
| Field(Field< Type > &&) | Field< Type > | |
| Field(const tmp< Field< Type >> &) | Field< Type > | |
| Field(const UList< Type > &mapF, const labelUList &mapAddressing) | Field< Type > | |
| Field(const tmp< Field< Type >> &tmapF, const labelUList &mapAddressing) | Field< Type > | |
| Field(const UList< Type > &mapF, const labelListList &mapAddressing, const scalarListList &weights) | Field< Type > | |
| Field(const tmp< Field< Type >> &tmapF, const labelListList &mapAddressing, const scalarListList &weights) | Field< Type > | |
| Field(Istream &) | Field< Type > | |
| Field(const word &keyword, const dictionary &, const label size) | Field< Type > | |
| Field(const word &keyword, const unitConversion &, const dictionary &, const label size) | Field< Type > | |
| first() | UList< Type > | inline |
| first() const | UList< Type > | inline |
| fixesValue() const | fvPatchField< Type > | inlinevirtual |
| fvPatchField(const fvPatch &, const DimensionedField< Type, volMesh > &) | fvPatchField< Type > | |
| fvPatchField(const fvPatch &, const DimensionedField< Type, volMesh > &, const Field< Type > &) | fvPatchField< Type > | |
| fvPatchField(const fvPatch &, const DimensionedField< Type, volMesh > &, const dictionary &, const bool valueRequired=true) | fvPatchField< Type > | |
| fvPatchField(const fvPatchField< Type > &, const fvPatch &, const DimensionedField< Type, volMesh > &, const fieldMapper &, const bool mappingRequired=true) | fvPatchField< Type > | |
| fvPatchField(const fvPatchField< Type > &)=delete | fvPatchField< Type > | |
| fvPatchField(const fvPatchField< Type > &, const DimensionedField< Type, volMesh > &) | fvPatchField< Type > | |
| gradientBoundaryCoeffs(const scalarField &deltaCoeffs) const | coupledFvPatchField< Type > | virtual |
| gradientBoundaryCoeffs() const | coupledFvPatchField< Type > | virtual |
| gradientInternalCoeffs(const scalarField &deltaCoeffs) const | coupledFvPatchField< Type > | virtual |
| gradientInternalCoeffs() const | coupledFvPatchField< Type > | virtual |
| initEvaluate(const Pstream::commsTypes commsType) | processorFvPatchField< Type > | virtual |
| initInterfaceMatrixUpdate(scalarField &result, const scalarField &psiInternal, const scalarField &coeffs, const direction cmpt, const Pstream::commsTypes commsType) const | processorFvPatchField< Type > | virtual |
| initInterfaceMatrixUpdate(Field< Type > &result, const Field< Type > &psiInternal, const scalarField &coeffs, const Pstream::commsTypes commsType) const | processorFvPatchField< Type > | virtual |
| initInterfaceMatrixUpdate(scalarField &, const scalarField &psiInternal, const scalarField &, const direction, const Pstream::commsTypes commsType) const | processorFvPatchField< Type > | virtual |
| initInterfaceMatrixUpdate(scalarField &, const scalarField &, const scalarField &, const direction, const Pstream::commsTypes commsType) const | processorFvPatchField< Type > | virtual |
| Foam::coupledFvPatchField::initInterfaceMatrixUpdate(scalarField &, const scalarField &, const scalarField &, const direction, const Pstream::commsTypes commsType) const | LduInterfaceField< Type > | inline |
| initPatchNeighbourField(const Pstream::commsTypes commsType=Pstream::commsTypes::blocking) const | fvPatchField< Type > | inlinevirtual |
| interface() const | lduInterfaceField | inline |
| interfaceFieldType() const | lduInterfaceField | inlinevirtual |
| internalField() const | fvPatchField< Type > | inline |
| iterator typedef | UList< Type > | |
| last() | UList< Type > | inline |
| last() const | UList< Type > | inline |
| lduInterfaceField(const lduInterface &patch) | lduInterfaceField | inline |
| lduInterfaceField(const lduInterfaceField &)=delete | lduInterfaceField | |
| LduInterfaceField(const lduInterface &patch) | LduInterfaceField< Type > | inline |
| LduInterfaceField(const LduInterfaceField &)=delete | LduInterfaceField< Type > | |
| List() | List< Type > | inline |
| List(const label) | List< Type > | explicit |
| List(const label, const Type &) | List< Type > | |
| List(const label, const zero) | List< Type > | |
| List(const List< Type > &) | List< Type > | |
| List(const UList< T2 > &) | List< Type > | explicit |
| List(List< Type > &&) | List< Type > | |
| List(List< Type > &, bool reuse) | List< Type > | |
| List(const UList< Type > &, const labelUList &mapAddressing) | List< Type > | |
| List(InputIterator first, InputIterator last) | List< Type > | |
| List(const FixedList< Type, Size > &) | List< Type > | explicit |
| List(const PtrList< Type > &) | List< Type > | explicit |
| List(const SLList< Type > &) | List< Type > | explicit |
| List(const UIndirectList< Type > &) | List< Type > | explicit |
| List(const BiIndirectList< Type > &) | List< Type > | explicit |
| List(std::initializer_list< Type >) | List< Type > | |
| List(Istream &) | List< Type > | |
| manipulatedMatrix() const | fvPatchField< Type > | inline |
| manipulateMatrix(fvMatrix< Type > &matrix) | fvPatchField< Type > | virtual |
| map(const fvPatchField< Type > &, const fieldMapper &) | coupledFvPatchField< Type > | virtual |
| Foam::Field::map(const UList< Type > &mapF, const labelUList &mapAddressing) | Field< Type > | |
| Foam::Field::map(const tmp< Field< Type >> &tmapF, const labelUList &mapAddressing) | Field< Type > | |
| Foam::Field::map(const UList< Type > &mapF, const labelListList &mapAddressing, const scalarListList &weights) | Field< Type > | |
| Foam::Field::map(const tmp< Field< Type >> &tmapF, const labelListList &mapAddressing, const scalarListList &weights) | Field< Type > | |
| max_size() const | UList< Type > | inline |
| myProcNo() const | processorFvPatchField< Type > | inlinevirtual |
| negate() | Field< Type > | |
| neighbProcNo() const | processorFvPatchField< Type > | inlinevirtual |
| New(const word &, const fvPatch &, const DimensionedField< Type, volMesh > &) | fvPatchField< Type > | static |
| New(const word &, const word &actualPatchType, const fvPatch &, const DimensionedField< Type, volMesh > &) | fvPatchField< Type > | static |
| New(const fvPatchField< Type > &, const fvPatch &, const DimensionedField< Type, volMesh > &, const fieldMapper &) | fvPatchField< Type > | static |
| New(const fvPatch &, const DimensionedField< Type, volMesh > &, const dictionary &) | fvPatchField< Type > | static |
| NewCalculatedType(const fvPatch &) | fvPatchField< Type > | static |
| NewCalculatedType(const fvPatchField< Type2 > &) | fvPatchField< Type > | static |
| NewCalculatedType(const fvPatchField< Type2 > &pf) | fvPatchField< Type > | |
| Foam::Field::NewCalculatedType(const Field< Type2 > &f) | Field< Type > | inlinestatic |
| newElmt(const label) | List< Type > | inline |
| null() | Field< Type > | inlinestatic |
| operator const Foam::List< Type > &() const | UList< Type > | inline |
| operator!=(const UList< Type > &) const | UList< Type > | |
| operator*=(const fvPatchField< scalar > &) | fvPatchField< Type > | virtual |
| operator*=(const Field< scalar > &) | fvPatchField< Type > | virtual |
| operator*=(const scalar) | fvPatchField< Type > | virtual |
| Foam::Field::operator*=(const UList< scalar > &) | Field< Type > | |
| Foam::Field::operator*=(const tmp< Field< scalar >> &) | Field< Type > | |
| Foam::Field::operator*=(const scalar &) | Field< Type > | |
| operator++() | refCount | inline |
| operator++(int) | refCount | inline |
| operator+=(const fvPatchField< Type > &) | fvPatchField< Type > | virtual |
| operator+=(const Field< Type > &) | fvPatchField< Type > | virtual |
| operator+=(const Type &) | fvPatchField< Type > | virtual |
| Foam::Field::operator+=(const UList< Type > &) | Field< Type > | |
| Foam::Field::operator+=(const tmp< Field< Type >> &) | Field< Type > | |
| operator--() | refCount | inline |
| operator--(int) | refCount | inline |
| operator-=(const fvPatchField< Type > &) | fvPatchField< Type > | virtual |
| operator-=(const Field< Type > &) | fvPatchField< Type > | virtual |
| operator-=(const Type &) | fvPatchField< Type > | virtual |
| Foam::Field::operator-=(const UList< Type > &) | Field< Type > | |
| Foam::Field::operator-=(const tmp< Field< Type >> &) | Field< Type > | |
| operator/=(const fvPatchField< scalar > &) | fvPatchField< Type > | virtual |
| operator/=(const Field< scalar > &) | fvPatchField< Type > | virtual |
| operator/=(const scalar) | fvPatchField< Type > | virtual |
| Foam::Field::operator/=(const UList< scalar > &) | Field< Type > | |
| Foam::Field::operator/=(const tmp< Field< scalar >> &) | Field< Type > | |
| Foam::Field::operator/=(const scalar &) | Field< Type > | |
| operator<(const UList< Type > &) const | UList< Type > | |
| operator<=(const UList< Type > &) const | UList< Type > | |
| Foam::operator=(const LduInterfaceField &)=delete | LduInterfaceField< Type > | |
| Foam::lduInterfaceField::operator=(const lduInterfaceField &)=delete | lduInterfaceField | |
| Foam::fvPatchField::operator=(const UList< Type > &) | fvPatchField< Type > | virtual |
| Foam::fvPatchField::operator=(const fvPatchField< Type > &) | fvPatchField< Type > | virtual |
| Foam::fvPatchField::operator=(const Type &) | fvPatchField< Type > | virtual |
| Foam::Field::operator=(const Field< Type > &) | Field< Type > | |
| Foam::Field::operator=(Field< Type > &&) | Field< Type > | |
| Foam::Field::operator=(List< Type > &&) | Field< Type > | |
| Foam::Field::operator=(const tmp< Field< Type >> &) | Field< Type > | |
| Foam::Field::operator=(const zero) | Field< Type > | |
| Foam::Field::operator=(const VectorSpace< Form, Cmpt, nCmpt > &) | Field< Type > | |
| Foam::Field::operator=(const tmp< Field > &rhs) | Field< Type > | |
| Foam::refCount::operator=(const refCount &)=delete | refCount | |
| List< Type >::operator=(const UList< Type > &) | List< Type > | |
| List< Type >::operator=(const List< Type > &) | List< Type > | |
| List< Type >::operator=(List< Type > &&) | List< Type > | |
| List< Type >::operator=(const SLList< Type > &) | List< Type > | |
| List< Type >::operator=(const UIndirectList< Type > &) | List< Type > | |
| List< Type >::operator=(const BiIndirectList< Type > &) | List< Type > | |
| List< Type >::operator=(std::initializer_list< Type >) | List< Type > | |
| List< Type >::operator=(const Type &) | List< Type > | inline |
| operator==(const fvPatchField< Type > &) | fvPatchField< Type > | virtual |
| operator==(const Field< Type > &) | fvPatchField< Type > | virtual |
| operator==(const Type &) | fvPatchField< Type > | virtual |
| Foam::Field::operator==(const UList< Type > &) const | UList< Type > | |
| operator>(const UList< Type > &) const | UList< Type > | |
| operator>=(const UList< Type > &) const | UList< Type > | |
| operator[](const label) | UList< Type > | inline |
| operator[](const label) const | UList< Type > | inline |
| operator[](const label i) const | UList< Type > | inline |
| overridesConstraint() const | fvPatchField< Type > | inline |
| Patch typedef | fvPatchField< Type > | |
| patch() const | fvPatchField< Type > | inline |
| patchInternalField() const | fvPatchField< Type > | virtual |
| patchInternalField(Field< Type > &) const | fvPatchField< Type > | virtual |
| patchNeighbourField(const Pstream::commsTypes) const | processorFvPatchField< Type > | virtual |
| primitiveField() const | fvPatchField< Type > | inline |
| processorCyclicFvPatchField(const fvPatch &, const DimensionedField< Type, volMesh > &) | processorCyclicFvPatchField< Type > | |
| processorCyclicFvPatchField(const fvPatch &, const DimensionedField< Type, volMesh > &, const Field< Type > &) | processorCyclicFvPatchField< Type > | |
| processorCyclicFvPatchField(const fvPatch &, const DimensionedField< Type, volMesh > &, const dictionary &) | processorCyclicFvPatchField< Type > | |
| processorCyclicFvPatchField(const processorCyclicFvPatchField< Type > &, const fvPatch &, const DimensionedField< Type, volMesh > &, const fieldMapper &) | processorCyclicFvPatchField< Type > | |
| processorCyclicFvPatchField(const processorCyclicFvPatchField< Type > &)=delete | processorCyclicFvPatchField< Type > | |
| processorCyclicFvPatchField(const processorCyclicFvPatchField< Type > &, const DimensionedField< Type, volMesh > &) | processorCyclicFvPatchField< Type > | |
| processorFvPatchField(const fvPatch &, const DimensionedField< Type, volMesh > &) | processorFvPatchField< Type > | |
| processorFvPatchField(const fvPatch &, const DimensionedField< Type, volMesh > &, const Field< Type > &) | processorFvPatchField< Type > | |
| processorFvPatchField(const fvPatch &, const DimensionedField< Type, volMesh > &, const dictionary &) | processorFvPatchField< Type > | |
| processorFvPatchField(const processorFvPatchField< Type > &, const fvPatch &, const DimensionedField< Type, volMesh > &, const fieldMapper &) | processorFvPatchField< Type > | |
| processorFvPatchField(const processorFvPatchField< Type > &)=delete | processorFvPatchField< Type > | |
| processorFvPatchField(const processorFvPatchField< Type > &, const DimensionedField< Type, volMesh > &) | processorFvPatchField< Type > | |
| processorLduInterfaceField() | processorLduInterfaceField | inline |
| rank() const | processorCyclicFvPatchField< Type > | inlinevirtual |
| rbegin() | UList< Type > | inline |
| rbegin() const | UList< Type > | inline |
| rcIndex(const label i) const | UList< Type > | inline |
| ready() const | processorFvPatchField< Type > | virtual |
| refCount() | refCount | inlineprotected |
| refCount(const refCount &)=delete | refCount | protected |
| reference typedef | UList< Type > | |
| rend() | UList< Type > | inline |
| rend() const | UList< Type > | inline |
| replace(const direction, const UList< cmptType > &) | Field< Type > | |
| replace(const direction, const tmp< Field< cmptType >> &) | Field< Type > | |
| replace(const direction, const cmptType &) | Field< Type > | |
| reset(const fvPatchField< Type > &) | fvPatchField< Type > | virtual |
| Foam::Field::reset(const Field< Type > &) | Field< Type > | |
| Foam::Field::reset(const UList< Type > &) | Field< Type > | |
| resize(const label) | List< Type > | inline |
| resize(const label, const Type &) | List< Type > | inline |
| reverse_iterator typedef | UList< Type > | |
| rmap(const UList< Type > &mapF, const labelUList &mapAddressing) | Field< Type > | |
| rmap(const tmp< Field< Type >> &tmapF, const labelUList &mapAddressing) | Field< Type > | |
| rmap(const UList< Type > &mapF, const labelUList &mapAddressing, const UList< scalar > &weights) | Field< Type > | |
| rmap(const tmp< Field< Type >> &tmapF, const labelUList &mapAddressing, const UList< scalar > &weights) | Field< Type > | |
| setSize(const label) | List< Type > | |
| setSize(const label, const Type &) | List< Type > | |
| shallowCopy(const UList< Type > &)=delete | List< Type > | |
| UList< Type >::shallowCopy(const UList< Type > &) | UList< Type > | inline |
| size(const label) | List< Type > | inlineprotected |
| size() const | List< Type > | inline |
| size_type typedef | UList< Type > | |
| Sliced typedef | fvPatchField< Type > | |
| snGrad(const scalarField &deltaCoeffs) const | processorFvPatchField< Type > | virtual |
| Foam::coupledFvPatchField::snGrad() const | coupledFvPatchField< Type > | inlinevirtual |
| subField typedef | Field< Type > | |
| subList typedef | List< Type > | |
| swap(UList< Type > &) | UList< Type > | |
| T() const | Field< Type > | |
| transfer(List< Type > &) | List< Type > | |
| transfer(DynamicList< Type, SizeInc, SizeMult, SizeDiv > &) | List< Type > | |
| transfer(SortableList< Type > &) | List< Type > | |
| transform() const | processorCyclicFvPatchField< Type > | inlinevirtual |
| transformCoupleField(Field< Type > &f) const | processorLduInterfaceField | |
| transformCoupleField(scalarField &f, const direction cmpt) const | processorLduInterfaceField | |
| transforms() const | processorLduInterfaceField | inline |
| TypeName(processorCyclicFvPatch::typeName_()) | processorCyclicFvPatchField< Type > | |
| Foam::processorFvPatchField::TypeName(processorFvPatch::typeName_()) | processorFvPatchField< Type > | |
| Foam::processorLduInterfaceField::TypeName("processorLduInterfaceField") | processorLduInterfaceField | |
| Foam::coupledFvPatchField::TypeName(coupledFvPatch::typeName_()) | coupledFvPatchField< Type > | |
| Foam::LduInterfaceField::TypeName("LduInterfaceField") | LduInterfaceField< Type > | |
| Foam::lduInterfaceField::TypeName("lduInterfaceField") | lduInterfaceField | |
| Foam::fvPatchField::TypeName("fvPatchField") | fvPatchField< Type > | |
| typeName | Field< Type > | static |
| UList() | UList< Type > | inline |
| UList(Type *__restrict__ v, label size) | UList< Type > | inline |
| UList(const UList< Type > &)=default | UList< Type > | inline |
| unique() const | refCount | inline |
| updateCoeffs() | fvPatchField< Type > | virtual |
| updated() const | fvPatchField< Type > | inline |
| updatedMatrix() const | lduInterfaceField | inline |
| updatedMatrix() | lduInterfaceField | inline |
| updateInterfaceMatrix(scalarField &result, const scalarField &psiInternal, const scalarField &coeffs, const direction cmpt, const Pstream::commsTypes commsType) const | processorFvPatchField< Type > | virtual |
| updateInterfaceMatrix(Field< Type > &result, const Field< Type > &psiInternal, const scalarField &coeffs, const Pstream::commsTypes commsType) const | processorFvPatchField< Type > | virtual |
| updateInterfaceMatrix(scalarField &result, const scalarField &, const scalarField &coeffs, const direction, const Pstream::commsTypes commsType) const | processorFvPatchField< Type > | virtual |
| updateInterfaceMatrix(scalarField &result, const scalarField &, const scalarField &coeffs, const direction, const Pstream::commsTypes commsType) const | processorFvPatchField< Type > | virtual |
| Foam::LduInterfaceField::updateInterfaceMatrix(scalarField &, const scalarField &, const scalarField &, const direction, const Pstream::commsTypes commsType) const=0 | LduInterfaceField< Type > | |
| value_type typedef | UList< Type > | |
| valueBoundaryCoeffs(const tmp< scalarField > &) const | coupledFvPatchField< Type > | virtual |
| Foam::fvPatchField::valueBoundaryCoeffs(const tmp< Field< scalar >> &) const | fvPatchField< Type > | inlinevirtual |
| valueInternalCoeffs(const tmp< scalarField > &) const | coupledFvPatchField< Type > | virtual |
| Foam::fvPatchField::valueInternalCoeffs(const tmp< Field< scalar >> &) const | fvPatchField< Type > | inlinevirtual |
| write(Ostream &) const | coupledFvPatchField< Type > | virtual |
| ~fvPatchField() | fvPatchField< Type > | inlinevirtual |
| ~lduInterfaceField() | lduInterfaceField | virtual |
| ~LduInterfaceField() | LduInterfaceField< Type > | virtual |
| ~List() | List< Type > | |
| ~processorCyclicFvPatchField() | processorCyclicFvPatchField< Type > | virtual |
| ~processorFvPatchField() | processorFvPatchField< Type > | |
| ~processorLduInterfaceField() | processorLduInterfaceField | virtual |