v0.16.0
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
 
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
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
 
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
 

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 471 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 473 of file MatOps.cpp.

477 : baseImplPtr(lockBaseImplPtr(base_data_ptr)),
478 commonDataDictionary(common_data_dictionary),
479 stateDataDictionary(state_data_dictionary) {}
DataDictionary commonDataDictionary
Definition MatOps.cpp:649
DataDictionary stateDataDictionary
Definition MatOps.cpp:650
static boost::shared_ptr< MatOpsDataImpl > lockBaseImplPtr(boost::weak_ptr< MatOpsData > base_data_ptr)
Definition MatOps.cpp:654
boost::shared_ptr< MatOpsDataImpl > baseImplPtr
Definition MatOps.cpp:648

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 598 of file MatOps.cpp.

600 {
601 if (auto it = stateDataDictionary.find(name);
602 it != stateDataDictionary.end())
603 return baseImplPtr->bindStateTag(m_field, it->second, num_components);
604 return baseImplPtr->bindStateTag(m_field, name, num_components);
605 }

◆ getActiveContinuousVector()

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

Implements MatOps::MatOpsData.

Definition at line 627 of file MatOps.cpp.

628 {
629 return getContinuousVector(dataActive, active_variables);
630 }
MoFEMErrorCode getContinuousVector(DataContainer &data_container, const std::vector< double > &variables)
Definition MatOps.cpp:436

◆ getActiveDataPtr()

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

Implements MatOps::MatOpsData.

Definition at line 542 of file MatOps.cpp.

542 {
543 auto &data_by_name = getDataActiveByName();
544 auto it = data_by_name.find(name);
545 if (it == data_by_name.end()) {
547 "Active data with name " + name + " not found");
548 return MatrixPtr();
549 }
550 return boost::shared_ptr<MatrixDouble>(this->shared_from_this(), &it->data);
551 }
#define CHK_THROW_MESSAGE(err, msg)
Check and throw MoFEM exception.
@ MOFEM_OPERATION_UNSUCCESSFUL
Definition definitions.h:34
MatOpsData::MatrixPtr MatrixPtr
Definition MatOps.cpp:93

◆ getCommonDataPtr()

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

Implements MatOps::MatOpsData.

Definition at line 534 of file MatOps.cpp.

534 {
535 if (auto it = commonDataDictionary.find(name);
536 it != commonDataDictionary.end()) {
537 return baseImplPtr->getCommonDataPtr(it->second);
538 }
539 return baseImplPtr->getCommonDataPtr(name);
540 }

◆ getDataActiveByName()

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

Definition at line 488 of file MatOps.cpp.

488 {
489 return boost::multi_index::get<DataName_mi_tag>(dataActive);
490 }

◆ getDataDependentByName()

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

Definition at line 492 of file MatOps.cpp.

492 {
493 return boost::multi_index::get<DataName_mi_tag>(dataDependent);
494 }

◆ getDataDependentDerivativesByName()

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

Definition at line 496 of file MatOps.cpp.

496 {
497 return boost::multi_index::get<DataName_mi_tag>(dataDependentDerivatives);
498 }
DataContainer dataDependentDerivatives
Definition MatOps.cpp:646

◆ getDependentContinuousVector()

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

Implements MatOps::MatOpsData.

Definition at line 632 of file MatOps.cpp.

633 {
634 return getContinuousVector(dataDependent, dependent_variables);
635 }

◆ getDependentDataPtr()

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

Implements MatOps::MatOpsData.

Definition at line 553 of file MatOps.cpp.

553 {
554 auto &data_by_name = getDataDependentByName();
555 auto it = data_by_name.find(name);
556 if (it == data_by_name.end()) {
558 "Dependent data with name " + name + " not found");
559 return MatrixPtr();
560 }
561 return boost::shared_ptr<MatrixDouble>(this->shared_from_this(), &it->data);
562 }

◆ getDependentDerivativesContinuousVector()

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

Implements MatOps::MatOpsData.

Definition at line 637 of file MatOps.cpp.

638 {
640 dependent_variables_derivatives);
641 }

◆ getDependentDerivativesDataPtr()

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

Implements MatOps::MatOpsData.

Definition at line 564 of file MatOps.cpp.

564 {
565 auto &data_by_name = getDataDependentDerivativesByName();
566 auto it = data_by_name.find(name);
567 if (it == data_by_name.end()) {
569 "Dependent derivatives data with name " + name +
570 " not found");
571 return MatrixPtr();
572 }
573 return boost::shared_ptr<MatrixDouble>(this->shared_from_this(), &it->data);
574 }
auto & getDataDependentDerivativesByName()
Definition MatOps.cpp:496

