v0.15.5
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 force_block_name, const std::string pressure_block_name,
42 Sev sev
43
44 ) {
46
47 using OpFluxForceset =
48 typename NaturalBC<OpBase>::template Assembly<A>::template LinearForm<
50 FIELD_DIM>;
51 using OpFluxPressureset =
52 typename NaturalBC<OpBase>::template Assembly<A>::template LinearForm<
54 FIELD_DIM>;
55 using OpFluxBlockset =
56 typename NaturalBC<OpBase>::template Assembly<A>::template LinearForm<
58 FIELD_DIM>;
59
60 using OpFluxPressureBlockset =
61 typename NaturalBC<OpBase>::template Assembly<A>::template LinearForm<
63 FIELD_DIM>;
64
65 CHKERR
66 NaturalBC<OpBase>::template Assembly<A>::template LinearForm<I>::
67 template AddFluxToPipeline<OpFluxForceset>::add(
68 pipeline, m_field, field_name, smv, "",
69 sev); // note empty string, since forceset name is not needed
70 CHKERR
71 NaturalBC<OpBase>::template Assembly<A>::template LinearForm<I>::
72 template AddFluxToPipeline<OpFluxPressureset>::add(
73 pipeline, m_field, field_name, smv, "",
74 sev); // see above comment for FORCESET
75 CHKERR
76 NaturalBC<OpBase>::template Assembly<A>::template LinearForm<
77 I>::template AddFluxToPipeline<OpFluxBlockset>::add(pipeline, m_field,
78 field_name, smv,
79 force_block_name,
80 sev);
81
82 CHKERR
83 NaturalBC<OpBase>::template Assembly<A>::template LinearForm<I>::
84 template AddFluxToPipeline<OpFluxPressureBlockset>::add(
85 pipeline, m_field, field_name, smv, pressure_block_name, sev);
86
88 }
89
91
92 boost::ptr_deque<ForcesAndSourcesCore::UserDataOperator> &pipeline,
93 MoFEM::Interface &m_field, const std::string field_name,
94 std::vector<boost::shared_ptr<ScalingMethod>> smv,
95 std::vector<boost::shared_ptr<TimeScaleVector<FIELD_DIM>>> vsmv,
96 const std::string force_block_name, const std::string pressure_block_name, Sev sev
97
98 ) {
100
101 CHKERR add(pipeline, m_field, field_name, smv, force_block_name,
102 pressure_block_name, sev);
103
104 using OpFluxBlocksetVectorScaling =
105 typename NaturalBC<OpBase>::template Assembly<A>::template LinearForm<
108
109 CHKERR
110 NaturalBC<OpBase>::template Assembly<A>::template LinearForm<I>::
111 template AddFluxToPipeline<OpFluxBlocksetVectorScaling>::add(
112 pipeline, m_field, field_name, vsmv, force_block_name, sev);
113
115 }
116};
117
118/** @deprecated DO NOT USE */
120
121} // namespace MoFEM
122
123#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 force_block_name, const std::string pressure_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 force_block_name, const std::string pressure_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)