v0.16.3
Loading...
Searching...
No Matches
Public Member Functions | Protected Attributes | Static Private Member Functions | List of all members
MatOps::MatOpsDataDerivedImpl Struct Reference
Inheritance diagram for MatOps::MatOpsDataDerivedImpl:
[legend]
Collaboration diagram for MatOps::MatOpsDataDerivedImpl:
[legend]

Public Member Functions

 MatOpsDataDerivedImpl (boost::weak_ptr< MatOpsData > base_data_ptr, DataDictionary common_data_dictionary, DataDictionary state_data_dictionary)
 
std::pair< bool, MatrixPtrinsertCommonData (const std::string &name, const MatrixDouble &data=MatrixDouble(), int shift=0) override
 
auto & getDataActiveByName ()
 
auto & getDataDependentByName ()
 
auto & getDataDependentDerivativesByName ()
 
std::pair< bool, MatrixPtrinsertActiveData (const std::string &name, const MatrixDouble &data=MatrixDouble(), int shift=0) override
 
std::pair< bool, MatrixPtrinsertDependentData (const std::string &name, const MatrixDouble &data=MatrixDouble(), int shift=0) override
 
std::pair< bool, MatrixPtrinsertDependentDerivativesData (const std::string &name, const MatrixDouble &data=MatrixDouble(), int shift=0) override
 
MatrixPtr getCommonDataPtr (const std::string &name) override
 
MatrixPtr getActiveDataPtr (const std::string &name) override
 
MatrixPtr getDependentDataPtr (const std::string &name) override
 
MatrixPtr getDependentDerivativesDataPtr (const std::string &name) override
 
StateMatrixPtr getStateDataPtr (const std::string &name, EntityHandle ent, int gg) override
 Start each integration-point sweep at gg == 0 to refresh cached tag storage.
 
StateTags getStateTags () const override
 
MoFEMErrorCode bindStateTag (MoFEM::Interface &m_field, const std::string &name, int num_components) override
 
MoFEMErrorCode setupStateData () override
 
MoFEMErrorCode setActiveContinuousVector (std::vector< double > &active_variables) override
 
MoFEMErrorCode setDependentContinuousVector (std::vector< double > &dependent_variables) override
 
MoFEMErrorCode setDependentDerivativesContinuousVector (std::vector< double > &dependent_variables_derivatives) override
 
MoFEMErrorCode getActiveContinuousVector (const std::vector< double > &active_variables) override
 
MoFEMErrorCode getDependentContinuousVector (const std::vector< double > &dependent_variables) override
 
MoFEMErrorCode getDependentDerivativesContinuousVector (const std::vector< double > &dependent_variables_derivatives) override
 
- Public Member Functions inherited from MatOps::MatOpsDataImpl
boost::shared_ptr< UserDatagetUserDataPtr () const override
 Get the optional user-defined material data.
 
void setUserDataPtr (boost::shared_ptr< UserData > user_data_ptr) override
 Set data owned by this container; back-references should be weak.
 
auto & getDataCommonByName ()
 
auto & getDataActiveByName ()
 
auto & getDataDependentByName ()
 
auto & getDataDependentDerivativesByName ()
 
auto & getStateDataByName ()
 
auto & getStateDataBySequence ()
 
std::pair< bool, MatrixPtrinsertCommonData (const std::string &name, const MatrixDouble &data=MatrixDouble(), int shift=0) override
 
std::pair< bool, MatrixPtrinsertActiveData (const std::string &name, const MatrixDouble &data=MatrixDouble(), int shift=0) override
 
std::pair< bool, MatrixPtrinsertDependentData (const std::string &name, const MatrixDouble &data=MatrixDouble(), int shift=0) override
 
std::pair< bool, MatrixPtrinsertDependentDerivativesData (const std::string &name, const MatrixDouble &data=MatrixDouble(), int shift=0) override
 
MatrixPtr getCommonDataPtr (const std::string &name) override
 
MatrixPtr getActiveDataPtr (const std::string &name) override
 
MatrixPtr getDependentDataPtr (const std::string &name) override
 
MatrixPtr getDependentDerivativesDataPtr (const std::string &name) override
 
StateMatrixPtr getStateDataPtr (const std::string &name, EntityHandle ent, int gg) override
 Start each integration-point sweep at gg == 0 to refresh cached tag storage.
 
