Arcane  v3.15.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
CartesianMeshGenerator.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2023 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* CartesianMeshGenerator.cc (C) 2000-2023 */
9/* */
10/* Service de génération de maillage cartésien. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_STD_CARTESIAN_MESHGENERATOR_H
13#define ARCANE_STD_CARTESIAN_MESHGENERATOR_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/TraceAccessor.h"
18#include "arcane/utils/Array.h"
19
20#include "arcane/std/IMeshGenerator.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane
26{
27class ICartesianMeshGenerationInfo;
28
29/*---------------------------------------------------------------------------*/
30/*---------------------------------------------------------------------------*/
31
33{
34 public:
35
36 int m_mesh_dimension = -1;
37 Real3 m_origine; // origine du maillage
38 RealUniqueArray m_bloc_lx; // longueurs en x
39 RealUniqueArray m_bloc_ly; // longueurs en y
40 RealUniqueArray m_bloc_lz; // longueurs en z
41 Int32UniqueArray m_bloc_nx; // nombre de mailles par bloc en x
42 Int32UniqueArray m_bloc_ny; // nombre de mailles par bloc en y
43 Int32UniqueArray m_bloc_nz; // nombre de mailles par bloc en z
44 RealUniqueArray m_bloc_px; // progressions par bloc en x
45 RealUniqueArray m_bloc_py; // progressions par bloc en y
46 RealUniqueArray m_bloc_pz; // progressions par bloc en z
47 Integer m_nsdx = 0; // nombre de sous-domaines en x
48 Integer m_nsdy = 0; // nombre de sous-domaines en y
49 Integer m_nsdz = 0; // nombre de sous-domaines en z
56
57 public:
58
59 void readOptionsFromXml(XmlNode cartesian_node);
60};
61
62/*---------------------------------------------------------------------------*/
63/*---------------------------------------------------------------------------*/
64
66: public TraceAccessor
67, public IMeshGenerator
68{
69 public:
70
72
73 public:
74
75 IntegerConstArrayView communicatingSubDomains() const override
76 {
77 return m_communicating_sub_domains;
78 }
79 bool readOptions(XmlNode node) override;
80 bool generateMesh() override;
81 void setBuildInfo(const CartesianMeshGeneratorBuildInfo& build_info);
82
83 private:
84
85 int sdXOffset();
86 int sdYOffset();
87 int sdZOffset();
88 int sdXOffset(int);
89 int sdYOffset(int);
90 int sdZOffset(int);
91 Int32 ownXNbCell();
92 Int32 ownYNbCell();
93 Int32 ownZNbCell();
94 Int32 ownXNbCell(int);
95 Int32 ownYNbCell(int);
96 Int32 ownZNbCell(int);
97
98 private:
99
100 Real nxDelta(Real,int);
101 Real nyDelta(Real,int);
102 Real nzDelta(Real,int);
103 Real xDelta(int);
104 Real yDelta(int);
105 Real zDelta(int);
106
107 private:
108
109 void xScan(const Int64,Int32Array&,Int32Array&,Int64Array&,
111 void yScan(const Integer, Int32Array&,Int32Array&,Int64Array&,
112 Int64Array&,Int64Array&,Int64,Int64);
113 void zScan(const Int64, Int32Array&,Int32Array&,Int64Array&,
114 Int64Array&,Int64Array&,Int64,Int64);
115
116 private:
117
118 IPrimaryMesh* m_mesh;
119 Int32 m_my_mesh_part;
120 UniqueArray<Int32> m_communicating_sub_domains;
121 int m_mesh_dimension = -1;
122 ICartesianMeshGenerationInfo* m_generation_info = nullptr;
123
124 private:
125
127 RealUniqueArray m_bloc_ox; // origine bloc en x
128 RealUniqueArray m_bloc_oy; // origine bloc longueurs en y
129 RealUniqueArray m_bloc_oz; // origine bloc longueurs en z
130 Real3 m_l; // longueurs en x, y et z
131 Integer m_nx = 0; // nombre de mailles en x
132 Integer m_ny = 0; // nombre de mailles en y
133 Integer m_nz = 0; // nombre de mailles en z
134
135 private:
136
137 bool _readOptions();
138};
139
140/*---------------------------------------------------------------------------*/
141/*---------------------------------------------------------------------------*/
142
143} // End namespace Arcane
144
145/*---------------------------------------------------------------------------*/
146/*---------------------------------------------------------------------------*/
147
148#endif
Tableau d'items de types quelconques.
Int32 m_face_numbering_version
Version de l'algorithme de numérotation des faces.
Int32 m_edge_numbering_version
Version de l'algorithme de numérotation des arêtes.
bool m_is_generate_sod_groups
Indique si on génère les groupes pour un cas test de sod.
Informations sur la génération des maillages cartésiens.
Interface d'un générateur de maillage.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:149
Classe gérant un vecteur de réel de dimension 3.
Definition Real3.h:132
Noeud d'un arbre DOM.
Definition XmlNode.h:51
Vue constante d'un tableau de type T.
Vecteur 1D de données avec sémantique par valeur (style STL).
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-