https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Functions
MeshInfo.C File Reference

Go to the source code of this file.

Functions

 registerMooseObject ("MooseApp", MeshInfo)
 
std::string elemQualityToString (const libMesh::ElemQuality eq)
 
template<class InfoType >
void toJSONInfoBase (nlohmann::json &json, const InfoType &info)
 
template<class InfoType , class InfoItemsType >
void toJSONElemContainingInfo (nlohmann::json &info_json, const InfoType &info, const InfoItemsType &items)
 
void to_json (nlohmann::json &json, const MeshInfo::ElemInfoMap &info_map)
 JSON serialization for info maps.
 
template<class DomainInfoMapType >
void toJSONDomainInfoMap (nlohmann::json &json, const DomainInfoMapType &info_map)
 
void to_json (nlohmann::json &json, const MeshInfo::SidesetInfoMap &info_map)
 
void to_json (nlohmann::json &json, const MeshInfo::SubdomainInfoMap &info_map)
 
void dataStore (std::ostream &stream, MeshInfo::DomainElemQuality &beq, void *)
 Data store and load for DomainElemQuality.
 
void dataLoad (std::istream &stream, MeshInfo::DomainElemQuality &beq, void *)
 
template<typename T >
void dataStoreInfoBase (std::ostream &stream, T &info)
 Data store and load for node, elem, sideset, subdomain info entries.
 
template<typename T >
void dataStoreElemContainingInfo (std::ostream &stream, T &info)
 
void dataStore (std::ostream &stream, MeshInfo::ElemInfo &info, void *)
 Data store and load for node, elem, sideset, subdomain info entries.
 
template<typename T >
void dataStoreDomainInfo (std::ostream &stream, T &info)
 
void dataStore (std::ostream &stream, MeshInfo::SidesetInfo &info, void *)
 
void dataStore (std::ostream &stream, MeshInfo::SubdomainInfo &info, void *)
 
template<typename T >
void dataLoadInfoBase (std::istream &stream, T &info)
 
template<typename T >
void dataLoadElemContainingInfo (std::istream &stream, T &info)
 
void dataLoad (std::istream &stream, MeshInfo::ElemInfo &info, void *)
 
template<typename T >
void dataLoadDomainInfo (std::istream &stream, T &info)
 
void dataLoad (std::istream &stream, MeshInfo::SidesetInfo &info, void *)
 
void dataLoad (std::istream &stream, MeshInfo::SubdomainInfo &info, void *)
 
void dataStore (std::ostream &stream, MeshInfo::ElemInfoMap &info_map, void *)
 Data store and load for info maps.
 
void dataStore (std::ostream &stream, MeshInfo::SidesetInfoMap &info_map, void *)
 
void dataStore (std::ostream &stream, MeshInfo::SubdomainInfoMap &info_map, void *)
 
void dataLoad (std::istream &stream, MeshInfo::ElemInfoMap &info_map, void *)
 
void dataLoad (std::istream &stream, MeshInfo::SidesetInfoMap &info_map, void *)
 
void dataLoad (std::istream &stream, MeshInfo::SubdomainInfoMap &info_map, void *)
 
template MeshInfo::SidesetInfos MeshInfo::initCombinedInfos< MeshInfo::SidesetInfos > (const std::string &, const MultiMooseEnum &, const MultiMooseEnum &)
 
template MeshInfo::SubdomainInfos MeshInfo::initCombinedInfos< MeshInfo::SubdomainInfos > (const std::string &, const MultiMooseEnum &, const MultiMooseEnum &)
 
template void MeshInfo::possiblyAddDomainInfo< MeshInfo::SidesetInfos > (MeshInfo::SidesetInfos &)
 
template void MeshInfo::possiblyAddDomainInfo< MeshInfo::SubdomainInfos > (MeshInfo::SubdomainInfos &)
 

Function Documentation

◆ dataLoad() [1/7]

void dataLoad ( std::istream &  stream,
MeshInfo::DomainElemQuality beq,
void *   
)

Definition at line 872 of file MeshInfo.C.

