v0.15.0
Loading...
Searching...
No Matches
NaturalForceMeshsets.hpp
Go to the documentation of this file.
1/**
2 * @file NaturalForceMeshsets.hpp
3 * @brief Specialization for NaturalForceMeshsets
4 * @version 0.13.2
5 * @date 2022-09-18
6 *
7 * @copyright Copyright (c) 2022
8 *
9 */
10
11#ifndef _NATURAL_FORCE_MESHSETS_HPP_
12#define _NATURAL_FORCE_MESHSETS_HPP_
13
14namespace MoFEM {
15
16/**
17 * @brief Type generating specialisation for force meshsets
18 *
19 */
21
22template <int FIELD_DIM, AssemblyType A, IntegrationType I, typename OpBase>
24
26 typename OpBase>
28
30 I, OpBase
31
32 > {
33
35
37
38 boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pipeline,
39 MoFEM::Interface &m_field, const std::string field_name,
40 std::vector<boost::shared_ptr<ScalingMethod>> smv,
41 const std::string block_name, Sev sev
42
43 ) {
45
46 using OpFluxForceset =
47 typename NaturalBC<OpBase>::template Assembly<A>::template LinearForm<
49 FIELD_DIM>;
50 using OpFluxPressureset =
51 typename NaturalBC<OpBase>::template Assembly<A>::template LinearForm<
53 FIELD_DIM>;
54 using OpFluxBlockset =
55 typename NaturalBC<OpBase>::template Assembly<A>::template LinearForm<
57 FIELD_DIM>;
58
59 CHKERR
60 NaturalBC<OpBase>::template Assembly<A>::template LinearForm<
61 I>::template AddFluxToPipeline<OpFluxForceset>::add(pipeline, m_field,
62 field_name, smv,
63 block_name, sev);
64 CHKERR
65 NaturalBC<OpBase>::template Assembly<A>::template LinearForm<
66 I>::template AddFluxToPipeline<OpFluxPressureset>::add(pipeline,
67 m_field,
68 field_name, smv,
69 block_name, sev);
70 CHKERR
71 NaturalBC<OpBase>::template Assembly<A>::template LinearForm<
72 I>::template AddFluxToPipeline<OpFluxBlockset>::add(pipeline, m_field,
73 field_name, smv,
74 block_name, sev);
75
77 }
78
80
81 boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pipeline,
82 MoFEM::Interface &m_field, const std::string field_name,
83 std::vector<boost::shared_ptr<ScalingMethod>> smv,
84 std::vector<boost::shared_ptr<TimeScaleVector<FIELD_DIM>>> vsmv,
85 const std::string block_name, Sev sev
86
87 ) {
89
90 CHKERR add(pipeline, m_field, field_name, smv, block_name, sev);
91
92 using OpFluxBlocksetVectorScaling =
93 typename NaturalBC<OpBase>::template Assembly<A>::template LinearForm<
96
97 CHKERR
98 NaturalBC<OpBase>::template Assembly<A>::template LinearForm<I>::
99 template AddFluxToPipeline<OpFluxBlocksetVectorScaling>::add(
100 pipeline, m_field, field_name, vsmv, block_name, sev);
101
103 }
104};
105
106/** @deprecated DO NOT USE */
108
109} // namespace MoFEM
110
111#endif //_NATURAL_FORCE_MESHSETS_HPP_
constexpr int FIELD_DIM
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
#define CHKERR
Inline error check.
constexpr int BASE_DIM
IntegrationType
Form integrator integration types.
AssemblyType
[Storage and set boundary conditions]
SeverityLevel
Severity levels.
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
implementation of Data Operators for Forces and Sources
Definition Common.hpp:10
constexpr IntegrationType I
constexpr AssemblyType A
constexpr auto field_name
static MoFEMErrorCode add(boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pipeline, MoFEM::Interface &m_field, const std::string field_name, std::vector< boost::shared_ptr< ScalingMethod > > smv, std::vector< boost::shared_ptr< TimeScaleVector< FIELD_DIM > > > vsmv, const std::string block_name, Sev sev)
static MoFEMErrorCode add(boost::ptr_deque< ForcesAndSourcesCore::UserDataOperator > &pipeline, MoFEM::Interface &m_field, const std::string field_name, std::vector< boost::shared_ptr< ScalingMethod > > smv, const std::string block_name, Sev sev)
Deprecated interface functions.
Natural boundary conditions.
Definition Natural.hpp:57
Type generating specialisation for force meshsets.
Force scale operator for reading four columns (time and vector)