◆ getStateDataPtr()

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

Implements MatOps::MatOpsData.

Definition at line 576 of file MatOps.cpp.

577 {
578 if (auto it = stateDataDictionary.find(name);
579 it != stateDataDictionary.end())
580 return baseImplPtr->getStateDataPtr(it->second, ent, gg);
581 return baseImplPtr->getStateDataPtr(name, ent, gg);
582 }

◆ getStateTags()

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

Implements MatOps::MatOpsData.

Definition at line 584 of file MatOps.cpp.

584 {
585 auto state_tags = baseImplPtr->getStateTags();
586 for (auto &tag_info : state_tags) {
587 for (const auto &[alias_name, base_name] : stateDataDictionary) {
588 if (base_name == tag_info.name) {
589 tag_info.name = alias_name;
590 break;
591 }
592 }
593 }
594 sortStateTags(state_tags);
595 return state_tags;
596 }
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 501 of file MatOps.cpp.

503 {
504 auto insert_ret = getDataActiveByName().insert(Data{name, data, shift});
505 if (!insert_ret.second)
506 return {false, MatrixPtr()};
507 return {true, boost::shared_ptr<MatrixDouble>(this->shared_from_this(),
508 &insert_ret.first->data)};
509 }

◆ 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 482 of file MatOps.cpp.

484 {
485 return baseImplPtr->insertCommonData(name, data, shift);
486 }

◆ 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 512 of file MatOps.cpp.

514 {
515 auto insert_ret = getDataDependentByName().insert(Data{name, data, shift});
516 if (!insert_ret.second)
517 return {false, MatrixPtr()};
518 return {true, boost::shared_ptr<MatrixDouble>(this->shared_from_this(),
519 &insert_ret.first->data)};
520 }

◆ 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 523 of file MatOps.cpp.

525 {
526 auto insert_ret =
527 getDataDependentDerivativesByName().insert(Data{name, data, shift});
528 if (!insert_ret.second)
529 return {false, MatrixPtr()};
530 return {true, boost::shared_ptr<MatrixDouble>(this->shared_from_this(),
531 &insert_ret.first->data)};
532 }

◆ lockBaseImplPtr()

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

Definition at line 654 of file MatOps.cpp.

654 {
655 auto base_data = base_data_ptr.lock();
656 if (!base_data) {
658 "Base MatOps data pointer expired");
659 }
660
661 auto base_impl_ptr = boost::dynamic_pointer_cast<MatOpsDataImpl>(base_data);
662 if (!base_impl_ptr) {
664 "Base MatOps data pointer has incompatible type");
665 }
666
667 return base_impl_ptr;
668 }

◆ setActiveContinuousVector()

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

Implements MatOps::MatOpsData.

Definition at line 612 of file MatOps.cpp.

612 {
613 return setContinuousVector(dataActive, active_variables);
614 }
MoFEMErrorCode setContinuousVector(DataContainer &data_container, std::vector< double > &variables)
Definition MatOps.cpp:412

◆ setDependentContinuousVector()

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

Implements MatOps::MatOpsData.

Definition at line 616 of file MatOps.cpp.

617 {
618 return setContinuousVector(dataDependent, dependent_variables);
619 }

◆ setDependentDerivativesContinuousVector()

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

Implements MatOps::MatOpsData.

Definition at line 621 of file MatOps.cpp.

622 {
624 dependent_variables_derivatives);
625 }

◆ setupStateData()

MoFEMErrorCode MatOps::MatOpsDataDerivedImpl::setupStateData ( )
inlineoverridevirtual

Implements MatOps::MatOpsData.

Definition at line 607 of file MatOps.cpp.

607 {
608 return baseImplPtr->setupStateData();
609 }

Member Data Documentation

◆ baseImplPtr

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

Definition at line 648 of file MatOps.cpp.

◆ commonDataDictionary

DataDictionary MatOps::MatOpsDataDerivedImpl::commonDataDictionary
protected

Definition at line 649 of file MatOps.cpp.

◆ dataActive

DataContainer MatOps::MatOpsDataDerivedImpl::dataActive
protected

Definition at line 644 of file MatOps.cpp.

◆ dataDependent

DataContainer MatOps::MatOpsDataDerivedImpl::dataDependent
protected

Definition at line 645 of file MatOps.cpp.

◆ dataDependentDerivatives

DataContainer MatOps::MatOpsDataDerivedImpl::dataDependentDerivatives
protected

Definition at line 646 of file MatOps.cpp.

◆ stateDataDictionary

DataDictionary MatOps::MatOpsDataDerivedImpl::stateDataDictionary
protected

Definition at line 650 of file MatOps.cpp.


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