44#ifndef NIMBLE_MODEL_DATA_H
45#define NIMBLE_MODEL_DATA_H
52#ifdef NIMBLE_HAVE_DARMA
89 GetFieldId(
const std::string& label)
const override;
98 const std::shared_ptr<nimble::MaterialFactoryBase>& material_factory_base)
override;
144 double time_previous,
146 bool is_output_step)
override;
159 double time_previous,
167#ifdef NIMBLE_HAVE_DARMA
168 template <
typename ArchiveType>
170 serialize(ArchiveType& ar)
189 DeclareElementData(
int block_id, std::vector<std::pair<std::string, Length>>
const& data_labels_and_lengths);
212 std::map<int, std::shared_ptr<nimble::Block>>&
218 std::map<int, std::shared_ptr<nimble::Block>>
const&
246 template <
typename TBlock>
250 const std::shared_ptr<nimble::MaterialFactoryBase>& material_factory_base);
255 const std::shared_ptr<nimble::MaterialFactoryBase>& material_factory_base);
262 std::map<int, std::shared_ptr<nimble::Block>>
blocks_;
Definition nimble_data_manager.h:70
Definition nimble_data_utils.h:124
Definition nimble_material_factory_base.h:61
int dim_
Problem dimension, either 2 or 3.
Definition nimble_model_data_base.h:328
nimble::Viewify< 2 > GetVectorNodeData(const std::string &label)
Get view of vector quantity defined on nodes.
Definition nimble_model_data_base.h:163
ModelDataBase()=default
Constructor.
nimble::Viewify< 1 > GetScalarNodeData(const std::string &label)
Get view of scalar quantity defined on nodes.
Definition nimble_model_data_base.h:146
std::map< int, std::vector< std::string > > output_element_component_labels_
Output labels for element data that will be written to disk.
Definition nimble_model_data_base.h:341
std::vector< std::string > output_node_component_labels_
Output labels for node data that will be written to disk.
Definition nimble_model_data_base.h:334
std::map< int, std::vector< std::string > > derived_output_element_data_labels_
Output labels for derived element data that will be written to disk.
Definition nimble_model_data_base.h:344
double critical_time_step_
Critical time step.
Definition nimble_model_data_base.h:331
std::map< int, std::vector< std::string > > element_component_labels_
Definition nimble_model_data_base.h:338
std::map< int, std::shared_ptr< nimble::Block > > & GetBlocks()
Definition nimble_model_data.h:213
std::vector< double > & GetElementDataOld(int block_id)
Definition nimble_model_data.h:195
void SpecifyOutputFields(const std::string &output_field_string)
Definition nimble_model_data.cc:216
void WriteExodusOutput(nimble::DataManager &data_manager, double time_current) override
Write output of simulation in Exodus format.
Definition nimble_model_data.cc:558
std::map< int, std::vector< std::vector< double > > > derived_elem_data_
Information for Exodus output about element data.
Definition nimble_model_data.h:296
void ComputeInternalForce(nimble::DataManager &data_manager, double time_previous, double time_current, bool is_output_step, const nimble::Viewify< 2 > &displacement, nimble::Viewify< 2 > &force) override
Compute the internal force.
Definition nimble_model_data.cc:621
std::map< int, std::vector< double > > node_data_
Definition nimble_model_data.h:269
Field GetField(int field_id)
Definition nimble_model_data.cc:74
double * GetNodeData(int field_id)
Definition nimble_model_data.cc:94
nimble::Viewify< 1 > GetScalarNodeData(int field_id) override
Get view of scalar quantity defined on nodes.
Definition nimble_model_data.cc:533
void InitializeBlocks(nimble::DataManager &data_manager, const std::shared_ptr< nimble::MaterialFactoryBase > &material_factory_base) override
Initialize the different blocks in the mesh.
Definition nimble_model_data.cc:487
std::map< int, std::shared_ptr< nimble::Block > > const & GetBlocks() const
Definition nimble_model_data.h:219
std::vector< int > globally_shared_nodes_
List of node ids that are shared across multiple ranks.
Definition nimble_model_data.h:284
void GetElementDataForOutput(std::map< int, std::vector< std::vector< double > > > &single_component_arrays)
Definition nimble_model_data.cc:172
~ModelData() override=default
std::map< int, int > global_node_id_to_local_node_id_
Map from global node it to local node id.
Definition nimble_model_data.h:287
void GetNodeDataComponent(int field_id, int component, double *const component_data)
Definition nimble_model_data.cc:401
nimble::Viewify< 2 > GetVectorNodeData(int field_id) override
Get view of vector quantity defined on nodes.
Definition nimble_model_data.cc:541
void UpdateStates(const nimble::DataManager &data_manager) override
Copy time state (n+1) into time state (n)
Definition nimble_model_data.h:104
void ComputeLumpedMass(nimble::DataManager &data_manager) override
Compute the lumped mass.
Definition nimble_model_data.cc:496
std::map< int, std::vector< double > > element_data_n_
Definition nimble_model_data.h:277
std::map< int, Field > data_fields_
Map key is the field_id, value is the corresponding Field.
Definition nimble_model_data.h:265
void AllocateInitializeElementData(nimble::DataManager &data_manager, const std::shared_ptr< nimble::MaterialFactoryBase > &material_factory_base)
Definition nimble_model_data.cc:452
int AllocateNodeData(Length length, std::string label, int num_objects) override
Allocate data storage for a node-based quantity.
Definition nimble_model_data.cc:80
std::map< int, std::vector< std::vector< double > > > elem_data_for_output_
Information for Exodus output about element data.
Definition nimble_model_data.h:293
std::map< int, std::shared_ptr< nimble::Block > > blocks_
Blocks.
Definition nimble_model_data.h:262
std::vector< std::vector< double > > node_data_for_output_
Information for Exodus output about node data.
Definition nimble_model_data.h:290
void AllocateElementData(std::map< int, int > const &num_integration_points_in_each_block)
Definition nimble_model_data.cc:143
std::map< int, std::vector< int > > element_data_fields_
Definition nimble_model_data.h:273
std::vector< int > block_ids_
Block ids.
Definition nimble_model_data.h:259
std::vector< int > & GetGloballySharedNodes()
Definition nimble_model_data.h:225
void DeclareElementData(int block_id, std::vector< std::pair< std::string, Length > > const &data_labels_and_lengths)
Definition nimble_model_data.cc:126
void AssignFieldId(Field &field)
Definition nimble_model_data.cc:371
void GetNodeDataForOutput(std::vector< std::vector< double > > &single_component_arrays)
Definition nimble_model_data.cc:100
std::vector< double > & GetElementDataNew(int block_id)
Definition nimble_model_data.h:201
void ComputeExternalForce(nimble::DataManager &data_manager, double time_previous, double time_current, bool is_output_step) override
Compute the external force.
Definition nimble_model_data.cc:610
void InitializeExodusOutput(nimble::DataManager &data_manager) override
Definition nimble_model_data.cc:549
int GetFieldId(const std::string &label) const override
Returns the field ID for a specific label.
Definition nimble_model_data.cc:65
std::map< int, int > & GetGlobalNodeIdToLocalNodeIdMap()
Definition nimble_model_data.h:231
void EmplaceBlocks(nimble::DataManager &data_manager, const std::shared_ptr< nimble::MaterialFactoryBase > &material_factory_base)
Definition nimble_model_data.cc:418
std::map< int, std::vector< double > > element_data_np1_
Definition nimble_model_data.h:281
Definition nimble_vector_communicator.h:74
Definition nimble_view.h:72
Definition kokkos_contact_manager.h:49
Length
Definition nimble_data_utils.h:66