107 lines
3.5 KiB
C++
107 lines
3.5 KiB
C++
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// PPPPP H H EEEEE N N GGGGG L EEEEE III +
|
|
// P P H H E NN N G L E I +
|
|
// PPPPP HHHHH EEEEE N N N G GG L EEEEE I +
|
|
// P H H E N N N G G L E I +
|
|
// P H H EEEEE N N GGGGG LLLLL EEEEE III +
|
|
//------------------------------------------------------------------------+
|
|
// Platform for Hybrid Engineering Simulation of Flows +
|
|
// China Aerodynamics Research and Development Center +
|
|
// (C) Copyright, Since 2010 +
|
|
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
//! @file Geo_CellMetrics_Struct.h
|
|
//! @brief It defines the cell metrics of the structured grid,
|
|
//! such as the cell center and cell volume.
|
|
//! @author Bell, He Xin.
|
|
#pragma once
|
|
#include "TypeDefine.h"
|
|
|
|
namespace PHSPACE
|
|
{
|
|
//! @brief Geo_CellMetrics_Struct class defines the cell metrics of structured grid.
|
|
//! 1: cell center.
|
|
//! 2: cell volume.
|
|
class Geo_CellMetrics_Struct
|
|
{
|
|
private:
|
|
//! Cell center.
|
|
RDouble3D *xcc, *ycc, *zcc;
|
|
|
|
//! Cell volume.
|
|
RDouble3D *vol;
|
|
|
|
//! Cell length.
|
|
RDouble3D *xlen, *ylen, *zlen;
|
|
|
|
RDouble3D *jacobian;
|
|
|
|
//! Used for DES simulation ONLY: largest local grid length, distance of neighbor cell centers.
|
|
RDouble3D *largestLocalGridLength;
|
|
|
|
//! Used for DES simulation ONLY: smallest local grid length, distance of neighbor cell centers.
|
|
RDouble3D *smallestLocalGridLength;
|
|
|
|
//! Used for DES simulation ONLY: sub-grid length.
|
|
RDouble3D *subgridLength;
|
|
|
|
public:
|
|
Geo_CellMetrics_Struct();
|
|
~Geo_CellMetrics_Struct();
|
|
|
|
public:
|
|
//! Return the X component of cell center (xcc).
|
|
RDouble3D * GetCellCenterX() const;
|
|
|
|
//! Return the Y component of cell center (ycc).
|
|
RDouble3D * GetCellCenterY() const;
|
|
|
|
//! Return the Z component of cell center (zcc).
|
|
RDouble3D * GetCellCenterZ() const;
|
|
|
|
//! Return the cell volume (vol).
|
|
RDouble3D * GetCellVolume() const;
|
|
|
|
//! Return the X direction cell length.
|
|
RDouble3D * GetCellLengthX() const;
|
|
|
|
//! Return the Y direction cell length.
|
|
RDouble3D * GetCellLengthY() const;
|
|
|
|
//! Return the Z direction cell length.
|
|
RDouble3D * GetCellLengthZ() const;
|
|
|
|
//!
|
|
RDouble3D * GetCellJacobian() const;
|
|
|
|
//! Return the largest local grid spacing.
|
|
RDouble3D * GetLargestLocalGridLength();
|
|
|
|
//! Return the smallest local grid spacing.
|
|
RDouble3D * GetSmallestLocalGridLength();
|
|
|
|
//! Return the sub-grid length, used for DES simulation ONLY.
|
|
RDouble3D * GetSubgridLength();
|
|
|
|
//! Assign the largest local grid spacing.
|
|
void SetLargestLocalGridLength(RDouble3D *length);
|
|
|
|
//! Assign the smallest local grid spacing.
|
|
void SetSmallestLocalGridLength(RDouble3D *length);
|
|
|
|
//! Assign the sub-grid length, used for DES simulation ONLY.
|
|
void SetSubgridLength(RDouble3D *length);
|
|
|
|
//! Init all the metrics pointers (allocate memory).
|
|
//! @param[in] I
|
|
//! @param[in] J
|
|
//! @param[in] K
|
|
//! @note construct the three dimensional array with Range I, J, K.
|
|
void AllocateMetrics(Range &I, Range &J, Range &K);
|
|
|
|
private:
|
|
//! Deallocate memory of all the metrics array pointers.
|
|
void DeallocateAll();
|
|
};
|
|
|
|
#include "Geo_CellMetrics_Struct.hxx"
|
|
} |