StateTags getStateTags () const override
 
MoFEMErrorCode bindStateTag (MoFEM::Interface &m_field, const std::string &name, int num_components) override
 
MoFEMErrorCode setupStateData () override
 
MoFEMErrorCode setActiveContinuousVector (std::vector< double > &active_variables) override
 
MoFEMErrorCode setDependentContinuousVector (std::vector< double > &dependent_variables) override
 
MoFEMErrorCode setDependentDerivativesContinuousVector (std::vector< double > &dependent_variables_derivatives) override
 
MoFEMErrorCode getActiveContinuousVector (const std::vector< double > &active_variables) override
 
MoFEMErrorCode getDependentContinuousVector (const std::vector< double > &dependent_variables) override
 
MoFEMErrorCode getDependentDerivativesContinuousVector (const std::vector< double > &dependent_variables_derivatives) override
 
- Public Member Functions inherited from MatOps::MatOpsData
virtual ~MatOpsData ()=default
 

Protected Attributes

DataContainer dataActive
 
DataContainer dataDependent
 
DataContainer dataDependentDerivatives
 
boost::shared_ptr< MatOpsDataImplbaseImplPtr
 
DataDictionary commonDataDictionary
 
DataDictionary stateDataDictionary
 
- Protected Attributes inherited from MatOps::MatOpsDataImpl
DataContainer dataCommon
 
DataContainer dataActive
 
DataContainer dataDependent
 
DataContainer dataDependentDerivatives
 
DataContainer dataState
 
MoFEM::InterfacemFieldPtr = nullptr
 
boost::shared_ptr< UserDatauserDataPtr
 

Static Private Member Functions

static boost::shared_ptr< MatOpsDataImpllockBaseImplPtr (boost::weak_ptr< MatOpsData > base_data_ptr)
 

Additional Inherited Members

- Public Types inherited from MatOps::MatOpsDataImpl
using MatrixPtr = MatOpsData::MatrixPtr
 
using StateMatrixPtr = MatOpsData::StateMatrixPtr
 
using DataContainer = boost::multi_index::multi_index_container< Data, boost::multi_index::indexed_by< boost::multi_index::sequenced< boost::multi_index::tag< DataSequence_mi_tag > >, boost::multi_index::hashed_unique< boost::multi_index::tag< DataName_mi_tag >, boost::multi_index::member< Data, std::string, &Data::name > > > >
 
- Public Types inherited from MatOps::MatOpsData
using MatrixPtr = boost::shared_ptr< MatrixDouble >
 
using StateMatrixPtr = boost::shared_ptr< MatrixAdaptor >
 
- Protected Member Functions inherited from MatOps::MatOpsDataImpl
MoFEMErrorCode setContinuousVector (DataContainer &data_container, std::vector< double > &variables)
 
MoFEMErrorCode getContinuousVector (DataContainer &data_container, const std::vector< double > &variables)
 

Detailed Description

Definition at line 510 of file MatOps.cpp.

Constructor & Destructor Documentation

◆ MatOpsDataDerivedImpl()

MatOps::MatOpsDataDerivedImpl::MatOpsDataDerivedImpl ( boost::weak_ptr< MatOpsData base_data_ptr,
DataDictionary  common_data_dictionary,
DataDictionary  state_data_dictionary 
)
inline

Definition at line 512 of file MatOps.cpp.

515 : baseImplPtr(lockBaseImplPtr(base_data_ptr)),
516 commonDataDictionary(common_data_dictionary),
517 stateDataDictionary(state_data_dictionary) {}
DataDictionary commonDataDictionary
Definition MatOps.cpp:687
DataDictionary stateDataDictionary
Definition MatOps.cpp:688
static boost::shared_ptr< MatOpsDataImpl > lockBaseImplPtr(boost::weak_ptr< MatOpsData > base_data_ptr)
Definition MatOps.cpp:692
boost::shared_ptr< MatOpsDataImpl > baseImplPtr
Definition MatOps.cpp:686

Member Function Documentation

◆ bindStateTag()

MoFEMErrorCode MatOps::MatOpsDataDerivedImpl::bindStateTag ( MoFEM::Interface m_field,
const std::string &  name,
int  num_components 
)
inlineoverridevirtual

