IOSS 2.0
Iocatalyst_DatabaseIOTest.h
Go to the documentation of this file.
1// Copyright(C) 1999-2020 National Technology & Engineering Solutions
2// of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
3// NTESS, the U.S. Government retains certain rights in this software.
4//
5// See packages/seacas/LICENSE for details
6
7#pragma once
8
9#include "iocatalyst_export.h"
10
11#include "gtest/gtest.h"
13#include <cstddef>
14
15class IOCATALYST_EXPORT Iocatalyst_DatabaseIOTest : public ::testing::Test
16{
17protected:
23
25
26 bool regionsAreEqual(const std::string &fileName, const std::string &catFileName,
27 const std::string &iossDatabaseType);
28
29 bool regionsAreEqualCatalystAndIoss(const std::string &fileName, Ioss::DatabaseIO &cat_d,
30 const std::string &iossDatabaseType);
31
32 void runStructuredTest(const std::string &testName);
33
34 void
35 runUnstructuredTest(const std::string &testName, bool writeConnectivityRaw = false,
36 const std::string &nodeBlockName = Iocatalyst::BlockMeshSet::NODE_BLOCK_NAME);
37
38 Ioss::DatabaseIO *writeAndGetExodusDatabaseOnRead(const std::string &testName,
39 Ioss::PropertyManager dbProps = {});
40
41 Ioss::DatabaseIO *getExodusDatabaseFromFile(std::string &filename,
42 Ioss::PropertyManager dbProps = {});
43 conduit_cpp::Node getConduitFromExodusFile(std::string &filename,
44 Ioss::PropertyManager dbProps = {});
45 Ioss::DatabaseIO *getCatalystDatabaseFromConduit(conduit_cpp::Node &conduitNode,
46 Ioss::PropertyManager dbProps = {});
47
48 Ioss::DatabaseIO *getDatabaseOnReadFromFileName(const std::string &fileName,
49 const std::string &iossDatabaseType,
50 Ioss::PropertyManager dbProps = {});
51
52 Ioss::DatabaseIO *getCatalystDatabaseFromConduitFiles(const std::string &dirName,
53 Ioss::PropertyManager dbProps = {});
54
55 void checkZeroCopyFields(Iocatalyst::BlockMeshSet::IOSSparams &iop);
56
57 template <typename EntityContainer>
58 void checkEntityContainerZeroCopyFields(const EntityContainer &ge)
59 {
60 for (auto g : ge) {
61 auto nameList = g->field_describe();
62 for (auto name : nameList) {
63 auto field = g->get_fieldref(name);
64 if (field.zero_copy_enabled()) {
65 std::vector<std::byte> dcBuffer(field.get_size());
66 g->get_field_data(name, Data(dcBuffer), dcBuffer.size());
67 void *data;
68 size_t dataSize;
69 g->get_field_data(name, &data, &dataSize);
70 ASSERT_GT(dataSize, 0) << "DataSize is not greater than 0 for field " << name
71 << std::endl;
72 std::byte *b = static_cast<std::byte *>(data);
73 std::vector<std::byte> zcBuffer(b, b + field.get_size());
74 EXPECT_EQ(dcBuffer, zcBuffer);
75 }
76 }
77 }
78 }
79
80 void setBlockMeshSize(unsigned int i, unsigned int j, unsigned int k);
81 void setOrigin(unsigned int i, unsigned int j, unsigned int k);
82 void addBlockMesh(Iocatalyst::BlockMesh &blockMesh);
83
84 const std::string CGNS_DATABASE_TYPE = "cgns";
85 const std::string CGNS_FILE_EXTENSION = ".cgns";
86 const std::string EXODUS_DATABASE_TYPE = "exodus";
87 const std::string EXODUS_FILE_EXTENSION = ".ex2";
88 const std::string CATALYST_TEST_FILE_PREFIX = "catalyst_";
89 const std::string CATALYST_TEST_FILE_NP = "_np_";
90 inline static const std::string CATALYST_DATABASE_TYPE = "catalyst";
91 inline static const std::string CATALYST_DUMMY_DATABASE = "dummy.db";
92};
IOSS_NODISCARD constexpr T * Data(std::vector< T > &vec)
Definition Ioss_Utils.h:58
Definition Iocatalyst_BlockMeshSet.h:20
static const std::string NODE_BLOCK_NAME
Definition Iocatalyst_BlockMeshSet.h:25
Definition Iocatalyst_BlockMesh.h:16
void runUnstructuredTest(const std::string &testName, bool writeConnectivityRaw=false, const std::string &nodeBlockName=Iocatalyst::BlockMeshSet::NODE_BLOCK_NAME)
Definition Iocatalyst_DatabaseIOTest.C:82
static const std::string CATALYST_DUMMY_DATABASE
Definition Iocatalyst_DatabaseIOTest.h:91
const std::string CATALYST_TEST_FILE_NP
Definition Iocatalyst_DatabaseIOTest.h:89
Iocatalyst::BlockMesh::Extent origin
Definition Iocatalyst_DatabaseIOTest.h:21
Ioss::ParallelUtils putils
Definition Iocatalyst_DatabaseIOTest.h:22
Ioss::DatabaseIO * writeAndGetExodusDatabaseOnRead(const std::string &testName, Ioss::PropertyManager dbProps={})
Definition Iocatalyst_DatabaseIOTest.C:101
const std::string CGNS_DATABASE_TYPE
Definition Iocatalyst_DatabaseIOTest.h:84
static const std::string CATALYST_DATABASE_TYPE
Definition Iocatalyst_DatabaseIOTest.h:90
const std::string EXODUS_DATABASE_TYPE
Definition Iocatalyst_DatabaseIOTest.h:86
Iocatalyst::BlockMeshSet bmSet
Definition Iocatalyst_DatabaseIOTest.h:18
bool regionsAreEqual(const std::string &fileName, const std::string &catFileName, const std::string &iossDatabaseType)
Definition Iocatalyst_DatabaseIOTest.C:32
Iocatalyst_DatabaseIOTest()
Definition Iocatalyst_DatabaseIOTest.C:20
void runStructuredTest(const std::string &testName)
Definition Iocatalyst_DatabaseIOTest.C:68
bool regionsAreEqualCatalystAndIoss(const std::string &fileName, Ioss::DatabaseIO &cat_d, const std::string &iossDatabaseType)
const std::string EXODUS_FILE_EXTENSION
Definition Iocatalyst_DatabaseIOTest.h:87
const std::string CATALYST_TEST_FILE_PREFIX
Definition Iocatalyst_DatabaseIOTest.h:88
Iocatalyst::BlockMesh::Extent blockMeshSize
Definition Iocatalyst_DatabaseIOTest.h:20
Iocatalyst::BlockMesh::Partition part
Definition Iocatalyst_DatabaseIOTest.h:19
const std::string CGNS_FILE_EXTENSION
Definition Iocatalyst_DatabaseIOTest.h:85
void checkEntityContainerZeroCopyFields(const EntityContainer &ge)
Definition Iocatalyst_DatabaseIOTest.h:58
An input or output Database.
Definition Ioss_DatabaseIO.h:63
Definition Ioss_ParallelUtils.h:32
A collection of Ioss::Property objects.
Definition Ioss_PropertyManager.h:36
Definition Iocatalyst_BlockMesh.h:32
Definition Iocatalyst_BlockMesh.h:19