TrioCFD 1.9.8
TrioCFD documentation
Loading...
Searching...
No Matches
Sous_domaine_VF.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 Sous_domaine_VF_included
17#define Sous_domaine_VF_included
18
19#include <Sous_domaine_dis_base.h>
20#include <Domaine_VF.h>
21#include <TRUST_Ref.h>
22
23//! Cette classe abstraite contient les informations geometrique de sous-domaine communes aux methodes de volumes finis (VDF et VEF par exemple)
24/**
25 On suppose que chaque face a au plus deux elements voisins dans la
26 domaine, ce qui est toujours le cas en maillage conforme.
27
28 Le tableau les_faces contient l'ensemble des faces du Domaine_dis qui
29 appartiennent a ce sous-domaine, classees de la facon suivante :
30 * Les faces internes au sous-domaine
31 * Les faces internes au domaine, mais dont seul le premier element voisin
32 appartient au sous-domaine
33 * Les faces internes au domaine, mais dont seul le deuxieme element voisin
34 appartient au sous-domaine
35 * Les faces qui ne presentent qu'un element dans le domaine.
36 Les separations sont indiquees respectivement par les variables
37 premiere_face_bord_0, premiere_face_bord_1, et premiere_face_bord.
38
39 les_faces : nb_dim=1
40 dimension(0) = le nombre de faces du sous_domaine
41 valeur de l'entier = indice dans les tableaux le_dom_VF->face_voisins_,
42 le_dom_VF->face_sommets_,...
43
44 volumes_entrelaces(int face) renvoie le volume entrelace restreint
45 au sous-domaine. Le numero de la face fait reference au tableau
46 les_faces. Seuls sont stockes localement les volumes entrelaces
47 differents de ceux du domaine.
48*/
49
51{
52
53 Declare_instanciable(Sous_domaine_VF);
54
55public:
56
57 // Methodes d'acces
58 inline const IntTab& les_faces() const
59 {
60 return les_faces_;
61 }
62 inline IntTab& les_faces()
63 {
64 return les_faces_;
65 }
66 inline int premiere_face_bord_0() const
67 {
69 }
70 inline int premiere_face_bord_1() const
71 {
73 }
74 inline int premiere_face_bord() const
75 {
77 }
78 //! Renvoie le volume entrelace restreint au sous-domaine. face est l'indice dans le tableau les_faces_.
79 inline double volumes_entrelaces(int) const;
80
81 // Methodes propres
82
83 //! Genere les_faces en parcourant les faces du domaine_dis et en cherchant quels voisins appartiennent a le_sous_domaine.
84 void discretiser() override;
85
86protected:
87 OBS_PTR(Domaine_VF) le_dom_VF;
88 IntTab les_faces_;
93};
94
95inline double Sous_domaine_VF::volumes_entrelaces(int face) const
96{
97 if (face<premiere_face_bord_0_ || face>=premiere_face_bord_)
98 return le_dom_VF->volumes_entrelaces(les_faces_(face));
99 else
101}
102
103#endif
class Domaine_VF
Definition Domaine_VF.h:44
Cette classe abstraite contient les informations geometrique de sous-domaine communes aux methodes de...
OBS_PTR(Domaine_VF) le_dom_VF
const IntTab & les_faces() const
DoubleTab volumes_entrelaces_
double volumes_entrelaces(int) const
Renvoie le volume entrelace restreint au sous-domaine. face est l'indice dans le tableau les_faces_.
int premiere_face_bord_1() const
IntTab & les_faces()
void discretiser() override
Genere les_faces en parcourant les faces du domaine_dis et en cherchant quels voisins appartiennent a...
int premiere_face_bord_0() const
int premiere_face_bord() const
Cette classe est a la base de la hierarchie des sous-domaines discretises. Au moment de la discretisa...