KratosMultiphysics
KRATOS Multiphysics (Kratos) is a framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, and high performance. Kratos is written in C++, and counts with an extensive Python interface.
Namespaces | Macros | Typedefs | Functions
container_expression_utils.cpp File Reference
#include <cmath>
#include <variant>
#include <numeric>
#include <type_traits>
#include "expression/variable_expression_data_io.h"
#include "expression/container_data_io.h"
#include "expression/container_expression.h"
#include "expression/variable_expression_io.h"
#include "includes/define.h"
#include "includes/model_part.h"
#include "utilities/atomic_utilities.h"
#include "utilities/parallel_utilities.h"
#include "utilities/reduction_utilities.h"
#include "utilities/variable_utils.h"
#include "optimization_application_variables.h"
#include "container_expression_utils.h"
Include dependency graph for container_expression_utils.cpp:

Namespaces

 Kratos
 REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
 
 Kratos::ContainerVariableDataHolderUtilsHelper
 

Macros

#define KRATOS_INSTANTIATE_UTILITY_METHOD_FOR_CONTAINER_TYPE(ContainerType)
 
#define KRATOS_INSTANTIATE_NON_NODAL_UTILITY_METHOD_FOR_CONTAINER_TYPE(ContainerType)
 

Typedefs

using Kratos::ContainerVariableDataHolderUtilsHelper::VariableVariantType = std::variant< const Variable< double > *, const Variable< array_1d< double, 3 > > * >
 
using Kratos::ContainerVariableDataHolderUtilsHelper::VariablePairVariantType = std::variant< std::pair< const Variable< double > *, const Variable< double > * >, std::pair< const Variable< array_1d< double, 3 > > *, const Variable< array_1d< double, 3 > > * > >
 

Functions

VariableVariantType Kratos::ContainerVariableDataHolderUtilsHelper::GetTemporaryVariable (const std::vector< IndexType > &rShape)
 
VariablePairVariantType Kratos::ContainerVariableDataHolderUtilsHelper::GetTemporaryVariable1And2 (const std::vector< IndexType > &rShape)
 
template<class TDataType1 , class TDataType2 , std::enable_if_t< std::disjunction_v< std::is_arithmetic< TDataType1 >, std::is_same< TDataType1, Vector >, std::is_same< TDataType1, Matrix >>, bool > = true>
void Kratos::ContainerVariableDataHolderUtilsHelper::GenericAtomicAdd (TDataType1 &rOutput, const TDataType2 &rInput)
 
template<class TDataType , std::size_t TSize, class TDataType2 >
void Kratos::ContainerVariableDataHolderUtilsHelper::GenericAtomicAdd (array_1d< TDataType, TSize > &rOutput, const TDataType2 &rInput)
 
template<class TDataType >
VariableExpressionDataIO< TDataType >::Pointer Kratos::ContainerVariableDataHolderUtilsHelper::GetVariableExpressionDataIO (const Variable< TDataType > &rVaraible, const std::vector< IndexType > &rShape)
 
void Kratos::ContainerVariableDataHolderUtilsHelper::ComputeMatrixExpressionProduct (LiteralFlatExpression< double > &rOutputExpression, const Matrix &rMatrix, const LiteralFlatExpression< double > &rInputExpression, const IndexType NumberOfEntities, const IndexType ExpressionLocalSize)
 

Macro Definition Documentation

◆ KRATOS_INSTANTIATE_NON_NODAL_UTILITY_METHOD_FOR_CONTAINER_TYPE

#define KRATOS_INSTANTIATE_NON_NODAL_UTILITY_METHOD_FOR_CONTAINER_TYPE (   ContainerType)
Value:
template KRATOS_API(OPTIMIZATION_APPLICATION) void ContainerExpressionUtils::ComputeNumberOfNeighbourEntities<ContainerType>(ContainerExpression<ModelPart::NodesContainerType>&); \
template KRATOS_API(OPTIMIZATION_APPLICATION) void ContainerExpressionUtils::MapContainerVariableToNodalVariable(ContainerExpression<ModelPart::NodesContainerType>&, const ContainerExpression<ContainerType>&, const ContainerExpression<ModelPart::NodesContainerType>&); \
template KRATOS_API(OPTIMIZATION_APPLICATION) void ContainerExpressionUtils::MapNodalVariableToContainerVariable(ContainerExpression<ContainerType>&, const ContainerExpression<ModelPart::NodesContainerType>&); \
template KRATOS_API(OPTIMIZATION_APPLICATION) void ContainerExpressionUtils::ComputeNodalVariableProductWithEntityMatrix(ContainerExpression<ModelPart::NodesContainerType>&, const ContainerExpression<ModelPart::NodesContainerType>&, const Variable<Matrix>& rMatrixVariable, ContainerType&);
#define KRATOS_API(...)
Definition: kratos_export_api.h:40
Configure::ContainerType ContainerType
Definition: transfer_utility.h:247

◆ KRATOS_INSTANTIATE_UTILITY_METHOD_FOR_CONTAINER_TYPE

#define KRATOS_INSTANTIATE_UTILITY_METHOD_FOR_CONTAINER_TYPE (   ContainerType)
Value:
template KRATOS_API(OPTIMIZATION_APPLICATION) double ContainerExpressionUtils::EntityMaxNormL2(const ContainerExpression<ContainerType>&); \
template KRATOS_API(OPTIMIZATION_APPLICATION) void ContainerExpressionUtils::ProductWithEntityMatrix(ContainerExpression<ContainerType>&, const typename UblasSpace<double, CompressedMatrix, Vector>::MatrixType&, const ContainerExpression<ContainerType>&); \
template KRATOS_API(OPTIMIZATION_APPLICATION) void ContainerExpressionUtils::ProductWithEntityMatrix(ContainerExpression<ContainerType>&, const Matrix&, const ContainerExpression<ContainerType>&);
Matrix MatrixType
Definition: geometrical_transformation_utilities.h:55
Internals::Matrix< double, AMatrix::dynamic, AMatrix::dynamic > Matrix
Definition: amatrix_interface.h:470