873{
874 int value;
875
876 dataLoad(stream, value, nullptr);
877 beq.elemQuality() = static_cast<libMesh::ElemQuality>(value);
878
879 dataLoad(stream, value, nullptr);
880 beq.boundType() = static_cast<MeshInfo::BoundType>(value);
881}
void dataLoad(std::istream &stream, MeshInfo::DomainElemQuality &beq, void *)
Definition MeshInfo.C:872
BoundType
Type of a bound for DomainElemQuality (min or max).
Definition MeshInfo.h:38
Real value(unsigned n, unsigned alpha, unsigned beta, Real x)
libMesh::ElemQuality & elemQuality()
Get the libMesh::ElemQuality entry.
Definition MeshInfo.h:54
BoundType & boundType()
Get the type of the bound (min or max)
Definition MeshInfo.h:60

Referenced by dataLoad(), dataLoad(), dataLoad(), dataLoad(), dataLoad(), dataLoadDomainInfo(), dataLoadElemContainingInfo(), and dataLoadInfoBase().

◆ dataLoad() [2/7]

void dataLoad ( std::istream &  stream,
MeshInfo::ElemInfo info,
void *   
)

Definition at line 955 of file MeshInfo.C.

956{
957 dataLoadElemContainingInfo(stream, info);
958 dataLoad(stream, info.elem_qualities, nullptr);
959 dataLoad(stream, info.dim, nullptr);
960 dataLoad(stream, info.elem_mapping_type, nullptr);
961 dataLoad(stream, info.elem_type, nullptr);
962 dataLoad(stream, info.hmax, nullptr);
963 dataLoad(stream, info.hmin, nullptr);
964 dataLoad(stream, info.neighbor_ids, nullptr);
965 dataLoad(stream, info.node_ids, nullptr);
966 dataLoad(stream, info.num_sides, nullptr);
967 dataLoad(stream, info.points, nullptr);
968 dataLoad(stream, info.processor_id, nullptr);
969 dataLoad(stream, info.subdomain_id, nullptr);
970 dataLoad(stream, info.unique_id, nullptr);
971}
void dataLoadElemContainingInfo(std::istream &stream, T &info)
Definition MeshInfo.C:948
MPI_Info info

◆ dataLoad() [3/7]

void dataLoad ( std::istream &  stream,
MeshInfo::ElemInfoMap info_map,
void *   
)

Definition at line 1014 of file MeshInfo.C.

1015{
1016 dataLoad(stream, info_map.map, nullptr);
1017}
map_type map
The underlying data.
Definition MeshInfo.h:262

◆ dataLoad() [4/7]

void dataLoad ( std::istream &  stream,
MeshInfo::SidesetInfo info,
void *   
)

Definition at line 987 of file MeshInfo.C.

988{
989 dataLoadDomainInfo(stream, info);
990}
void dataLoadDomainInfo(std::istream &stream, T &info)
Definition MeshInfo.C:974

◆ dataLoad() [5/7]

void dataLoad ( std::istream &  stream,
MeshInfo::SidesetInfoMap info_map,
void *   
)

Definition at line 1019 of file MeshInfo.C.

1020{
1021 dataLoad(stream, info_map.map, nullptr);
1022}

◆ dataLoad() [6/7]

void dataLoad ( std::istream &  stream,
MeshInfo::SubdomainInfo info,
void *   
)

Definition at line 992 of file MeshInfo.C.

993{
994 dataLoadDomainInfo(stream, info);
995}

◆ dataLoad() [7/7]

void dataLoad ( std::istream &  stream,
MeshInfo::SubdomainInfoMap info_map,
void *   
)

Definition at line 1024 of file MeshInfo.C.

1025{
1026 dataLoad(stream, info_map.map, nullptr);
1027}

◆ dataLoadDomainInfo()

template<typename T >
void dataLoadDomainInfo ( std::istream &  stream,
T &  info 
)

Definition at line 974 of file MeshInfo.C.

975{
976 dataLoadElemContainingInfo(stream, info);
977 dataLoad(stream, info.name, nullptr);
978 dataLoad(stream, info.elem_qualities, nullptr);
979 dataLoad(stream, info.elems, nullptr);
980 dataLoad(stream, info.elem_types, nullptr);
981 dataLoad(stream, info.min_volume, nullptr);
982 dataLoad(stream, info.max_volume, nullptr);
983 dataLoad(stream, info.num_elems, nullptr);
984 dataLoad(stream, info.processor_ids, nullptr);
985}

Referenced by dataLoad(), and dataLoad().

◆ dataLoadElemContainingInfo()

template<typename T >
void dataLoadElemContainingInfo ( std::istream &  stream,
T &  info 
)

Definition at line 948 of file MeshInfo.C.

949{
950 dataLoadInfoBase(stream, info);
951 dataLoad(stream, info.bounding_box, nullptr);
952 dataLoad(stream, info.volume, nullptr);
953}
void dataLoadInfoBase(std::istream &stream, T &info)
Definition MeshInfo.C:942

Referenced by dataLoad(), and dataLoadDomainInfo().

◆ dataLoadInfoBase()

template<typename T >
void dataLoadInfoBase ( std::istream &  stream,
T &  info 
)

Definition at line 942 of file MeshInfo.C.

943{
944 dataLoad(stream, info.id, nullptr);
945}

Referenced by dataLoadElemContainingInfo().

◆ dataStore() [1/7]

void dataStore ( std::ostream &  stream,
MeshInfo::DomainElemQuality beq,
void *   
)

Data store and load for DomainElemQuality.

Definition at line 861 of file MeshInfo.C.

862{
863 int value;
864
865 value = static_cast<int>(beq.elemQuality());
866 dataStore(stream, value, nullptr);
867
868 value = static_cast<int>(beq.boundType());
869 dataStore(stream, value, nullptr);
870}
void dataStore(std::ostream &stream, MeshInfo::DomainElemQuality &beq, void *)
Data store and load for DomainElemQuality.
Definition MeshInfo.C:861

Referenced by dataStore(), dataStore(), dataStore(), dataStore(), dataStore(), dataStoreDomainInfo(), dataStoreElemContainingInfo(), and dataStoreInfoBase().

◆ dataStore() [2/7]

void dataStore ( std::ostream &  stream,
MeshInfo::ElemInfo info,
void *   
)

Data store and load for node, elem, sideset, subdomain info entries.

Definition at line 899 of file MeshInfo.C.

900{
901 dataStoreElemContainingInfo(stream, info);
902 dataStore(stream, info.elem_qualities, nullptr);
903 dataStore(stream, info.dim, nullptr);
904 dataStore(stream, info.elem_mapping_type, nullptr);
905 dataStore(stream, info.elem_type, nullptr);
906 dataStore(stream, info.hmax, nullptr);
907 dataStore(stream, info.hmin, nullptr);
908 dataStore(stream, info.neighbor_ids, nullptr);
909 dataStore(stream, info.node_ids, nullptr);
910 dataStore(stream, info.num_sides, nullptr);
911 dataStore(stream, info.points, nullptr);
912 dataStore(stream, info.processor_id, nullptr);
913 dataStore(stream, info.subdomain_id, nullptr);
914 dataStore(stream, info.unique_id, nullptr);
915}
void dataStoreElemContainingInfo(std::ostream &stream, T &info)
Definition MeshInfo.C:892

◆ dataStore() [3/7]

void dataStore ( std::ostream &  stream,
MeshInfo::ElemInfoMap info_map,
void *   
)

Data store and load for info maps.

Definition at line 999 of file MeshInfo.C.

1000{
1001 dataStore(stream, info_map.map, nullptr);
1002}

◆ dataStore() [4/7]

void dataStore ( std::ostream &  stream,
MeshInfo::SidesetInfo info,
void *   
)

Definition at line 931 of file MeshInfo.C.

932{
933 dataStoreDomainInfo(stream, info);
934}
void dataStoreDomainInfo(std::ostream &stream, T &info)
Definition MeshInfo.C:918

◆ dataStore() [5/7]

void dataStore ( std::ostream &  stream,
MeshInfo::SidesetInfoMap info_map,
void *   
)

Definition at line 1004 of file MeshInfo.C.

1005{
1006 dataStore(stream, info_map.map, nullptr);
1007}

◆ dataStore() [6/7]

void dataStore ( std::ostream &  stream,
MeshInfo::SubdomainInfo info,
void *   
)

Definition at line 936 of file MeshInfo.C.

937{
938 dataStoreDomainInfo(stream, info);
939}

◆ dataStore() [7/7]

void dataStore ( std::ostream &  stream,
MeshInfo::SubdomainInfoMap info_map,
void *   
)

Definition at line 1009 of file MeshInfo.C.

1010{
1011 dataStore(stream, info_map.map, nullptr);
1012}

◆ dataStoreDomainInfo()

template<typename T >
void dataStoreDomainInfo ( std::ostream &  stream,
T &  info 
)

