Skip to content

Xdmf3#26

Open
ggdoe wants to merge 31 commits into
mainfrom
xdmf3_v2
Open

Xdmf3#26
ggdoe wants to merge 31 commits into
mainfrom
xdmf3_v2

Conversation

@ggdoe

@ggdoe ggdoe commented Aug 20, 2025

Copy link
Copy Markdown
Collaborator

J'ai adapté le xdmf pour les readers Xdmf3 de paraview, mais quand j'ai voulu ajouté les main.xmf je me suis aperçu que <!ENTITY> ne marche pas avec <xi:include>. Il fallait donc que je modifie en profondeur le xdmf. J'en ai profiter pour réécrire le IOManager et tester des concepts c++ que j'avais jamais essayé. J'ai simplifié l'ajout de output_variables.

Pour faire marcher les reader xdmf3, on ne peut plus utiliser les JOIN pour créer des vecteurs. J'ai gardé les vecteurs, ils sont accessible via le datafield velocity, mais on ne peut plus accéder indépendamment à u et v. Avec la liste des output_variables au début de IOManager.h, c'est très facile de faire le changement inverse. Mais si on garde velocity, il faudra adapter les code python. Aussi les scalaires sont dans des tableaux de taille 1, c'était plus simple à écrire comme ça et ça marche tout aussi bien dans paraview que dans python après un rescale.

Ca simplifie beaucoup l'ajout de champs pour déboguer le code. Pour ça, on peut augmenter la taille du tableau Q, tout en gardant Nfields identique. Ca n’interfère pas avec le reste du code car les boucles sont indexé par Nfields.
Par exemple :

// SimInfo.h
enum IVar : uint8_t {
  IR = 0,
  IU = 1,
  IV = 2,
  IP = 3,
  IE = 3, 

  // log fields
  IDT_HYDRO,
  IDT_TC,

  SIZE_Q_ARRAY
};

// ----------------------
// main.cpp
    Array U    = Kokkos::View<real_t***>("U", device_params.Nty, device_params.Ntx, Nfields);
    Array Q    = Kokkos::View<real_t***>("Q", device_params.Nty, device_params.Ntx, SIZE_Q_ARRAY);

// ----------------------
// IOManager.h
constexpr auto io_variables = std::make_tuple(
  io_entry("rho",      IR),
  io_entry("velocity", IU, IV),
  io_entry("prs",      IP), 

  io_entry("dt_hydro", IDT_HYDRO), 
  io_entry("dt_tc",    IDT_TC)
);

// ----------------------
// Compute_dt.h
   Q(j, i, IDT_HYDRO) = inv_dt_hyp_loc;
   Q(j, i, IDT_TC) = inv_dt_par_tc_loc;

mdelorme and others added 30 commits June 18, 2025 15:40
…need the connectivity array (or CoRect TopologyType)
scientific notation for floating point number
Added Kelvin-Helmholtz instability setup
improve script for dimensions, file handling and mhd field if existing
…i_validity__improve_last_ini

multi restart, check ini validit,  improve last ini
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants