# GCTL MeshData 文档 ## 简介 `meshdata.h` 定义了GCTL网格库中的数据对象类 `meshdata`,用于在网格上存储和管理各种类型的数据(标量、矢量和张量)。 ## 类型定义 ### 数据值类型 (mesh_data_value_e) ```cpp enum mesh_data_value_e { Scalar, // 标量数据 Vector, // 矢量数据 Tensor // 张量数据 }; ``` ## 类成员 ### 属性 ```cpp std::string name_; // 数据的名称 mesh_data_type_e loctype_; // 数据的赋值位置属性(顶点或元素) mesh_data_value_e valtype_; // 数据的类型(标量/矢量/张量) bool output_ok_; // 是否可输出数据 array datval_; // 数据值数组 double nan_val_; // 无效数据的标记值 ``` ## 主要API ### 构造和初始化 ```cpp // 默认构造函数 meshdata(); // 带参数构造函数 meshdata(mesh_data_type_e in_loctype, // 数据位置类型 mesh_data_value_e in_valtype, // 数据值类型 size_t size, // 数据大小 std::string name = "untitled", // 数据名称 bool if_output = true, // 是否可输出 double nan_val = GCTL_BDL_MAX); // 无效值标记 // 创建数据对象 void create(mesh_data_type_e in_loctype, // 数据位置类型 mesh_data_value_e in_valtype, // 数据值类型 size_t size, // 数据大小 std::string name = "untitled", // 数据名称 bool if_output = true, // 是否可输出 double nan_val = GCTL_BDL_MAX); // 无效值标记 ``` ### 数据操作 ```cpp // 清空数据对象 void clear(); // 导出矢量数据 array export_vector() const; // 导出张量数据 array export_tensor() const; ``` ### 信息显示 ```cpp // 显示数据对象的头信息 void show_info(std::ostream &os = std::clog) const; // 显示数据统计参数 void show_stats(std::ostream &os = std::clog) const; ``` ### 文件操作 ```cpp // 载入二进制文件 void load_binary(std::ifstream &infile); // 保存二进制文件 void save_binary(std::ofstream &outfile); ``` ## 使用示例 ```cpp // 创建数据对象 gctl::meshdata data(gctl::NodeData, // 节点数据 gctl::Scalar, // 标量类型 100, // 数据大小 "temperature", // 数据名称 true); // 可输出 // 显示数据信息 data.show_info(); // 显示数据统计信息 data.show_stats(); // 导出矢量数据 if (data.valtype_ == gctl::Vector) { array vectors = data.export_vector(); } // 导出张量数据 if (data.valtype_ == gctl::Tensor) { array tensors = data.export_tensor(); } ``` ## 注意事项 1. 数据对象支持三种类型:标量、矢量和张量 2. 数据可以定义在网格的顶点或元素上 3. 数据导出时会根据数据类型自动转换为对应的格式 4. 二进制文件操作通常由网格类调用,不建议直接使用