Definition at line 918 of file MeshInfo.C.

919{
920 dataStoreElemContainingInfo(stream, info);
921 dataStore(stream, info.name, nullptr);
922 dataStore(stream, info.elem_qualities, nullptr);
923 dataStore(stream, info.elems, nullptr);
924 dataStore(stream, info.elem_types, nullptr);
925 dataStore(stream, info.min_volume, nullptr);
926 dataStore(stream, info.max_volume, nullptr);
927 dataStore(stream, info.num_elems, nullptr);
928 dataStore(stream, info.processor_ids, nullptr);
929}

Referenced by dataStore(), and dataStore().

◆ dataStoreElemContainingInfo()

template<typename T >
void dataStoreElemContainingInfo ( std::ostream &  stream,
T &  info 
)

Definition at line 892 of file MeshInfo.C.

893{
894 dataStoreInfoBase(stream, info);
895 dataStore(stream, info.bounding_box, nullptr);
896 dataStore(stream, info.volume, nullptr);
897}
void dataStoreInfoBase(std::ostream &stream, T &info)
Data store and load for node, elem, sideset, subdomain info entries.
Definition MeshInfo.C:886

Referenced by dataStore(), and dataStoreDomainInfo().

◆ dataStoreInfoBase()

template<typename T >
void dataStoreInfoBase ( std::ostream &  stream,
T &  info 
)

Data store and load for node, elem, sideset, subdomain info entries.

Definition at line 886 of file MeshInfo.C.

887{
888 dataStore(stream, info.id, nullptr);
889}

Referenced by dataStoreElemContainingInfo().

◆ elemQualityToString()

std::string elemQualityToString ( const libMesh::ElemQuality  eq)

Definition at line 34 of file MeshInfo.C.

35{
37}
std::string toLower(std::string name)
Convert supplied string to lower case.
std::string enum_to_string(const T e)

Referenced by MeshInfo::ElemInfoItems::ElemInfoItems(), MeshInfo::DomainElemQuality::itemName(), to_json(), and MeshInfo::validParams().

◆ MeshInfo::initCombinedInfos< MeshInfo::SidesetInfos >()

template MeshInfo::SidesetInfos MeshInfo::initCombinedInfos< MeshInfo::SidesetInfos > ( const std::string &  ,
const MultiMooseEnum ,
const MultiMooseEnum  
)

◆ MeshInfo::initCombinedInfos< MeshInfo::SubdomainInfos >()

template MeshInfo::SubdomainInfos MeshInfo::initCombinedInfos< MeshInfo::SubdomainInfos > ( const std::string &  ,
const MultiMooseEnum ,
const MultiMooseEnum  
)

◆ MeshInfo::possiblyAddDomainInfo< MeshInfo::SidesetInfos >()

◆ MeshInfo::possiblyAddDomainInfo< MeshInfo::SubdomainInfos >()

◆ registerMooseObject()

registerMooseObject ( "MooseApp"  ,
MeshInfo   
)

◆ to_json() [1/3]

void to_json ( nlohmann::json &  json,
const MeshInfo::ElemInfoMap info_map 
)

JSON serialization for info maps.

Definition at line 747 of file MeshInfo.C.

748{
749 const auto & items = info_map.items;
750 for (const auto & [id, info] : info_map.map)
751 {
752 mooseAssert(id == info.id, "Inconsistent id");
753
754 nlohmann::json info_json;
755 toJSONElemContainingInfo(info_json, info, items);
756 info_json["subdomain_id"] = info.subdomain_id;
757
758 // elem_qualities
759 if (info.elem_qualities.size())
760 for (const auto & [quality, value] : info.elem_qualities)
761 info_json["elem_qualities"][elemQualityToString(quality)] = value;
762 // dim
763 info_json_simple(dim);
764 // elem_mapping_type
765 info_json_enum(elem_mapping_type);
766 // elem_type
767 info_json_enum(elem_type);
768 // hmax
769 info_json_simple(hmax);
770 // hmin
771 info_json_simple(hmin);
772 // neighbor_ids
773 info_json_ids(neighbor_ids, libMesh::DofObject::invalid_id);
774 // node_ids
775 info_json_ids(node_ids, libMesh::DofObject::invalid_id);
776 // num_sides
777 info_json_simple(num_sides);
778 // points
779 info_json_simple(points);
780 // processor_id
781 info_json_simple(processor_id);
782 // unique_id
783 info_json_id(unique_id, libMesh::DofObject::invalid_unique_id);
784
785 json.push_back(std::move(info_json));
786 }
787}
void toJSONElemContainingInfo(nlohmann::json &info_json, const InfoType &info, const InfoItemsType &items)
Definition MeshInfo.C:738
std::string elemQualityToString(const libMesh::ElemQuality eq)
Definition MeshInfo.C:34
static constexpr dof_id_type invalid_id
static constexpr unique_id_type invalid_unique_id
ItemsType items
Which items are to be output.
Definition MeshInfo.h:264

