OGS
IntegrationPointWriter.cpp File Reference
#include "IntegrationPointWriter.h"
#include <range/v3/view/join.hpp>
#include "MeshLib/Mesh.h"
#include "MeshLib/Utils/getOrCreateMeshProperty.h"
Include dependency graph for IntegrationPointWriter.cpp:

Go to the source code of this file.

Namespaces

namespace  MeshLib

Functions

static MeshLib::IntegrationPointMetaDataSingleField addIntegrationPointData (MeshLib::Mesh &mesh, MeshLib::IntegrationPointWriter const &writer)
static void addIntegrationPointMetaDataSingleField (MeshLib::Mesh &mesh, MeshLib::IntegrationPointMetaData const &ip_meta_data)
void MeshLib::addIntegrationPointDataToMesh (MeshLib::Mesh &mesh, std::vector< std::unique_ptr< IntegrationPointWriter > > const &integration_point_writer)
std::optional< IntegrationPointMetaDataMeshLib::getIntegrationPointMetaData (MeshLib::Properties const &properties)

Function Documentation

◆ addIntegrationPointData()

MeshLib::IntegrationPointMetaDataSingleField addIntegrationPointData ( MeshLib::Mesh & mesh,
MeshLib::IntegrationPointWriter const & writer )
static

Adds the integration point data and creates meta data for it.

Returns meta data for the written integration point data.

Definition at line 14 of file IntegrationPointWriter.cpp.

16{
17 auto const& ip_values = writer.values(/*t, x, dof_table*/);
18 assert(ip_values.size() == mesh.getNumberOfElements());
19
20 // create field data and fill it with nodal values, and an offsets cell
21 // array indicating where the cell's integration point data starts.
23 mesh, writer.name(), MeshLib::MeshItemType::IntegrationPoint,
24 writer.numberOfComponents());
25 field_data.clear();
26
27 ranges::copy(ip_values | ranges::views::join,
28 std::back_inserter(field_data));
29
30 return {writer.name(), writer.numberOfComponents(),
31 writer.integrationOrder()};
32}
std::size_t getNumberOfElements() const
Get the number of elements.
Definition Mesh.h:88
PropertyVector< T > * getOrCreateMeshProperty(Mesh &mesh, std::string const &property_name, MeshItemType const item_type, int const number_of_components)

References MeshLib::Mesh::getNumberOfElements(), MeshLib::getOrCreateMeshProperty(), MeshLib::IntegrationPointWriter::integrationOrder(), MeshLib::IntegrationPoint, MeshLib::IntegrationPointWriter::name(), MeshLib::IntegrationPointWriter::numberOfComponents(), and MeshLib::IntegrationPointWriter::values().

Referenced by MeshLib::addIntegrationPointDataToMesh().

◆ addIntegrationPointMetaDataSingleField()

void addIntegrationPointMetaDataSingleField ( MeshLib::Mesh & mesh,
MeshLib::IntegrationPointMetaData const & ip_meta_data )
static

Adds integration point meta data as char mesh property encoded in JSON format, which is then stored as VTK's field data.

Definition at line 36 of file IntegrationPointWriter.cpp.

38{
39 // Store the field data.
40 std::string const json_string = ip_meta_data.toJsonString();
42 mesh, "IntegrationPointMetaData",
44 dictionary.clear();
45 std::copy(json_string.begin(), json_string.end(),
46 std::back_inserter(dictionary));
47}

References MeshLib::getOrCreateMeshProperty(), MeshLib::IntegrationPoint, and MeshLib::IntegrationPointMetaData::toJsonString().

Referenced by MeshLib::addIntegrationPointDataToMesh().