Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IMAS v3.42.0 #323

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

IMAS v3.42.0 #323

wants to merge 1 commit into from

Conversation

orso82
Copy link
Member

@orso82 orso82 commented Nov 14, 2024

This version is a bridge between the V3 and V4 IMAS data dictionary. Some fields that we've taken for granted are becoming obsolescent. Just putting it out here so people can give it a try.

IMAS-news-2024-10.pdf

Copy link
Collaborator

@torrinba torrinba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This update appears to work with everything in OMAS and OMFIT out of the box, so it's probably worth merging to allow workflows to start migrating towards the 4.0 data schema

@orso82
Copy link
Member Author

orso82 commented Jan 7, 2025

@torrinba please note that the newsletter about 3.42.0 says that "Changed suffixes *_tor into *_phi to denote the toroidal component of a vector in the (R,phi,Z) right-handed cylinder coordinate system (change included in 3.42.0)".

However this is not always true (I have marked the exceptions with a * in the list below). Does somebody understand the logic with which only certain fields go from _tor to _phi?

I am very worried of people starting to mix the usage of the _tor and _phi fields...

  waves.coherent_wave[:].profiles_2d[:].ion[:].state[:].power_density_fast_n_tor ↔ _phi
  waves.coherent_wave[:].profiles_2d[:].ion[:].state[:].power_density_thermal_n_tor ↔ _phi
  waves.coherent_wave[:].profiles_2d[:].ion[:].power_density_fast_n_tor ↔ _phi
  waves.coherent_wave[:].profiles_2d[:].ion[:].power_density_thermal_n_tor ↔ _phi
* waves.coherent_wave[:].profiles_2d[:].grid.rho_tor
  waves.coherent_wave[:].profiles_2d[:].electrons.power_density_fast_n_tor ↔ _phi
  waves.coherent_wave[:].profiles_2d[:].electrons.power_density_thermal_n_tor ↔ _phi
  waves.coherent_wave[:].profiles_2d[:].n_tor ↔ _phi
  waves.coherent_wave[:].profiles_2d[:].power_density_n_tor ↔ _phi
  waves.coherent_wave[:].profiles_1d[:].ion[:].state[:].power_density_fast_n_tor ↔ _phi
  waves.coherent_wave[:].profiles_1d[:].ion[:].state[:].power_density_thermal_n_tor ↔ _phi
  waves.coherent_wave[:].profiles_1d[:].ion[:].state[:].power_inside_fast_n_tor ↔ _phi
  waves.coherent_wave[:].profiles_1d[:].ion[:].state[:].power_inside_thermal_n_tor ↔ _phi
  waves.coherent_wave[:].profiles_1d[:].ion[:].power_density_fast_n_tor ↔ _phi
  waves.coherent_wave[:].profiles_1d[:].ion[:].power_density_thermal_n_tor ↔ _phi
  waves.coherent_wave[:].profiles_1d[:].ion[:].power_inside_fast_n_tor ↔ _phi
  waves.coherent_wave[:].profiles_1d[:].ion[:].power_inside_thermal_n_tor ↔ _phi
* waves.coherent_wave[:].profiles_1d[:].grid.rho_tor
  waves.coherent_wave[:].profiles_1d[:].electrons.power_density_fast_n_tor ↔ _phi
  waves.coherent_wave[:].profiles_1d[:].electrons.power_density_thermal_n_tor ↔ _phi
  waves.coherent_wave[:].profiles_1d[:].electrons.power_inside_fast_n_tor ↔ _phi
  waves.coherent_wave[:].profiles_1d[:].electrons.power_inside_thermal_n_tor ↔ _phi
  waves.coherent_wave[:].profiles_1d[:].current_parallel_density_n_tor ↔ _phi
  waves.coherent_wave[:].profiles_1d[:].n_tor ↔ _phi
  waves.coherent_wave[:].profiles_1d[:].power_density_n_tor ↔ _phi
  waves.coherent_wave[:].profiles_1d[:].power_inside_n_tor ↔ _phi
  waves.coherent_wave[:].global_quantities[:].ion[:].state[:].power_fast_n_tor ↔ _phi
  waves.coherent_wave[:].global_quantities[:].ion[:].state[:].power_thermal_n_tor ↔ _phi
  waves.coherent_wave[:].global_quantities[:].ion[:].power_fast_n_tor ↔ _phi
  waves.coherent_wave[:].global_quantities[:].ion[:].power_thermal_n_tor ↔ _phi
  waves.coherent_wave[:].global_quantities[:].electrons.power_fast_n_tor ↔ _phi
  waves.coherent_wave[:].global_quantities[:].electrons.power_thermal_n_tor ↔ _phi
  waves.coherent_wave[:].global_quantities[:].current_tor ↔ _phi
  waves.coherent_wave[:].global_quantities[:].n_tor ↔ _phi
  waves.coherent_wave[:].global_quantities[:].power_n_tor ↔ _phi
  waves.coherent_wave[:].beam_tracing[:].beam[:].wave_vector.k_tor ↔ _phi
  waves.coherent_wave[:].beam_tracing[:].beam[:].wave_vector.n_tor ↔ _phi
  waves.coherent_wave[:].beam_tracing[:].beam[:].wave_vector.varying_n_tor ↔ _phi
  wall.global_quantities.current_tor ↔ _phi
* transport_solver_numerics.solver_1d[:].grid.rho_tor
  transport_solver_numerics.derivatives_1d[:].ion[:].state[:].d_dt.velocity_tor ↔ _phi
  transport_solver_numerics.derivatives_1d[:].ion[:].state[:].d_drho_tor_norm.velocity_tor ↔ _phi
  transport_solver_numerics.derivatives_1d[:].ion[:].state[:].d2_drho_tor_norm2.velocity_tor ↔ _phi
  transport_solver_numerics.derivatives_1d[:].ion[:].d_dt.velocity_tor ↔ _phi
  transport_solver_numerics.derivatives_1d[:].ion[:].d_drho_tor_norm.velocity_tor ↔ _phi
  transport_solver_numerics.derivatives_1d[:].ion[:].d2_drho_tor_norm2.velocity_tor ↔ _phi
* transport_solver_numerics.derivatives_1d[:].grid.rho_tor
  transport_solver_numerics.derivatives_1d[:].electrons.d_dt.velocity_tor ↔ _phi
  transport_solver_numerics.derivatives_1d[:].electrons.d_drho_tor_norm.velocity_tor ↔ _phi
  transport_solver_numerics.derivatives_1d[:].electrons.d2_drho_tor_norm2.velocity_tor ↔ _phi
* transport_solver_numerics.derivatives_1d[:].dpsi_drho_tor
* summary.local.separatrix_average.position.rho_tor
* summary.local.separatrix.position.rho_tor
* summary.local.pedestal.position.rho_tor
* summary.local.magnetic_axis.position.rho_tor
* summary.local.itb.position.rho_tor
* spi.injector[:].pellet.velocity_tor
* spi.injector[:].fragment[:].velocity_tor
* spi.injector[:].velocity_mass_centre_fragments_tor
* spectrometer_visible.channel[:].polarization_spectroscopy.e_field_lh_tor
* sawteeth.profiles_1d[:].grid.rho_tor
* sawteeth.profiles_1d[:].j_tor
* sawteeth.profiles_1d[:].momentum_tor
* runaway_electrons.profiles_1d[:].grid.rho_tor
  runaway_electrons.global_quantities.current_tor ↔ _phi
* runaway_electrons.distribution.markers[:].orbit_integrals.n_tor
* radiation.process[:].profiles_1d[:].grid.rho_tor
* plasma_transport.model[:].profiles_1d[:].grid_v.rho_tor
* plasma_transport.model[:].profiles_1d[:].grid_flux.rho_tor
* plasma_transport.model[:].profiles_1d[:].grid_d.rho_tor
* plasma_sources.source[:].profiles_1d[:].grid.rho_tor
  plasma_sources.source[:].profiles_1d[:].momentum_tor ↔ _phi
  plasma_sources.source[:].global_quantities[:].torque_tor ↔ _phi
