dirac_solver 0.0.1
A Dirac ecuation Solver
Cargando...
Buscando...
Nada coincide
Referencia de la clase Grid

Representa una malla espacial (1D, 2D o 3D) para la simulación. Más...

#include <Grid.h>

Métodos públicos

 Grid (std::vector< size_t > shape, std::vector< double > spacing)
 Construye un objeto Grid.
 
size_t get_dim () const
 
const std::vector< size_t > & get_shape () const
 
const std::vector< double > & get_spacing () const
 
size_t get_total_points () const
 Calcula el número total de puntos en la malla.
 
std::vector< double > get_coords (size_t index) const
 Obtiene las coordenadas espaciales para un índice de malla plano dado.
 

Descripción detallada

Representa una malla espacial (1D, 2D o 3D) para la simulación.

Esta clase almacena los parámetros de la malla de simulación, como sus dimensiones, número de puntos y espaciado de celda. Es la contraparte en C++ de la clase Grid de Python.

Documentación de constructores y destructores

◆ Grid()

Grid::Grid ( std::vector< size_t >  shape,
std::vector< double >  spacing 
)
inline

Construye un objeto Grid.

Parámetros
shapeUn vector que contiene el número de puntos en cada dimensión (por ejemplo, {nx, ny}).
spacingUn vector que contiene el espaciado de celda en cada dimensión (por ejemplo, {dx, dy}).
24 : shape_(shape), spacing_(spacing), dim_(shape.size()) {
25 if (shape.size() != spacing.size()) {
26 throw std::invalid_argument("Shape y spacing deben tener el mismo número de dimensiones.");
27 }
28 if (dim_ < 1 || dim_ > 3) {
29 throw std::invalid_argument("La malla debe ser 1D, 2D o 3D.");
30 }
31 // Calcula el origen para que coincida con la implementación de Python (malla centrada)
32 origin_.resize(dim_);
33 for (size_t i = 0; i < dim_; ++i) {
34 origin_[i] = -0.5 * (static_cast<double>(shape_[i] - 1)) * spacing_[i];
35 }
36 }

Documentación de funciones miembro

◆ get_coords()

std::vector< double > Grid::get_coords ( size_t  index) const
inline

Obtiene las coordenadas espaciales para un índice de malla plano dado.

Parámetros
indexEl índice plano del punto de la malla.
Devuelve
Un vector de dobles que representa las coordenadas (por ejemplo, {x, y, z}).
60 {
61 if (index >= get_total_points()) {
62 throw std::out_of_range("El índice de la malla está fuera de rango.");
63 }
64
65 std::vector<double> coords(dim_);
66 size_t temp_index = index;
67
68 if (dim_ == 1) {
69 coords[0] = origin_[0] + static_cast<double>(index) * spacing_[0];
70 } else if (dim_ == 2) {
71 size_t nx = shape_[0];
72 size_t ix = temp_index % nx;
73 size_t iy = temp_index / nx;
74 coords[0] = origin_[0] + static_cast<double>(ix) * spacing_[0];
75 coords[1] = origin_[1] + static_cast<double>(iy) * spacing_[1];
76 } else if (dim_ == 3) {
77 size_t nx = shape_[0];
78 size_t ny = shape_[1];
79 size_t ix = temp_index % nx;
80 size_t iy = (temp_index / nx) % ny;
81 size_t iz = temp_index / (nx * ny);
82 coords[0] = origin_[0] + static_cast<double>(ix) * spacing_[0];
83 coords[1] = origin_[1] + static_cast<double>(iy) * spacing_[1];
84 coords[2] = origin_[2] + static_cast<double>(iz) * spacing_[2];
85 }
86 return coords;
87 }
size_t get_total_points() const
Calcula el número total de puntos en la malla.
Definition Grid.h:47

◆ get_dim()

size_t Grid::get_dim ( ) const
inline
39{ return dim_; }

◆ get_shape()

const std::vector< size_t > & Grid::get_shape ( ) const
inline
40{ return shape_; }

◆ get_spacing()

const std::vector< double > & Grid::get_spacing ( ) const
inline
41{ return spacing_; }

◆ get_total_points()

size_t Grid::get_total_points ( ) const
inline

Calcula el número total de puntos en la malla.

Devuelve
El producto del número de puntos en cada dimensión.
47 {
48 size_t total = 1;
49 for (size_t n : shape_) {
50 total *= n;
51 }
52 return total;
53 }

La documentación de esta clase está generada del siguiente archivo: