TRUST 1.9.8
HPC thermohydraulic platform
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 Cette classe represente un operateur de diffusion negligeable.
26 *
27 * Lorsqu'un operateur de ce type est utilise dans une equation
28 * cela revient a negliger le terme de diffusion.
29 * Les methodes de modification et de participation a un calcul de
30 * l'operateur sont en fait des appels aux meme methodes de
31 * Operateur_negligeable qui ne font rien.
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 Ajoute la contribution de l'operateur a un tableau passe en parametre.
81 *
82 * Simple appel a Operateur_negligeable::ajouter(const DoubleTab&,DoubleTab&)
83 *
84 * @param (DoubleTab& x) le tableau sur lequel on applique l'operateur
85 * @param (DoubleTab& y) tableau auquel on ajoute la contribution de l'operateur
86 * @return (DoubleTab&) le parametre d'entree y non modifie
87 */
88inline DoubleTab&
89Op_Diff_negligeable::ajouter(const DoubleTab& x, DoubleTab& y) const
90{
92}
93
94
95/*! @brief Initialise le parametre tableau avec la contribution de l'operateur negligeable: initialise le tableau a ZERO.
96 *
97 * Simple appel a Operateur_negligeable::(calculer(const DoubleTab&, DoubleTab&)
98 *
99 * @param (DoubleTab& x) le tableau sur lequel on applique l'operateur
100 * @param (DoubleTab& y) tableau dans lequel stocke la contribution de l'operateur
101 * @return (DoubleTab&) le tableau d'entree y mis a zero
102 */
103inline DoubleTab&
104Op_Diff_negligeable::calculer(const DoubleTab& x, DoubleTab& y) const
105{
107}
108
109/*! @brief Mise a jour en temps d'un operateur negligeable: NE FAIT RIEN Simple appel a Operateur_negligeable::mettre_a_jour(double)
110 *
111 * @param (double temps)
112 */
113
114/*! @brief on assemble la matrice.
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 on ajoute la contribution du second membre.
125 *
126 */
127
128inline void Op_Diff_negligeable::contribuer_au_second_membre(DoubleTab& resu) const
129{
130 ;
131}
132
133// Modification des Cl
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 Associe divers objets a un operateurs negligeable: NE FAIT RIEN Simple appel a 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//Surcharge pour que la methode ne fasse rien
171
172#endif
173
Classe Champ_Inc_base.
classe Champ_base Cette classe est la base de la hierarchie des champs.
Definition Champ_base.h:43
classe Domaine_Cl_dis_base Les objets Domaine_Cl_dis_base representent les conditions aux limites
classe Domaine_dis_base Cette classe est la base de la hierarchie des domaines discretisees.
Classe Matrice_Morse Represente une matrice M (creuse), non necessairement carree.
Une chaine de caractere (Nom) en majuscules.
Definition Motcle.h:26
class Nom Une chaine de caractere pour nommer les objets de TRUST
Definition Nom.h:31
Classe Op_Diff_negligeable Cette classe represente un operateur de diffusion negligeable.
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
Ajoute la contribution de l'operateur a un tableau passe en parametre.
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
Associe la diffusivite a l'operateur.
void contribuer_a_avec(const DoubleTab &, Matrice_Morse &) const override
Mise a jour en temps d'un operateur negligeable: NE FAIT RIEN Simple appel a Operateur_negligeable::m...
DoubleTab & calculer(const DoubleTab &, DoubleTab &) const override
Initialise le parametre tableau avec la contribution de l'operateur negligeable: initialise le tablea...
void calculer_flux(const DoubleTab &inconnue, DoubleTab &flux) const override
void contribuer_au_second_membre(DoubleTab &) const override
on ajoute la contribution du second membre.
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
Methode a appeler dans la preparation du probleme pour demander a l'objet de tenir compte du champ de...
void mettre_a_jour(double) override
DOES NOTHING - to override in derived classes.
const Champ_base & diffusivite() const override
Renvoie le champ representant la diffusivite.
void associer(const Domaine_dis_base &, const Domaine_Cl_dis_base &, const Champ_Inc_base &) override
Associe divers objets a un operateurs negligeable: NE FAIT RIEN Simple appel a Operateur_negligeable:...
classe Operateur_Diff_base Cette classe est la base de la hierarchie des operateurs representant
Classe Opnegligeable Cette classe definit l'interface d'un operateur negligeable.
DoubleTab & calculer(const DoubleTab &, DoubleTab &) const
Initialise le parametre tableau avec la contribution de l'operateur negligeable: initialise le tablea...
void mettre_a_jour(double)
Mise a jour en temps d'un operateur negligeable: NE FAIT RIEN.
void associer(const Domaine_dis_base &, const Domaine_Cl_dis_base &, const Champ_Inc_base &)
Associe divers objets a un operateurs negligeable: NE FAIT RIEN.
DoubleTab & ajouter(const DoubleTab &, DoubleTab &) const
Ajout de la contribution d'un operateur negligeable a un tableau.