* plasma_profiles.profiles_2d[:].ion[:].state[:].rotation_frequency_tor
* plasma_profiles.profiles_2d[:].ion[:].rotation_frequency_tor
* plasma_profiles.profiles_1d[:].ion[:].state[:].rotation_frequency_tor
* plasma_profiles.profiles_1d[:].ion[:].rotation_frequency_tor
* plasma_profiles.profiles_1d[:].grid.rho_tor
* plasma_profiles.global_quantities.beta_tor
  plasma_initiation.profiles_2d[:].e_field_tor ↔ _phi
  ntms.time_slice[:].mode[:].onset.n_tor ↔ _phi
  ntms.time_slice[:].mode[:].detailed_evolution.n_tor ↔ _phi
* ntms.time_slice[:].mode[:].detailed_evolution.rho_tor
  ntms.time_slice[:].mode[:].n_tor ↔ _phi
* ntms.time_slice[:].mode[:].rho_tor
  mhd_linear.time_slice[:].toroidal_mode[:].n_tor ↔ _phi
* lh_antennas.antenna[:].row[:].n_tor
  ic_antennas.antenna[:].surface_current[:].n_tor ↔ _phi
  ic_antennas.antenna[:].module[:].strap[:].width_tor ↔ _phi
  gyrokinetics_local.normalizing_quantities.b_field_tor ↔ _phi
  ferritic.object[:].time_slice[:].b_field_tor ↔ _phi
  ferritic.object[:].time_slice[:].magnetic_moment_tor ↔ _phi
  equilibrium.time_slice[:].profiles_2d[:].b_field_tor ↔ _phi
  equilibrium.time_slice[:].profiles_2d[:].j_tor ↔ _phi
* equilibrium.time_slice[:].profiles_1d.darea_drho_tor
* equilibrium.time_slice[:].profiles_1d.dpsi_drho_tor
* equilibrium.time_slice[:].profiles_1d.dvolume_drho_tor
  equilibrium.time_slice[:].profiles_1d.j_tor ↔ _phi
* equilibrium.time_slice[:].profiles_1d.rho_tor
  equilibrium.time_slice[:].global_quantities.magnetic_axis.b_field_tor ↔ _phi
* equilibrium.time_slice[:].global_quantities.beta_tor
* edge_profiles.profiles_1d[:].ion[:].state[:].rotation_frequency_tor
* edge_profiles.profiles_1d[:].ion[:].rotation_frequency_tor
* edge_profiles.profiles_1d[:].grid.rho_tor
  edge_profiles.profiles_1d[:].j_tor ↔ _phi
  edge_profiles.profiles_1d[:].momentum_tor ↔ _phi
  ece.channel[:].beam_tracing[:].beam[:].wave_vector.k_tor ↔ _phi
  ece.channel[:].beam_tracing[:].beam[:].wave_vector.n_tor ↔ _phi
  ece.channel[:].beam_tracing[:].beam[:].wave_vector.varying_n_tor ↔ _phi
* ec_launchers.beam[:].steering_angle_tor
  distributions.distribution[:].profiles_2d[:].trapped.collisions.ion[:].state[:].torque_fast_tor ↔ _phi
  distributions.distribution[:].profiles_2d[:].trapped.collisions.ion[:].state[:].torque_thermal_tor ↔ _phi
  distributions.distribution[:].profiles_2d[:].trapped.collisions.ion[:].torque_fast_tor ↔ _phi
  distributions.distribution[:].profiles_2d[:].trapped.collisions.ion[:].torque_thermal_tor ↔ _phi
  distributions.distribution[:].profiles_2d[:].trapped.collisions.electrons.torque_fast_tor ↔ _phi
  distributions.distribution[:].profiles_2d[:].trapped.collisions.electrons.torque_thermal_tor ↔ _phi
  distributions.distribution[:].profiles_2d[:].trapped.current_fast_tor ↔ _phi
  distributions.distribution[:].profiles_2d[:].trapped.current_tor ↔ _phi
* distributions.distribution[:].profiles_2d[:].grid.rho_tor
  distributions.distribution[:].profiles_2d[:].counter_passing.collisions.ion[:].state[:].torque_fast_tor ↔ _phi
  distributions.distribution[:].profiles_2d[:].counter_passing.collisions.ion[:].state[:].torque_thermal_tor ↔ _phi
  distributions.distribution[:].profiles_2d[:].counter_passing.collisions.ion[:].torque_fast_tor ↔ _phi
  distributions.distribution[:].profiles_2d[:].counter_passing.collisions.ion[:].torque_thermal_tor ↔ _phi
  distributions.distribution[:].profiles_2d[:].counter_passing.collisions.electrons.torque_fast_tor ↔ _phi
  distributions.distribution[:].profiles_2d[:].counter_passing.collisions.electrons.torque_thermal_tor ↔ _phi
  distributions.distribution[:].profiles_2d[:].counter_passing.current_fast_tor ↔ _phi
  distributions.distribution[:].profiles_2d[:].counter_passing.current_tor ↔ _phi
  distributions.distribution[:].profiles_2d[:].collisions.ion[:].state[:].torque_fast_tor ↔ _phi
  distributions.distribution[:].profiles_2d[:].collisions.ion[:].state[:].torque_thermal_tor ↔ _phi
  distributions.distribution[:].profiles_2d[:].collisions.ion[:].torque_fast_tor ↔ _phi
  distributions.distribution[:].profiles_2d[:].collisions.ion[:].torque_thermal_tor ↔ _phi
  distributions.distribution[:].profiles_2d[:].collisions.electrons.torque_fast_tor ↔ _phi
  distributions.distribution[:].profiles_2d[:].collisions.electrons.torque_thermal_tor ↔ _phi
  distributions.distribution[:].profiles_2d[:].co_passing.collisions.ion[:].state[:].torque_fast_tor ↔ _phi
  distributions.distribution[:].profiles_2d[:].co_passing.collisions.ion[:].state[:].torque_thermal_tor ↔ _phi
  distributions.distribution[:].profiles_2d[:].co_passing.collisions.ion[:].torque_fast_tor ↔ _phi
  distributions.distribution[:].profiles_2d[:].co_passing.collisions.ion[:].torque_thermal_tor ↔ _phi
  distributions.distribution[:].profiles_2d[:].co_passing.collisions.electrons.torque_fast_tor ↔ _phi
  distributions.distribution[:].profiles_2d[:].co_passing.collisions.electrons.torque_thermal_tor ↔ _phi
  distributions.distribution[:].profiles_2d[:].co_passing.current_fast_tor ↔ _phi
  distributions.distribution[:].profiles_2d[:].co_passing.current_tor ↔ _phi
  distributions.distribution[:].profiles_2d[:].current_fast_tor ↔ _phi
  distributions.distribution[:].profiles_2d[:].current_tor ↔ _phi
  distributions.distribution[:].profiles_1d[:].trapped.source[:].momentum_tor ↔ _phi
  distributions.distribution[:].profiles_1d[:].trapped.collisions.ion[:].state[:].torque_fast_tor ↔ _phi
  distributions.distribution[:].profiles_1d[:].trapped.collisions.ion[:].state[:].torque_thermal_tor ↔ _phi
  distributions.distribution[:].profiles_1d[:].trapped.collisions.ion[:].torque_fast_tor ↔ _phi
  distributions.distribution[:].profiles_1d[:].trapped.collisions.ion[:].torque_thermal_tor ↔ _phi
  distributions.distribution[:].profiles_1d[:].trapped.collisions.electrons.torque_fast_tor ↔ _phi
  distributions.distribution[:].profiles_1d[:].trapped.collisions.electrons.torque_thermal_tor ↔ _phi
  distributions.distribution[:].profiles_1d[:].trapped.current_fast_tor ↔ _phi
  distributions.distribution[:].profiles_1d[:].trapped.current_tor ↔ _phi
  distributions.distribution[:].profiles_1d[:].thermalisation.momentum_tor ↔ _phi
  distributions.distribution[:].profiles_1d[:].source[:].momentum_tor ↔ _phi