◆ to_json() [2/3]

void to_json ( nlohmann::json &  json,
const MeshInfo::SidesetInfoMap info_map 
)

Definition at line 849 of file MeshInfo.C.

850{
851 toJSONDomainInfoMap(json, info_map);
852}
void toJSONDomainInfoMap(nlohmann::json &json, const DomainInfoMapType &info_map)
Definition MeshInfo.C:790

◆ to_json() [3/3]

void to_json ( nlohmann::json &  json,
const MeshInfo::SubdomainInfoMap info_map 
)

Definition at line 854 of file MeshInfo.C.

855{
856 toJSONDomainInfoMap(json, info_map);
857}

◆ toJSONDomainInfoMap()

template<class DomainInfoMapType >
void toJSONDomainInfoMap ( nlohmann::json &  json,
const DomainInfoMapType &  info_map 
)

Definition at line 790 of file MeshInfo.C.

791{
792 constexpr bool is_sideset = std::is_same_v<DomainInfoMapType, MeshInfo::SidesetInfoMap>;
793 const auto & items = info_map.items;
794
795 for (const auto & [id, info] : info_map.map)
796 {
797 mooseAssert(id == info.id, "Inconsistent id");
798
799 nlohmann::json info_json;
800 toJSONElemContainingInfo(info_json, info, items);
801
802 if (info.name.size())
803 info_json["name"] = info.name;
804 // elem_qualities
805 if (items.elem_qualities.size())
806 for (const auto & [bounded_quality, value] : info.elem_qualities)
807 info_json["elem_qualities"][bounded_quality.itemName()] = value;
808 // elems
809 if (items.elems)
810 {
811 auto & elems_json = info_json["elems"];
812 if constexpr (is_sideset)
813 {
814 for (const auto & elem_entry : info.elems)
815 elems_json.push_back({{"elem_id", elem_entry.first}, {"side", elem_entry.second}});
816 }
817 else
818 elems_json = info.elems;
819 }
820 // elem_types
821 if (items.elem_types)
822 {
823 std::vector<std::string> elem_types;
824 elem_types.reserve(info.elem_types.size());
825 std::transform(info.elem_types.begin(),
826 info.elem_types.end(),
827 std::back_inserter(elem_types),
828 [](const auto v) { return libMesh::Utility::enum_to_string(v); });
829 std::sort(elem_types.begin(), elem_types.end());
830 info_json["elem_types"] = elem_types;
831 }
832 // max_volume
833 info_json_simple(max_volume);
834 // min_volume
835 info_json_simple(min_volume);
836 // min_volume
837 info_json_simple(num_elems);
838 // processor_ids
839 info_json_simple(processor_ids);
840
841 json.push_back(std::move(info_json));
842 }
843}
void elem_types(const MeshBase &mesh, std::vector< ElemType > &et)

Referenced by to_json(), and to_json().

◆ toJSONElemContainingInfo()

template<class InfoType , class InfoItemsType >
void toJSONElemContainingInfo ( nlohmann::json &  info_json,
const InfoType &  info,
const InfoItemsType &  items 
)

Definition at line 738 of file MeshInfo.C.

741{
742 toJSONInfoBase(info_json, info);
743 info_json_simple(bounding_box);
744 info_json_simple(volume);
745}
void toJSONInfoBase(nlohmann::json &json, const InfoType &info)
Definition MeshInfo.C:732

Referenced by to_json(), and toJSONDomainInfoMap().

◆ toJSONInfoBase()

template<class InfoType >
void toJSONInfoBase ( nlohmann::json &  json,
const InfoType &  info 
)

Definition at line 732 of file MeshInfo.C.

733{
734 json["id"] = info.id;
735}

Referenced by toJSONElemContainingInfo().