TrioCFD 1.9.9_beta
TrioCFD documentation
Loading...
Searching...
No Matches
Op_Diff_negligeable.h
1/****************************************************************************
2* Copyright (c) 2024, CEA
3* All rights reserved.
4*
5* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
6* 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
7* 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
8* 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
9*
10* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
11* IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
12* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
13*
14*****************************************************************************/
15
16#ifndef Op_Diff_negligeable_included
17#define Op_Diff_negligeable_included
18
19#include <Operateur_negligeable.h>
20#include <Operateur_Diff_base.h>
21#include <TRUST_Ref.h>
22
23class Champ_base;
24
25/*! @brief Classe Op_Diff_negligeable This class represents a negligible diffusion operator.
26 *
27 * When an operator of this type is used in an equation,
28 * it amounts to neglecting the diffusion term.
29 * The methods for modifying and participating in a computation of
30 * the operator are in fact calls to the same methods of
31 * Operateur_negligeable which do nothing.
32 *
33 *
34 * @sa Operateur_Diff_base Operateur_negligeable
35 */
36
39{
40 Declare_instanciable(Op_Diff_negligeable);
41
42public :
43
44 inline DoubleTab& ajouter(const DoubleTab&, DoubleTab& ) const override;
45 inline DoubleTab& calculer(const DoubleTab&, DoubleTab& ) const override;
46 inline void contribuer_a_avec(const DoubleTab&, Matrice_Morse&) const override;
47 inline void contribuer_au_second_membre(DoubleTab& ) const override;
48 inline void modifier_pour_Cl(Matrice_Morse&, DoubleTab&) const override;
49 inline void dimensionner(Matrice_Morse& ) const override;
50 inline void mettre_a_jour(double) override;
51 void associer_diffusivite(const Champ_base& ) override ;
52 const Champ_base& diffusivite() const override;
53 inline void associer_champ_masse_volumique(const Champ_base&) override;
54 void calculer_pour_post(Champ_base& espace_stockage,const Nom& option, int comp) const override;
55 Motcle get_localisation_pour_post(const Nom& option) const override;
56
57 void ajouter_flux(const DoubleTab& inconnue, DoubleTab& contribution) const override;
58 void calculer_flux(const DoubleTab& inconnue, DoubleTab& flux) const override;
59
60 int has_interface_blocs() const override
61 {
62 return 1;
63 };
64 void dimensionner_blocs(matrices_t matrices, const tabs_t& semi_impl = { }) const override { };
65 void ajouter_blocs(matrices_t matrices, DoubleTab& resu, const tabs_t& semi_impl = { }) const override { };
66 void check_multiphase_compatibility() const override { };
67
68protected :
69
70 OBS_PTR(Champ_base) la_diffusivite;
71 inline void associer(const Domaine_dis_base&, const Domaine_Cl_dis_base&, const Champ_Inc_base& ) override ;
72};
73
75{
76 Declare_instanciable(Op_Dift_negligeable);
77};
78
79
80/*! @brief Adds the contribution of the operator to an array passed as parameter.
81 *
82 * Simple call to Operateur_negligeable::ajouter(const DoubleTab&,DoubleTab&)
83 *
84 * @param (DoubleTab& x) the array on which the operator is applied
85 * @param (DoubleTab& y) array to which the operator contribution is added
86 * @return (DoubleTab&) the input parameter y unchanged
87 */
88inline DoubleTab&
89Op_Diff_negligeable::ajouter(const DoubleTab& x, DoubleTab& y) const
90{
92}
93
94
95/*! @brief Initializes the array parameter with the contribution of the negligible operator: initializes the array to ZERO.
96 *
97 * Simple call to Operateur_negligeable::(calculer(const DoubleTab&, DoubleTab&)
98 *
99 * @param (DoubleTab& x) the array on which the operator is applied
100 * @param (DoubleTab& y) array in which the operator contribution is stored
101 * @return (DoubleTab&) the input array y set to zero
102 */
103inline DoubleTab&
104Op_Diff_negligeable::calculer(const DoubleTab& x, DoubleTab& y) const
105{
107}
108
109/*! @brief Time update of a negligible operator: DOES NOTHING. Simple call to Operateur_negligeable::mettre_a_jour(double)
110 *
111 * @param (double temps) the current time
112 */
113
114/*! @brief Assembles the matrix.
115 *
116 */
117
118inline void Op_Diff_negligeable::contribuer_a_avec(const DoubleTab& inco,
119 Matrice_Morse& amatrice) const
120{
121 ;
122}
123
124/*! @brief Adds the contribution to the right-hand side.
125 *
126 */
127
128inline void Op_Diff_negligeable::contribuer_au_second_membre(DoubleTab& resu) const
129{
130 ;
131}
132
133// Modification of boundary conditions
134inline void Op_Diff_negligeable::modifier_pour_Cl(Matrice_Morse& amatrice, DoubleTab& resu) const
135{
136 ;
137}
138
140{
141 ;
142}
143
144inline void Op_Diff_negligeable::mettre_a_jour(double temps)
145{
147}
148
149
150/*! @brief Associates various objects to a negligible operator: DOES NOTHING Simple call to Operateur_negligeable::associer(const Domaine_dis_base&,
151 *
152 * const Domaine_Cl_dis_base&,
153 * const Champ_Inc_base&)
154 *
155 * @param (Domaine_dis_base& z)
156 * @param (Domaine_Cl_dis_base& zcl)
157 * @param (Champ_Inc_base& ch)
158 */
160 const Domaine_Cl_dis_base& zcl,
161 const Champ_Inc_base& ch)
162{
164}
165
166// Override so that the method does nothing
171
172#endif
173
Class Champ_Inc_base.
class Champ_base This class is the base of the fields hierarchy.
Definition Champ_base.h:43
class Domaine_Cl_dis_base Domaine_Cl_dis_base objects represent discretized boundary conditions
class Domaine_dis_base This class is the base of the hierarchy of discretized domains.
Matrice_Morse class - Represents a (sparse) matrix M, not necessarily square,.
A character string (Nom) in uppercase.
Definition Motcle.h:26
class Nom: a character string for naming TRUST objects.
Definition Nom.h:31
Classe Op_Diff_negligeable This class represents a negligible diffusion operator.
void dimensionner(Matrice_Morse &) const override
DOES NOTHING - to override in derived classes.
OBS_PTR(Champ_base) la_diffusivite
DoubleTab & ajouter(const DoubleTab &, DoubleTab &) const override
Adds the contribution of the operator to an array passed as parameter.
void calculer_pour_post(Champ_base &espace_stockage, const Nom &option, int comp) const override
Motcle get_localisation_pour_post(const Nom &option) const override
void modifier_pour_Cl(Matrice_Morse &, DoubleTab &) const override
DOES NOTHING - to override in derived classes.
int has_interface_blocs() const override
void check_multiphase_compatibility() const override
void dimensionner_blocs(matrices_t matrices, const tabs_t &semi_impl={ }) const override
void associer_diffusivite(const Champ_base &) override
Associates the diffusivity to the operator.
void contribuer_a_avec(const DoubleTab &, Matrice_Morse &) const override
Time update of a negligible operator: DOES NOTHING. Simple call to Operateur_negligeable::mettre_a_jo...
DoubleTab & calculer(const DoubleTab &, DoubleTab &) const override
Initializes the array parameter with the contribution of the negligible operator: initializes the arr...
void calculer_flux(const DoubleTab &inconnue, DoubleTab &flux) const override
void contribuer_au_second_membre(DoubleTab &) const override
Adds the contribution to the right-hand side.
void ajouter_blocs(matrices_t matrices, DoubleTab &resu, const tabs_t &semi_impl={ }) const override
void ajouter_flux(const DoubleTab &inconnue, DoubleTab &contribution) const override
void associer_champ_masse_volumique(const Champ_base &) override
Method to be called during problem preparation to ask the object to take into account the density fie...
void mettre_a_jour(double) override
DOES NOTHING - to override in derived classes.
const Champ_base & diffusivite() const override
Returns the field representing the diffusivity.
void associer(const Domaine_dis_base &, const Domaine_Cl_dis_base &, const Champ_Inc_base &) override
Associates various objects to a negligible operator: DOES NOTHING Simple call to Operateur_negligeabl...
Operateur_Diff_base This class is the base of the hierarchy of operators representing.
Classe Opnegligeable This class defines the interface of a negligible operator.
DoubleTab & calculer(const DoubleTab &, DoubleTab &) const
Initializes the array parameter with the contribution of the negligible operator: initializes the arr...
void mettre_a_jour(double)
Time update of a negligible operator: DOES NOTHING.
void associer(const Domaine_dis_base &, const Domaine_Cl_dis_base &, const Champ_Inc_base &)
Associates various objects to a negligible operator: DOES NOTHING.
DoubleTab & ajouter(const DoubleTab &, DoubleTab &) const
Adds the contribution of a negligible operator to an array.