* distributions.distribution[:].profiles_1d[:].grid.rho_tor
  distributions.distribution[:].profiles_1d[:].counter_passing.source[:].momentum_tor ↔ _phi
  distributions.distribution[:].profiles_1d[:].counter_passing.collisions.ion[:].state[:].torque_fast_tor ↔ _phi
  distributions.distribution[:].profiles_1d[:].counter_passing.collisions.ion[:].state[:].torque_thermal_tor ↔ _phi
  distributions.distribution[:].profiles_1d[:].counter_passing.collisions.ion[:].torque_fast_tor ↔ _phi
  distributions.distribution[:].profiles_1d[:].counter_passing.collisions.ion[:].torque_thermal_tor ↔ _phi
  distributions.distribution[:].profiles_1d[:].counter_passing.collisions.electrons.torque_fast_tor ↔ _phi
  distributions.distribution[:].profiles_1d[:].counter_passing.collisions.electrons.torque_thermal_tor ↔ _phi
  distributions.distribution[:].profiles_1d[:].counter_passing.current_fast_tor ↔ _phi
  distributions.distribution[:].profiles_1d[:].counter_passing.current_tor ↔ _phi
  distributions.distribution[:].profiles_1d[:].collisions.ion[:].state[:].torque_fast_tor ↔ _phi
  distributions.distribution[:].profiles_1d[:].collisions.ion[:].state[:].torque_thermal_tor ↔ _phi
  distributions.distribution[:].profiles_1d[:].collisions.ion[:].torque_fast_tor ↔ _phi
  distributions.distribution[:].profiles_1d[:].collisions.ion[:].torque_thermal_tor ↔ _phi
  distributions.distribution[:].profiles_1d[:].collisions.electrons.torque_fast_tor ↔ _phi
  distributions.distribution[:].profiles_1d[:].collisions.electrons.torque_thermal_tor ↔ _phi
  distributions.distribution[:].profiles_1d[:].co_passing.source[:].momentum_tor ↔ _phi
  distributions.distribution[:].profiles_1d[:].co_passing.collisions.ion[:].state[:].torque_fast_tor ↔ _phi
  distributions.distribution[:].profiles_1d[:].co_passing.collisions.ion[:].state[:].torque_thermal_tor ↔ _phi
  distributions.distribution[:].profiles_1d[:].co_passing.collisions.ion[:].torque_fast_tor ↔ _phi
  distributions.distribution[:].profiles_1d[:].co_passing.collisions.ion[:].torque_thermal_tor ↔ _phi
  distributions.distribution[:].profiles_1d[:].co_passing.collisions.electrons.torque_fast_tor ↔ _phi
  distributions.distribution[:].profiles_1d[:].co_passing.collisions.electrons.torque_thermal_tor ↔ _phi
  distributions.distribution[:].profiles_1d[:].co_passing.current_fast_tor ↔ _phi
  distributions.distribution[:].profiles_1d[:].co_passing.current_tor ↔ _phi
  distributions.distribution[:].profiles_1d[:].current_fast_tor ↔ _phi
  distributions.distribution[:].profiles_1d[:].current_tor ↔ _phi
* distributions.distribution[:].markers[:].orbit_integrals.n_tor
  distributions.distribution[:].global_quantities[:].source[:].torque_tor ↔ _phi
  distributions.distribution[:].global_quantities[:].collisions.ion[:].state[:].torque_fast_tor ↔ _phi
  distributions.distribution[:].global_quantities[:].collisions.ion[:].state[:].torque_thermal_tor ↔ _phi
  distributions.distribution[:].global_quantities[:].collisions.ion[:].torque_fast_tor ↔ _phi
  distributions.distribution[:].global_quantities[:].collisions.ion[:].torque_thermal_tor ↔ _phi
  distributions.distribution[:].global_quantities[:].collisions.electrons.torque_fast_tor ↔ _phi
  distributions.distribution[:].global_quantities[:].collisions.electrons.torque_thermal_tor ↔ _phi
  distributions.distribution[:].global_quantities[:].current_tor ↔ _phi
* distribution_sources.source[:].profiles_1d[:].grid.rho_tor
  distribution_sources.source[:].profiles_1d[:].momentum_tor ↔ _phi
* distribution_sources.source[:].markers[:].orbit_integrals.n_tor
  distribution_sources.source[:].global_quantities[:].shinethrough.torque_tor ↔ _phi
  distribution_sources.source[:].global_quantities[:].torque_tor ↔ _phi
* disruption.profiles_1d[:].grid.rho_tor
  disruption.global_quantities.current_halo_tor ↔ _phi
* core_transport.model[:].profiles_1d[:].grid_v.rho_tor
* core_transport.model[:].profiles_1d[:].grid_flux.rho_tor
* core_transport.model[:].profiles_1d[:].grid_d.rho_tor
* core_sources.source[:].profiles_1d[:].grid.rho_tor
  core_sources.source[:].profiles_1d[:].momentum_tor ↔ _phi
  core_sources.source[:].global_quantities[:].torque_tor ↔ _phi
* core_profiles.profiles_2d[:].ion[:].state[:].rotation_frequency_tor
* core_profiles.profiles_2d[:].ion[:].rotation_frequency_tor
  core_profiles.profiles_2d[:].momentum_tor ↔ _phi
* core_profiles.profiles_1d[:].ion[:].state[:].rotation_frequency_tor
* core_profiles.profiles_1d[:].ion[:].rotation_frequency_tor
* core_profiles.profiles_1d[:].grid.rho_tor
  core_profiles.profiles_1d[:].j_tor ↔ _phi
  core_profiles.profiles_1d[:].momentum_tor ↔ _phi
* core_profiles.global_quantities.beta_tor
* core_instant_changes.change[:].profiles_1d[:].ion[:].state[:].rotation_frequency_tor
* core_instant_changes.change[:].profiles_1d[:].ion[:].rotation_frequency_tor
* core_instant_changes.change[:].profiles_1d[:].grid.rho_tor
  core_instant_changes.change[:].profiles_1d[:].j_tor ↔ _phi
  core_instant_changes.change[:].profiles_1d[:].momentum_tor ↔ _phi
  b_field_non_axisymmetric.time_slice[:].field_map.b_field_tor ↔ _phi
  b_field_non_axisymmetric.time_slice[:].control_surface[:].b_field_tor ↔ _phi
* b_field_non_axisymmetric.time_slice[:].control_surface[:].n_tor

@torrinba
Copy link
Collaborator

torrinba commented Jan 7, 2025

Agreed, most _tor variables are marked as obsolescent in this release to encourage the migration to _phi names. The _tor variables are removed in IMAS 4.0 so my understanding is that 3.42 is meant to be a stepping stone. It makes sense for OMAS to follow this approach as well, assuming it will ever transition to IMAS 4.0.

The machine mappings in OMAS should be updated to use the _phi naming convention with the move to 3.42. Do you see this as a requirement before allowing 3.42 in OMAS @orso82?

I don't know why some _tor names are retained, other than rho_tor being a special case that is recognized. I opened this Jira issue to see if there is a more official criteria https://jira.iter.org/projects/IMAS/issues/IMAS-5677

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.

2 participants