Implements MatOps::MatOpsData.

Definition at line 636 of file MatOps.cpp.

638 {
639 if (auto it = stateDataDictionary.find(name);
640 it != stateDataDictionary.end())
641 return baseImplPtr->bindStateTag(m_field, it->second, num_components);
642 return baseImplPtr->bindStateTag(m_field, name, num_components);
643 }

◆ getActiveContinuousVector()

MoFEMErrorCode MatOps::MatOpsDataDerivedImpl::getActiveContinuousVector ( const std::vector< double > &  active_variables)
inlineoverridevirtual

Implements MatOps::MatOpsData.

Definition at line 665 of file MatOps.cpp.

666 {
667 return getContinuousVector(dataActive, active_variables);
668 }
MoFEMErrorCode getContinuousVector(DataContainer &data_container, const std::vector< double > &variables)
Definition MatOps.cpp:474

◆ getActiveDataPtr()

MatrixPtr MatOps::MatOpsDataDerivedImpl::getActiveDataPtr ( const std::string &  name)
inlineoverridevirtual

Implements MatOps::MatOpsData.

Definition at line 580 of file MatOps.cpp.

580 {
581 auto &data_by_name = getDataActiveByName();
582 auto it = data_by_name.find(name);
583 if (it == data_by_name.end()) {
585 "Active data with name " + name + " not found");
586 return MatrixPtr();
587 }
588 return boost::shared_ptr<MatrixDouble>(this->shared_from_this(), &it->data);
589 }
#define CHK_THROW_MESSAGE(err, msg)
Check and throw MoFEM exception.
@ MOFEM_OPERATION_UNSUCCESSFUL
Definition definitions.h:34
MatOpsData::MatrixPtr MatrixPtr
Definition MatOps.cpp:100

◆ getCommonDataPtr()

MatrixPtr MatOps::MatOpsDataDerivedImpl::getCommonDataPtr ( const std::string &  name)
inlineoverridevirtual

Implements MatOps::MatOpsData.

Definition at line 572 of file MatOps.cpp.

572 {
573 if (auto it = commonDataDictionary.find(name);
574 it != commonDataDictionary.end()) {
575 return baseImplPtr->getCommonDataPtr(it->second);
576 }
577 return baseImplPtr->getCommonDataPtr(name);
578 }

◆ getDataActiveByName()

auto & MatOps::MatOpsDataDerivedImpl::getDataActiveByName ( )
inline

Definition at line 526 of file MatOps.cpp.

526 {
527 return boost::multi_index::get<DataName_mi_tag>(dataActive);
528 }

◆ getDataDependentByName()

auto & MatOps::MatOpsDataDerivedImpl::getDataDependentByName ( )
inline

Definition at line 530 of file MatOps.cpp.

530 {
531 return boost::multi_index::get<DataName_mi_tag>(dataDependent);
532 }

◆ getDataDependentDerivativesByName()

auto & MatOps::MatOpsDataDerivedImpl::getDataDependentDerivativesByName ( )
inline

Definition at line 534 of file MatOps.cpp.

534 {
535 return boost::multi_index::get<DataName_mi_tag>(dataDependentDerivatives);
536 }
DataContainer dataDependentDerivatives
Definition MatOps.cpp:684

◆ getDependentContinuousVector()

MoFEMErrorCode MatOps::MatOpsDataDerivedImpl::getDependentContinuousVector ( const std::vector< double > &  dependent_variables)
inlineoverridevirtual

Implements MatOps::MatOpsData.

Definition at line 670 of file MatOps.cpp.

671 {
672 return getContinuousVector(dataDependent, dependent_variables);
673 }

◆ getDependentDataPtr()

MatrixPtr MatOps::MatOpsDataDerivedImpl::getDependentDataPtr ( const std::string &  name)
inlineoverridevirtual

Implements MatOps::MatOpsData.

Definition at line 591 of file MatOps.cpp.

591 {
592 auto &data_by_name = getDataDependentByName();
593 auto it = data_by_name.find(name);
594 if (it == data_by_name.end()) {
596 "Dependent data with name " + name + " not found");
597 return MatrixPtr();
598 }
599 return boost::shared_ptr<MatrixDouble>(this->shared_from_this(), &it->data);
600 }

◆ getDependentDerivativesContinuousVector()

MoFEMErrorCode MatOps::MatOpsDataDerivedImpl::getDependentDerivativesContinuousVector ( const std::vector< double > &  dependent_variables_derivatives)
inlineoverridevirtual

Implements MatOps::MatOpsData.

Definition at line 675 of file MatOps.cpp.

676 {
678 dependent_variables_derivatives);
679 }

◆ getDependentDerivativesDataPtr()

MatrixPtr MatOps::MatOpsDataDerivedImpl::getDependentDerivativesDataPtr ( const std::string &  name)
inlineoverridevirtual

Implements MatOps::MatOpsData.

Definition at line 602 of file MatOps.cpp.

602 {
603 auto &data_by_name = getDataDependentDerivativesByName();
604 auto it = data_by_name.find(name);
605 if (it == data_by_name.end()) {
607 "Dependent derivatives data with name " + name +
608 " not found");
609 return MatrixPtr();
610 }
611 return boost::shared_ptr<MatrixDouble>(this->shared_from_this(), &it->data);
612 }
auto & getDataDependentDerivativesByName()
Definition MatOps.cpp:534

◆ getStateDataPtr()

StateMatrixPtr MatOps::MatOpsDataDerivedImpl::getStateDataPtr ( const std::string &  name,
EntityHandle  ent,
int  gg 
)
inlineoverridevirtual

Start each integration-point sweep at gg == 0 to refresh cached tag storage.

Implements MatOps::MatOpsData.

Definition at line 614 of file MatOps.cpp.

615 {
616 if (auto it = stateDataDictionary.find(name);
617 it != stateDataDictionary.end())
618 return baseImplPtr->getStateDataPtr(it->second, ent, gg);
619 return baseImplPtr->getStateDataPtr(name, ent, gg);
620 }

◆ getStateTags()

StateTags MatOps::MatOpsDataDerivedImpl::getStateTags ( ) const
inlineoverridevirtual

Implements MatOps::MatOpsData.

Definition at line 622 of file MatOps.cpp.

622 {
623 auto state_tags = baseImplPtr->getStateTags();
624 for (auto &tag_info : state_tags) {
625 for (const auto &[alias_name, base_name] : stateDataDictionary) {
626 if (base_name == tag_info.name) {
627 tag_info.name = alias_name;
628 break;
629 }
630 }
631 }
632 sortStateTags(state_tags);
633 return state_tags;
634 }
static void sortStateTags(StateTags &state_tags)
Definition MatOps.cpp:19

◆ insertActiveData()

std::pair< bool, MatrixPtr > MatOps::MatOpsDataDerivedImpl::insertActiveData ( const std::string &  name,
const MatrixDouble data = MatrixDouble(),
int  shift = 0 
)
inlineoverridevirtual

Implements MatOps::MatOpsData.

Definition at line 539 of file MatOps.cpp.

541 {
542 auto insert_ret = getDataActiveByName().insert(Data{name, data, shift});
543 if (!insert_ret.second)
544 return {false, MatrixPtr()};
545 return {true, boost::shared_ptr<MatrixDouble>(this->shared_from_this(),
546 &insert_ret.first->data)};
547 }

◆ insertCommonData()

std::pair< bool, MatrixPtr > MatOps::MatOpsDataDerivedImpl::insertCommonData ( const std::string &  name,
const MatrixDouble data = MatrixDouble(),
int  shift = 0 
)
inlineoverridevirtual

Implements MatOps::MatOpsData.

Definition at line 520 of file MatOps.cpp.

522 {
523 return baseImplPtr->insertCommonData(name, data, shift);
524 }

◆ insertDependentData()

std::pair< bool, MatrixPtr > MatOps::MatOpsDataDerivedImpl::insertDependentData ( const std::string &  name,
const MatrixDouble data = MatrixDouble(),
int  shift = 0 
)
inlineoverridevirtual

Implements MatOps::MatOpsData.

Definition at line 550 of file MatOps.cpp.

552 {
553 auto insert_ret = getDataDependentByName().insert(Data{name, data, shift});
554 if (!insert_ret.second)
555 return {false, MatrixPtr()};
556 return {true, boost::shared_ptr<MatrixDouble>(this->shared_from_this(),
557 &insert_ret.first->data)};
558 }

◆ insertDependentDerivativesData()

std::pair< bool, MatrixPtr > MatOps::MatOpsDataDerivedImpl::insertDependentDerivativesData ( const std::string &  name,
const MatrixDouble data = MatrixDouble(),
int  shift = 0 
)
inlineoverridevirtual

Implements MatOps::MatOpsData.

Definition at line 561 of file MatOps.cpp.

563 {
564 auto insert_ret =
565 getDataDependentDerivativesByName().insert(Data{name, data, shift});
566 if (!insert_ret.second)
567 return {false, MatrixPtr()};
568 return {true, boost::shared_ptr<MatrixDouble>(this->shared_from_this(),
569 &insert_ret.first->data)};
570 }

◆ lockBaseImplPtr()

static boost::shared_ptr< MatOpsDataImpl > MatOps::MatOpsDataDerivedImpl::lockBaseImplPtr ( boost::weak_ptr< MatOpsData base_data_ptr)
inlinestaticprivate

Definition at line 692 of file MatOps.cpp.

692 {
693 auto base_data = base_data_ptr.lock();
694 if (!base_data) {
696 "Base MatOps data pointer expired");
697 }
698
699 auto base_impl_ptr = boost::dynamic_pointer_cast<MatOpsDataImpl>(base_data);
700 if (!base_impl_ptr) {
702 "Base MatOps data pointer has incompatible type");
703 }
704
705 return base_impl_ptr;
706 }

◆ setActiveContinuousVector()

MoFEMErrorCode MatOps::MatOpsDataDerivedImpl::setActiveContinuousVector ( std::vector< double > &  active_variables)
inlineoverridevirtual

Implements MatOps::MatOpsData.

Definition at line 650 of file MatOps.cpp.

650 {
651 return setContinuousVector(dataActive, active_variables);
652 }
MoFEMErrorCode setContinuousVector(DataContainer &data_container, std::vector< double > &variables)
Definition MatOps.cpp:450

◆ setDependentContinuousVector()

MoFEMErrorCode MatOps::MatOpsDataDerivedImpl::setDependentContinuousVector ( std::vector< double > &  dependent_variables)
inlineoverridevirtual

Implements MatOps::MatOpsData.

Definition at line 654 of file MatOps.cpp.

655 {
656 return setContinuousVector(dataDependent, dependent_variables);
657 }

◆ setDependentDerivativesContinuousVector()

MoFEMErrorCode MatOps::MatOpsDataDerivedImpl::setDependentDerivativesContinuousVector ( std::vector< double > &  dependent_variables_derivatives)
inlineoverridevirtual

Implements MatOps::MatOpsData.

Definition at line 659 of file MatOps.cpp.

660 {
662 dependent_variables_derivatives);
663 }

◆ setupStateData()

MoFEMErrorCode MatOps::MatOpsDataDerivedImpl::setupStateData ( )
inlineoverridevirtual

Implements MatOps::MatOpsData.

Definition at line 645 of file MatOps.cpp.

645 {
646 return baseImplPtr->setupStateData();
647 }

Member Data Documentation

◆ baseImplPtr

boost::shared_ptr<MatOpsDataImpl> MatOps::MatOpsDataDerivedImpl::baseImplPtr
protected

Definition at line 686 of file MatOps.cpp.

◆ commonDataDictionary

DataDictionary MatOps::MatOpsDataDerivedImpl::commonDataDictionary
protected

Definition at line 687 of file MatOps.cpp.

◆ dataActive

DataContainer MatOps::MatOpsDataDerivedImpl::dataActive
protected

Definition at line 682 of file MatOps.cpp.

◆ dataDependent

DataContainer MatOps::MatOpsDataDerivedImpl::dataDependent
protected

Definition at line 683 of file MatOps.cpp.

◆ dataDependentDerivatives

DataContainer MatOps::MatOpsDataDerivedImpl::dataDependentDerivatives
protected

Definition at line 684 of file MatOps.cpp.

◆ stateDataDictionary

DataDictionary MatOps::MatOpsDataDerivedImpl::stateDataDictionary
protected

Definition at line 688 of file MatOps.cpp.


The documentation for this struct was generated from the following file: