/******************************************************** * ██████╗ ██████╗████████╗██╗ * ██╔════╝ ██╔════╝╚══██╔══╝██║ * ██║ ███╗██║ ██║ ██║ * ██║ ██║██║ ██║ ██║ * ╚██████╔╝╚██████╗ ██║ ███████╗ * ╚═════╝ ╚═════╝ ╚═╝ ╚══════╝ * Geophysical Computational Tools & Library (GCTL) * * Copyright (c) 2023 Yi Zhang (yizhang-geo@zju.edu.cn) * * GCTL is distributed under a dual licensing scheme. You can redistribute * it and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, either version 2 * of the License, or (at your option) any later version. You should have * received a copy of the GNU Lesser General Public License along with this * program. If not, see . * * If the terms and conditions of the LGPL v.2. would prevent you from using * the GCTL, please consider the option to obtain a commercial license for a * fee. These licenses are offered by the GCTL's original author. As a rule, * licenses are provided "as-is", unlimited in time for a one time fee. Please * send corresponding requests to: yizhang-geo@zju.edu.cn. Please do not forget * to include some description of your company and the realm of its activities. * Also add information on how to contact you by electronic and paper mail. ******************************************************/ #ifndef _GCTL_ENUM_H #define _GCTL_ENUM_H /** * This file contains enumerate types that are used across different source files. * Enumerates that are used only in a signal source file are defined within the * specific file. * * 此文件仅包含在多个源文件中都使用到的枚举类型,单独类型中使用到枚举类型直接定义在相应的头文件中。 */ namespace gctl { /** * @brief 测度类型 */ enum norm_type_e { L0, L1, L2, Lp, Linf, }; /** * @brief 随机类型 */ enum random_type_e { RdNormal, ///< 正态分布 RdUniform, ///< 均匀分布 }; /** * @brief 二维矩阵使用的排序方式 * */ enum matrix_layout_e { NoTrans, ///< 不转置 Trans, ///< 转置 }; /** * @brief 使能类型 * */ enum switch_type_e { Enable, Disable, }; enum conjugate_type_e { Conj, ///< 共轭 NoConj, ///< 非共轭 }; /** * @brief 二维矩阵储存的排序方式 */ enum matrix_order_e { RowMajor, ///< 行优先,即优先储存每行的数据 ColMajor, ///< 列优先,即优先储存每列的数据 }; /** * @brief 二维矩阵储存的起点位置 * */ enum matrix_corner_e { TopLeft, ///< 起点为左上,与数学表述中矩阵的排序方式一致 BtmLeft, ///< 起点为左下,与二维坐标系统中从小到大的排序方式一致 }; /** * @brief 数组中的数值操作类型。 * */ enum value_operator_e { AppendVal, ///< 追加 相加 RemoveVal, ///< 删除 相减 ReplaceVal, ///< 替换 EraseVal, ///< 删除 归零 }; /** * @brief 网格中的数据属性类型。 */ enum mesh_data_type_e { NodeData, ///< 属于顶点的数据 ElemData, ///< 属于模型元素的数据,包括二维及三维元素 ElemData2D, ///< 属于二维模型元素的数据 ElemData3D, ///< 属于三维模型元素的数据 }; /** * @brief 输出文件的写入类型 */ enum output_type_e { Append, ///< 追加 OverWrite, ///< 覆盖 }; /** * @brief 函数返回信息的类型 */ enum verbose_type_e { NoMsg, ///< 无信息 ShortMsg, ///< 简短信息 FullMsg, ///< 全信息 }; /** * @brief 方向梯度的枚举类型 */ enum gradient_type_e { Value, ///< 表示非梯度 Dx, ///< x方向梯度 Dy, ///< y方向梯度 Dz, ///< z方向梯度 Dphi, ///< 经度方向梯度 Dtheta, ///< 纬度方向梯度 Dr, ///< 半径方向梯度 }; /** * @brief 文件流操作的方向 */ enum file_direction_e { Input, ///< 输入文件 Output ///< 输出文件 }; /** * @brief 用于表示带有索引序号的对象数组中索引是否为从零开始。 * 如顶点集序号的索引,或者四面体集序号的索引。 */ enum index_packed_e { Packed, ///< 索引从0开始 NotPacked, ///< 索引从1开始 }; /** * @brief 二维或者三维实体的类型 */ enum physical_type_e { Block, TiltBlock, Sphere, Ellipsoid, Surface, }; /** * @brief 边的顶点排序类型 */ enum edge_orient_e { Normal, // index of the edge's nodes are ordered from small to big Reverse, // index of the edge's nodes are ordered from big to small }; /** * @brief 滤波类型 * */ enum filting_type_e { LowPass, HighPass, BandPass, BandStop, }; /** * @brief 滤波器类型 * */ enum filter_type_e { Gaussian, Butterworth, }; /** * @brief 窗函数类型 * */ enum window_type_e { None, Hamming, Hanning, Triangle, Blackman, }; /** * @brief 坐标系统类型 * */ enum coordinate_system_e { Cartesian, Spherical, Ellipsoidal, Polar, }; /** * @brief 范围约束类型 * */ enum range_type_e { HardScale, // 所有数据按比例映射至min和max范围内 SoftScale, // 所有数据按比例映射至max(min, min(arr))和min(max, max(arr))范围内 CutOff, // 超过min和max范围数据直接设置为边界值 }; }; #endif // _GCTL_ENUM_H