所属类别:JavaScripts
文章作者:佚名
特别推荐:免费发布信息 承包关键词~~抢爆了!HOT!
#ifndef _MappedGrid#define _MappedGrid//// Who to blame: Geoff Chesshire//#include "GenericGrid.h"#include "MappedGridFunction.h"#include "MappingRC.h"#include "Box.H"#include "GCMath.h"// #include "DataBaseAccessFunctions.h" // Cannot include this here.int initializeMappingList();int destructMappingList();class AMR_ParentChildSiblingInfo;//// Class for reference-counted data.// MappedGrid类的核心数据,被单独的作为一个类管理class MappedGridData: public GenericGridData { public:// 作为数据更新操作的计算选项的枚举变量及其一些bit组合 enum { THEmask = ENDtheGenericGridData, // bit 0 THEinverseVertexDerivative = THEmask << 1, // bit 1 THEinverseCenterDerivative = THEinverseVertexDerivative << 1, // bit 2 THEvertex = THEinverseCenterDerivative << 1, // bit 3 THEcenter = THEvertex << 1, // bit 4 THEcorner = THEcenter << 1, // bit 5 THEvertexDerivative = THEcorner << 1, // bit 6 THEcenterDerivative = THEvertexDerivative << 1, // bit 7 THEvertexJacobian = THEcenterDerivative << 1, // bit 8 THEcenterJacobian = THEvertexJacobian << 1, // bit 9 THEcellVolume = THEcenterJacobian << 1, // bit 10 THEcenterNormal = THEcellVolume << 1, // bit 11 THEcenterArea = THEcenterNormal << 1, // bit 12 THEfaceNormal = THEcenterArea << 1, // bit 13 THEfaceArea = THEfaceNormal << 1, // bit 14 THEvertexBoundaryNormal = THEfaceArea << 1, // bit 15 THEcenterBoundaryNormal = THEvertexBoundaryNormal << 1, // bit 16 THEcenterBoundaryTangent = THEcenterBoundaryNormal << 1, // bit 17 THEminMaxEdgeLength = THEcenterBoundaryTangent << 1, // bit 18 THEboundingBox = THEminMaxEdgeLength << 1, // bit 19 ENDtheMappedGridData = THEboundingBox << 1, // bit 20 THEusualSuspects = GenericGridData::THEusualSuspects THEmask THEvertex THEcenter THEvertexDerivative, EVERYTHING = GenericGridData::EVERYTHING THEmask THEinverseVertexDerivative THEinverseCenterDerivative THEvertex THEcenter THEcorner THEvertexDerivative THEcenterDerivative THEvertexJacobian THEcenterJacobian THEcellVolume THEcenterNormal THEcenterArea THEfaceNormal THEfaceArea THEvertexBoundaryNormal THEcenterBoundaryNormal THEcenterBoundaryTangent THEminMaxEdgeLength THEboundingBox, USEdifferenceApproximation = 1, // bit 0 COMPUTEgeometry = USEdifferenceApproximation << 1, // bit 1 COMPUTEgeometryAsNeeded = COMPUTEgeometry << 1, // bit 2 COMPUTEtheUsual = GenericGridData::COMPUTEtheUsual COMPUTEgeometryAsNeeded, ISinterpolationPoint = INT_MIN, // (sign bit) bit 31 ISdiscretizationPoint = 1 << 30, // bit 30 ISghostPoint = ISdiscretizationPoint >> 1, // bit 29 ISinteriorBoundaryPoint = ISghostPoint >> 1, // bit 28 USESbackupRules = ISinteriorBoundaryPoint >> 1, // bit 27 IShiddenByRefinement = USESbackupRules >> 1, // bit 26 ISreservedBit2 = IShiddenByRefinement >> 1, // bit 25 ISreservedBit1 = ISreservedBit2 >> 1, // bit 24 ISreservedBit0 = ISreservedBit1 >> 1, // bit 23 GRIDnumberBits = ISreservedBit0 - 1, // bits 0-22 ISusedPoint = ISinterpolationPoint ISdiscretizationPoint ISghostPoint }; Integer numberOfDimensions; // 网格维数 IntegerArray boundaryCondition; // ****** todo : clean up all these arrays**** // 边界条件类型 IntegerArray boundaryDiscretizationWidth; //边界节点离散宽度 RealArray boundingBox; // 包围盒矩形 RealArray gridSpacing; // 网格间距 Logical isAllCellCentered; // 离散类型,全部节点式,还是全部体积中心式 Logical isAllVertexCentered; LogicalArray isCellCentered; // 某个维的离散类型 IntegerArray discretizationWidth; // ?? IntegerArray indexRange; // 索引范围 IntegerArray extendedIndexRange; //?? int extendedRange[2][3]; // include interp pts outside mixed bndry's IntegerArray gridIndexRange; // IntegerArray dimension; IntegerArray numberOfGhostPoints; Logical useGhostPoints; IntegerArray isPeriodic; IntegerArray sharedBoundaryFlag; RealArray sharedBoundaryTolerance; RealArray minimumEdgeLength; RealArray maximumEdgeLength; IntegerArray I1array, I2array, I3array; Integer *I1, *I2, *I3; Partitioning_Type partition; bool partitionInitialized; // true when the partition has been specified. GenericGrid::GridTypeEnum gridType; bool refinementGrid; // true if this is a refinement grid. 是否是加密的网格 enum BoundaryFlagEnum // 边界条件类型枚举 { branchCutPeriodicBoundary, periodicBoundary, interpolationBoundary, mixedPhysicalInterpolationBoundary, physicalBoundary }; // 各个边界的类型 BoundaryFlagEnum boundaryFlag[2][3]; // 网格点MASK数组 IntegerMappedGridFunction* mask; // 网格点的逆雅格比?? RealMappedGridFunction* inverseVertexDerivative; // RealMappedGridFunction* inverseVertexDerivative2D; // RealMappedGridFunction* inverseVertexDerivative1D; RealMappedGridFunction* inverseCenterDerivative; // RealMappedGridFunction* inverseCenterDerivative2D; // RealMappedGridFunction* inverseCenterDerivative1D; // 网格点坐标数组 RealMappedGridFunction* vertex; // RealMappedGridFunction* vertex2D; // RealMappedGridFunction* vertex1D; // 网格单元中心坐标数组 RealMappedGridFunction* center; // RealMappedGridFunction* center2D; // RealMappedGridFunction* center1D; // 网格单元角点坐标 RealMappedGridFunction* corner; // RealMappedGridFunction* corner2D; // RealMappedGridFunction* corner1D; // 网格点导数 ?? RealMappedGridFunction* vertexDerivative; // RealMappedGridFunction* vertexDerivative2D; // RealMappedGridFunction* vertexDerivative1D; // 网格单元中心导数 ?? RealMappedGridFunction* centerDerivative; // RealMappedGridFunction* centerDerivative2D; // RealMappedGridFunction* centerDerivative1D; // 网格点雅格比矩阵 RealMappedGridFunction* vertexJacobian; // 网格中心雅格比矩阵 RealMappedGridFunction* centerJacobian; // 网格单元体积 RealMappedGridFunction* cellVolume; // 网格单元centerNormal RealMappedGridFunction* centerNormal; // RealMappedGridFunction* centerNormal2D; // RealMappedGridFunction* centerNormal1D; // 网格单元centerArea RealMappedGridFunction* centerArea; // RealMappedGridFunction* centerArea2D; // RealMappedGridFunction* centerArea1D; RealMappedGridFunction* faceNormal; // RealMappedGridFunction* faceNormal2D; // RealMappedGridFunction* faceNormal1D; RealMappedGridFunction* faceArea; // RealMappedGridFunction* faceArea2D; // RealMappedGridFunction* faceArea1D; RealMappedGridFunction* vertexBoundaryNormal[3][2]; RealMappedGridFunction* centerBoundaryNormal[3][2]; RealMappedGridFunction* centerBoundaryTangent[3][2]; MappingRC mapping; Box box; // 构造函数 MappedGridData(const Integer numberOfDimensions_ = 0); // 拷贝构造函数 MappedGridData( const MappedGridData& x, const CopyType ct = DEEP); // 解构函数 virtual ~MappedGridData(); MappedGridData& operator=(const MappedGridData& x); void reference(const MappedGridData& x); virtual void breakReference(); virtual void consistencyCheck() const; // HDF数据文件的读取和写入 virtual Integer get(const GenericDataBase& db,const aString& name,bool getMapping=true ); // for AMR grids we may not get the mapping. virtual Integer put(GenericDataBase& db,const aString& name,bool putMapping = true // for AMR grids we may not save the mapping.) const; // 更新 inline Integer update( const Integer what = THEusualSuspects, const Integer how = COMPUTEtheUsual) { return update(*this, what, how); } inline Integer update( MappedGridData& x, const Integer what = THEusualSuspects, const Integer how = COMPUTEtheUsual) { return update((GenericGridData&)x, what, how); } virtual void destroy(const Integer what = NOTHING); void specifyProcesses(const Range& range); void initialize(const Integer& numberOfDimensions_); // remove items from what that are not appropriate for the gridType: // 根据网格类型删除不必要的数据 virtual int getWhatForGrid(const int what) const; void initializePartition(); // initialize the partition object//// The number of dimensions of the domain.// Domain(计算域)的维数 inline const Integer domainDimension() const { if ( mapping.mapPointer->getClassName()!="Mapping" ) return mapping.mapPointer->getDomainDimension(); else return numberOfDimensions; }//// The number of dimensions of the range.// range(物理域)维数 inline const Integer rangeDimension() const { if ( mapping.mapPointer->getClassName()!="Mapping" ) return mapping.mapPointer->getRangeDimension(); else return numberOfDimensions; } protected: virtual Integer update( GenericGridData& x, const Integer what = THEusualSuspects, const Integer how = COMPUTEtheUsual); private: Integer update1( MappedGridData& y, const Integer& what, const Integer& how, Integer& computeNeeded); Integer update2( MappedGridData& y, const Integer& what, const Integer& how, Integer& computeNeeded); Integer updateUnstructuredGrid( MappedGridData& y, const Integer& what, const Integer& how, Integer& computeNeeded);// 网格几何数据计算,这是MappedGrid的一个关键操作 Integer computeGeometry( const Integer& what, const Integer& how);// 由差分方法计算网格几何数据计算,在大多数情况下采用这种方法,// 除非几何映射和逆映射有解析表达,就用以下的omputeGeometryFromMapping由// Mapping成员调用其映射函数来计算 Integer computeGeometryWithDifferences( const Integer& what, const Integer& how); Integer computeGeometryFromMapping( const Integer& what, const Integer& how);// 非结构网格的几何数据计算,这个方法实际上还没实现 Integer computeUnstructuredGeometry( const Integer& what, const Integer& how);//// Virtual member functions used only through class ReferenceCounting:// 有关引用操作的虚成员函数 private: inline virtual ReferenceCounting& operator=(const ReferenceCounting& x) { return operator=((MappedGridData&)x); } inline virtual void reference(const ReferenceCounting& x) { reference((MappedGridData&)x); } inline virtual ReferenceCounting* virtualConstructor( const CopyType ct = DEEP) const { return new MappedGridData(*this, ct); } aString className; public: inline virtual aString getClassName() const { return className; }};// OK, 真正的MappedGrid类class MappedGrid: public GenericGrid { public:// Public constants:// Constants to be ORed to form the first argument of update() and destroy():// update() and destroy()函数的第一参数列表 enum { THEmask = MappedGridData::THEmask, THEinverseVertexDerivative = MappedGridData::THEinverseVertexDerivative, THEinverseCenterDerivative = MappedGridData::THEinverseCenterDerivative, THEvertex = MappedGridData::THEvertex, THEcenter = MappedGridData::THEcenter, THEcorner = MappedGridData::THEcorner, THEvertexDerivative = MappedGridData::THEvertexDerivative, THEcenterDerivative = MappedGridData::THEcenterDerivative, THEvertexJacobian = MappedGridData::THEvertexJacobian, THEcenterJacobian = MappedGridData::THEcenterJacobian, THEcellVolume = MappedGridData::THEcellVolume, THEcenterNormal = MappedGridData::THEcenterNormal, THEcenterArea = MappedGridData::THEcenterArea, THEfaceNormal = MappedGridData::THEfaceNormal, THEfaceArea = MappedGridData::THEfaceArea, THEvertexBoundaryNormal = MappedGridData::THEvertexBoundaryNormal, THEcenterBoundaryNormal = MappedGridData::THEcenterBoundaryNormal, THEcenterBoundaryTangent = MappedGridData::THEcenterBoundaryTangent, THEminMaxEdgeLength = MappedGridData::THEminMaxEdgeLength, THEboundingBox = MappedGridData::THEboundingBox, THEusualSuspects = MappedGridData::THEusualSuspects, EVERYTHING = MappedGridData::EVERYTHING };// Constants to be ORed to form the second argument of update():// update() and destroy()函数的第二参数列表 enum { USEdifferenceApproximation = MappedGridData::USEdifferenceApproximation, COMPUTEgeometry = MappedGridData::COMPUTEgeometry, COMPUTEgeometryAsNeeded = MappedGridData::COMPUTEgeometryAsNeeded, COMPUTEtheUsual = MappedGridData::COMPUTEtheUsual };// Mask bits to access data in mask.// 网格点MASK含义 enum { ISinterpolationPoint = MappedGridData::ISinterpolationPoint, ISdiscretizationPoint = MappedGridData::ISdiscretizationPoint, ISghostPoint = MappedGridData::ISghostPoint, ISinteriorBoundaryPoint = MappedGridData::ISinteriorBoundaryPoint, USESbackupRules = MappedGridData::USESbackupRules, IShiddenByRefinement = MappedGridData::IShiddenByRefinement, ISreservedBit2 = MappedGridData::ISreservedBit2, ISreservedBit1 = MappedGridData::ISreservedBit1, ISreservedBit0 = MappedGridData::ISreservedBit0, GRIDnumberBits = MappedGridData::GRIDnumberBits, ISusedPoint = MappedGridData::ISusedPoint }; // should be the same as in MappedGridData // 边界类型 enum BoundaryFlagEnum { branchCutPeriodicBoundary =MappedGridData::branchCutPeriodicBoundary, periodicBoundary =MappedGridData::periodicBoundary, interpolationBoundary =MappedGridData::interpolationBoundary, mixedPhysicalInterpolationBoundary=MappedGridData::mixedPhysicalInterpolationBoundary, physicalBoundary =MappedGridData::physicalBoundary };// Public data.// 公共数据区// 家族树信息指针 AMR_ParentChildSiblingInfo* parentChildSiblingInfo; //// Public member functions for access to data.// 公共成员函数// 返回家族树信息指针 AMR_ParentChildSiblingInfo* getParentChildSiblingInfo(){return parentChildSiblingInfo;} void setParentChildSiblingInfo(AMR_ParentChildSiblingInfo *ptr){parentChildSiblingInfo=ptr;}//// Boxlib box.// 返回网格的包围盒 inline const Box& box() const { return rcData->box; }//// Boundary condition flags.// 返回边界条件类型(一个整形数组) inline const IntegerArray& boundaryCondition() const { return rcData->boundaryCondition; }// 返回指定边界的边界条件类型(一个整形数) inline const Integer& boundaryCondition( const Integer& ks, const Integer& kd) const { return rcData->boundaryCondition(ks,kd); } MappedGrid::BoundaryFlagEnum boundaryFlag(int side,int axis ) const;//// Boundary condition stencil.// 返回边界离散宽度(一个整形数组) inline const IntegerArray& boundaryDiscretizationWidth() const { return rcData->boundaryDiscretizationWidth; }// 返回指定边界的边界离散宽度(一个整形数) inline const Integer& boundaryDiscretizationWidth( const Integer& ks, const Integer& kd) const { return rcData->boundaryDiscretizationWidth(ks,kd); }//// Bounding box for all grid vertices.// 返回所有网格点的包围盒 inline const RealArray& boundingBox() const { return rcData->boundingBox; }// 返回指定边界的包围盒?? inline const Real& boundingBox( const Integer& ks, const Integer& kd) const { return rcData->boundingBox(ks,kd); } // Return the partition used in this grid // 返回当前Grid中用到的分区?? const Partitioning_Type& getPartition(){return rcData->partition;} ////// Grid spacing.// 网格步长(一个浮点数组)? inline const RealArray& gridSpacing() const { return rcData->gridSpacing; }// 指定坐标方向上的网格步长(一个浮点数)?? inline const Real& gridSpacing(const Integer& kd) const { return rcData->gridSpacing(kd); }//// Grid type, structured or unstructured.// 网格类型(结构化?非结构化??) GenericGrid::GridTypeEnum getGridType() const { return rcData->gridType; } //// get the name of the grid.// 返回网格名称 aString getName() const;//// Cell-centered in each direction.// 在每个坐标方向上的离散类型是否为Cell-centered(一个逻辑数组)? inline const LogicalArray& isCellCentered() const { return rcData->isCellCentered; }// 在指定坐标方向上的离散类型是否为Cell-centered? inline const Logical& isCellCentered(const Integer& kd) const { return rcData->isCellCentered(kd); }//// Cell-centered in all directions.// 在所有坐标方向上的离散类型是否为Cell-centered(一个逻辑值) inline const Logical& isAllCellCentered() const { return rcData->isAllCellCentered; }//// Vertex-centered in all directions.// 在每个坐标方向上的离散类型是否为Vertex-centered(一个逻辑数组)? inline const Logical& isAllVertexCentered() const { return rcData->isAllVertexCentered; }// is the grid rectangular// Grid是否为矩形?? bool isRectangular() const; // is the grid a refinement grid: // Grid是否为加密网格? bool isRefinementGrid() const { return rcData->refinementGrid; } bool& isRefinementGrid(){ return rcData->refinementGrid; } // show which geometry arrays are built // 显示创建的几何组??? int displayComputedGeometry(FILE *file=stdout ) const; // return size of this object // 返回对象存储空间尺寸 virtual real sizeOf(FILE *file = NULL ) const;//// Interior discretization stencil width.// 内部点离散宽度 inline const IntegerArray& discretizationWidth() const { return rcData->discretizationWidth; }// 指定坐标方向上的内部点离散宽度 inline const Integer& discretizationWidth(const Integer& kd) const { return rcData->discretizationWidth(kd); }//// Index range, computational points.// 返回每个方向上需要计算的网格点的索引范围,是一个整形数组 inline const IntegerArray& indexRange() const { return rcData->indexRange; }// 返回指定坐标方向上某一边的索引(一个整数) inline const Integer& indexRange( const Integer& ks, const Integer& kd) const { return rcData->indexRange(ks,kd); }//// Index range plus interpolation points.// 同上2个函数,但是包含了插值点的索引 inline const IntegerArray& extendedIndexRange() const { return rcData->extendedIndexRange; } inline const Integer& extendedIndexRange( const Integer& ks, const Integer& kd) const { return rcData->extendedIndexRange(ks,kd); }//// Index range of gridpoints.// 网格点的索引范围 inline const IntegerArray& gridIndexRange() const { return rcData->gridIndexRange; } inline const Integer& gridIndexRange( const Integer& ks, const Integer& kd) const { return rcData->gridIndexRange(ks,kd); }//// Dimensions of grid arrays.// 返回网格数组的dimension(尺寸?) inline const IntegerArray& dimension() const { return rcData->dimension; } inline const Integer& dimension( const Integer& ks, const Integer& kd) const { return rcData->dimension(ks,kd); }//// Range for all discretization, boundary and interpolation points.// inline const int& extendedRange( int side, int axis ) const { return rcData->extendedRange[side][axis]; } IntegerArray extendedRange() const;//// Number of ghost points.// 虚点个数 inline const IntegerArray& numberOfGhostPoints() const { return rcData->numberOfGhostPoints; } inline const Integer& numberOfGhostPoints( const Integer& ks, const Integer& kd) const { return rcData->numberOfGhostPoints(ks,kd); }//// Indicate whether ghost points may be used for interpolation.// 虚点是否可以用作插值? inline const Logical& useGhostPoints() const { return rcData->useGhostPoints; }//// Grid periodicity.// 网格周期性 inline const IntegerArray& isPeriodic() const { return rcData->isPeriodic; } inline const Integer& isPeriodic(const Integer& kd) const { return rcData->isPeriodic(kd); }//// The number of dimensions of the range.// Range的维数 inline const Integer& numberOfDimensions() const { return rcData->numberOfDimensions; }//// The number of dimensions of the domain.// Domain的维数 inline const Integer domainDimension() const { return rcData->domainDimension(); }//// The number of dimensions of the range.// Range的维数?和numberOfDimensions有何区别?? inline const Integer rangeDimension() const { return rcData->rangeDimension(); }//// Shared boundary flags.// 共享边界标识??如何共享?? inline const IntegerArray& sharedBoundaryFlag() const { return rcData->sharedBoundaryFlag; } inline const Integer& sharedBoundaryFlag( const Integer& ks, const Integer& kd) const { return rcData->sharedBoundaryFlag(ks,kd); }//// Shared boundary tolerance.// 共享边界配合公差,看来是边界对接 inline const RealArray& sharedBoundaryTolerance() const { return rcData->sharedBoundaryTolerance; } inline const Real& sharedBoundaryTolerance( const Integer& ks, const Integer& kd) const { return rcData->sharedBoundaryTolerance(ks,kd); }//// Minimum grid cell-edge length.// 最小网格单元长度 inline const RealArray& minimumEdgeLength() const { return rcData->minimumEdgeLength; } inline const Real& minimumEdgeLength(const Integer& kd) const { return rcData->minimumEdgeLength(kd); }//// Maximum grid cell-edge length.// 最大网格单元长度 inline const RealArray& maximumEdgeLength() const { return rcData->maximumEdgeLength; } inline const Real& maximumEdgeLength(const Integer& kd) const { return rcData->maximumEdgeLength(kd); }//// delta x for rectangular grids// 设置矩形网格的步长 int getDeltaX( Real dx[3] ) const;// get delta x and corners of a rectangular grid.// 取得矩形网格的步长和对角线坐标 int getRectangularGridParameters( Real dx[3], Real xab[2][3] ) const;//// Indirect addressing for periodic grids.// 周期性网格的简介寻址 const Integer* I1() const { return rcData->I1; } const Integer* I2() const { return rcData->I2; } const Integer* I3() const { return rcData->I3; }//// Public member functions for setting data.// 设置数据的公共成员函数 void setNumberOfDimensions(const Integer& numberOfDimensions_); void setBoundaryCondition(const Integer& ks, const Integer& kd, const Integer& boundaryCondition_); void setBoundaryFlag( int side, int axis, MappedGridData::BoundaryFlagEnum bc ); void setBoundaryDiscretizationWidth(const Integer& ks,const Integer& kd,const Integer& boundaryDiscretizationWidth_); void setIsCellCentered(const Integer& kd, const Logical& isCellCentered_); void setDiscretizationWidth(const Integer& kd,const Integer& discretizationWidth_); void setGridIndexRange(const Integer& ks, const Integer& kd, const Integer& gridIndexRange_); // Use a given mapping. // 设置此网格的映射对象 void setMapping(Mapping& x); void setMapping(MappingRC& x); void setNumberOfGhostPoints(const Integer& ks,const Integer& kd,const Integer& numberOfGhostPoints_); void setUseGhostPoints(const Logical& useGhostPoints_); void setIsPeriodic(const Integer& kd, const Mapping::periodicType& isPeriodic_); void setSharedBoundaryFlag(const Integer& ks, const Integer& kd, const Integer& sharedBoundaryFlag_); void setSharedBoundaryTolerance(const Integer& ks, const Integer& kd, const Real& sharedBoundaryTolerance_);//// Discretization point mask.// 返回网格点MASK数组 inline IntegerMappedGridFunction& mask() { return *rcData->mask; } inline const IntegerMappedGridFunction& mask() const { return ((MappedGrid*)this)->mask(); }//// Inverse derivative of the mapping at the vertices.// 返回网格映射的逆雅格比矩阵 inline RealMappedGridFunction& inverseVertexDerivative() { return *rcData->inverseVertexDerivative; } inline const RealMappedGridFunction& inverseVertexDerivative() const { return ((MappedGrid*)this)->inverseVertexDerivative(); }// //// // Inverse derivative at the vertices, for a two-dimensional grid.// //// inline RealMappedGridFunction& inverseVertexDerivative2D()// { return *rcData->inverseVertexDerivative2D; }// inline const RealMappedGridFunction& inverseVertexDerivative2D() const// { return ((MappedGrid*)this)->inverseVertexDerivative2D(); }// //// // Inverse derivative at the vertices, for a one-dimensional grid.// //// inline RealMappedGridFunction& inverseVertexDerivative1D()// { return *rcData->inverseVertexDerivative1D; }// inline const RealMappedGridFunction& inverseVertexDerivative1D() const// { return ((MappedGrid*)this)->inverseVertexDerivative1D(); }//// Inverse derivative at the discretization centers.// inline RealMappedGridFunction& inverseCenterDerivative() { return *rcData->inverseCenterDerivative; } inline const RealMappedGridFunction& inverseCenterDerivative() const { return ((MappedGrid*)this)->inverseCenterDerivative(); }// //// // Inverse derivative at the discretization centers, for a two-dimensional grid// //// inline RealMappedGridFunction& inverseCenterDerivative2D()// { return *rcData->inverseCenterDerivative2D; }// inline const RealMappedGridFunction& inverseCenterDerivative2D() const// { return ((MappedGrid*)this)->inverseCenterDerivative2D(); }// //// // Inverse derivative at the discretization centers, for a one-dimensional grid// //// inline RealMappedGridFunction& inverseCenterDerivative1D()// { return *rcData->inverseCenterDerivative1D; }// inline const RealMappedGridFunction& inverseCenterDerivative1D() const// { return ((MappedGrid*)this)->inverseCenterDerivative1D(); }//// Vertex coordinates.// 返回网格点坐标 inline RealMappedGridFunction& vertex() { return *rcData->vertex; } inline const RealMappedGridFunction& vertex() const { return ((MappedGrid*)this)->vertex(); }// //// // Vertex coordinates, for a two-dimensional grid.// //// inline RealMappedGridFunction& vertex2D()// { return *rcData->vertex2D; }// inline const RealMappedGridFunction& vertex2D() const// { return ((MappedGrid*)this)->vertex2D(); }// //// // Vertex coordinates, for a one-dimensional grid.// //// inline RealMappedGridFunction& vertex1D()// { return *rcData->vertex1D; }// inline const RealMappedGridFunction& vertex1D() const// { return ((MappedGrid*)this)->vertex1D(); }//// Coordinates of discretization centers.// 返回中心坐标 inline RealMappedGridFunction& center() { return *rcData->center; } inline const RealMappedGridFunction& center() const { return ((MappedGrid*)this)->center(); }// //// // Coordinates of discretization centers, for a two-dimensional grid.// //// inline RealMappedGridFunction& center2D()// { return *rcData->center2D; }// inline const RealMappedGridFunction& center2D() const// { return ((MappedGrid*)this)->center2D(); }// //// // Coordinates of discretization centers, for a one-dimensional grid.// //// inline RealMappedGridFunction& center1D()// { return *rcData->center1D; }// inline const RealMappedGridFunction& center1D() const// { return ((MappedGrid*)this)->center1D(); }//// Coordinates of control volume corners.// 返回有限体积元的角点坐标 inline RealMappedGridFunction& corner() { return *rcData->corner; } inline const RealMappedGridFunction& corner() const { return ((MappedGrid*)this)->corner(); }// //// // Coordinates of control volume corners, for a two-dimensional grid.// //// inline RealMappedGridFunction& corner2D()// { return *rcData->corner2D; }// inline const RealMappedGridFunction& corner2D() const// { return ((MappedGrid*)this)->corner2D(); }// //// // Coordinates of control volume corners, for a one-dimensional grid.// //// inline RealMappedGridFunction& corner1D()// { return *rcData->corner1D; }// inline const RealMappedGridFunction& corner1D() const// { return ((MappedGrid*)this)->corner1D(); }//// Derivative of the mapping at the vertices.// 返回网格映射的雅格比矩阵 inline RealMappedGridFunction& vertexDerivative() { return *rcData->vertexDerivative; } inline const RealMappedGridFunction& vertexDerivative() const { return ((MappedGrid*)this)->vertexDerivative(); }// //// // Derivative of the mapping at the vertices, for a two-dimensional grid.// //// inline RealMappedGridFunction& vertexDerivative2D()// { return *rcData->vertexDerivative2D; }// inline const RealMappedGridFunction& vertexDerivative2D() const// { return ((MappedGrid*)this)->vertexDerivative2D(); }// //// // Derivative of the mapping at the vertices, for a one-dimensional grid.// //// inline RealMappedGridFunction& vertexDerivative1D()// { return *rcData->vertexDerivative1D; }// inline const RealMappedGridFunction& vertexDerivative1D() const// { return ((MappedGrid*)this)->vertexDerivative1D(); }//// Derivative of the mapping at the discretization centers.// inline RealMappedGridFunction& centerDerivative() { return *rcData->centerDerivative; } inline const RealMappedGridFunction& centerDerivative() const { return ((MappedGrid*)this)->centerDerivative(); }// //// // Derivative at the discretization centers, for a two-dimensional grid.// //// inline RealMappedGridFunction& centerDerivative2D()// { return *rcData->centerDerivative2D; }// inline const RealMappedGridFunction& centerDerivative2D() const// { return ((MappedGrid*)this)->centerDerivative2D(); }// //// // Derivative at the discretization centers, for a one-dimensional grid.// //// inline RealMappedGridFunction& centerDerivative1D()// { return *rcData->centerDerivative1D; }// inline const RealMappedGridFunction& centerDerivative1D() const// { return ((MappedGrid*)this)->centerDerivative1D(); }//// Determinant of vertexDerivative.// 返回网格映射的逆雅格比矩阵的行列式 inline RealMappedGridFunction& vertexJacobian() { return *rcData->vertexJacobian; } inline const RealMappedGridFunction& vertexJacobian() const { return ((MappedGrid*)this)->vertexJacobian(); }//// Determinant of centerDerivative.// inline RealMappedGridFunction& centerJacobian() { return *rcData->centerJacobian; } inline const RealMappedGridFunction& centerJacobian() const { return ((MappedGrid*)this)->centerJacobian(); }//// Cell Volume.// 返回各有限体积元的体积 inline RealMappedGridFunction& cellVolume() { return *rcData->cellVolume; } inline const RealMappedGridFunction& cellVolume() const { return ((MappedGrid*)this)->cellVolume(); }//// Cell-center normal vector, normalized to cell-face area.// 返回有Cell-center法向矢量(垂直于cell表面), inline RealMappedGridFunction& centerNormal() { return *rcData->centerNormal; } inline const RealMappedGridFunction& centerNormal() const { return ((MappedGrid*)this)->centerNormal(); }// //// // Cell-center normal vector, for a two-dimensional grid.// //// inline R关闭本页
相关信息· DNS 架设过程
· null
· DataGrid的列操作个人总结
· 对袋鼠资费情况的一些说明及想法
10485
74491
